package delay import ( "joybuywork/internal/plugins/jsonm" "joybuywork/internal/repository/cache" "joybuywork/internal/repository/dao" "joybuywork/internal/repository/dbcheck" "joybuywork/internal/repository/model" "joybuywork/internal/repository/mtype" "joybuywork/internal/service/notify" "joybuywork/internal/service/queue/types" "joybuywork/internal/utils/logic" ) type RewardPush struct { logic.Logic Req *types.DelayCommonRewardPush } func (s *RewardPush) Exec() (err error) { m := dao.FissionNotifyTask 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 } ntfM := dao.FissionNotify ntf, err := ntfM.WithContext(s.Ctx).Where(ntfM.ID.Eq(task.NotifyID)).Take() if err != nil { return s.BE().MysqlError(err) } if ntf == nil || ntf.IsOk == mtype.Yes { return s.deleteTask(task) } var notifyReward notify.Reward err = jsonm.StrUnmarshal(task.Reward, ¬ifyReward) if err != nil { return } cpn, _ := cache.NewCampaign(s.Ctx).FindById(notifyReward.CampaignId) project, _ := cache.NewProject(s.Ctx).FindById(cpn.ProjectID) rewardM := s.GetDao().FissionRewardRecord.SubTable(cpn.ID) reward, _ := rewardM.WithContext(s.Ctx).Where(rewardM.ID.Eq(notifyReward.RewardId)).Take() breward, _ := cache.NewReward(s.Ctx).FindById(reward.BaseRewardID) url, _ := cache.NewNotifyURL(s.Ctx).FindById(breward.URLID) if url != nil { notifyReward.KvData = breward.GetJustKvData() _ = notifyReward.Send(s.Ctx, url.URL, project.NotifyToken, project.PushLadder, ntf.GetHeaders()) } return s.deleteTask(task) } func (s *RewardPush) deleteTask(task *model.FissionNotifyTask) (err error) { _, err = dao.FissionNotifyTask.WithContext(s.Ctx).Delete(task) if err != nil { return s.BE().MysqlError(err) } return }