383 lines
9.7 KiB
JavaScript
383 lines
9.7 KiB
JavaScript
//拓展Format函数以获取时间
|
||
Date.prototype.Format = function (fmt) { //author: meizz
|
||
var o = {
|
||
"M+": this.getMonth() + 1, //月份
|
||
"d+": this.getDate(), //日
|
||
"h+": this.getHours(), //小时
|
||
"m+": this.getMinutes(), //分
|
||
"s+": this.getSeconds(), //秒
|
||
"S": this.getMilliseconds() //毫秒
|
||
};
|
||
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
|
||
for (var k in o)
|
||
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
||
return fmt;
|
||
}
|
||
|
||
// 云函数入口文件
|
||
const cloud = require('wx-server-sdk')
|
||
|
||
cloud.init()
|
||
const db = cloud.database()
|
||
|
||
//新建商品,返回新商品id
|
||
var addProduct = async (event) => {
|
||
//add成功就返回id 失败就可以catch到
|
||
var res = await db.collection("sM_productInfo").add({
|
||
data: {
|
||
userName: event.userInfos.userName,
|
||
userAvatarUrl: event.userInfos.avatarUrl,
|
||
userId: event.userInfos._id,
|
||
adds: event.adds,
|
||
time: (new Date(new Date().getTime() + 1000 * 60 * 60 * 8)).Format("yyyy-MM-dd hh:mm:ss"), //+8时差
|
||
sorttime: Date.now() + 60 * 60 * 8, //+8h时差
|
||
title: event.title,
|
||
details: event.details,
|
||
price: event.price,
|
||
isfree: event.isfree,
|
||
tag: event.tag,
|
||
viewNum: 0,
|
||
photos: event.photos,
|
||
isSall: false,
|
||
wantUser: new Array()
|
||
}
|
||
}).then(res => {
|
||
//获取id
|
||
return {
|
||
errCode: 200,
|
||
errMsg: res._id,
|
||
};
|
||
}).catch(err => {
|
||
//报错,然后再处理
|
||
return {
|
||
errCode: 101,
|
||
errMsg: '创建新商品失败。',
|
||
err: err,
|
||
};
|
||
})
|
||
|
||
return res;
|
||
}
|
||
|
||
//把这个新商品id和名称push到用户信息里
|
||
var rewriteUserInfo = async (newId, event) => {
|
||
var res = await db.collection('sM_userInfo').doc(event.userInfos._id).update({
|
||
data: {
|
||
issue: db.command.push({
|
||
id: newId,
|
||
title: event.title,
|
||
details: event.details,
|
||
})
|
||
}
|
||
}).then(res => {
|
||
if (res.stats.updated === 0)
|
||
return {
|
||
errCode: 102,
|
||
errMsg: '新商品id注入用户信息里时用户id错误。',
|
||
userId: event.userInfos._id,
|
||
};
|
||
else
|
||
return {
|
||
errCode: 200,
|
||
errMsg: res,
|
||
};
|
||
}).catch(err => {
|
||
//报错
|
||
return {
|
||
errCode: 103,
|
||
errMsg: '新商品id注入到用户信息里失败。',
|
||
err: err,
|
||
};
|
||
})
|
||
|
||
return res;
|
||
}
|
||
|
||
//删除审核表里边的记录
|
||
var deleteOldOne = async (id) => {
|
||
var res = await db.collection('sM_examine').doc(id).remove().then(res => {
|
||
if (res.stats.removed === 0) return {
|
||
errCode: 104,
|
||
errMsg: '删除审核表旧记录失败。(旧表id错误)',
|
||
id: id
|
||
};
|
||
else return {
|
||
errCode: 200,
|
||
errMsg: 'ok',
|
||
};
|
||
}).catch(err => {
|
||
return {
|
||
errCode: 105,
|
||
errMsg: '删除审核表旧记录失败。',
|
||
err: err,
|
||
};
|
||
});
|
||
|
||
return res;
|
||
}
|
||
|
||
//用户点击发布,将信息推到审核表
|
||
var update = async (event) => {
|
||
var res = await db.collection('sM_examine').add({
|
||
data: {
|
||
userInfo: event.userInfos,
|
||
title: event.title,
|
||
details: event.details,
|
||
adds: event.adds,
|
||
tag: event.tag,
|
||
price: event.price,
|
||
isfree: event.isfree,
|
||
photos: event.photos,
|
||
time: (new Date(new Date().getTime() + 1000 * 60 * 60 * 8)).Format("yyyy-MM-dd hh:mm:ss"), //+8时差
|
||
needSend: event.needSend,
|
||
}
|
||
}).then(res => {
|
||
return {
|
||
errCode: 200,
|
||
errMsg: res._id,
|
||
};
|
||
}).catch(err => {
|
||
return {
|
||
errCode: 106,
|
||
errMsg: '上传到审核表失败',
|
||
err: err,
|
||
}
|
||
})
|
||
|
||
// 直接进行返回,不向用户发送信息
|
||
return res
|
||
|
||
//如果添加失败就直接返回
|
||
// if(res.errCode === 106) return res;
|
||
|
||
//发信息(预留错误码107:发送失败)
|
||
// var sendRes = await cloud.callFunction({
|
||
// name: 'sM_sendMsg',
|
||
// data: {
|
||
// stats: 1,
|
||
// sendId: event.userInfos._openid,
|
||
// sendName: event.userInfos.userName,
|
||
// title: event.title,
|
||
// formId1: event.formId1,
|
||
// examineId: res.errMsg,
|
||
// }
|
||
// }).then(res => {
|
||
// return res.result
|
||
// }).catch(err => {
|
||
// return {
|
||
// errCode: 107,
|
||
// errMsg: '用户点击发布函数调用错误',
|
||
// err: err,
|
||
// }
|
||
// })
|
||
|
||
// return sendRes;
|
||
}
|
||
|
||
//审核通过
|
||
var pass = async (event) => {
|
||
//删除审核表里的旧记录
|
||
var delRes = await deleteOldOne(event.oldId);
|
||
if (delRes.errCode !== 200) return delRes;
|
||
|
||
//向商品表里边添加记录
|
||
var addRes = await addProduct(event);
|
||
if (addRes.errCode === 101) return addRes;
|
||
|
||
//将这个表添加到用户个人信息里
|
||
var reRes = await rewriteUserInfo(addRes.errMsg, event);
|
||
if (reRes.errCode !== 200) return reRes;
|
||
|
||
if (event.needSend) {
|
||
//发信息(预留错误码107)
|
||
var sendRes = await cloud.callFunction({
|
||
name: 'sM_sendMsg',
|
||
data: {
|
||
stats: 2,
|
||
sendId: event.userInfos._openid,
|
||
sendName: event.userInfos.userName,
|
||
result: "审核通过",
|
||
remarks: event.remarks + "\n注:点击下方即可进入小程序",
|
||
}
|
||
}).then(res => {
|
||
return res.result;
|
||
}).catch(err => {
|
||
return {
|
||
errCode: 107,
|
||
errMsg: '审核通过信息发送函数调用错误',
|
||
err: err,
|
||
}
|
||
})
|
||
return sendRes;
|
||
}
|
||
return reRes
|
||
|
||
}
|
||
|
||
//审核失败
|
||
var fail = async (event) => {
|
||
//删除审核表旧纪录
|
||
var delRes = await deleteOldOne(event.oldId);
|
||
if (delRes.errCode !== 200) return delRes;
|
||
if (event.needSend) {
|
||
//发信息(预留错误码107)
|
||
var sendRes = await cloud.callFunction({
|
||
name: 'sM_sendMsg',
|
||
data: {
|
||
stats: 2,
|
||
sendId: event.userInfos._openid,
|
||
sendName: event.userInfos.userName,
|
||
result: "审核失败",
|
||
remarks: event.remarks + "\n注:您的商品信息已被删除,请重新发布。",
|
||
}
|
||
}).then(res => {
|
||
return res.result;
|
||
}).catch(err => {
|
||
return {
|
||
errCode: 107,
|
||
errMsg: '审核失败信息发送函数调用失败',
|
||
err: err
|
||
}
|
||
})
|
||
|
||
return sendRes;
|
||
}
|
||
return delRes
|
||
}
|
||
|
||
// 云函数入口函数
|
||
exports.main = async (event, context) => {
|
||
//判断状态码
|
||
if (event.stats == 1) var res = await update(event);
|
||
else if (event.stats == 2) var res = await pass(event);
|
||
else if (event.stats == 3) var res = await fail(event);
|
||
else return {
|
||
errCode: 108,
|
||
errMsg: '未提交或非法的stats值。'
|
||
};
|
||
|
||
return res;
|
||
}
|
||
|
||
/*
|
||
功能简介:
|
||
本页要完成审核和审核完成后的处理
|
||
卖家点击发布,信息将由此页进入审核区,
|
||
给调用sandMsg给双方同时发消息,
|
||
管理员审核界面,
|
||
点击通过,则传进来全部信息,,调用createproduct,备注写一个默认的,然后发信息
|
||
点击失败,则传进来审核区的记录id,在这里删除,然后发信息
|
||
*/
|
||
|
||
/*
|
||
api说明:
|
||
参数:stats = 1 用户点击发布时
|
||
userInfos :数据库里边的用户完整信息
|
||
title:商品名
|
||
details:商品详细信息
|
||
adds:地址
|
||
tag:标签
|
||
price:价格
|
||
isfree:是否免费
|
||
photos:照片地址数组
|
||
formId1:
|
||
formId2:
|
||
stats = 2 管理员审核通过时
|
||
userInfos :同上
|
||
adds :同上
|
||
title:商品名
|
||
details:商品详细信息
|
||
tag:标签
|
||
price:价格
|
||
isfree:是否免费
|
||
photos:照片地址数组
|
||
oldId:审核表里的数据的id(要把这个记录删除)
|
||
remarks: 管理员发的备注信息。(默认在后边加上“注:点击下方即可进入小程序”)
|
||
formId:
|
||
stats = 3 管理员审核不通过时
|
||
userInfos :同上
|
||
oldId:审核表里的数据的id(要把这个记录删除)
|
||
remarks: 管理员发的备注信息。(默认在后边加上“注:您的商品信息已被删除,请重新发布。”)
|
||
formId:
|
||
备注:stats = 1 的时候务必要给两个formId
|
||
关联:审核之前之后都要再sendMsg里边发信息
|
||
注意:需要获取oldId给发消息用,不过得等前端写完页面之后。
|
||
作者:RainSun
|
||
时间:2019/04/29
|
||
更新:
|
||
参数:
|
||
stats = 1 用户点击发布时
|
||
userInfos :数据库里边的用户完整信息
|
||
title:商品名
|
||
details:商品详细信息
|
||
adds:地址
|
||
tag:标签
|
||
price:价格
|
||
isfree:是否免费
|
||
photos:照片地址数组
|
||
needSend: 是否允许发送成功通知
|
||
时间:2020/06/10
|
||
*/
|
||
/*
|
||
日志:
|
||
20190429:今天开始补完错误信息的返回。
|
||
20190430:
|
||
今天完成错误信息的返回,详情见下方错误报告。
|
||
代码格式整理完成。
|
||
20200610:
|
||
因为小程序比赛回来改代码,因为模板消息改成了订阅消息,
|
||
所以取消上传成功的订阅消息,只保留审核完成的订阅消息,
|
||
如果用户不同意还可以不发送
|
||
|
||
*/
|
||
/*
|
||
错误报告:
|
||
注:err表示catch函数返回的错误,msg就是问题描述
|
||
|
||
正常:
|
||
code:200
|
||
msg:正常的返回值或者'ok'
|
||
|
||
创建新商品失败:
|
||
code:101
|
||
msg:
|
||
err:
|
||
|
||
新商品id注入用户信息里时用户id错误:
|
||
code:102
|
||
msg:
|
||
userId:
|
||
|
||
新商品id注入到用户信息里失败:
|
||
code:103
|
||
msg:
|
||
err:
|
||
|
||
删除审核表旧记录失败。(旧表id错误):
|
||
code:104
|
||
msg:
|
||
|
||
删除审核表旧记录失败:
|
||
code:105
|
||
msg:
|
||
err:
|
||
|
||
上传到审核表失败:
|
||
code:106
|
||
msg:
|
||
err:
|
||
|
||
信息发送失败:
|
||
code:107
|
||
msg:
|
||
err:
|
||
40037: template_id不正确
|
||
41028: form_id不正确,或者过期
|
||
41029: form_id已被使用
|
||
41030: page不正确
|
||
45009: 接口调用超过限额(目前默认每个帐号日调用限额为100万)(PS:好希望我们的小程序能报这个错啊)
|
||
|
||
未提交或者非法的stats值:
|
||
code:108
|
||
msg:
|
||
*/ |