You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.8 KiB
Go
73 lines
1.8 KiB
Go
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
|
|
}
|