'use strict'; module.exports = { /** * 新增签约宝合同 * @url client/contract/kh/addSign 前端调用的url参数地址 * data 请求参数 * @param {String} params1 参数1 */ main: async (event) => { let {data = {}, userInfo, util, filterResponse, originalParam} = event; let {customUtil, uniID, config, pubFun, vk, db, _} = util; let {uid} = data; let res = {code: 0, msg: ""}; // 业务逻辑开始----------------------------------------------------------- let payByUser = userInfo; const otherUser = await vk.baseDao.findByWhereJson({ dbName: 'uni-id-users', whereJson: { mobile: data.phone } }) if (JSON.stringify(otherUser) === '{}' || !otherUser) return { code: -1, msg: '签约接收方账号不存在' } if (data.payBy === undefined || data.payBy === null || data.payBy === '') return { code: -1, msg: `请选择费用承担方` } if (data.payBy === 1) payByUser = otherUser // console.log('data.thirdList', data.thirdList, data.thirdList && data.thirdList.length > 0, data.thirdList.length > 0) if (data.thirdList && data.thirdList.length > 0) { // let inThird = false for (let i = 0; i < data.thirdList.length; i++) { const thirdUser = await vk.baseDao.findByWhereJson({ dbName: 'uni-id-users', whereJson: { mobile: data.thirdList[i].phone } }) if (!thirdUser) return { code: -1, msg: `该用户:${data.thirdList[i].phone}不存在` } if (!thirdUser.fadadaConfirm) return { code: -1, msg: `该用户:${data.thirdList[i].phone}未通过法大大认证,无法签约` } if (thirdUser.uid === uid) return { code: -1, msg: '第三方不能为自己' } if (thirdUser.uid === otherUser._id) return { code: -1, msg: '第三方不能与对方为相同账号' } if (data.payBy === 2 && i === 0) { payByUser = thirdUser } } // if (data.payBy === 2 && !inThird) return { // code: -1, // msg: '该承担方不在第三方名单中' // } } if (!otherUser.fadadaConfirm) return { code: -1, msg: '签约接收方账号未通过法大大认证,无法签约' } if (otherUser._id === uid) return { code: -1, msg: '无法与自己签约' } if (payByUser.qybNum <= 0) return { code: -1, msg: '费用承担方已无签约宝次数,无法继续签约' } data.payerUid = payByUser._id data.transactionId = vk.pubfn.createOrderNo("C", 20) let doc_url = data.contractFile if (Array.isArray(doc_url)) doc_url = doc_url[doc_url.length - 1] const uploaddocs = await pubFun.fadada('uploaddocs.api', { contract_id: data.transactionId, doc_title: data.title, doc_url, // file: doc_url, doc_type: '.pdf' }) if (parseInt(uploaddocs.code) === 1000) { let partyCount = 2 if (data.thirdList && data.thirdList.length > 0) partyCount += data.thirdList.length // 对方是甲方 const buyerSignKeyword = data.buyerSignKeyword // 签约发起方 const sellerSignKeyword = data.sellerSignKeyword // 签约被邀请方 data.buyerSignKeyword = data.userType % 2 === 1 ? sellerSignKeyword : buyerSignKeyword data.sellerSignKeyword = data.userType % 2 === 1 ? buyerSignKeyword : sellerSignKeyword const contractId = await vk.baseDao.add({ dbName: 'jjx-contract', dataJson: { ...data, ...{ status: 1, userId: uid, changeNum: 0, productTitle: data.title, docTitle: data.title, type: 'sign', contractBase: data.contractFile, partyCount, signCount: 0, tradeMethod: data.tradeMethod } } }) await vk.daoCenter.userContractDao.adds([ { transactionId: vk.pubfn.createOrderNo("S", 20), userId: uid, role: data.userType === 1 ? 'seller' : 'buyer', sign: false, contractId, }, { transactionId: vk.pubfn.createOrderNo("S", 20), userId: otherUser._id, role: data.userType === 1 ? 'buyer' : 'seller', sign: false, contractId, } ]) if (data.thirdList && data.thirdList.length > 0) { for (let i = 0; i < data.thirdList.length; i++) { const thirdUser = await vk.baseDao.findByWhereJson({ dbName: 'uni-id-users', whereJson: { mobile: data.thirdList[i].phone } }) console.log('thirdUser', thirdUser) if (thirdUser) { await vk.daoCenter.userContractDao.adds([ { transactionId: vk.pubfn.createOrderNo("ST", 20), userId: thirdUser._id, role: 'third', sign: false, contractId, keyword: data.thirdList[i].signKeyword, }, ]) await vk.baseDao.add({ dbName: "jjx-message", dataJson: { uid: thirdUser._id, title: `金久信签约宝`, content: `您有签约宝邀请,赶紧去签订合同吧`, type: 'contract', hasRead: false, } }); } // await pubFun.sendNotifySms(thirdUser._id, 'SMS_474570002', { // name: thirdUser.accountType === 2 ? thirdUser.company.companyName : thirdUser.person.personName, // name2: userInfo.accountType === 2 ? userInfo.company.companyName : userInfo.person.personName, // }) } } await vk.baseDao.updateById({ dbName: "uni-id-users", id: payByUser._id, dataJson: { qybNum: _.inc(-1) } }); // 签约宝扣费记录 const remainNum = payByUser.qybNum - 1 const addSignLog = await vk.baseDao.add({ dbName: "jjx-sign-pay_list", dataJson: { userId: payByUser._id, remainNum, contractId, payBy: data.payBy } }); await vk.baseDao.add({ dbName: "jjx-message", dataJson: { uid: otherUser._id, title: `金久信签约宝`, content: `您有金久信签约宝邀请,赶紧去签订合同吧`, type: 'contract', hasRead: false, } }); // await pubFun.sendNotifySms(otherUser._id, 'SMS_474570002', { // name: otherUser.accountType === 2 ? otherUser.company.companyName : otherUser.person.personName, // name2: userInfo.accountType === 2 ? userInfo.company.companyName : userInfo.person.personName, // }) } // 业务逻辑结束----------------------------------------------------------- return res; } }