package delay import ( "joybuywork/internal/repository/cache" "joybuywork/internal/repository/dbcheck" "joybuywork/internal/repository/model" "joybuywork/internal/repository/mtype" "joybuywork/internal/service/provider/s2s" "joybuywork/internal/service/queue/types" "joybuywork/internal/utils/logic" ) type GlobalRewardPush struct { logic.Logic Req *types.DelayCommonGlobalRewardPush } func (s *GlobalRewardPush) Exec() (err error) { m := s.GetDao().RewardPushTask task, err := m.WithContext(s.Ctx).Where(m.ID.Eq(s.Req.TaskId)).Take() if err = dbcheck.DbError(err); err != nil { return s.BE().MysqlError(err) } if task == nil { return } pushM := s.GetDao().RewardPush push, err := pushM.WithContext(s.Ctx).Where(pushM.ID.Eq(task.PushID)).Take() if err = dbcheck.DbError(err); err != nil { return s.BE().MysqlError(err) } reward, err := cache.NewReward(s.Ctx).FindById(push.RewardID) if err != nil { err = s.BE().CacheError(err) return } if reward == nil || reward.ReceiveType != mtype.RewardReceiveTypeNotify { return } rp, err := s2s.NewReward(s.Ctx, reward) if err != nil { return } _, _ = rp.Send(push, push.Sync == mtype.Yes) return s.deleteTask(task) } func (s *GlobalRewardPush) deleteTask(task *model.RewardPushTask) (err error) { _, err = s.GetDao().RewardPushTask.WithContext(s.Ctx).Delete(task) if err != nil { return s.BE().MysqlError(err) } return }