Commit c8539172 by 赵庆

gsb

parent 2ad362b7
const system = require("../../system"); const system = require("../../system");
const md5 = require("MD5"); const md5 = require("MD5");
class EntcontractApi { class EntcontractApi {
constructor() { constructor() {
this.entcontractSve = system.getObject("service.entcontractSve"); this.entcontractSve = system.getObject("service.entcontractSve");
this.ecompanybusiSve = system.getObject("service.ecompanybusiSve"); this.ecompanybusiSve = system.getObject("service.ecompanybusiSve");
this.idcardClient = system.getObject("util.idcardClient"); this.idcardClient = system.getObject("util.idcardClient");
this.utilesignbaoSve = system.getObject("service.utilesignbaoSve");
} }
async autoSign(pobj) { async autoSign(pobj) {
// 处理参数 // 处理参数
var param = { var param = {
name: this.trim(pobj.name), //甲方 必填
addr: this.trim(pobj.addr), //甲方地址
legal: this.trim(pobj.legal),//甲方法定代表人
contactName: this.trim(pobj.contactName),//甲方联系人
contactMobile: this.trim(pobj.contactMobile),//甲方 联系电话
ecid: this.trim(pobj.ecid), ecid: this.trim(pobj.ecid),
appId: this.trim(pobj.appId), appId: this.trim(pobj.appId),
userId: this.trim(pobj.userId),
name: this.trim(pobj.firstAddr), //甲方 必填
addr: this.trim(pobj.firstAddr), //甲方地址
legal: this.trim(pobj.firstLegal),//甲方法定代表人
contactName: this.trim(pobj.firstContactName),//甲方联系人
contactMobile: this.trim(pobj.firstContactMobile),//甲方 联系电话
idName: this.trim(pobj.idName),//姓名 idName: this.trim(pobj.idName),//姓名
mobile: this.trim(pobj.mobile),//手机号 mobile: this.trim(pobj.mobile),//手机号
idNo: this.trim(pobj.idNo),//身份证 idNo: this.trim(pobj.idNo),//身份证
...@@ -104,10 +108,10 @@ class EntcontractApi { ...@@ -104,10 +108,10 @@ class EntcontractApi {
} }
if (!param.idNo) { if (!param.idNo) {
return this.returnjson(-1, "请提供该用户身份证号") return this.returnjson(-1, "请提供该用户身份证号")
}else { } else {
if(!await this.idcardClient.checkIDCard(param.idNo)){ if (!await this.idcardClient.checkIDCard(param.idNo)) {
return this.returnjson(-1, "身份证格式不正确"); return this.returnjson(-1, "身份证格式不正确");
} }
} }
if (!param.nonceStr) { if (!param.nonceStr) {
return this.returnjson(-1, "请提供随机码") return this.returnjson(-1, "请提供随机码")
...@@ -134,6 +138,7 @@ class EntcontractApi { ...@@ -134,6 +138,7 @@ class EntcontractApi {
} }
var signStr = signArr.join("&") + "&key=" + busi.key; var signStr = signArr.join("&") + "&key=" + busi.key;
var sign = md5(signStr).toUpperCase(); var sign = md5(signStr).toUpperCase();
console.log(sign)
if (param.sign != sign) { if (param.sign != sign) {
return this.returnjson(1001001, "签名错误"); return this.returnjson(1001001, "签名错误");
} }
...@@ -146,6 +151,75 @@ class EntcontractApi { ...@@ -146,6 +151,75 @@ class EntcontractApi {
} }
} }
async sinedUsers3rd(obj, req) {
// 验证合法性
var appId = obj.appId;
var nonceStr = obj.nonceStr;
var idNo = obj.idNo;
var startId = obj.startId || 0;
var userId = obj.userId || "";
var pageSize = 20;
var busi = await this.ecompanybusiSve.findOne({
appId: appId
});
if (!busi) {
return {
code: 1001003,
msg: "配置信息错误,请联系薪必果人员进行配置"
};
}
var signArr = [];
signArr.push("appId=" + appId);
signArr.push("idNo=" + idNo);
signArr.push("nonceStr=" + nonceStr);
signArr.push("startId=" + startId);
signArr.push("userId=" + userId);
signArr.push("key=" + busi.key);
var sign = md5(signArr.join("&")).toUpperCase();
if (sign != obj.sign) {
return {
code: 1001001,
msg: "签名失败"
};
}
var params = {
entcompanyId: busi.ecompany_id,
startId: startId,
idNo: idNo,
pageSize: pageSize,
userId3rd: userId,
};
try {
var userList = await this.entcontractSve.findSignedUses4Push(params);
var result = {
code: 0,
msg: "success",
};
result.data = userList;
return result;
} catch (e) {
var result = {
code: 500,
msg: "接口异常"
};
console.log(e.stack);
//日志记录
logCtl.error({
optitle: "校验是否签约error",
op: "api/econtractApi/validContract",
content: e.stack,
clientIp: req.clientIp
});
return result;
}
}
trim(o) { trim(o) {
if (!o) { if (!o) {
return ""; return "";
......
const ServiceBase = require("../sve.base"); const ServiceBase = require("../sve.base");
var settings = require("../../../config/settings");
const moment = require('moment'); const moment = require('moment');
const system = require("../../system"); const system = require("../../system");
const md5 = require("MD5"); const md5 = require("MD5");
...@@ -15,18 +16,18 @@ class EntcontractService extends ServiceBase { ...@@ -15,18 +16,18 @@ class EntcontractService extends ServiceBase {
this.esealSve = system.getObject("service.esealSve"); this.esealSve = system.getObject("service.esealSve");
this.ejobapplySve = system.getObject("service.ejobapplySve"); this.ejobapplySve = system.getObject("service.ejobapplySve");
this.restClient = system.getObject("util.restClient"); this.restClient = system.getObject("util.restClient");
this.yzmerchantsignedDao = system.getObject("db.yzmerchantsignedDao") this.yzmerchantsignedDao = system.getObject("db.yzmerchantsignedDao");
this.URL = "http://39.106.185.66:8000/merchant/busi/reg" this.URL = "http://39.106.185.66:8000/merchant/busi/reg";
this.YZKEY = "4a112ce87c38464d8d454caf23b7b31f" this.YZKEY = "4a112ce87c38464d8d454caf23b7b31f"
} }
async autoSign(params) { async autoSign(params) {
var ecid = params.ecid; var ecid = params.ecid;
var unionId = params.appId + "_" + ecid; var unionId = params.appId + "_" + params.userId;
// enttemplate 模板查询 // enttemplate 模板查询
var etemplate = await this.enttemplateSve.findById(ecid); var enttemplate = await this.enttemplateSve.findById(ecid);
// ecompany // entcompany
var ecompany = await this.entcompanyDao.findById(etemplate.entcompany_id); var entcompany = await this.entcompanyDao.findById(enttemplate.entcompany_id);
// p_user // p_user
var user = await this.userDao.findOne({ var user = await this.userDao.findOne({
unionId: unionId, unionId: unionId,
...@@ -36,6 +37,7 @@ class EntcontractService extends ServiceBase { ...@@ -36,6 +37,7 @@ class EntcontractService extends ServiceBase {
user = await this.userDao.create({ user = await this.userDao.create({
appkey: params.appId, appkey: params.appId,
unionId: unionId, unionId: unionId,
userId3rd: params.userId,
userName: params.idName, userName: params.idName,
mobile: params.mobile, mobile: params.mobile,
utype: 0, utype: 0,
...@@ -62,13 +64,13 @@ class EntcontractService extends ServiceBase { ...@@ -62,13 +64,13 @@ class EntcontractService extends ServiceBase {
} }
// c_entcontract // c_entcontract
var econtract = await this.dao.findOne({ var entcontract = await this.dao.findOne({
eflowstatus: '2', eflowstatus: '2',
usereaccount_id: eaccount.id, usereaccount_id: eaccount.id,
enttemplate_id: ecid, enttemplate_id: ecid,
}); });
if (econtract) { if (entcontract) {
return this.returnjson(0, "用户已经签约,请不要重复签约"); return this.returnjson(0, "用户已经签约,请不要重复签约");
} }
...@@ -80,8 +82,6 @@ class EntcontractService extends ServiceBase { ...@@ -80,8 +82,6 @@ class EntcontractService extends ServiceBase {
cardno: eaccount.bankno cardno: eaccount.bankno
}; };
var threeResult = await this.utilesignbaoSve.bankthree(bankthreeParams, "bankinfoAuth"); var threeResult = await this.utilesignbaoSve.bankthree(bankthreeParams, "bankinfoAuth");
// {"code":-110,"message":"手机号格式错误","data":{}}
//1成功,-110提示验证信息有误,-120亲,提供的信息不正确,请验证后再试!
console.log("threeResult-----------------------------", threeResult); console.log("threeResult-----------------------------", threeResult);
if (!threeResult || threeResult.code == -120) { if (!threeResult || threeResult.code == -120) {
return this.returnjson(-1, "银行三要素(姓名、身份证、银行卡号)验证失败"); return this.returnjson(-1, "银行三要素(姓名、身份证、银行卡号)验证失败");
...@@ -91,7 +91,7 @@ class EntcontractService extends ServiceBase { ...@@ -91,7 +91,7 @@ class EntcontractService extends ServiceBase {
} }
var uidStr = await this.getUidStr(8, 36); var uidStr = await this.getUidStr(8, 36);
var thirdId = etemplate.id + "_" + eaccount.id + uidStr; var thirdId = enttemplate.id + "_" + eaccount.id + uidStr;
//2.创建e签宝account 5.2.1 , 创建后save() //2.创建e签宝account 5.2.1 , 创建后save()
var params = { var params = {
...@@ -123,26 +123,22 @@ class EntcontractService extends ServiceBase { ...@@ -123,26 +123,22 @@ class EntcontractService extends ServiceBase {
await eaccount.save(); await eaccount.save();
} }
// 创建合同 fileurl、esignUrl 怎么赋值???????????? // 创建合同
econtract = { entcontract = {
name: ecompany.name, name: entcompany.name,
eflowstatusname: "签约中", eflowstatusname: "签约中",
eflowstatus: "1", eflowstatus: "1",
// begin_at: now,
// completed_at: now,
user_id: eaccount.user_id, user_id: eaccount.user_id,
usereaccount_id: eaccount.id, usereaccount_id: eaccount.id,
enttemplate_id: etemplate.id, enttemplate_id: enttemplate.id,
entcompany_id: ecompany.id, entcompany_id: entcompany.id,
// end_at: end,
}; };
econtract = await this.create(econtract); entcontract = await this.create(entcontract);
// 创建印章id var sealId = entcompany.sealId;
var sealId = ecompany.sealId;
let today = new Date().Format("yyyy") + "年" + new Date().Format("MM") + "月" + new Date().Format("dd") + "日"; let today = new Date().Format("yyyy") + "年" + new Date().Format("MM") + "月" + new Date().Format("dd") + "日";
var signParams = { var signParams = {
templateId: etemplate.templateid, //模板id,由创建模板接口调用返回的templateId 必填 templateId: enttemplate.templateid, //模板id,由创建模板接口调用返回的templateId 必填
name: etemplate.name, //合同模板名称 必填 name: enttemplate.name, //合同模板名称 必填
simpleFormFields: { simpleFormFields: {
nameA: params.name, //甲方 必填 nameA: params.name, //甲方 必填
addressA: params.addr, //甲方地址 addressA: params.addr, //甲方地址
...@@ -150,15 +146,15 @@ class EntcontractService extends ServiceBase { ...@@ -150,15 +146,15 @@ class EntcontractService extends ServiceBase {
agentA: params.contactName,//甲方联系人 agentA: params.contactName,//甲方联系人
agentMobileA: params.contactMobile,//甲方 联系电话 agentMobileA: params.contactMobile,//甲方 联系电话
nameB: ecompany.name, //乙方 必填 nameB: eaccount.userName, //乙方 必填
addressB: ecompany.addr, //乙方 地址 addressB: entcompany.addr, //乙方 地址
representB: ecompany.legal,//乙方 法定代表人 representB: entcompany.legal,//乙方 法定代表人
agentB: ecompany.contactName,//乙方 联系人 agentB: entcompany.contactName,//乙方 联系人
agentMobileB: ecompany.contactMobile,//乙方 联系电话 agentMobileB: eaccount.mobile,//乙方 联系电话
bankNameB: ecompany.bankAccount,//账户名称 bankNameB: entcompany.bankAccount,//账户名称
bank: ecompany.bankName,//开户行 bank: entcompany.bankName,//开户行
bankNumB: ecompany.bankNo,//账号 bankNumB: entcompany.bankNo,//账号
signDate: today,//签约时间 signDate: today,//签约时间
signDateA: today, //甲方签约日期 必填 signDateA: today, //甲方签约日期 必填
...@@ -166,186 +162,32 @@ class EntcontractService extends ServiceBase { ...@@ -166,186 +162,32 @@ class EntcontractService extends ServiceBase {
} }
}; };
var ebaoAccountId = eaccount.eaccountid; //签署人账户id-- 必填 var ebaoAccountId = eaccount.eaccountid; //签署人账户id-- 必填
var thirdOrderNo = econtract.id; //第三方流水号,通知回调使用---选填 var thirdOrderNo = entcontract.id; //第三方流水号,通知回调使用---选填
var eBaoRedirectBossUrl = ""; var eBaoRedirectBossUrl = "";
var tt = await this.utilesignbaoSve.userAutoSignContractNoTemplate(signParams, ebaoAccountId, thirdOrderNo, eBaoRedirectBossUrl, "econtractSve", sealId); var tt = await this.utilesignbaoSve.userAutoSignContractNoTemplate(signParams, ebaoAccountId, thirdOrderNo, eBaoRedirectBossUrl, "econtractSve", sealId);
if (tt && tt.data && tt.code == 1) { if (tt && tt.data && tt.code == 1) {
econtract.eflowid = tt.data.flowId; entcontract.eflowid = tt.data.flowId;
econtract.edocid = tt.data.docId; entcontract.edocid = tt.data.docId;
econtract.eflowstatus = '2'; entcontract.eflowstatus = '2';
econtract.eflowstatusname = "已完成"; entcontract.eflowstatusname = "已完成";
var signTime = new Date(); var signTime = new Date();
econtract.completed_at = signTime; entcontract.completed_at = signTime;
econtract.begin_at = signTime; entcontract.begin_at = signTime;
var end_at = new Date(); var end_at = new Date();
end_at.setFullYear(end_at.getFullYear() + 1); end_at.setFullYear(end_at.getFullYear() + 1);
econtract.end_at = end_at; entcontract.end_at = end_at;
await econtract.save(); await entcontract.save();
this.syncSign(econtract.id); // this.syncSign(entcontract.id);
return await this.createMerchant(params); return await this.createMerchant(params);
// return this.returnjson(0, "success", { // return this.returnjson(0, "success", {
// contractId: econtract.id // contractId: entcontract.id
// }); // });
} }
return this.returnjson(-1, tt.message || "签约失败", tt.code); return this.returnjson(-1, tt.message || "签约失败", tt.code);
} }
async syncSign(contractId) {
var contract = await this.dao.findById(contractId);
if (!contract) {
return null;
}
var account = await this.usereaccountDao.findById(contract.usereaccount_id);
if (!account) {
return null;
}
var user = await this.userDao.findById(account.user_id);
var busi = await this.ecompanybusiDao.findOne({
etemplate_id: contract.enttemplate_id
});
if (!account.isPush && busi && busi.postsignurl) {
var param = {
"appId": busi.appId,
"idNo": account.personsSign,
"idName": account.userName,
"bankNo": account.bankno,
"mobile": account.mobile,
"appId3rd": user.appId3rd || "",
"userCode3rd": user.userCode3rd || "",
"userId3rd": user.userId3rd || "",
"branchCode3rd": user.branchCode3rd || "",
"nonceStr": await this.getUidStr(16),
"beginDate": await this.formateTime(contract.begin_at),
"endDate": await this.formateTime(contract.end_at),
}
if (!user.userCode3rd && !user.userId3rd) {
param.openId = user.openId;
}
if (this.ydCompanyIds.indexOf(contract.ecompany_id) > -1) {
param.pbType = "eSign";
}
var signArr = [];
signArr.push("appId=" + param.appId);
signArr.push("appId3rd=" + param.appId3rd);
signArr.push("bankNo=" + param.bankNo);
signArr.push("beginDate=" + param.beginDate);
signArr.push("branchCode3rd=" + param.branchCode3rd);
signArr.push("endDate=" + param.endDate);
signArr.push("idName=" + param.idName);
signArr.push("idNo=" + param.idNo);
signArr.push("mobile=" + param.mobile);
signArr.push("nonceStr=" + param.nonceStr);
if (!user.userCode3rd && !user.userId3rd) {
signArr.push("openId=" + param.openId);
}
// if (contract.ecompany_id == 10173 || contract.ecompany_id == 10174 || contract.ecompany_id == 10175 || contract.ecompany_id == 10207) {
if (this.ydCompanyIds.indexOf(contract.ecompany_id) > -1) {
signArr.push("pbType=eSign");
}
signArr.push("userCode3rd=" + param.userCode3rd);
signArr.push("userId3rd=" + param.userId3rd);
signArr.push("key=" + busi.key);
param.sign = md5(signArr.join("&")).toUpperCase();
console.log(JSON.stringify(param));
var rs = "";
try {
var rs = await this.restClient.execPost(param, busi.postsignurl);
if (rs.stdout) {
let rsData = JSON.parse(rs.stdout);
if (rsData.code == "0" || rsData.code == "0000") {
account.isPush = true;
account.save();
}
}
return rs.stdout;
} catch (error) {
console.log(rs, "push sign url " + busi.postsignurl, "rs = " + rs);
console.log(error);
return "error";
}
}
}
async findSignedUses4Push(params) {
// var params = {
// ecompanyId: busi.ecompany_id,
// startId: startId,
// idNo: idNo,
// pageSize: pageSize,
// userId3rd: userId,
// userCode3rd: userCode,
// branchCode3rd: branchCode,
// };
var sql = [];
sql.push("SELECT t1.id,t1.begin_at as beginDate,t1.end_at as endDate,");
sql.push("t2.userName AS idName, t2.mobile ,t2.`personsSign` AS idNo, t1.completed_at AS signTime, t2.bankno AS bankNo,");
sql.push("t3.userId3rd, t3.userCode3rd, t3.branchCode3rd, t1.fileurl AS fileUrl");
sql.push("FROM c_econtract t1");
sql.push("INNER JOIN p_user_eaccount t2 ON t1.`usereaccount_id` = t2.`id`");
sql.push("INNER JOIN p_user t3 ON t2.`user_id` = t3.`id`");
sql.push("WHERE t1.id > :startId AND t1.`ecompany_id` = :ecompanyId AND t1.`eflowstatus` = '2' AND t1.`end_at`>= NOW()");
if (params.idNo) {
sql.push("AND t2.`personsSign` = :idNo");
}
if (params.userId3rd) {
sql.push("AND t3.`userId3rd` = :userId3rd");
}
if (params.userCode3rd) {
sql.push("AND t3.`userCode3rd` = :userCode3rd");
}
if (params.branchCode3rd) {
sql.push("AND t3.`branchCode3rd` = :branchCode3rd");
}
sql.push("ORDER BY t1.id ASC LIMIT :pageSize ");
var list = await this.dao.customQuery(sql.join(" "), params);
for (var item of list) {
item.signTime = await this.formateTime(item.signTime);
item.beginDate = await this.formateTime(item.beginDate);
item.endDate = await this.formateTime(item.endDate);
}
return list;
}
async getUidStr(len, radix) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
var uuid = [],
i;
radix = radix || chars.length;
if (len) {
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
} else {
var r;
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random() * 16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
}
returnjson(code, msg, data) {
return {
code: code,
msg: msg,
data: data || null
}
}
async createMerchant(params) { async createMerchant(params) {
var data = { var data = {
appId: "1202849621743763458", appId: "1202849621743763458",
...@@ -412,7 +254,7 @@ class EntcontractService extends ServiceBase { ...@@ -412,7 +254,7 @@ class EntcontractService extends ServiceBase {
}); });
var reso = JSON.parse(rtn.stdout); var reso = JSON.parse(rtn.stdout);
if (!erchants) { if (!erchants) {
this.yzmerchantsignedDao.create({ this.yzmerchantsignedDao.create({
companyName: params.name, companyName: params.name,
appId: reso.data.appId, appId: reso.data.appId,
mchtId: reso.data.mchtId, mchtId: reso.data.mchtId,
...@@ -434,12 +276,12 @@ class EntcontractService extends ServiceBase { ...@@ -434,12 +276,12 @@ class EntcontractService extends ServiceBase {
async autoSignToPer(params) { async autoSignToPer(params) {
var ecid = params.ecid; var ecid = params.ecid;
var unionId = params.appId + "_" + params.userId + params.userCode + params.branchCode; var unionId = params.appId + "_" + params.userId;
// ecid etemplate // ecid enttemplate
var etemplate = await this.etemplateSve.findById(ecid); var enttemplate = await this.enttemplateSve.findById(ecid);
// ecompany // entcompany
var ecompany = await this.ecompanyDao.findById(etemplate.ecompany_id); var entcompany = await this.entcompanyDao.findById(enttemplate.entcompany_id);
// p_user // p_user
var user = await this.userDao.findOne({ var user = await this.userDao.findOne({
...@@ -474,23 +316,23 @@ class EntcontractService extends ServiceBase { ...@@ -474,23 +316,23 @@ class EntcontractService extends ServiceBase {
eaccount = await this.usereaccountDao.create(eaccount); eaccount = await this.usereaccountDao.create(eaccount);
} }
// c_econtract // c_entcontract
var econtract = await this.dao.findOne({ var entcontract = await this.dao.findOne({
eflowstatus: '2', eflowstatus: '2',
usereaccount_id: eaccount.id, usereaccount_id: eaccount.id,
etemplate_id: ecid, enttemplate_id: ecid,
}); });
if (econtract) { if (entcontract) {
return this.returnjson(0, "用户已经签约", { return this.returnjson(0, "用户已经签约", {
contractId: econtract.id contractId: entcontract.id
}); });
} }
// e签宝流程 // e签宝流程
if (isNeedCreate) { if (isNeedCreate) {
var uidStr = await this.getUidStr(8, 36); var uidStr = await this.getUidStr(8, 36);
var thirdId = etemplate.id + "_" + eaccount.id + uidStr; var thirdId = enttemplate.id + "_" + eaccount.id + uidStr;
//2.创建e签宝account 5.2.1 , 创建后save() //2.创建e签宝account 5.2.1 , 创建后save()
var params = { var params = {
...@@ -523,82 +365,218 @@ class EntcontractService extends ServiceBase { ...@@ -523,82 +365,218 @@ class EntcontractService extends ServiceBase {
} }
// 创建合同 fileurl、esignUrl 怎么赋值???????????? // 创建合同 fileurl、esignUrl 怎么赋值????????????
econtract = { entcontract = {
name: ecompany.name, name: enttemplate.name,
eflowstatusname: "签约中", eflowstatusname: "签约中",
eflowstatus: "1", eflowstatus: "1",
// begin_at: now,
// completed_at: now,
user_id: eaccount.user_id, user_id: eaccount.user_id,
usereaccount_id: eaccount.id, usereaccount_id: eaccount.id,
etemplate_id: etemplate.id, enttemplate_id: enttemplate.id,
ecompany_id: ecompany.id, entcompany_id: enttemplate.id,
// end_at: end,
}; };
econtract = await this.create(econtract); entcontract = await this.create(entcontract);
// 创建印章id var sealId = entcompany.sealId;
var sealId = ""; // var eseal = await this.esealSve.findOne({
var eseal = await this.esealSve.findOne({ // nameA: enttemplate.nameA
nameA: etemplate.nameA // });
}); // // 生产环境需要打开
// 生产环境需要打开 // if (!eseal) {
if (!eseal) { // // var accountId = ""; // 测试
// var accountId = ""; // 测试 //
// var rs = await this.utilesignbaoSve.creatEntSignet(settings.apiconfig.companyAccountId(), enttemplate.nameA + "alias", enttemplate.nameA, "", "", "econtractSve");
var rs = await this.utilesignbaoSve.creatEntSignet(settings.apiconfig.companyAccountId(), etemplate.nameA + "alias", etemplate.nameA, "", "", "econtractSve"); // // var rs = await this.utilesignbaoSve.creatEntSignet("740b19e0799a4d7abacfa1a31fb72b1e", enttemplate.nameA + "alias", enttemplate.nameA, "", "", "econtractSve");
// var rs = await this.utilesignbaoSve.creatEntSignet("740b19e0799a4d7abacfa1a31fb72b1e", etemplate.nameA + "alias", etemplate.nameA, "", "", "econtractSve"); // if (rs && rs.code == 1) {
if (rs && rs.code == 1) { // sealId = rs.data.sealId;
sealId = rs.data.sealId; // await this.esealSve.create({
await this.esealSve.create({ // nameA: enttemplate.nameA,
nameA: etemplate.nameA, // sealId: sealId,
sealId: sealId, // });
}); // } else {
} else { // return this.returnjson(-1, "生成印章错误");
return this.returnjson(-1, "生成印章错误"); // }
} // } else {
} else { // sealId = eseal.sealId;
sealId = eseal.sealId; // }
} let today = new Date().Format("yyyy") + "年" + new Date().Format("MM") + "月" + new Date().Format("dd") + "日";
let today = new Date().Format("yyyy-MM-dd");
var signParams = { var signParams = {
templateId: etemplate.templateid, //模板id,由创建模板接口调用返回的templateId 必填 templateId: enttemplate.templateid, //模板id,由创建模板接口调用返回的templateId 必填
name: ecompany.name, //合同模板名称 必填 name: entcompany.name, //合同模板名称 必填
simpleFormFields: { simpleFormFields: {
nameA: etemplate.nameA, //甲方 必填 nameA: entcompany.legal, //甲方 必填
nameB: eaccount.userName, //乙方 必填 nameB: eaccount.userName, //乙方 必填
unit: ecompany.name, //合作单位(国美) 必填---------------------------超出长度风险---目前不知多少长度 unit: entcompany.name, //合作单位(国美) 必填---------------------------超出长度风险---目前不知多少长度
signDateA: today, //甲方签约日期 必填 signDateA: today, //甲方签约日期 必填
signDateB: today //乙方签约日期 必填 signDateB: today //乙方签约日期 必填
} }
}; };
var ebaoAccountId = eaccount.eaccountid; //签署人账户id-- 必填 var ebaoAccountId = eaccount.eaccountid; //签署人账户id-- 必填
var thirdOrderNo = econtract.id; //第三方流水号,通知回调使用---选填 var thirdOrderNo = entcontract.id; //第三方流水号,通知回调使用---选填
var eBaoRedirectBossUrl = ""; var eBaoRedirectBossUrl = "";
var tt = await this.utilesignbaoSve.userAutoSignContractNoTemplate(signParams, ebaoAccountId, thirdOrderNo, eBaoRedirectBossUrl, "econtractSve", sealId); var tt = await this.utilesignbaoSve.userAutoSignContractNoTemplate(signParams, ebaoAccountId, thirdOrderNo, eBaoRedirectBossUrl, "econtractSve", sealId);
if (tt && tt.data && tt.code == 1) { if (tt && tt.data && tt.code == 1) {
econtract.eflowid = tt.data.flowId; entcontract.eflowid = tt.data.flowId;
econtract.edocid = tt.data.docId; entcontract.edocid = tt.data.docId;
econtract.eflowstatus = '2'; entcontract.eflowstatus = '2';
econtract.eflowstatusname = "已完成"; entcontract.eflowstatusname = "已完成";
var signTime = new Date(); var signTime = new Date();
econtract.completed_at = signTime; entcontract.completed_at = signTime;
econtract.begin_at = signTime; entcontract.begin_at = signTime;
var end_at = new Date(); var end_at = new Date();
end_at.setFullYear(end_at.getFullYear() + 1); end_at.setFullYear(end_at.getFullYear() + 1);
econtract.end_at = end_at; entcontract.end_at = end_at;
await econtract.save(); await entcontract.save();
this.syncSign(econtract.id); //this.syncSign(entcontract.id);
return this.returnjson(0, "success", { return this.returnjson(0, "success", {
contractId: econtract.id contractId: entcontract.id
}); });
} }
return this.returnjson(-1, tt.message || "签约失败", tt.code); return this.returnjson(-1, tt.message || "签约失败", tt.code);
} }
async syncSign(contractId) {
var contract = await this.dao.findById(contractId);
if (!contract) {
return null;
}
var account = await this.usereaccountDao.findById(contract.usereaccount_id);
if (!account) {
return null;
}
var user = await this.userDao.findById(account.user_id);
var busi = await this.ecompanybusiDao.findOne({
etemplate_id: contract.enttemplate_id
});
if (!account.isPush && busi && busi.postsignurl) {
var param = {
"appId": busi.appId,
"idNo": account.personsSign,
"idName": account.userName,
"bankNo": account.bankno,
"mobile": account.mobile,
"appId3rd": user.appId3rd || "",
"userCode3rd": user.userCode3rd || "",
"userId3rd": user.userId3rd || "",
"branchCode3rd": user.branchCode3rd || "",
"nonceStr": await this.getUidStr(16),
"beginDate": await this.formateTime(contract.begin_at),
"endDate": await this.formateTime(contract.end_at),
};
if (!user.userCode3rd && !user.userId3rd) {
param.openId = user.openId;
}
if (this.ydCompanyIds.indexOf(contract.entcompany_id) > -1) {
param.pbType = "eSign";
}
var signArr = [];
signArr.push("appId=" + param.appId);
signArr.push("appId3rd=" + param.appId3rd);
signArr.push("bankNo=" + param.bankNo);
signArr.push("beginDate=" + param.beginDate);
signArr.push("branchCode3rd=" + param.branchCode3rd);
signArr.push("endDate=" + param.endDate);
signArr.push("idName=" + param.idName);
signArr.push("idNo=" + param.idNo);
signArr.push("mobile=" + param.mobile);
signArr.push("nonceStr=" + param.nonceStr);
if (!user.userCode3rd && !user.userId3rd) {
signArr.push("openId=" + param.openId);
}
// if (contract.ecompany_id == 10173 || contract.ecompany_id == 10174 || contract.ecompany_id == 10175 || contract.ecompany_id == 10207) {
if (this.ydCompanyIds.indexOf(contract.entcompany_id) > -1) {
signArr.push("pbType=eSign");
}
signArr.push("userCode3rd=" + param.userCode3rd);
signArr.push("userId3rd=" + param.userId3rd);
signArr.push("key=" + busi.key);
param.sign = md5(signArr.join("&")).toUpperCase();
console.log(JSON.stringify(param));
var rs = "";
try {
var rs = await this.restClient.execPost(param, busi.postsignurl);
if (rs.stdout) {
let rsData = JSON.parse(rs.stdout);
if (rsData.code == "0" || rsData.code == "0000") {
account.isPush = true;
account.save();
}
}
return rs.stdout;
} catch (error) {
console.log(rs, "push sign url " + busi.postsignurl, "rs = " + rs);
console.log(error);
return "error";
}
}
}
async findSignedUses4Push(params) {
var sql = [];
sql.push("SELECT t1.id,t1.begin_at as beginDate,t1.end_at as endDate,");
sql.push("t2.userName AS idName, t2.mobile ,t2.`personsSign` AS idNo, t1.completed_at AS signTime, t2.bankno AS bankNo,");
sql.push("t3.userId3rd, t3.userCode3rd, t3.branchCode3rd, t1.fileurl AS fileUrl");
sql.push("FROM c_entcontract t1");
sql.push("INNER JOIN p_user_eaccount t2 ON t1.`usereaccount_id` = t2.`id`");
sql.push("INNER JOIN p_user t3 ON t2.`user_id` = t3.`id`");
sql.push("WHERE t1.id > :startId AND t1.`entcompany_id` = :entcompanyId AND t1.`eflowstatus` = '2' AND t1.`end_at`>= NOW()");
if (params.idNo) {
sql.push("AND t2.`personsSign` = :idNo");
}
if (params.userId3rd) {
sql.push("AND t3.`userId3rd` = :userId3rd");
}
if (params.userCode3rd) {
sql.push("AND t3.`userCode3rd` = :userCode3rd");
}
if (params.branchCode3rd) {
sql.push("AND t3.`branchCode3rd` = :branchCode3rd");
}
sql.push("ORDER BY t1.id ASC LIMIT :pageSize ");
var list = await this.dao.customQuery(sql.join(" "), params);
for (var item of list) {
item.signTime = await this.formateTime(item.signTime);
item.beginDate = await this.formateTime(item.beginDate);
item.endDate = await this.formateTime(item.endDate);
}
return list;
}
async getUidStr(len, radix) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
var uuid = [],
i;
radix = radix || chars.length;
if (len) {
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
} else {
var r;
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random() * 16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
}
returnjson(code, msg, data) {
return {
code: code,
msg: msg,
data: data || null
}
}
} }
module.exports = EntcontractService; module.exports = EntcontractService;
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment