const userGoodsDao = require('../../dao/userGoodsDao.js') // 获取多少天后的时间 function getDateStr(today, addDayCount) { var dd; if (today) { dd = new Date(today); } else { dd = new Date(); } dd.setDate(dd.getDate() + addDayCount); //获取AddDayCount天后的日期 var y = dd.getFullYear(); var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1; var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); return y + "-" + m + "-" + d + " 23:59:59"; } //比较日期大小 function getDataCompare(d2) { //当前时间 let d1 = new Date(); //转换为标准时间"2019/12/29 23:59:59" d2 = d2.replace(/-/g, "/"); d2 = new Date(d2); //如果当前时间大于到期时间 //valueOf() 函数返回指定对象的原始值,这里返回以毫秒数存储的时间值 return d1.valueOf() > d2.valueOf() } module.exports = async (obj, originalParam) => { let user_order_success = true; let { data = {}, verifyResult } = obj; let { db, _ } = originalParam; let { out_trade_no, total_fee } = data; //设置订单支付成功 let order = await db.collection('uni-id-base-order').doc(out_trade_no) .update({ status: 2, transaction_id: data.payNo, paid_time: new Date().getTime(), update_time: new Date().getTime() }); //----发货---- let goods = (await db.collection('order_goods').where({ oid: out_trade_no }).get({ getOne: true })).data[0] // 不同类型的会员 续期处理? //全部记录在 user 的 vip_role 字段 //字段内容示例 // const vip_role = { // 'all': [], //拥有的所有权限类别 // 'role1': 'express_date', //权限 - 过期时间 // } //分别查询出当前用户信息 以及 会员信息 let user_id = goods.user_id let goods_id = goods.goods_id let currentUser = (await db.collection('uni-id-users').where({ _id: user_id }).get({ getOne: true })).data[0] let currentRole = (await db.collection('uce-vip-role').where({ _id: goods_id }).get({ getOne: true })).data[0] //当前已有权限 let vip_role = currentUser.vip_role || { all: [] } if (vip_role.all.includes(currentRole.role_type)) { if (vip_role[currentRole.role_type] == 0) { //如果之前是永久会员 不处理 vip_role[currentRole.role_type] = 0 } else if (currentRole.expire_days == 0) { //如果现在是永久会员 直接处理 vip_role[currentRole.role_type] = 0 } else { //先判断是否已经过期 if (getDataCompare(vip_role[currentRole.role_type])) { vip_role[currentRole.role_type] = getDateStr(null, currentRole.expire_days) } else { vip_role[currentRole.role_type] = getDateStr(vip_role[currentRole.role_type], currentRole.expire_days) } } } else { vip_role.all.push(currentRole.role_type) if (currentRole.expire_days == 0) { //如果是永久会员 vip_role[currentRole.role_type] = 0 } else { //否则就有过期时间 vip_role[currentRole.role_type] = getDateStr(null, currentRole.expire_days) } } //更新当前用户的信息 await db.collection('uni-id-users').where({ _id: user_id }).update({ vip_role: vip_role }) return user_order_success; };