Commit 1f929d3f by 赵庆

gsb

parent 66b98871
const system = require("../../system");
const md5 = require("MD5");
class EntcontractApi {
constructor() {
this.entcontractSve = system.getObject("service.entcontractSve");
this.ecompanybusiSve = system.getObject("service.ecompanybusiSve");
}
async autoSign(pobj) {
// 处理参数
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),
appId: this.trim(pobj.appId),
idName: this.trim(pobj.idName),//姓名
mobile: this.trim(pobj.mobile),//手机号
idNo: this.trim(pobj.idNo),//身份证
bankno: this.trim(pobj.bankno),//银行卡
nonceStr: this.trim(pobj.nonceStr),//随机码
sign: this.trim(pobj.sign)
};
if (!param.ecid) {
return this.returnjson(-1, "请传入薪必果提供的ecid")
}
if (!param.appId) {
return this.returnjson(-1, "请传入薪必果提供的appId")
}
if (!param.idName) {
return this.returnjson(-1, "请提供该用户姓名")
}
if (!param.idNo) {
return this.returnjson(-1, "请提供该用户身份证号")
}
if (!param.bankno) {
return this.returnjson(-1, "请提供该用户银行卡号")
}
if (!param.nonceStr) {
return this.returnjson(-1, "请提供随机码")
}
// 查appId关联key
var busi = await this.ecompanybusiSve.findOne({
appId: param.appId
});
if (!busi || !busi.key) {
return this.returnjson(1001003, "配置信息错误,请联系薪必果人员进行配置");
}
// 签名
var signArr = [];
var keys = Object.keys(param).sort();
for (var i = 0; i < keys.length; i++) {
var k = keys[i];
var v = param[k];
if (!k || !v || k == 'sign') {
continue;
}
signArr.push(k + "=" + v);
}
var signStr = signArr.join("&") + "&key=" + busi.key;
var sign = md5(signStr).toUpperCase();
console.log(sign)
if (param.sign != sign) {
return this.returnjson(1001001, "签名错误");
}
try {
var result = await this.entcontractSve.autoSign(param);
return result;
} catch (error) {
console.log(error);
}
}
trim(o) {
if (!o) {
return "";
}
return o.toString().trim();
}
returnjson(code, msg, data) {
return {
code: code,
msg: msg,
data: data || null
}
}
}
module.exports = EntcontractApi;
\ No newline at end of file
const CtlBase = require("../ctl.base");
class EntcompanyCtl extends CtlBase {
constructor() {
super(CtlBase.getServiceName(EntcompanyCtl));
}
}
module.exports = EntcompanyCtl;
const CtlBase = require("../ctl.base");
class EntcontractCtl extends CtlBase {
constructor() {
super(CtlBase.getServiceName(EntcontractCtl));
this.utilesignbaoSve = system.getObject("service.utilesignbaoSve");
}
async downloadContractUrl(q, obj, req) {
let contract = await this.service.findById(obj.id);
if (!contract) {
return system.getErrResult2("协议不存在");
}
if (contract.fileurl) {
return system.getResult2(contract.fileurl);
}
// 请求文件地址
let fileRs = await this.utilesignbaoSve.downloadUserContractFile(contract.eflowid, "econtractCtl");
console.log(fileRs, "===============================================================");
if (fileRs.code == 1 && fileRs.data.selfossUrl) {
contract.fileurl = fileRs.data.selfossUrl;
contract.save();
return system.getResult2(fileRs.data.selfossUrl);
}
return system.getErrResult2("网络繁忙,获取合同失败,请稍后重试");
}
}
module.exports = EntcontractCtl;
\ No newline at end of file
const CtlBase = require("../ctl.base");
class EnttemplateCtl extends CtlBase {
constructor() {
super(CtlBase.getServiceName(EnttemplateCtl));
}
}
module.exports = EnttemplateCtl;
\ No newline at end of file
const system = require("../../system");
const Dao = require("../dao.base");
class EntcompanyDao extends Dao {
constructor() {
super(Dao.getModelName(EntcompanyDao));
}
async idsLikeName(name) {
var result = [];
if (!name || !name.trim()) {
return result;
}
var sql = "SELECT id FROM c_dkcompany WHERE name LIKE :name ";
var list = await this.customQuery(sql, {name: "%" + name + "%"});
if (list) {
for (var item of list) {
result.push(item.id);
}
}
return result;
}
async findNamesByOwnerIds(ownerIds) {
var result = [];
if (!ownerIds || ownerIds.length == 0) {
return result;
}
var sql = "SELECT name FROM c_dkcompany WHERE owner_id IN (:ownerIds) ";
var list = await this.customQuery(sql, {ownerIds: ownerIds});
if (!list || list.length == 0) {
return result;
}
for (var item of list) {
result.push(item.name);
}
return result;
}
async findIdsByOwnerIds(ownerIds) {
var result = [];
if (!ownerIds || ownerIds.length == 0) {
return result;
}
var sql = "SELECT id FROM c_dkcompany WHERE owner_id IN (:ownerIds) ";
var list = await this.customQuery(sql, {ownerIds: ownerIds});
if (!list || list.length == 0) {
return result;
}
for (var item of list) {
result.push(item.id);
}
return result;
}
async findMapByNames(names, attrs) {
var result = [];
if (!ids || ids.length == 0) {
return result;
}
attrs = attrs || "*";
var sql = "SELECT " + attrs + " FROM c_dkcompany where name IN (:names) WHERE deleted_at IS NULL ";
var list = await this.customQuery(sql, {names: names});
if (!list || list.length == 0) {
return result;
}
for (var item of list) {
result[item.name] = item;
}
return result;
}
async suggest(name, ownerIds) {
if (!name) {
return [];
}
var sql = "SELECT id, name FROM `c_dkcompany` WHERE name LIKE :queryLike AND deleted_at IS NULL ";
if (ownerIds && ownerIds.length > 0) {
sql = sql + " AND owner_id IN (:ownerIds) ";
}
sql = sql + " ORDER BY id ASC ";
var list = await this.customQuery(sql, {queryLike: "%" + name + "%", ownerIds: ownerIds});
return list || [];
}
}
module.exports = EntcompanyDao;
const system=require("../../system");
const Dao=require("../dao.base");
class EntcontractDao extends Dao{
constructor(){
super(Dao.getModelName(EntcontractDao));
}
extraModelFilter(qobj) {
var usereaccountWhere = {};
if(qobj.accountMobile) {
usereaccountWhere.mobile = qobj.accountMobile;
}
if(qobj.accountName) {
usereaccountWhere.userName = qobj.accountName;
}
if(qobj.accountIdno) {
usereaccountWhere.personsSign = qobj.accountIdno;
}
let v = [
{model:this.db.models.ecompany,attributes:["id","name"]},
{model:this.db.models.usereaccount,attributes:["id","userName","mobile", "personsSign", "email"], where:usereaccountWhere},
{model:this.db.models.etemplate,attributes:["id","name"]}
];
//return {"key":"include","value":[{model:this.db.models.app,},{model:this.db.models.role,as:"Roles",attributes:["id","name"],joinTableAttributes:['created_at']}]};
return {"key":"include","value": v};
}
async findUserSinedCompanyIds(usereaccount_id) {
let sql = "SELECT ecompany_id FROM `c_econtract` WHERE usereaccount_id = :usereaccount_id AND begin_at < NOW() AND end_at > NOW() AND eflowstatus = '2' GROUP BY ecompany_id";
let tmpParas = {usereaccount_id : usereaccount_id}
let rs = await this.customQuery(sql, tmpParas);
let list = [];
if(rs && rs.length > 0) {
for(let r of rs) {
list.push(r.ecompany_id);
}
}
return list;
}
}
module.exports=EntcontractDao;
const system=require("../../system");
const Dao=require("../dao.base");
class EnttemplateDao extends Dao{
constructor(){
super(Dao.getModelName(EnttemplateDao));
}
async findIdsLikeName(name) {
var result = [];
if(!name) {
return result;
}
var sql = "SELECT id FROM `c_dktemplate` WHERE NAME LIKE :nameLike";
var list = await this.customQuery(sql, {nameLike: "%" + name + "%"});
if(!list || list.length == 0) {
return result;
}
for(var item of list) {
result.push(item.id);
}
return result;
}
async findMapByIds(ids, attrs) {
var result = {};
if(!ids || ids.length == 0) {
return result;
}
attrs = attrs || "*";
var sql = "SELECT " + attrs + " FROM c_dktemplate where id IN (:ids) ";
var list = await this.customQuery(sql, {ids:ids});
if(!list || list.length == 0) {
return result;
}
for(var item of list) {
result[item.id] = item;
}
return result;
}
}
module.exports=EnttemplateDao;
const system = require("../../system");
const settings = require("../../../config/settings");
const uiconfig = system.getUiConfig2(settings.wxconfig.appId);
module.exports = (db, DataTypes) => {
return db.define("entcompany", {
name: DataTypes.STRING,
sealName: DataTypes.STRING,
sealId: DataTypes.STRING,
legal: DataTypes.STRING,
contactName: DataTypes.STRING,
contactMobile: DataTypes.STRING,
addr: DataTypes.STRING,
owner_id: DataTypes.STRING,
bankAccount : DataTypes.STRING,
bankName : DataTypes.STRING,
bankNo : DataTypes.STRING
}, {
paranoid: true, //假的删除
underscored: true,
version: true,
freezeTableName: true,
//freezeTableName: true,
// define the table's name
tableName: 'c_entcompany',
validate: {},
indexes: [
// Create a unique index on email
// {
// unique: true,
// fields: ['email']
// },
//
// // Creates a gin index on data with the jsonb_path_ops operator
// {
// fields: ['data'],
// using: 'gin',
// operator: 'jsonb_path_ops'
// },
//
// // By default index name will be [table]_[fields]
// // Creates a multi column partial index
// {
// name: 'public_by_author',
// fields: ['author', 'status'],
// where: {
// status: 'public'
// }
// },
//
// // A BTREE index with a ordered field
// {
// name: 'title_index',
// method: 'BTREE',
// fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}]
// }
]
});
}
\ No newline at end of file
const system = require("../../system");
const settings = require("../../../config/settings");
const uiconfig = system.getUiConfig2(settings.wxconfig.appId);
module.exports = (db, DataTypes) => {
return db.define("entcontract", {
name: DataTypes.STRING,
edocid: DataTypes.STRING, // 合同id
eflowid: DataTypes.STRING, // 合同流程id
esignUrl: DataTypes.STRING, // 合同签署链接
fileurl: DataTypes.STRING, // 合同文件地址
eflowstatusname: {
// 销售状态名称
type: DataTypes.STRING(20),
defaultValue: "签署中",
},
eflowstatus: {
type: DataTypes.ENUM,
values: Object.keys(uiconfig.config.pdict.eflowstatus),
set: function (val) {
this.setDataValue("eflowstatus", val);
this.setDataValue("eflowstatusname", uiconfig.config.pdict.eflowstatus[val]);
},
defaultValue: 1,
},
entcompany_id: DataTypes.INTEGER,
enttemplate_id: DataTypes.INTEGER,
user_id: DataTypes.INTEGER,
usereaccount_id: DataTypes.INTEGER,
resultDescription: DataTypes.STRING,
completed_at: DataTypes.DATE,
begin_at: DataTypes.DATE,
end_at: DataTypes.DATE,
}, {
paranoid: true, //假的删除
underscored: true,
version: true,
freezeTableName: true,
//freezeTableName: true,
// define the table's name
tableName: 'c_entcontract',
validate: {},
indexes: [
// Create a unique index on email
// {
// unique: true,
// fields: ['email']
// },
//
// // Creates a gin index on data with the jsonb_path_ops operator
// {
// fields: ['data'],
// using: 'gin',
// operator: 'jsonb_path_ops'
// },
//
// // By default index name will be [table]_[fields]
// // Creates a multi column partial index
// {
// name: 'public_by_author',
// fields: ['author', 'status'],
// where: {
// status: 'public'
// }
// },
//
// // A BTREE index with a ordered field
// {
// name: 'title_index',
// method: 'BTREE',
// fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}]
// }
]
});
}
\ No newline at end of file
module.exports = (db, DataTypes) => {
return db.define("enttemplate", {
entcompany_id: DataTypes.INTEGER,
aggreement_id: DataTypes.INTEGER,
name: DataTypes.STRING,
codeurl:DataTypes.STRING,
remark:DataTypes.STRING,
templateid:DataTypes.STRING,
},{
paranoid: true,//假的删除
underscored: true,
version: true,
freezeTableName: true,
//freezeTableName: true,
// define the table's name
tableName: 'c_enttemplate',
validate: {
},
indexes:[
// Create a unique index on email
// {
// unique: true,
// fields: ['email']
// },
//
// // Creates a gin index on data with the jsonb_path_ops operator
// {
// fields: ['data'],
// using: 'gin',
// operator: 'jsonb_path_ops'
// },
//
// // By default index name will be [table]_[fields]
// // Creates a multi column partial index
// {
// name: 'public_by_author',
// fields: ['author', 'status'],
// where: {
// status: 'public'
// }
// },
//
// // A BTREE index with a ordered field
// {
// name: 'title_index',
// method: 'BTREE',
// fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}]
// }
]
});
}
...@@ -53,7 +53,7 @@ module.exports = (db, DataTypes) => { ...@@ -53,7 +53,7 @@ module.exports = (db, DataTypes) => {
appId3rd: DataTypes.STRING(64), appId3rd: DataTypes.STRING(64),
userCode3rd: DataTypes.STRING(64), userCode3rd: DataTypes.STRING(64),
branchCode3rd: DataTypes.STRING(64), branchCode3rd: DataTypes.STRING(64),
openid3rd: DataTypes.STRING(200), // openid3rd: DataTypes.STRING(200),
}, { }, {
paranoid: true, //假的删除 paranoid: true, //假的删除
......
const system = require("../../system");
const ServiceBase = require("../sve.base");
const moment = require("moment");
class EntcompanyService extends ServiceBase {
constructor(){
super(ServiceBase.getDaoName(EntcompanyService));
}
}
module.exports = EntcompanyService;
\ No newline at end of file
const ServiceBase = require("../sve.base");
const system = require("../../system");
class EntcontractService extends ServiceBase {
constructor() {
super(ServiceBase.getDaoName(EntcontractService));
this.enttemplateSve = system.getObject("service.enttemplateSve");
this.entcompanyDao = system.getObject("db.entcompanyDao");
this.usereaccountDao = system.getObject("db.usereaccountDao");
this.ecompanybusiDao = system.getObject("db.ecompanybusiDao");
this.utilesignbaoSve = system.getObject("service.utilesignbaoSve");
this.userDao = system.getObject("db.userDao");
this.esealSve = system.getObject("service.esealSve");
this.ejobapplySve = system.getObject("service.ejobapplySve");
this.restClient = system.getObject("util.restClient");
}
async autoSign(params) {
var ecid = params.ecid;
var unionId = params.appId + "_" + ecid;
// enttemplate 模板查询
var etemplate = await this.enttemplateSve.findById(ecid);
// ecompany
var ecompany = await this.entcompanyDao.findById(etemplate.entcompany_id);
// p_user
var user = await this.userDao.findOne({
unionId: unionId,
});
if (!user) {
user = await this.userDao.create({
appkey: params.appId,
unionId: unionId,
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);
}
// c_entcontract
var econtract = await this.dao.findOne({
eflowstatus: '2',
usereaccount_id: eaccount.id,
enttemplate_id: ecid,
});
if (econtract) {
return this.returnjson(0, "用户已经签约,请不要重复签约");
}
// e签宝流程
if (isNeedCreate) {
var bankthreeParams = {
name: eaccount.userName,
idno: eaccount.personsSign,
cardno: eaccount.bankno
};
var threeResult = await this.utilesignbaoSve.bankthree(bankthreeParams, "bankinfoAuth");
// {"code":-110,"message":"手机号格式错误","data":{}}
//1成功,-110提示验证信息有误,-120亲,提供的信息不正确,请验证后再试!
console.log("threeResult-----------------------------", threeResult);
if (!threeResult || threeResult.code == -120) {
return this.returnjson(-1, "银行三要素(姓名、身份证、银行卡号)验证失败");
}
if (threeResult.code == -110) {
return this.returnjson(-1, "银行三要素验证失败");
}
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 怎么赋值????????????
econtract = {
name: ecompany.name,
eflowstatusname: "签约中",
eflowstatus: "1",
// begin_at: now,
// completed_at: now,
user_id: eaccount.user_id,
usereaccount_id: eaccount.id,
enttemplate_id: etemplate.id,
entcompany_id: ecompany.id,
// end_at: end,
};
econtract = await this.create(econtract);
// 创建印章id
var sealId = "";
var eseal = await this.esealSve.findOne({
nameA: ecompany.sealName
});
// 生产环境需要打开
if (!eseal) {
// var accountId = ""; // 测试
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") + "年" + new Date().Format("MM") + "月" + new Date().Format("dd") + "日";
var signParams = {
templateId: etemplate.templateid, //模板id,由创建模板接口调用返回的templateId 必填
name: etemplate.name, //合同模板名称 必填
simpleFormFields: {
nameA: params.name, //甲方 必填
addressA: params.addr, //甲方地址
representA: params.legal,//甲方法定代表人
agentA: params.contactName,//甲方联系人
agentMobileA: params.contactMobile,//甲方 联系电话
nameB: ecompany.name, //乙方 必填
addressB: ecompany.addr, //乙方 地址
representB: ecompany.legal,//乙方 法定代表人
agentB: ecompany.contactName,//乙方 联系人
agentMobileB: ecompany.contactMobile,//乙方 联系电话
bankNameB: ecompany.bankAccount,//账户名称
bank: ecompany.bankName,//开户行
bankNumB: ecompany.bankNo,//账号
signDate: today,//签约时间
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);
return this.returnjson(0, "success", {
contractId: econtract.id
});
}
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 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;
\ No newline at end of file
const ServiceBase=require("../sve.base");
class EnttemplateService extends ServiceBase{
constructor(){
super(ServiceBase.getDaoName(EnttemplateService));
}
}
module.exports=EnttemplateService;
...@@ -7,10 +7,10 @@ var settings = { ...@@ -7,10 +7,10 @@ var settings = {
}, },
database: { database: {
dbname : "bpo", dbname : "bpo",
user : "root", user : "write",
password : "root", password : "write",
config : { config : {
host: '192.168.18.110', host: '192.168.18.237',
dialect: 'mysql', dialect: 'mysql',
operatorsAliases: false, operatorsAliases: false,
pool: { pool: {
......
...@@ -20,7 +20,7 @@ var settings = { ...@@ -20,7 +20,7 @@ var settings = {
secret: "f99d413b767f09b5dff0b3610366cc46", secret: "f99d413b767f09b5dff0b3610366cc46",
}, },
basepath: path.normalize(path.join(__dirname, '../..')), basepath: path.normalize(path.join(__dirname, '../..')),
port: process.env.NODE_PORT || 3000, port: process.env.NODE_PORT || 3333,
reqEsAddr: function () { reqEsAddr: function () {
if (this.env == "dev") { if (this.env == "dev") {
var localsettings = require("./localsettings"); var localsettings = require("./localsettings");
......
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