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
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
|
|
}
|