Commit eed25f4a by 王昆

gsb

parent 1d520c59
......@@ -4,6 +4,7 @@ const CtlBase = require("../ctl.base");
const uuidv4 = require('uuid/v4');
const moment = require('moment');
const md5 = require("MD5");
const uuidv1 = require('uuid/v1');
class CWxSignApiCtl extends CtlBase {
constructor() {
......@@ -169,7 +170,7 @@ class CWxSignApiCtl extends CtlBase {
signInfo = await this.cwxsigninfoSve.create(signInfo);
// 异步签约
this.doSign(api, signInfo, params);
await this.doSign(api, signInfo, params);
// openId回调
let rs = {};
......@@ -297,31 +298,44 @@ class CWxSignApiCtl extends CtlBase {
}
async doSign(api, signInfo, params) {
let res;
if (api.app_type == 1) {
// 普票签
// let res = await this.doSign2(api, signInfo, params);
res = await this.dkcontractSve.autoSignNew({
let key = `${api.app_id}_${params.idNo}`;
let _lock = uuidv1();
await this.redisLock.lock(key, _lock, 20);
try {
let res;
let signParams = {
appId: "wxsign_" + api.app_id,
ecid: api.ecid,
userId: signInfo.id,
userId: signInfo.userId || "",
idName: params.idName,
idNo: params.idNo,
bankno: params.bankNo,
mobile: params.mobile,
});
if (res.code == 0) {
signInfo.contract_id = res.data.contractId;
signInfo.save();
}
} else if (api.app_type == 2) {
// 专票签
await this.doSign3(api, signInfo, params);
} else {
}
// 返回结果
if (api.wx_notify_url) {
// TODO 回调给接入方,时间不够,暂未实现
if (api.app_type == 1) {
// 普票签
// let res = await this.doSign2(api, signInfo, params);
res = await this.dkcontractSve.autoSignNew(signParams);
if (res.code == 0) {
signInfo.contract_id = res.data.contractId;
signInfo.save();
}
} else if (api.app_type == 2) {
// 专票签
res = await this.econtractSve.autoSignWX(signParams);
if (res.code == 0) {
signInfo.contract_id = res.data.contractId;
signInfo.save();
}
} else {
}
// 返回结果
if (api.wx_notify_url) {
// TODO 回调给接入方,时间不够,暂未实现
}
} catch (e) {
} finally {
await this.redisLock.unLock(key, _lock);
}
}
......
......@@ -2656,6 +2656,172 @@ class EcontractService extends ServiceBase {
return this.returnjson(-1, tt.message || "签约失败", tt.code);
}
async autoSignWX(params){
let ecid = params.ecid;
// 验证身份证是否签约过
let todays = moment().format("YYYY-MM-DD") + " 00:00:00";
let contractId = await this.dao.findSignedContractId({idno: params.idNo, ecid: ecid, today : todays}) || 0;
if (contractId) {
return this.returnjson(0, "用户已经签约", {
contractId: contractId
});
}
// ecid etemplate
var etemplate = await this.etemplateSve.findById(ecid);
// ecompany
var ecompany = await this.ecompanyDao.findById(etemplate.ecompany_id);
// p_user
var unionId = params.appId + "_" + params.idNo;
var user = await this.userDao.findOne({
unionId: unionId,
});
if (!user) {
user = await this.userDao.create({
appkey: params.appId,
unionId: unionId,
userId3rd: params.userId,
userName: params.idName,
mobile: params.mobile,
utype: 0,
});
}
// p_user_eaccount
var eaccount = await this.usereaccountDao.findOne({
user_id: user.id,
personsSign: params.idNo,
}) || {};
var isNeedCreate = !eaccount.eaccountid || eaccount.userName != params.idName || eaccount.mobile != params.mobile || eaccount.bankno != params.bankno;
eaccount.user_id = user.id;
eaccount.userName = params.idName;
eaccount.mobile = params.mobile;
eaccount.bankno = params.bankno;
eaccount.personsSign = params.idNo;
if (eaccount.id) {
await eaccount.save();
} else {
eaccount = await this.usereaccountDao.create(eaccount);
}
// e签宝流程
if (isNeedCreate) {
var uidStr = await this.getUidStr(8, 36);
var thirdId = etemplate.id + "_" + eaccount.id + uidStr;
//2.创建e签宝account 5.2.1 , 创建后save()
var params = {
thirdId: thirdId,
name: eaccount.userName,
idNo: eaccount.personsSign,
idType: 19,
mobile: eaccount.mobile
};
var getAccount = await this.utilesignbaoSve.createAccountId(params, "econtractSve");
if (getAccount && getAccount.code == 1 && getAccount.data) {
eaccount.eaccountid = getAccount.data.accountId;
await eaccount.save();
} else {
return this.returnjson(-1, "账户创建失败");
}
}
// 3.设置静默签署授权 5.2.5
if (!eaccount.isGrantAuto) {
var paramsGrant = {
grantAccountId: eaccount.eaccountid
};
var grantAuto = await this.utilesignbaoSve.grantAuthorization(paramsGrant, "econtractSve");
if (grantAuto.code != 1) {
return this.returnjson(-1, "静默签署设置失败");
}
eaccount.isGrantAuto = true;
await eaccount.save();
}
// 创建合同 fileurl、esignUrl 怎么赋值????????????
let econtract = {
name: ecompany.name,
eflowstatusname: "签约中",
eflowstatus: "1",
// begin_at: now,
// completed_at: now,
user_id: eaccount.user_id,
usereaccount_id: eaccount.id,
etemplate_id: etemplate.id,
ecompany_id: ecompany.id,
// end_at: end,
};
econtract = await this.create(econtract);
// 创建印章id
var sealId = "";
var eseal = await this.esealSve.findOne({
nameA: etemplate.nameA
});
// 生产环境需要打开
if (!eseal) {
var rs = await this.utilesignbaoSve.creatEntSignet(settings.apiconfig.companyAccountId(), etemplate.nameA + "alias", etemplate.nameA, "", "", "econtractSve");
// var rs = await this.utilesignbaoSve.creatEntSignet("740b19e0799a4d7abacfa1a31fb72b1e", etemplate.nameA + "alias", etemplate.nameA, "", "", "econtractSve");
if (rs && rs.code == 1) {
sealId = rs.data.sealId;
await this.esealSve.create({
nameA: etemplate.nameA,
sealId: sealId,
});
} else {
return this.returnjson(-1, "生成印章错误");
}
} else {
sealId = eseal.sealId;
}
let today = new Date().Format("yyyy-MM-dd");
var signParams = {
templateId: etemplate.templateid, //模板id,由创建模板接口调用返回的templateId 必填
name: ecompany.name, //合同模板名称 必填
simpleFormFields: {
nameA: etemplate.nameA, //甲方 必填
nameB: eaccount.userName, //乙方 必填
unit: ecompany.name, //合作单位(国美) 必填---------------------------超出长度风险---目前不知多少长度
signDateA: today, //甲方签约日期 必填
signDateB: today //乙方签约日期 必填
}
};
var ebaoAccountId = eaccount.eaccountid; //签署人账户id-- 必填
var thirdOrderNo = econtract.id; //第三方流水号,通知回调使用---选填
var eBaoRedirectBossUrl = "";
var tt = await this.utilesignbaoSve.userAutoSignContractNoTemplate(signParams, ebaoAccountId, thirdOrderNo, eBaoRedirectBossUrl, "econtractSve", sealId);
if (tt && tt.data && tt.code == 1) {
econtract.eflowid = tt.data.flowId;
econtract.edocid = tt.data.docId;
econtract.eflowstatus = '2';
econtract.eflowstatusname = "已完成";
var signTime = new Date();
econtract.completed_at = signTime;
econtract.begin_at = signTime;
var end_at = new Date();
end_at.setFullYear(end_at.getFullYear() + 1);
econtract.end_at = end_at;
await econtract.save();
this.syncSign(econtract.id);
// TODO DOWNLOAD OK
this.redisClient.rpushBCD({id: econtract.id, sve: "e"});
return this.returnjson(0, "success", {
contractId: econtract.id
});
}
return this.returnjson(-1, tt.message || "签约失败", tt.code);
}
returnjson(code, msg, data) {
return {
code: code,
......
......@@ -63,8 +63,8 @@ var settings = {
if (settings.env == "dev") {
return "http://39.106.185.66:8000";
} else {
// return "https://pay.gongsibao.com";
return "http://39.106.185.66:8000";
return "https://pay.gongsibao.com";
// return "http://39.106.185.66:8000";
}
},
opLogUrl: function () {
......
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