Files
jjx-web/uniCloud-tcb/cloudfunctions/router/service/client/contract/kh/addSign.js
T
2026-10-08 18:18:21 +08:00

215 lines
8.5 KiB
JavaScript

'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;
}
}