xlb-main-login
Version:
``` yarn install ```
541 lines (537 loc) • 23 kB
JavaScript
import { axios } from '@/utils/request'
import moment from 'moment'
import { weichat } from '@/api/config'
import { chinaNum } from '@/views/friend/utils/util.js'
//新增活动 ID:jP81P62q
export function addEvent(formData, eventId = '') {
console.log(formData.reminder.fissionText, 'formData.reminder.fissionText')
const formTemp = {}
// demoWorkEventStaffList 获客成员
formTemp.demoWorkEventStaffList = formData.information.staffList
// demoWorkEvent 活动基本数据
formTemp.demoWorkEvent = {
keyword: '', // 关键词
title: formData.information.name,
endTime: moment(formData.information.endTime).format('YYYY-MM-DD HH:mm:ss'), // 结束时间
eventType: 1, // 活动类型 对应的值 1好友获客 2任务获客 3红包获客 4群获客 5抽奖获客
enableComplaint: 0, // 开启投诉 1_开启 0_关闭
enableOnlyNew: formData.advanced.newUserTextEnable ? 1 : 0, // 开启新用户参与 1_开启 0_关闭
enableRepeat: formData.advanced.helpEnable ? 1 : 0, // 开启重复助力 1_开启 0_关闭
enableRank: 1, //开启排行榜 1_是 0_否
// "maxNum": 0, // 活动最大参与用户数量
state: formData.advanced.demoWorkEventState || 0, // 状态 对应的值?
enableEventInfo: formData.information.enableEventInfo ? 1 : 0, //是否开启活动信息 1_开启 0_关闭
enableBrand: formData.advanced.brandEnable ? 1 : 0, // 是否开启品牌 1_开启 0_关闭
enableTag: formData.advanced.autoTagEnable ? 1 : 0, // 开启自动打标签 1_开启 0_关闭
enableExtraReward: 1, // 默认1
antiRush: formData.advanced.intelligentEnable ? 1 : 0, // 智能防刷 1_开启 0_关闭
}
if (eventId) {
formTemp.demoWorkEvent.id = formData.advanced.demoWorkEventId || ''
formTemp.demoWorkEvent.version = formData.information.version || ''
}
const rewardExtraConfigListTemp = []
let demoWorkEventRewardListTemp = []
if (formTemp.demoWorkEvent.version === 'FIRST') {
const prizeTabTemp = JSON.parse(JSON.stringify(formData.information.prizeTab))
demoWorkEventRewardListTemp = JSON.parse(JSON.stringify(formData.information.tableDataTemp))
demoWorkEventRewardListTemp.forEach((item, index) => {
demoWorkEventRewardListTemp[index].dr = item.dr || 0
demoWorkEventRewardListTemp[index].id = item.id || ''
demoWorkEventRewardListTemp[index].eventId = eventId
demoWorkEventRewardListTemp[index].grade = index + 1
demoWorkEventRewardListTemp[index].enableRemain = item.enableRemain
demoWorkEventRewardListTemp[index].enable = 1
if (prizeTabTemp[index]) {
const rewardData = {
grade: index + 1,
type: prizeTabTemp[index].formData.type,
enable: 1,
id: '',
redemptionCodeId: prizeTabTemp[index].formData.redemptionCodeId || '',
link: '',
formId: prizeTabTemp[index].formData.formId || '',
context: '',
}
if (prizeTabTemp[index].formData.type == 0) {
rewardData.link = prizeTabTemp[index].formData.link
} else if (prizeTabTemp[index].formData.type == 1) {
rewardData.context = prizeTabTemp[index].formData.codeHtml
} else if (prizeTabTemp[index].formData.type == 2) {
rewardData.context = prizeTabTemp[index].formData.customHtml
} else if (prizeTabTemp[index].formData.type == 4) {
rewardData.context = prizeTabTemp[index].formData.selectText.join()
rewardData.link = prizeTabTemp[index].formData.productLink
} else {
rewardData.context = ''
}
rewardExtraConfigListTemp.push(rewardData)
}
})
} else {
const temp = formData.information.activePrizeSetting.concat(formData.information.activePrizeSettingTemp)
temp.forEach((item, index) => {
const temp = {}
temp.dr = item.dr || 0
temp.id = item.id || ''
temp.eventId = eventId
temp.grade = index + 1
temp.enableRemain = item.enableRemain ? 1 : 0
temp.enable = 1
temp.inviteNum = item.inviteNum
temp.rewardNum = item.rewardNum
temp.rewardName = item.rewardName
temp.rewardImage = item.rewardImage
demoWorkEventRewardListTemp.push(temp)
const rewardData = {
grade: index + 1,
type: item.type,
enable: item.enable ? 1 : 0,
redemptionCodeId: item.redemptionCodeId || '',
writeOffCodeId: item.writeOffCodeId || '',
link: '',
formId: item.formId || '',
context: '',
id: item.id,
dr: item.dr || 0,
}
if (item.type == 0) {
rewardData.link = item.link
} else if (item.type == 1) {
rewardData.context = item.codeHtml
} else if (item.type == 2) {
rewardData.context = item.customHtml
} else if (item.type == 4) {
rewardData.context = item.selectText.join()
rewardData.link = item.productLink
} else {
rewardData.context = ''
}
rewardData.dr === 0 && rewardExtraConfigListTemp.push(rewardData)
})
}
//奖励阶梯 带dr
formTemp.demoWorkEventRewardList = demoWorkEventRewardListTemp
// 文案列表
formTemp.demoWorkEventMsgList = []
// 裂变规则文案
formTemp.demoWorkEventMsgList.push({
dr: 0,
enable: 1,
eventId: eventId,
grade: 1,
id: eventId ? formData.advanced.msgId['0_text'] : '',
// mediaId: '',
msg: formData.reminder.fissionText,
msgType: 0,
wxMsgType: 'text',
})
// 成功助力好友推送文案
formTemp.demoWorkEventMsgList.push({
dr: 0,
enable: 1,
eventId: eventId,
grade: 1,
id: eventId ? formData.advanced.msgId['1_text'] : '',
// mediaId: '',
msg: formData.reminder.successfully,
msgType: 1,
wxMsgType: 'text',
})
// 用户重复助力提醒文案
formTemp.demoWorkEventMsgList.push({
dr: 0,
enable: 1,
eventId: eventId,
grade: 1,
// mediaId: '',
id: eventId ? formData.advanced.msgId['4_text'] : '',
msg: formData.reminder.repeatedText,
msgType: 4,
wxMsgType: 'text',
})
// 活动结束文案
formTemp.demoWorkEventMsgList.push({
dr: 0,
enable: formData.reminder.endTextEnable ? 1 : 0,
eventId: eventId,
grade: 1,
// mediaId: '',
id: eventId ? formData.advanced.msgId['6_text'] : '',
msg: formData.reminder.endText,
msgType: 6,
wxMsgType: 'text',
})
// 活动结束图片
formTemp.demoWorkEventMsgList.push({
dr: 0,
enable: formData.reminder.endImgEnable ? 1 : 0,
eventId: eventId,
grade: 1,
// mediaId: '',
id: eventId ? formData.advanced.msgId['6_image'] : '',
msg: formData.reminder.endImg,
msgType: 6,
wxMsgType: 'image',
})
// 助力失效控制
formTemp.demoWorkEventMsgList.push({
dr: 0,
enable: formData.advanced.helpEnable ? 1 : 0,
eventId: eventId,
grade: 1,
msg: '',
msgType: 7,
id: eventId ? formData.advanced.msgId['7_text'] : '',
wxMsgType: 'text',
})
// 新添加用户才能给好友助力
formTemp.demoWorkEventMsgList.push({
dr: 0,
enable: formData.advanced.newUserTextEnable ? 1 : 0,
eventId: eventId,
grade: 1,
msg: formData.advanced.newUserText,
msgType: 8,
id: eventId ? formData.advanced.msgId['8_text'] : '',
wxMsgType: 'text',
})
// 参与限制提示语
formTemp.demoWorkEventMsgList.push({
dr: 0,
enable: formData.advanced.participationEnable ? 1 : 0,
eventId: eventId,
grade: 1,
msg: formData.advanced.participationText,
msgType: 9,
id: eventId ? formData.advanced.msgId['9_text'] : '',
wxMsgType: 'text',
})
// 活动信息
formTemp.demoWorkEventMsgList.push({
dr: 0,
enable: formData.information.enableEventInfo ? 1 : 0,
eventId: eventId,
grade: 1,
id: eventId ? formData.advanced.msgId['23_text'] : '',
msg: formData.information.enableEventHtml,
msgType: 23,
wxMsgType: 'text',
})
// 奖品信息配置
formTemp.rewardExtraConfigList = rewardExtraConfigListTemp
// 海报配置 带dr
formTemp.demoWorkEventImageConfigList = []
formData.poster.posterFormData.forEach((item) => {
formTemp.demoWorkEventImageConfigList.push({
background: item.posterForm.background, // 背景图
circle: item.headData.circle, // 圆形头像 1_开启 0_关闭
dr: item.posterForm.dr || 0, // 默认0
eventId: eventId, // 对应活动的id
fontColor: item.nameData.fontColor ? item.nameData.fontColor.replace('#', '0x') : '', //字体颜色
fontName: '', // 新增为空 编辑时有接口返回默认值
fontSize: item.nameData.fontSize, // 字体大小 为0就是隐藏
fontStyle: '', // 新增为空 编辑时有接口返回默认值
fontx: item.nameData.fontSize == 0 ? 0 : parseInt(item.nameData.x * 2.5), // 字体x轴坐标
fonty: item.nameData.fontSize == 0 ? 0 : parseInt(item.nameData.y * 2.5), // 字体y轴坐标
headUrl: '', // 头像 为空
headUrlHeight: item.headData.show ? parseInt(item.headData.h * 2.5) : 0, // 头像大小 为0就是隐藏
headUrlWidth: item.headData.show ? parseInt(item.headData.w * 2.5) : 0, // 头像大小 为0就是隐藏
headUrlx: item.headData.show ? parseInt(item.headData.x * 2.5) : 0, // 头像大小 为0就是隐藏
headUrly: item.headData.show ? parseInt(item.headData.y * 2.5) : 0, // 头像大小 为0就是隐藏
id: item.posterForm.id || '', // 新增为空 编辑时有接口返回默认值
mini: 1, // mini头像
qrCodeHeight: item.qrData.h == 0 ? 0 : parseInt(item.qrData.h * 2.5), // 二维码大小 为0就是隐藏
qrCodeWeight: item.qrData.w == 0 ? 0 : parseInt(item.qrData.w * 2.5), // 二维码大小 为0就是隐藏
qrCodex: item.qrData.x == 0 ? 0 : parseInt(item.qrData.x * 2.5), // 二维码大小 为0就是隐藏
qrCodey: item.qrData.y == 0 ? 0 : parseInt(item.qrData.y * 2.5), // 二维码大小 为0就是隐藏
})
})
// 参与限制
formTemp.demoWorkEventLimitConfig = {
enableLimit: formData.advanced.participationEnable ? 1 : 0, // 是否开启拦截 1_开启 0_关闭
eventId: eventId, // 对应活动的id
id: formData.advanced.demoWorkEventLimitConfigId || '', // 新增为空 编辑时有接口返回默认值
sexWhiteList: formData.advanced.genderId.join(), // 性别 黑名单("1,2")1:男,2:女,0:未知
}
// 防刷检测
formTemp.demoWorkEventBanConfig = {
enable: formData.advanced.antiEnable ? 1 : 0, // 是否开启防刷检测 1_开启 0_关闭
eventId: eventId, // 对应活动的id
id: formData.advanced.demoWorkEventBanConfigId || '', // 新增为空 编辑时有接口返回默认值
limitNum: formData.advanced.antiNum, // 检测数量(人)
limitTime: formData.advanced.antiTime, // 触发检测时间(秒)
}
// 标签规则信息 带dr
formTemp.demoWorkEventTagList = []
if (formData.advanced.autoTagEnable) {
formData.advanced.tagList.forEach((item, index) => {
const tagItemTemp = {
sort: index, // 顺序
id: item.id || '',
dr: item.dr || 0, // 新增默认为0
enable: 1, // 默认开启 1 1_开启 0_关闭
type: item.type, // 规则 0_全部 1_达成阶梯 2_入群用户 3_新增好友 4_用户级别 5_用户类型
// 标签数组 带dr
demoWorkEventTagDetailList: item.tagList,
}
if (item.type == 2) {
tagItemTemp.num = item.userNum
} else if (item.type == 1) {
tagItemTemp.num = item.ladder
} else if (item.type == 4) {
tagItemTemp.num = item.levelNum
} else if (item.type == 5) {
tagItemTemp.num = item.userType
} else {
tagItemTemp.num = 0
}
formTemp.demoWorkEventTagList.push(tagItemTemp)
})
}
console.log(formData)
console.log(formTemp)
//新增好友获客活动
return axios({
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
url: weichat + 'v1/wechat/work/event/1',
method: eventId !== '' ? 'put' : 'post',
data: formTemp,
})
}
function getMagItem(type, magList, key = 'msg', msgType = 'text') {
const indexId = magList.findIndex((items) => items.msgType == type && items.wxMsgType == msgType)
if (indexId !== -1) {
return magList[indexId][key]
} else {
return null
}
}
//好友获客活动详情
export function getEvent(id) {
const formData = {
information: {},
poster: {
posterFormData: [],
},
reminder: {},
advanced: {},
}
return new Promise((resolve, reject) => {
axios({
url: weichat + 'v1/wechat/work/event/1/' + id,
method: 'get',
}).then((res) => {
const resData = JSON.parse(JSON.stringify(res.data.obj))
formData.information = {
enableEventHtml: getMagItem(23, resData.demoWorkEventMsgList),
enableEventInfo: resData.demoWorkEvent.enableEventInfo == 1 ? true : false,
endTime: resData.demoWorkEvent.endTime,
name: resData.demoWorkEvent.title,
prizeTab: [],
staffList: resData.demoWorkEventStaffList,
tableDataTemp: [],
version: resData.demoWorkEvent.version,
activePrizeSetting: resData.demoWorkEventRewardList
.filter((val) => val.dr === 0)
.map((value, index) => {
const configValue = resData.rewardExtraConfigList[index]
console.log('huo', configValue)
let temp = {
id: value.id, // 如果id丢失为新增
grade: value.grade,
rewardName: value.rewardName, // 奖品名称
rewardImage: value.rewardImage, // 奖品图片
rewardNum: value.rewardNum, // 奖品总数
enableRemain: value.enableRemain === 1, // 是否开启奖品剩余数量
remain: value.remain, // 奖品剩余数量
inviteNum: value.inviteNum, // 自定义字段---- 邀请人数
type: configValue.type, // 领奖方式
enable: value.enable,
eventId: value.eventId,
}
// type 0 链接 1兑换码 2自定义 5核销 3表单 4有赞
if (configValue.type == 0) {
temp = {
...temp,
link: configValue.link, // 跳转链接
}
}
if (configValue.type == 1) {
temp = {
...temp,
redemptionCodeId: configValue.redemptionCodeId, // 兑换码
codeHtml: configValue.context || '', // 兑换码规则
}
}
if (configValue.type == 2) {
temp = {
...temp,
customHtml: configValue.context || '', // 自定义页面
}
}
if (configValue.type == 3) {
temp = {
...temp,
formId: configValue.formId, // form表单
}
}
if (configValue.type == 4) {
temp = {
...temp,
selectText: configValue.context.split(','), // 有赞标签
productLink: configValue.link, // 有赞商品链接
}
}
if (configValue.type == 5) {
temp = {
...temp,
type: configValue.type, // 领奖方式
writeOffCodeId: configValue.writeOffCodeId, // 核销码
}
}
return temp
}),
activePrizeSettingTemp: resData.demoWorkEventRewardList.filter((val) => val.dr === 1),
}
resData.demoWorkEventRewardList.forEach((item, index) => {
formData.information.tableDataTemp.push({
enableRemain: item.enableRemain,
id: item.id,
grade: chinaNum(index + 1) + '级阶梯',
inviteNum: item.inviteNum,
rewardNum: item.rewardNum,
remain: item.remain,
})
const prizeTabItem = {
enableRemain: item.enableRemain,
grade: chinaNum(index + 1) + '级阶梯',
inviteNum: item.inviteNum,
rewardNum: item.rewardNum,
remain: item.remain,
formData: {
type: resData.rewardExtraConfigList[index] ? resData.rewardExtraConfigList[index].type : 0,
link: '',
selectText: [],
codeHtml: '',
customHtml: '',
redemptionCodeId: resData.rewardExtraConfigList[index]
? resData.rewardExtraConfigList[index].redemptionCodeId
: null,
formId: resData.rewardExtraConfigList[index] ? resData.rewardExtraConfigList[index].formId : null,
productLink: '',
},
}
if (resData.rewardExtraConfigList[index]) {
if (resData.rewardExtraConfigList[index].type == 0) {
prizeTabItem.formData.link = resData.rewardExtraConfigList[index].link
} else if (resData.rewardExtraConfigList[index].type == 1) {
prizeTabItem.formData.codeHtml = resData.rewardExtraConfigList[index].context || ''
} else if (resData.rewardExtraConfigList[index].type == 2) {
prizeTabItem.formData.customHtml = resData.rewardExtraConfigList[index].context || ''
} else if (resData.rewardExtraConfigList[index].type == 4) {
prizeTabItem.formData.selectText = resData.rewardExtraConfigList[index].context
? resData.rewardExtraConfigList[index].context.split(',')
: ''
prizeTabItem.formData.productLink = resData.rewardExtraConfigList[index].link || ''
}
}
formData.information.prizeTab.push(prizeTabItem)
})
//海报
resData.demoWorkEventImageConfigList.forEach((item, index) => {
formData.poster.posterFormData.push({
headData: {
show: item.headUrly + item.headUrlx + item.headUrlWidth + item.headUrlHeight == 0 ? false : true,
circle: item.circle,
y: item.headUrlWidth + item.headUrlHeight == 0 ? 20 : parseInt(item.headUrly / 2.5),
x: item.headUrlWidth + item.headUrlHeight == 0 ? 20 : parseInt(item.headUrlx / 2.5),
w: item.headUrlWidth + item.headUrlHeight == 0 ? 60 : parseInt(item.headUrlWidth / 2.5),
h: item.headUrlWidth + item.headUrlHeight == 0 ? 60 : parseInt(item.headUrlHeight / 2.5),
},
nameData: {
y: item.fontSize == 0 ? 20 : parseInt(item.fonty / 2.5),
x: item.fontSize == 0 ? 90 : parseInt(item.fontx / 2.5),
fontSize: item.fontSize,
fontColor: item.fontColor ? item.fontColor.replace('0x', '#') : '',
},
qrData: {
y: item.qrCodeWeight + item.qrCodeHeight == 0 ? 20 : parseInt(item.qrCodey / 2.5),
x: item.qrCodeWeight + item.qrCodeHeight == 0 ? 20 : parseInt(item.qrCodex / 2.5),
w: item.qrCodeWeight + item.qrCodeHeight == 0 ? 60 : parseInt(item.qrCodeWeight / 2.5),
h: item.qrCodeWeight + item.qrCodeHeight == 0 ? 60 : parseInt(item.qrCodeHeight / 2.5),
},
posterForm: {
dr: item.dr || 0,
id: item.id || '',
background: item.background,
},
})
})
formData.reminder = {
fissionText: getMagItem(0, resData.demoWorkEventMsgList),
successfully: getMagItem(1, resData.demoWorkEventMsgList),
repeatedText: getMagItem(4, resData.demoWorkEventMsgList),
endText: getMagItem(6, resData.demoWorkEventMsgList, 'msg', 'text'),
endTextEnable: getMagItem(6, resData.demoWorkEventMsgList, 'enable', 'text') == 1 ? true : false,
endImgEnable: getMagItem(6, resData.demoWorkEventMsgList, 'enable', 'image') == 1 ? true : false,
endImg: getMagItem(6, resData.demoWorkEventMsgList, 'msg', 'image'),
}
const msgIdTemp = {}
resData.demoWorkEventMsgList.forEach((item) => {
msgIdTemp[item.msgType + '_' + item.wxMsgType] = item.id
})
formData.advanced = {
// 存储非页面所用的id
demoWorkEventId: resData.demoWorkEvent.id,
demoWorkEventState: resData.demoWorkEvent.state,
demoWorkEventLimitConfigId: resData.demoWorkEventLimitConfig.id,
demoWorkEventBanConfigId: resData.demoWorkEventBanConfig.id,
msgId: msgIdTemp,
// 存储非页面所用的id end
newUserText: getMagItem(8, resData.demoWorkEventMsgList),
newUserTextEnable: resData.demoWorkEvent.enableOnlyNew == 1 ? true : false,
helpEnable: resData.demoWorkEvent.enableRepeat ? true : false,
brandEnable: resData.demoWorkEvent.enableBrand == 1 ? true : false,
participationEnable: resData.demoWorkEventLimitConfig.enableLimit == 1 ? true : false,
participationText: getMagItem(9, resData.demoWorkEventMsgList),
genderId:
resData.demoWorkEventLimitConfig.sexWhiteList !== ''
? resData.demoWorkEventLimitConfig.sexWhiteList.split(',')
: [],
antiEnable: resData.demoWorkEventBanConfig.enable == 1 ? true : false,
antiTime: resData.demoWorkEventBanConfig.limitTime,
antiNum: resData.demoWorkEventBanConfig.limitNum,
intelligentEnable: resData.demoWorkEvent.antiRush == 1 ? true : false,
autoTagEnable: resData.demoWorkEvent.enableTag == 1 ? true : false,
tagList: [],
}
if (resData.demoWorkEventTagList && resData.demoWorkEventTagList.length >= 1) {
resData.demoWorkEventTagList.forEach((item, index) => {
const tagItem = {
id: item.id || '',
dr: item.dr || 0,
type: item.type,
userNum: 1,
ladder: 1,
levelNum: 1,
userType: 1,
tagList: item.demoWorkEventTagDetailList,
}
if (item.type == 2) {
tagItem.userNum = item.num
} else if (item.type == 1) {
tagItem.ladder = item.num
} else if (item.type == 4) {
tagItem.levelNum = item.num
} else if (item.type == 5) {
tagItem.userType = item.num
}
formData.advanced.tagList.push(tagItem)
})
}
// 输出结构化后的数据
return resolve(formData)
})
})
}