xlb-main-login
Version:
``` yarn install ```
447 lines (441 loc) • 19.1 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 = '') {
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: 3, // 活动类型 对应的值 1好友获客 2任务获客 3红包获客 4群获客 5抽奖获客
enableComplaint: 0, // 开启投诉 1_开启 0_关闭
enableOnlyNew: formData.advanced.newUserTextEnable ? 1 : 0, // 开启新用户参与 1_开启 0_关闭
enableRepeat: 1, // 开启重复助力 1_开启 0_关闭
enableRank: 1, //开启排行榜 1_是 0_否
maxNum: 0, // 活动最大参与用户数量
state: formData.advanced.demoWorkEventState || 0, // 状态 对应的值?
enableEventInfo: formData.information.enableEventInfo ? 1 : 0, //是否开启活动信息 1_开启 0_关闭
enableTag: formData.advanced.autoTagEnable ? 1 : 0, // 开启自动打标签 1_开启 0_关闭
enableExtraReward: 1, // 默认1
antiRush: formData.advanced.intelligentEnable ? 1 : 0 // 智能防刷 1_开启 0_关闭
}
// 红包规则
formTemp.redPacketConfig = {
fakeMoney: formData.information.fakeMoney*100,
maxMoney: formData.information.maxMoney*100,
maxTime: formData.information.maxTime,
minMoney: formData.information.minMoney*100,
num: formData.information.num,
totalMoney: formData.information.totalMoney*100
}
if (eventId) {
formTemp.demoWorkEvent.id = formData.advanced.demoWorkEventId || ''
formTemp.redPacketConfig.id = formData.information.id || ''
formTemp.redPacketConfig.eventId = eventId || ''
}
//奖励阶梯 (没有阶梯,但是要传)
formTemp.demoWorkEventRewardList = []
// 奖品信息配置(没有,但是要传)
formTemp.rewardExtraConfigList = []
// 文案列表
formTemp.demoWorkEventMsgList = []
// 活动描述和上传封面图
const headMsg = {
title: formData.information.name,// 活动名称
description: formData.information.description,// 活动描述
picPath: formData.information.headImg// 上传封面图
}
// 活动描述和上传封面图
formTemp.demoWorkEventMsgList.push({
dr: 0,
enable: 1,
eventId: eventId,
grade: 1,
id: eventId ? formData.advanced.msgId['18_news'] : '',
msg: JSON.stringify(headMsg),
msgType: 18,
wxMsgType: 'news'
})
// 裂变规则文案
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.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.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.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'
})
// 海报配置 带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: 0, // 新增为空 编辑时有接口返回默认值
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 = {
cityBlackList: '',//城市黑名单 没有,但是要传
cityWhiteList: '',//城市白名单 没有,但是要传
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 ? formData.advanced.antiNum : 10, // 检测数量(人)
limitTime: formData.advanced.antiTime ? formData.advanced.antiTime : 1 // 触发检测时间(秒)
}
// 标签规则信息 带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/3',
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/3/' + id,
method: 'get'
}).then((res) => {
console.time()
console.log(res.data.obj)
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,
description: JSON.parse(getMagItem(18, resData.demoWorkEventMsgList, 'msg', 'news')).description,
headImg: JSON.parse(getMagItem(18, resData.demoWorkEventMsgList, 'msg', 'news')).picPath,
staffList: resData.demoWorkEventStaffList,
// 红包规则
fakeMoney: resData.redPacketConfig.fakeMoney/100,//虚拟奖金
maxMoney: resData.redPacketConfig.maxMoney/100,//单次金额在最大值
maxTime: resData.redPacketConfig.maxTime,//最多瓜分次数
minMoney: resData.redPacketConfig.minMoney/100,//单次金额在最小值
num: resData.redPacketConfig.num,//每邀请人数
totalMoney: resData.redPacketConfig.totalMoney/100,//总奖金
id: resData.redPacketConfig.id,
eventId: resData.redPacketConfig.eventId
}
console.log(formData.information)
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,
redemptionFormId: 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
})
console.log(resData.demoWorkEventBanConfig)
formData.advanced = {
// 存储非页面所用的id
demoWorkEventId: resData.demoWorkEvent.id,
demoWorkEventState: resData.demoWorkEvent.state,
demoWorkEventLimitConfigId: resData.demoWorkEventLimitConfig.id,
msgId: msgIdTemp,
// 存储非页面所用的id end
newUserText: getMagItem(8, resData.demoWorkEventMsgList),
newUserTextEnable: resData.demoWorkEvent.enableOnlyNew == 1 ? true : false,
helpEnable: getMagItem(7, resData.demoWorkEventMsgList, 'enable') == 1 ? 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(',')
: [],
intelligentEnable: resData.demoWorkEvent.antiRush == 1 ? true : false,
autoTagEnable: resData.demoWorkEvent.enableTag == 1 ? true : false,
tagList: []
}
if (resData.demoWorkEventBanConfig) {
formData.advanced = Object.assign({}, formData.advanced, {
demoWorkEventBanConfigId: resData.demoWorkEventBanConfig.id,
antiEnable: resData.demoWorkEventBanConfig.enable == 1 ? true : false,
antiTime: resData.demoWorkEventBanConfig.limitTime,
antiNum: resData.demoWorkEventBanConfig.limitNum
})
}
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)
})
}
console.timeEnd()
console.log(formData)
// 输出结构化后的数据
return resolve(formData)
})
})
}