package fissionaction import ( "joybuywork/internal/consts" "joybuywork/internal/repository/mtype" "fmt" ) type CusDem func(option *mtype.Dimension) // SetChannelId 设置渠道 func SetChannelId(id int64) CusDem { return func(option *mtype.Dimension) { option.ChannelId = id } } type Option func(option *mtype.DimensionOption) // SetCondId 完成事件id func SetCondId(id int64) Option { return func(option *mtype.DimensionOption) { option.CondId = mustId(id) } } // SetMediaId 社媒id func SetMediaId(id int64) Option { return func(option *mtype.DimensionOption) { option.MediaId = mustId(id) } } // SetRewardId 活动奖品id func SetRewardId(id int64) Option { return func(option *mtype.DimensionOption) { option.RewardId = mustId(id) } } // SetRewardRecordId 奖品记录id func SetRewardRecordId(id int64) Option { return func(option *mtype.DimensionOption) { option.RewardRecordId = mustId(id) } } // SetRewardType 奖品记录id func SetRewardType(t int32) Option { return func(option *mtype.DimensionOption) { option.RewardType = mustId(t) } } // SetRewardNum 奖品数量 func SetRewardNum(num int32) Option { return func(option *mtype.DimensionOption) { option.RewardNum = num } } // SetDownloadFrom 下载页来源 func SetDownloadFrom(from string) Option { return func(option *mtype.DimensionOption) { option.DownloadFrom = mustStr(from) } } // SetPropName 道具名称 func SetPropName(name string) Option { return func(option *mtype.DimensionOption) { option.PropName = mustStr(name) } } // SetPropNum 道具数量 func SetPropNum(num int32) Option { return func(option *mtype.DimensionOption) { option.PropNum = num } } // SetFromWebId 绑定的浏览器id func SetFromWebId(webId string) Option { return func(option *mtype.DimensionOption) { option.FromWebId = mustStr(webId) } } // SetCpnFirst 绑定的浏览器id func SetCpnFirst(isTure bool) Option { return func(option *mtype.DimensionOption) { if isTure { option.CpnFirst = "true" } else { option.CpnFirst = "false" } } } // SetSignDate 触发签到的时间 func SetSignDate(utm int32, date string) Option { return func(option *mtype.DimensionOption) { option.UTM = fmt.Sprint(utm) option.SignDate = mustStr(date) } } // SetImgUrl 图片地址 func SetImgUrl(url string) Option { return func(option *mtype.DimensionOption) { option.ImgUrl = mustStr(url) } } // SetImgId 长图id func SetImgId(id int64) Option { return func(option *mtype.DimensionOption) { option.ImgId = mustId(id) } } // SetZoneId 热区id func SetZoneId(id int64) Option { return func(option *mtype.DimensionOption) { option.ZoneId = mustId(id) } } // SetTaskId 完成的任务ID func SetTaskId(id int64) Option { return func(option *mtype.DimensionOption) { option.TaskId = mustId(id) } } // SetFrom 事件来源 func SetFrom(from string) Option { return func(option *mtype.DimensionOption) { option.From = mustStr(from) } } // SetFromStatus 事件状态 func SetFromStatus(status string) Option { return func(option *mtype.DimensionOption) { option.FromStatus = mustStr(status) } } // SetBlackbox 黑盒数据 func SetBlackbox(blackbox string) Option { return func(option *mtype.DimensionOption) { option.Blackbox = mustStr(blackbox) } } // SetUid 第三方用户id func SetUid(uid string) Option { return func(option *mtype.DimensionOption) { option.Uid = mustStr(uid) } } // SetQaId 题目ID func SetQaId(id int64) Option { return func(option *mtype.DimensionOption) { option.QaId = mustId(id) } } // SetQaOptionId 选择的选项ID func SetQaOptionId(id int64) Option { return func(option *mtype.DimensionOption) { option.QaOptionId = mustId(id) } } // SetQaOptionRight 选择的选项是否正确 func SetQaOptionRight(isRight int32) Option { return func(option *mtype.DimensionOption) { option.QaOptionRight = mustId(isRight) } } // SetQaGroupId 题库ID func SetQaGroupId(id int64) Option { return func(option *mtype.DimensionOption) { option.QaGroupId = mustId(id) } } // SetQaNum 答题数量 func SetQaNum(num int32) Option { return func(option *mtype.DimensionOption) { option.QaNum = num } } // SetQaPoint 答题分数 func SetQaPoint(point string) Option { return func(option *mtype.DimensionOption) { option.QaPoint = point } } // SetChildId 子活动id func SetChildId(id int64) Option { return func(option *mtype.DimensionOption) { option.ChildId = mustId(id) } } // SetChildType 子活动类型 func SetChildType(childType int32) Option { return func(option *mtype.DimensionOption) { option.ChildType = childType } } // SetSceneId 参与场次 func SetSceneId(sceneId int64) Option { return func(option *mtype.DimensionOption) { option.SceneId = sceneId } } // SetUseTimes 投放次数 func SetUseTimes(times int64) Option { return func(option *mtype.DimensionOption) { option.UseTimes = times } } // SetCustomBtnId 参与场次 func SetCustomBtnId(customBtnId int64) Option { return func(option *mtype.DimensionOption) { option.CustomBtnId = customBtnId } } // SetPay 设置付款金额 func SetPay(payCount int64, payCurrency string) Option { return func(option *mtype.DimensionOption) { option.PayCount = payCount option.PayCurrency = payCurrency } } func SetPointsUse(num int32) Option { return func(option *mtype.DimensionOption) { option.PointsUse = num } } func SetCenterHashId(centerHashId string) Option { return func(option *mtype.DimensionOption) { option.CenterHashId = centerHashId } } func SetCenterModuleId(centerModuleId string) Option { return func(option *mtype.DimensionOption) { option.CenterModuleId = centerModuleId } } // SetChatFrom 设置对话来源 func SetChatFrom(chatFrom string) Option { return func(option *mtype.DimensionOption) { option.ChatFrom = chatFrom } } // SetChatTipMsg 设置对话提示消息 func SetChatTipMsg(chatTipMsg string) Option { return func(option *mtype.DimensionOption) { option.ChatTipMsg = chatTipMsg } } // SetScheduleId 设置对话提示消息 func SetScheduleId(scheduleId int64) Option { return func(option *mtype.DimensionOption) { option.ScheduleId = mustId(scheduleId) } } // SetWinType 设置获胜队伍 func SetWinType(winType int32, winTeamId int64) Option { return func(option *mtype.DimensionOption) { option.WinType = mustId(winType) option.WinTeamId = mustId(winTeamId) } } // SetVoteNum 设置投票次数 func SetVoteNum(voteNum int32) Option { return func(option *mtype.DimensionOption) { option.VoteNum = mustId(voteNum) } } // SetMallId 设置对话提示消息 func SetMallId(mallId int64) Option { return func(option *mtype.DimensionOption) { option.MallId = mustId(mallId) } } // SetMallItemId 设置对话提示消息 func SetMallItemId(mallItemId int64) Option { return func(option *mtype.DimensionOption) { option.MallItemId = mustId(mallItemId) } } // SetCardNo 设置牌型 func SetCardNo(colorMark, cardNo string) Option { return func(option *mtype.DimensionOption) { option.CardNo = mustStr(fmt.Sprintf("%s_%s", colorMark, cardNo)) } } // SetUnoCardId 设置牌id func SetUnoCardId(cardId int64) Option { return func(option *mtype.DimensionOption) { option.UnoCardId = mustId(cardId) } } // SetCardColor 设置卡颜色 func SetCardColor(cardColor string) Option { return func(option *mtype.DimensionOption) { option.CardColor = cardColor } } type BPOption func(bp *MarkPoint) func SetBatch() BPOption { return func(bp *MarkPoint) { bp.batch = true } } // 让id必定有值,为了让json字段显示出来 func mustId[T consts.SignNumber](id T) T { if id == 0 { return -1 } return id } // 让字符串必定有值,为了让json字段显示出来 func mustStr(str string) string { if str == "" { return "-" } return str }