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.

64 lines
1.4 KiB
Go

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
}