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