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.
146 lines
3.6 KiB
Go
146 lines
3.6 KiB
Go
// 这个文件是给自己做一些方便接口测试的脚本
|
|
package script
|
|
|
|
import (
|
|
"context"
|
|
"joybuywork/internal/app"
|
|
"joybuywork/internal/config"
|
|
"joybuywork/internal/consts"
|
|
"joybuywork/internal/repository/cache"
|
|
"joybuywork/internal/repository/dao"
|
|
"joybuywork/internal/repository/dbcheck"
|
|
"joybuywork/internal/repository/finder"
|
|
"joybuywork/internal/repository/model"
|
|
"joybuywork/internal/repository/mtype"
|
|
"joybuywork/internal/repository/withdefault"
|
|
"joybuywork/internal/service/provider/award"
|
|
"joybuywork/internal/service/queue/producer"
|
|
"joybuywork/internal/service/queue/types"
|
|
"joybuywork/proto/go_proto/workerr"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/rs/xid"
|
|
)
|
|
|
|
// 发放站外奖品
|
|
type testGetWebReward struct {
|
|
ctx context.Context
|
|
taskId string
|
|
|
|
CampaignHashId string `json:"campaign_hash_id"`
|
|
ChannelMark string `json:"channel_mark"`
|
|
WebId string `json:"web_id"`
|
|
}
|
|
|
|
func (s *testGetWebReward) testGetWebReward() {
|
|
if config.Config.Server.Env == consts.Prod {
|
|
return
|
|
}
|
|
|
|
var err error
|
|
tx := dao.Q.Begin()
|
|
defer func() {
|
|
if err != nil {
|
|
app.Logger.Error(s.ctx, fmt.Sprintf("领取站外奖品出错:%v", err))
|
|
_ = tx.Rollback()
|
|
return
|
|
}
|
|
_ = tx.Commit()
|
|
}()
|
|
|
|
cpn, err := finder.Campaign(s.ctx, s.CampaignHashId)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
if cpn == nil || cpn.Target != mtype.FissionCampaignConfigTargetAdsGame {
|
|
err = workerr.NotFound("not found cpn or not an ads game")
|
|
return
|
|
}
|
|
|
|
channelM := dao.FissionCampaignChannel
|
|
channel, err := channelM.WithContext(s.ctx).Where(channelM.CampaignID.Eq(cpn.ID), channelM.IsDefault.Eq(mtype.Yes)).Take()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
wbu, err := cache.NewFissionWebUser(s.ctx).FindByWebId(cpn.ID, s.WebId)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
if wbu == nil || wbu.UserID > 0 {
|
|
err = workerr.NotFound("not found web user or be bind")
|
|
return
|
|
}
|
|
|
|
rewardM := dao.FissionCampaignReward
|
|
reward, err := rewardM.WithContext(s.ctx).Where(rewardM.ID.Eq(wbu.RewardID)).Take()
|
|
if err = dbcheck.DbError(err); err != nil {
|
|
return
|
|
}
|
|
|
|
if reward == nil {
|
|
return
|
|
}
|
|
|
|
subUserId := xid.New().String()
|
|
user := withdefault.FissionUser(&model.FissionUser{
|
|
IsNew: mtype.Yes,
|
|
SubUserID: subUserId,
|
|
DeviceID: "",
|
|
UserMark: subUserId,
|
|
UserType: mtype.FissionUserTypePlay,
|
|
Source: mtype.FissionUserSourceInstall,
|
|
ChannelID: channel.ID,
|
|
})
|
|
|
|
ums := tx.FissionUser.SubTable(cpn.ID)
|
|
err = ums.WithContext(s.ctx).Create(user)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m := tx.FissionWebUser
|
|
_, err = m.WithContext(s.ctx).Where(m.ID.Eq(wbu.ID)).UpdateSimple(m.UserID.Value(user.ID))
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
record, _, _, err := award.NewAwardReward(s.ctx, dao.Q, cpn.ProjectID, user).One(reward, false)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
_ = cache.NewFissionWebUser(s.ctx).Clear(wbu)
|
|
|
|
producer.NewCampaignNotice(s.ctx).CampaignBehavior(types.CampaignBehavior{
|
|
CampaignId: cpn.ID,
|
|
BehaviorType: mtype.FissionBehaviorTypeAppInstall,
|
|
BehaviorTime: time.Now().Unix(),
|
|
UserMark: wbu.WebID,
|
|
OtherData: nil,
|
|
})
|
|
|
|
producer.NewCampaignNotice(s.ctx).CampaignBehavior(types.CampaignBehavior{
|
|
CampaignId: cpn.ID,
|
|
BehaviorType: mtype.FissionBehaviorTypeChannelInstall,
|
|
BehaviorTime: time.Now().Unix(),
|
|
UserMark: wbu.WebID,
|
|
OtherData: nil,
|
|
MarkId: fmt.Sprintf("%d", channel.ID),
|
|
})
|
|
|
|
producer.NewCampaignNotice(s.ctx).CampaignBehavior(types.CampaignBehavior{
|
|
CampaignId: cpn.ID,
|
|
BehaviorType: mtype.FissionBehaviorTypeRewardApp,
|
|
BehaviorTime: time.Now().Unix(),
|
|
UserMark: wbu.WebID,
|
|
OtherData: nil,
|
|
MarkId: fmt.Sprintf("%d", record.RewardID),
|
|
})
|
|
|
|
time.Sleep(1 * time.Second)
|
|
}
|