215 lines
8.5 KiB
JavaScript
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;
|
|
}
|
|
}
|