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.7 KiB
Go
73 lines
1.7 KiB
Go
package campaignnotice
|
|
|
|
import (
|
|
"joybuywork/internal/repository/cache"
|
|
"joybuywork/internal/repository/dbcheck"
|
|
"joybuywork/internal/repository/mtype"
|
|
"joybuywork/internal/service/provider/fissionaction"
|
|
"joybuywork/internal/service/queue/producer"
|
|
"joybuywork/internal/service/queue/types"
|
|
"joybuywork/internal/utils/logic"
|
|
"fmt"
|
|
"gorm.io/gen/field"
|
|
)
|
|
|
|
type CondStat struct {
|
|
logic.Logic
|
|
|
|
Req *types.CampaignCondStat
|
|
}
|
|
|
|
func (s *CondStat) Exec() (err error) {
|
|
return s.stat()
|
|
}
|
|
|
|
func (s *CondStat) stat() (err error) {
|
|
m := s.GetDao().FissionCampaignCond
|
|
cond, err := m.WithContext(s.Ctx).Where(m.ID.Eq(s.Req.CondId)).Take()
|
|
if err = dbcheck.DbError(err); err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
if cond == nil {
|
|
return
|
|
}
|
|
|
|
var upData = []field.AssignExpr{
|
|
m.Num.Add(1),
|
|
m.Total.Add(s.Req.Total),
|
|
}
|
|
|
|
if s.Req.First {
|
|
upData = append(upData, m.UserNum.Add(1))
|
|
}
|
|
|
|
_, err = m.WithContext(s.Ctx).Where(m.ID.Eq(cond.ID)).UpdateSimple(upData...)
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
producer.NewCampaignNotice(s.Ctx).CampaignBehavior(types.CampaignBehavior{
|
|
CampaignId: cond.CampaignID,
|
|
BehaviorType: mtype.FissionBehaviorTypeFinishCond,
|
|
BehaviorTime: s.Req.BehaviorTime,
|
|
UserMark: fmt.Sprint(s.Req.UserId),
|
|
OtherData: map[string]float64{"total": s.Req.Total},
|
|
MarkId: fmt.Sprint(cond.ID),
|
|
})
|
|
|
|
cpn, err := cache.NewCampaign(s.Ctx).FindById(cond.CampaignID)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
if cpn.ReportType == mtype.FissionCampaignReportTypeNew {
|
|
user, _ := cache.NewFissionUser(s.Ctx, cond.CampaignID).FindById(s.Req.UserId)
|
|
fissionaction.NewMarkPoint(s.Ctx).InApp(user).FinishCond(s.Req.BehaviorTime, cond.ID, s.Req.Total, s.Req.Event, s.Req.EventData)
|
|
}
|
|
|
|
return
|
|
}
|