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

// 这个文件是给自己做一些方便接口测试的脚本
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)
}