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) => {
appId3rd: DataTypes.STRING(64),
userCode3rd: DataTypes.STRING(64),
branchCode3rd: DataTypes.STRING(64),
openid3rd: DataTypes.STRING(200),
// openid3rd: DataTypes.STRING(200),
}, {
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");
class EnttemplateService extends ServiceBase{
constructor(){
super(ServiceBase.getDaoName(EnttemplateService));
}
}
module.exports=EnttemplateService;
......@@ -7,10 +7,10 @@ var settings = {
},
database: {
dbname : "bpo",
user : "root",
password : "root",
config : {
host: '192.168.18.110',
user : "write",
password : "write",
config : {
host: '192.168.18.237',
dialect: 'mysql',
operatorsAliases: false,
pool: {
......
......@@ -20,7 +20,7 @@ var settings = {
secret: "f99d413b767f09b5dff0b3610366cc46",
},
basepath: path.normalize(path.join(__dirname, '../..')),
port: process.env.NODE_PORT || 3000,
port: process.env.NODE_PORT || 3333,
reqEsAddr: function () {
if (this.env == "dev") {
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