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.
937 lines
20 KiB
Go
937 lines
20 KiB
Go
package campaignstat
|
|
|
|
import (
|
|
"joybuywork/internal/config"
|
|
"joybuywork/internal/consts"
|
|
"joybuywork/internal/repository/finder"
|
|
"joybuywork/internal/repository/model"
|
|
"joybuywork/internal/repository/mtype"
|
|
"joybuywork/internal/service/provider"
|
|
"joybuywork/internal/utils"
|
|
"joybuywork/internal/utils/logic"
|
|
"joybuywork/internal/utils/timez"
|
|
pb "joybuywork/proto/go_proto/w_campaign_stat"
|
|
"joybuywork/proto/go_proto/workerr"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type DemTitle struct {
|
|
logic.Logic
|
|
Req *pb.DemTitleReq
|
|
Res *pb.DemTitleRes
|
|
|
|
rewardMap map[int64]provider.RewardAutoLang
|
|
}
|
|
|
|
func (s *DemTitle) Run() error {
|
|
return logic.Run(s)
|
|
}
|
|
|
|
func (s *DemTitle) Exec() (err error) {
|
|
cpn, err := s.campaign()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.cond(cpn)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
s.media()
|
|
|
|
err = s.channel()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.rewards()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.userLv()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.qa()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.qaOption()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.qaGroup()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.scenes(cpn)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.customBtn()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.task(cpn)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.parent(cpn)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.img()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.zone()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.cpns()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.schedules()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.mall()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.mallItem()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = s.unoCards()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 活动数据
|
|
func (s *DemTitle) campaign() (cpn *model.FissionCampaign, err error) {
|
|
cpn, err = finder.Campaign(s.Ctx, s.Req.GetCampaignId(), s.Req.GetCampaignHashId())
|
|
if err != nil {
|
|
err = s.BE().CacheError(err)
|
|
return
|
|
}
|
|
|
|
if cpn == nil || cpn.IsDel == mtype.Yes {
|
|
err = workerr.NotFound("campaign not found")
|
|
return
|
|
}
|
|
|
|
s.Res.CampaignId = cpn.ID
|
|
s.Res.TOffect = cpn.TOffset
|
|
s.rewardMap = make(map[int64]provider.RewardAutoLang)
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) cond(cpn *model.FissionCampaign) (err error) {
|
|
if len(s.Req.GetCondIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
condM := s.GetDao().FissionCampaignCond
|
|
conds, err := condM.WithContext(s.Ctx).Where(condM.ID.In(s.Req.GetCondIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
var rewardIds []int64
|
|
for _, v := range conds {
|
|
rewardIds = append(rewardIds, v.RewardID)
|
|
}
|
|
|
|
unlockRewardMap, err := s._getRewardMap(cpn.ProjectID, rewardIds)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
s.Res.Conds = make([]*pb.DemTitleRes_Title, 0, len(conds))
|
|
|
|
for _, cond := range conds {
|
|
var title = cond.Desc
|
|
|
|
if cond.RewardID > 0 {
|
|
title = fmt.Sprintf("解锁奖品%s", unlockRewardMap[cond.RewardID].RewardTitle)
|
|
}
|
|
|
|
s.Res.Conds = append(s.Res.Conds, &pb.DemTitleRes_Title{
|
|
Id: cond.ID,
|
|
Title: title,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) media() {
|
|
if len(s.Req.GetMediaIds()) == 0 {
|
|
return
|
|
}
|
|
s.Res.Media = make([]*pb.DemTitleRes_Title, 0, len(s.Req.GetMediaIds()))
|
|
|
|
for _, mediaId := range s.Req.GetMediaIds() {
|
|
|
|
if mediaId == -1 {
|
|
s.Res.Media = append(s.Res.Media, &pb.DemTitleRes_Title{
|
|
Id: mediaId,
|
|
Title: "Copy Link",
|
|
SecondId: 0,
|
|
})
|
|
continue
|
|
}
|
|
|
|
title, ok := consts.ShareTitleMap[mediaId]
|
|
if !ok {
|
|
continue
|
|
}
|
|
|
|
s.Res.Media = append(s.Res.Media, &pb.DemTitleRes_Title{
|
|
Id: mediaId,
|
|
Title: title,
|
|
SecondId: 0,
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
func (s *DemTitle) channel() (err error) {
|
|
if len(s.Req.GetChannelIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().FissionCampaignChannel
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetChannelIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.Channel = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
|
|
for _, v := range list {
|
|
s.Res.Channel = append(s.Res.Channel, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: v.Title,
|
|
SecondId: int64(v.CType),
|
|
})
|
|
}
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) rewards() (err error) {
|
|
if len(s.Req.GetRewardIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().FissionCampaignReward
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetRewardIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
var titleMap = make(map[int64]string)
|
|
var ids []int64
|
|
for _, v := range list {
|
|
if _, ok := titleMap[v.RewardID]; !ok {
|
|
titleMap[v.RewardID] = ""
|
|
ids = append(ids, v.RewardID)
|
|
}
|
|
}
|
|
|
|
rewardM := s.GetDao().Reward
|
|
rewards, err := rewardM.WithContext(s.Ctx).Where(rewardM.ID.In(ids...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
for _, v := range rewards {
|
|
titleMap[v.ID] = v.RewardTitle
|
|
}
|
|
|
|
for _, v := range list {
|
|
one := &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: titleMap[v.RewardID],
|
|
SecondId: v.RewardID,
|
|
}
|
|
|
|
if v.PropMark == mtype.FissionCampaignRewardPropMarkPoint {
|
|
one.Title = fmt.Sprintf("系统积分 * %d", v.RewardNum)
|
|
} else if v.PropMark == mtype.FissionCampaignRewardPropMarkChance {
|
|
one.Title = fmt.Sprintf("活动机会 * %d", v.RewardNum)
|
|
} else if v.RewardID < 0 {
|
|
one.Title = "谢谢参与"
|
|
}
|
|
|
|
s.Res.Rewards = append(s.Res.Rewards, one)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) userLv() (err error) {
|
|
if len(s.Req.GetLevelIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().FissionUserLevel
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetLevelIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
s.Res.UserLv = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
s.Res.UserLv = append(s.Res.UserLv, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: v.Title,
|
|
})
|
|
}
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) qa() (err error) {
|
|
if len(s.Req.GetQaIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().LibraryQa
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetQaIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.Qa = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
s.Res.Qa = append(s.Res.Qa, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: v.Title,
|
|
})
|
|
}
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) qaOption() (err error) {
|
|
if len(s.Req.GetQaOptionIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().LibraryQaOption
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetQaOptionIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.QaOption = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
s.Res.QaOption = append(s.Res.QaOption, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: v.Title,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) qaGroup() (err error) {
|
|
if len(s.Req.GetQaGroupIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().LibraryQaGroup
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetQaGroupIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.QaGroup = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
s.Res.QaGroup = append(s.Res.QaGroup, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: v.Title,
|
|
})
|
|
}
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) scenes(cpn *model.FissionCampaign) (err error) {
|
|
if len(s.Req.GetSceneIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
switch cpn.FissionID {
|
|
case consts.IdCoin:
|
|
m := s.GetDao().FissionCoinScene
|
|
var scenes []*model.FissionCoinScene
|
|
scenes, err = m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetSceneIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
gmt := utils.Ternary[string](cpn.TOffset < 0, fmt.Sprint(cpn.TOffset), fmt.Sprintf("+%d", cpn.TOffset))
|
|
s.Res.Scenes = make([]*pb.DemTitleRes_Title, 0, len(scenes))
|
|
|
|
for _, v := range scenes {
|
|
|
|
day, _, _ := timez.GMTStartAndEndTs(cpn.TOffset, v.OpenTime)
|
|
|
|
s.Res.Scenes = append(s.Res.Scenes, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: fmt.Sprintf("%s(GMT%s)", day, gmt),
|
|
})
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) customBtn() (err error) {
|
|
if len(s.Req.GetCustomBtnIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().FissionCustomBtn
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetCustomBtnIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.QaGroup = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
s.Res.QaGroup = append(s.Res.QaGroup, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: v.BtnText,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) task(cpn *model.FissionCampaign) (err error) {
|
|
if len(s.Req.GetTaskIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
taskM := s.GetDao().FissionCampaignTask
|
|
tasks, err := taskM.WithContext(s.Ctx).Where(taskM.ID.In(s.Req.GetTaskIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.Tasks = make([]*pb.DemTitleRes_Title, 0, len(tasks))
|
|
|
|
var unlockRewardIds []int64
|
|
var campaignMap = make(map[int64][]int64)
|
|
var condIds []int64
|
|
for _, task := range tasks {
|
|
|
|
if task.PropMark == mtype.FissionCampaignTaskPropMarkUnlockReward {
|
|
unlockRewardIds = append(unlockRewardIds, task.RewardID)
|
|
}
|
|
|
|
switch task.TaskType {
|
|
case mtype.FissionCampaignTaskTypeCondOne:
|
|
condIds = append(condIds, utils.FissionCampaignTaskMarkCondOneCondId(task.TaskMark))
|
|
case mtype.FissionCampaignTaskTypeCondAll:
|
|
campaignMap[task.CampaignID] = append(campaignMap[task.CampaignID], task.ID)
|
|
default:
|
|
continue
|
|
}
|
|
}
|
|
|
|
var condMap = make(map[int64]string, len(condIds))
|
|
if len(condIds) > 0 {
|
|
var conds []*model.FissionCampaignCond
|
|
m := s.GetDao().FissionCampaignCond
|
|
conds, err = m.WithContext(s.Ctx).Where(m.ID.In(condIds...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
for _, v := range conds {
|
|
condMap[v.ID] = v.Desc
|
|
}
|
|
}
|
|
|
|
var cpnMap = make(map[int64]string)
|
|
if len(campaignMap) > 0 {
|
|
m := s.GetDao().FissionCampaignCond
|
|
|
|
for cpnId, taskIds := range campaignMap {
|
|
var conds []*model.FissionCampaignCond
|
|
conds, err = m.WithContext(s.Ctx).Where(m.CampaignID.Eq(cpnId)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
var desc string
|
|
for _, cond := range conds {
|
|
desc += cond.Desc + ", "
|
|
}
|
|
|
|
for _, v := range taskIds {
|
|
cpnMap[v] = strings.TrimRight(desc, ", ")
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
unlockRewardMap, err := s._getRewardMap(cpn.ProjectID, unlockRewardIds)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
for _, task := range tasks {
|
|
one := &pb.DemTitleRes_Title{
|
|
Id: task.ID,
|
|
}
|
|
switch task.TaskType {
|
|
case mtype.FissionCampaignTaskTypeCondOne:
|
|
one.Title = condMap[utils.FissionCampaignTaskMarkCondOneCondId(task.TaskMark)]
|
|
case mtype.FissionCampaignTaskTypeInstall:
|
|
one.Title = fmt.Sprintf("获得%d个安装事件助力", task.Num)
|
|
case mtype.FissionCampaignTaskTypeRegister:
|
|
one.Title = fmt.Sprintf("获得%d个注册事件助力", task.Num)
|
|
case mtype.FissionCampaignTaskTypeCondAll:
|
|
one.Title = cpnMap[task.ID]
|
|
case mtype.FissionCampaignTaskTypeOpen:
|
|
one.Title = fmt.Sprintf("获得%d个打开事件助力", task.Num)
|
|
case mtype.FissionCampaignTaskTypeClick:
|
|
one.Title = fmt.Sprintf("获得%d个点击邀请链接助力", task.Num)
|
|
}
|
|
|
|
if task.PropMark == mtype.FissionCampaignTaskPropMarkUnlockReward {
|
|
one.Title = fmt.Sprintf("解锁奖品%s", unlockRewardMap[task.RewardID].RewardTitle)
|
|
}
|
|
|
|
s.Res.Tasks = append(s.Res.Tasks, one)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) parent(cpn *model.FissionCampaign) (err error) {
|
|
if len(s.Req.GetParentIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().FissionUser.SubTable(cpn.ID)
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetParentIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.Parents = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
s.Res.Parents = append(s.Res.Parents, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: v.SubUserID,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) img() (err error) {
|
|
if len(s.Req.GetImgIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().FissionCampaignLongImg
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetImgIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
var cpnIds []int64
|
|
for _, v := range list {
|
|
if v.TargetType == mtype.FissionCampaignLongImgTargetTypeCampaign {
|
|
cpnIds = append(cpnIds, v.TargetID)
|
|
}
|
|
}
|
|
|
|
var cpnMap = make(map[int64]string)
|
|
if len(cpnIds) > 0 {
|
|
cpnM := s.GetDao().FissionCampaign
|
|
cpnList, err1 := cpnM.WithContext(s.Ctx).Where(cpnM.ID.In(cpnIds...)).Find()
|
|
if err1 != nil {
|
|
err = s.BE().MysqlError(err1)
|
|
return
|
|
}
|
|
for _, v := range cpnList {
|
|
cpnMap[v.ID] = v.Title
|
|
}
|
|
}
|
|
|
|
s.Res.Imgs = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
if v.ClickType == mtype.FissionCampaignLongImgClickTypeZone {
|
|
continue
|
|
}
|
|
|
|
var title string
|
|
switch v.TargetType {
|
|
case mtype.FissionCampaignLongImgTargetTypeCustom:
|
|
title = "跳转指定地址"
|
|
if v.AppParam != "" {
|
|
title += fmt.Sprintf(";APP端参数: %s", v.AppParam)
|
|
}
|
|
if v.WebURL != "" {
|
|
title += fmt.Sprintf(";H5跳转url: %s", v.WebURL)
|
|
}
|
|
if v.PcParam != "" {
|
|
title += fmt.Sprintf(";PC端参数: %s", v.PcParam)
|
|
}
|
|
case mtype.FissionCampaignLongImgTargetTypeCampaign:
|
|
title = fmt.Sprintf("跳转到活动'%s'", cpnMap[v.CampaignID])
|
|
}
|
|
|
|
s.Res.Imgs = append(s.Res.Imgs, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: title,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) zone() (err error) {
|
|
if len(s.Req.GetZoneIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().FissionCampaignLongImgZone
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetZoneIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
var cpnIds []int64
|
|
for _, v := range list {
|
|
if v.TargetType == mtype.FissionCampaignLongImgTargetTypeCampaign {
|
|
cpnIds = append(cpnIds, v.TargetID)
|
|
}
|
|
}
|
|
|
|
var cpnMap = make(map[int64]string)
|
|
if len(cpnIds) > 0 {
|
|
cpnM := s.GetDao().FissionCampaign
|
|
cpnList, err1 := cpnM.WithContext(s.Ctx).Where(cpnM.ID.In(cpnIds...)).Find()
|
|
if err1 != nil {
|
|
err = s.BE().MysqlError(err1)
|
|
return
|
|
}
|
|
for _, v := range cpnList {
|
|
cpnMap[v.ID] = v.Title
|
|
}
|
|
}
|
|
|
|
s.Res.Zones = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
var title string
|
|
|
|
switch v.TargetType {
|
|
case mtype.FissionCampaignLongImgTargetTypeCustom:
|
|
title = "跳转指定地址"
|
|
if v.AppParam != "" {
|
|
title += fmt.Sprintf(";APP端参数: %s", v.AppParam)
|
|
}
|
|
if v.WebURL != "" {
|
|
title += fmt.Sprintf(";H5跳转url: %s", v.WebURL)
|
|
}
|
|
if v.PcParam != "" {
|
|
title += fmt.Sprintf(";PC端参数: %s", v.PcParam)
|
|
}
|
|
case mtype.FissionCampaignLongImgTargetTypeCampaign:
|
|
title = fmt.Sprintf("跳转到活动'%s'", cpnMap[v.CampaignID])
|
|
}
|
|
|
|
s.Res.Zones = append(s.Res.Zones, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: title,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) cpns() (err error) {
|
|
if len(s.Req.GetCpnIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().FissionCampaign
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetCpnIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.Cpns = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
s.Res.Cpns = append(s.Res.Cpns, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: v.Title,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) schedules() (err error) {
|
|
if len(s.Req.GetScheduleIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().FissionCampaignVsSchedule
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetScheduleIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
var teamIds []int64
|
|
var teamMap = make(map[int64]*model.FissionCampaignVsTeam)
|
|
for _, v := range list {
|
|
for _, t := range v.GetVsTeamIds() {
|
|
if _, ok := teamMap[t]; !ok && t > 0 {
|
|
teamIds = append(teamIds, t)
|
|
}
|
|
}
|
|
}
|
|
|
|
teamM := s.GetDao().FissionCampaignVsTeam
|
|
teamList, err := teamM.WithContext(s.Ctx).Where(teamM.ID.In(teamIds...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
for _, v := range teamList {
|
|
teamMap[v.ID] = v
|
|
}
|
|
|
|
s.Res.Schedules = make([]*pb.DemTitleRes_Schedule, 0, len(list))
|
|
for _, v := range list {
|
|
var teams = make([]*pb.DemTitleRes_Team, 2)
|
|
var t1 = "A队"
|
|
var t2 = "B队"
|
|
for i, t := range v.GetVsTeamIds() {
|
|
switch i {
|
|
case 0:
|
|
if _, ok := teamMap[t]; ok {
|
|
t1 = teamMap[t].Name
|
|
|
|
if t1 == "" {
|
|
t1 = fmt.Sprintf("[%s%s]", config.Config.Upload.Host, teamMap[t].LogoImg)
|
|
}
|
|
|
|
}
|
|
teams[0] = &pb.DemTitleRes_Team{
|
|
Id: t,
|
|
Title: t1,
|
|
}
|
|
case 1:
|
|
if _, ok := teamMap[t]; ok {
|
|
t2 = teamMap[t].Name
|
|
|
|
if t2 == "" {
|
|
t2 = fmt.Sprintf("[%s%s]", config.Config.Upload.Host, teamMap[t].LogoImg)
|
|
}
|
|
}
|
|
teams[1] = &pb.DemTitleRes_Team{
|
|
Id: t,
|
|
Title: t2,
|
|
}
|
|
}
|
|
}
|
|
|
|
s.Res.Schedules = append(s.Res.Schedules, &pb.DemTitleRes_Schedule{
|
|
Id: v.ID,
|
|
Title: fmt.Sprintf("%s vs %s", t1, t2),
|
|
Teams: teams,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) mall() (err error) {
|
|
if len(s.Req.GetMallIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().RedeemMall
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetMallIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.Malls = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
s.Res.Malls = append(s.Res.Malls, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: v.Title,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) mallItem() (err error) {
|
|
if len(s.Req.GetMallItemIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().RedeemMallItem
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetMallItemIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
var rewardIds []int64
|
|
var rewardMap = make(map[int64]string)
|
|
for _, v := range list {
|
|
if _, ok := rewardMap[v.ID]; !ok {
|
|
rewardIds = append(rewardIds, v.RewardID)
|
|
rewardMap[v.RewardID] = ""
|
|
}
|
|
}
|
|
|
|
rewardM := s.GetDao().Reward
|
|
rewardList, err := rewardM.WithContext(s.Ctx).Where(rewardM.ID.In(rewardIds...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
for _, v := range rewardList {
|
|
rewardMap[v.ID] = v.RewardTitle
|
|
}
|
|
|
|
s.Res.MallItems = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
s.Res.MallItems = append(s.Res.MallItems, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: rewardMap[v.RewardID],
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) unoCards() (err error) {
|
|
if len(s.Req.GetUnoCardIds()) == 0 {
|
|
return
|
|
}
|
|
|
|
m := s.GetDao().FissionCampaignUnoCard
|
|
list, err := m.WithContext(s.Ctx).Where(m.ID.In(s.Req.GetUnoCardIds()...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
|
|
s.Res.UnoCards = make([]*pb.DemTitleRes_Title, 0, len(list))
|
|
for _, v := range list {
|
|
var title = fmt.Sprintf("图片[%s%s]", config.Config.Upload.Host, v.ImgURL)
|
|
if v.AppParam != "" {
|
|
title += fmt.Sprintf(";APP端参数: %s", v.AppParam)
|
|
}
|
|
if v.WebURL != "" {
|
|
title += fmt.Sprintf(";H5跳转url: %s", v.WebURL)
|
|
}
|
|
if v.PcParam != "" {
|
|
title += fmt.Sprintf(";PC端参数: %s", v.PcParam)
|
|
}
|
|
|
|
s.Res.UnoCards = append(s.Res.UnoCards, &pb.DemTitleRes_Title{
|
|
Id: v.ID,
|
|
Title: title,
|
|
})
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (s *DemTitle) _getRewardMap(projectId int64, rewardIds []int64) (data map[int64]provider.RewardAutoLang, err error) {
|
|
|
|
var newIds []int64
|
|
for _, id := range rewardIds {
|
|
if _, ok := s.rewardMap[id]; !ok {
|
|
newIds = append(newIds, id)
|
|
}
|
|
}
|
|
|
|
if len(newIds) == 0 {
|
|
return s.rewardMap, nil
|
|
}
|
|
|
|
m := s.GetDao().FissionCampaignReward
|
|
var rewards []*model.FissionCampaignReward
|
|
rewards, err = m.WithContext(s.Ctx).Where(m.ID.In(newIds...)).Find()
|
|
if err != nil {
|
|
err = s.BE().MysqlError(err)
|
|
return
|
|
}
|
|
var bids []int64
|
|
var brMap = make(map[int64]string)
|
|
for _, v := range rewards {
|
|
if _, ok := brMap[v.RewardID]; !ok {
|
|
bids = append(bids, v.RewardID)
|
|
brMap[v.RewardID] = ""
|
|
}
|
|
}
|
|
|
|
prewards, err := provider.NewRewards(s.Ctx, projectId, bids...)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
for _, v := range rewards {
|
|
s.rewardMap[v.ID], _ = prewards.InfoAutoLang(v.RewardID)
|
|
}
|
|
|
|
return s.rewardMap, nil
|
|
}
|