Commit 9ce7f4dc by 赵庆

gsb

parent 7323fcb1
......@@ -44,6 +44,18 @@ class ActionAPI extends APIBase {
case "addSign":
opResult = await this.ecloudsignSve.apiaddSign(action_body);
break;
//自动生成公司印章
case "createSeal":
opResult = await this.ecloudsignSve.apicreateSeal(action_body);
break;
// 自动生成姓名矩形章
case "createSign":
opResult = await this.ecloudsignSve.apicreateSign(action_body);
break;
//页面手写签字
case "signPage":
opResult = await this.ecloudsignSve.apisignPage(action_body);
break;
//添加模板
case "addHtmlTemplate":
opResult = await this.ecloudsignSve.apiaddHtmlTemplate(action_body);
......
......@@ -232,33 +232,6 @@ class Dao {
return this.db.query(sql, tmpParas);
}
async customInsert(sql, paras, t) {
var tmpParas = null;
if (t && t != 'undefined') {
if (paras == null || paras == 'undefined') {
tmpParas = {
type: this.db.QueryTypes.INSERT
};
tmpParas.transaction = t;
} else {
tmpParas = {
replacements: paras,
type: this.db.QueryTypes.INSERT
};
tmpParas.transaction = t;
}
} else {
tmpParas = paras == null || paras == 'undefined' ? {
type: this.db.QueryTypes.INSERT
} : {
replacements: paras,
type: this.db.QueryTypes.INSERT
};
}
return this.db.query(sql, tmpParas);
}
async findCount(whereObj = null) {
return this.model.count(whereObj, {
logging: false
......
/**
* 定义数据模型的公共方法
* @param {any} name 模型名称【数据库表名】
* @param {any} attributes 数据字段集合
* @returns 数据模型对象
*/
function defineModel (name, attributes) {
var attrs = {}
for (let key in attributes) {
let value = attributes[key]
if (typeof value === 'object' && value['type']) {
value.allowNull = value.allowNull || false
attrs[key] = value
} else {
attrs[key] = {
type: value,
allowNull: false
}
}
}
// 附加公共字段
attrs.createAt = {
type: Sequelize.BIGINT,
allowNull: false
}
attrs.updateAt = {
type: Sequelize.BIGINT,
allowNull: false
}
// 状态:0表示有效,1表示无效,2表示已删除,默认为0.
attrs.status = {
type: Sequelize.INTEGER,
allowNull: false
}
// 版本
// attrs.status = {
// type: Sequelize.INTEGER,
// allowNull: false
// }
// 调用seq的方法定义模型并返回
return sequelize.define(name, attrs, {
tableName: name,
timestamps: false,
hooks: {
beforeValidate: function (obj) {
let now = Date.now()
if (obj.isNewRecord) {
obj.createAt = now
obj.updateAt = now
// obj.version = 0
} else {
obj.updateAt = now
// ++obj.version
}
}
}
})
}
\ No newline at end of file
const system = require("../../../system");
const Dao = require("../../dao.base");
class ApplycertDao extends Dao {
constructor() {
super(Dao.getModelName(ApplycertDao));
}
}
module.exports = ApplycertDao;
const system = require("../../../system");
const Dao = require("../../dao.base");
const when = require('when');
const bindCallback = require('when/node').bindCallback;
class ecloudsignDao extends Dao {
constructor() {
super(Dao.getModelName(ecloudsignDao));
}
//公共查询
async selectFields(tableName, fieldArray, where) {
var fieldString = null;
if (fieldArray.length === 0)
fieldString = '*';
else {
for (let i = 0; i < fieldArray.length; i++) {
if (fieldString === null)
fieldString = fieldArray[i];
else
fieldString = fieldString + "," + fieldArray[i]
}
}
let whereKeys = Object.keys(where);
let whereValues = Object.values(where);
let whereString = null;
for (let i = 0; i < whereKeys.length; i++) {
let where = null;
where = whereKeys[i] + " = " + whereValues[i];
if (whereString === null)
whereString = where;
else
whereString = whereString + " AND " + where;
}
let selectQuery = null;
if (whereString === null)
selectQuery = "SELECT " + fieldString + " FROM " + tableName;
else
selectQuery = "SELECT " + fieldString + " FROM " + tableName + " WHERE " + whereString;
console.log(selectQuery);
return this.customQuery(selectQuery);
}
//公共添加
async addRecord(tableName, fieldList) {
let keys = Object.keys(fieldList);
let values = Object.values(fieldList);
let fields = null;
let field_values = null;
for (let i = 0; i < keys.length; i++) {
if (fields === null) {
fields = keys[i];
} else {
fields = fields + "," + keys[i];
}
if (typeof values[i] === 'string') {
if (field_values === null)
field_values = '"' + values[i] + '"';
else
field_values = field_values + "," + '"' + values[i] + '"';
} else {
if (field_values === null)
field_values = values[i];
else
field_values = field_values + "," + values[i];
}
}
let insertQuery = "INSERT INTO " + tableName + " (" + fields + ") values (" + field_values + ")";
console.log(insertQuery);
return this.customInsert(insertQuery);
}
}
module.exports = ecloudsignDao;
\ No newline at end of file
const system = require("../../../system");
const Dao = require("../../dao.base");
class PverifyDao extends Dao {
constructor() {
super(Dao.getModelName(PverifyDao));
}
}
module.exports = PverifyDao;
const system = require("../../../system");
const Dao = require("../../dao.base");
class SignetDao extends Dao {
constructor() {
super(Dao.getModelName(SignetDao));
}
}
module.exports = SignetDao;
const system = require("../../../system");
const Dao = require("../../dao.base");
class TemplateDao extends Dao {
constructor() {
super(Dao.getModelName(TemplateDao));
}
}
module.exports = TemplateDao;
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("applycert", {
type: DataTypes.STRING,
cardType: DataTypes.STRING,
idCardNum: DataTypes.STRING,
name: DataTypes.STRING,
mobilePhone: DataTypes.STRING,
code: DataTypes.STRING,
message: DataTypes.BIGINT,
issuer: DataTypes.STRING,
serialNumber: DataTypes.STRING,
certNotBefore: DataTypes.STRING,
certNotAfter: DataTypes.STRING,
userName: DataTypes.STRING,
}, {
paranoid: false,//假的删除
underscored: true,
version: true,
freezeTableName: true,
timestamps: true,
updatedAt: false,
//freezeTableName: true,
// define the table's name
tableName: 'p_applycert',
validate: {},
indexes: [
{
// unique: true,
// fields: ['user_second_id']
}
]
});
}
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("ecouldsign", {
}, {
paranoid: true,//假的删除
underscored: true,
version: true,
freezeTableName: true,
//freezeTableName: true,
// define the table's name
tableName: '',
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}]
// }
]
});
}
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("pverify", {
appType: DataTypes.BIGINT,
dataType: DataTypes.BIGINT,
dataId: DataTypes.STRING,
realName: DataTypes.STRING,
mobile: DataTypes.STRING,
bankNumber: DataTypes.STRING,
idCardNumber: DataTypes.STRING,
verifyType: DataTypes.BIGINT,
succeed: DataTypes.STRING,
}, {
paranoid: false,//假的删除
underscored: true,
version: true,
freezeTableName: true,
timestamps: true,
updatedAt: false,
//freezeTableName: true,
// define the table's name
tableName: 'p_verify',
validate: {},
indexes: [
{
// unique: true,
// fields: ['user_second_id']
}
]
});
}
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("signet", {
unitName: DataTypes.STRING,
mobilePhone: DataTypes.STRING,
signImg: DataTypes.STRING,
signType: DataTypes.STRING,
sealName: DataTypes.STRING,
sealNumber: DataTypes.STRING,
signId: DataTypes.BIGINT,
succeed : DataTypes.STRING,
signName : DataTypes.STRING,
status : DataTypes.BIGINT,
}, {
paranoid: false,//假的删除
underscored: true,
version: true,
freezeTableName: true,
timestamps: true,
updatedAt: false,
//freezeTableName: true,
// define the table's name
tableName: 'p_signet',
validate: {},
indexes: [
{
// unique: true,
// fields: ['user_second_id']
}
]
});
}
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("template", {
templateName: DataTypes.STRING,
templateNumber: DataTypes.STRING,
html: DataTypes.STRING,
signPosition: DataTypes.STRING,
status : DataTypes.BIGINT,
succeed : DataTypes.STRING,
}, {
paranoid: false,//假的删除
underscored: true,
version: true,
freezeTableName: true,
timestamps: true,
updatedAt: false,
//freezeTableName: true,
// define the table's name
tableName: 'p_template',
validate: {},
indexes: [
{
// unique: true,
// fields: ['user_second_id']
}
]
});
}
const request = require('request');
class ReqClient {
constructor() {
}
async reqFormData(params, url) {
let options = {
url: url,
form: params
};
return new Promise(function (resolve, reject) {
request.post(options, function (error, response, body) {
if (error) {
reject(error);
} else {
resolve(body);
}
});
});
}
}
module.exports = ReqClient;
const moment = require("moment");
class ecloudsignClient {
constructor() {
this.appKey = "yyzm68fu5g3epaa3pc";
this.secret = "5ccba1e4baea71eaa2d1132a2205fef2";
}
//获取请求参数
async rformat(qobj) {
qobj.timestamp = await this.getNewDate();
qobj.appKey = this.appKey;
qobj.v = '1.0';
qobj.nonce = await this.getRandomCode(6);
let signature = await this.signature(qobj, this.secret);
qobj.signature = signature;
return qobj;
}
//获取当前时间
async getNewDate() {
let date = moment().add(13, "hours").format("YYYY-MM-DD HH:mm:ss");
return date;
}
//随机生成数字
async getRandomCode(iun) {
var randStr = "";
for (var i = 0; i < iun; i++) {//此处的12为生成12位数字,可随即更改
var randItem = Math.floor(Math.random() * 10);
randStr += randItem;
}
return randStr;
}
async signature(args, secret) {
let newArgs = tosort(args);
var string = '';
for (var k in newArgs) {
if(typeof newArgs[k] == "object"){
let kvalue = tosort(newArgs[k]);
newArgs[k] = JSON.stringify(kvalue[0]);
// newArgs[k] = JSON.stringify(kvalue);
}
// string += '&' + k + '=' + newArgs[k];
string += newArgs[k];
}
console.log(string)
var str = secret + string + secret;
console.log(str)
var crypto = require('crypto');
return crypto.createHash('md5').update(str,'utf8').digest('hex').toUpperCase();
}
}
function tosort(args){
if(args.length == 2){
return args;
}
var keys = Object.keys(args);
keys = keys.sort();
var newArgs = {};
keys.forEach(function (key) {
newArgs[key] = args[key];
});
return newArgs;
}
module.exports = ecloudsignClient;
......@@ -24,7 +24,7 @@ var settings = {
salt: "%iatpD1gcxz7iF#B",
defaultpwd: "987456",
basepath: path.normalize(path.join(__dirname, '../..')),
port: process.env.NODE_PORT || 3101,
port: process.env.NODE_PORT || 3333,
reqEsAddr: function () {
if (this.env == "dev") {
var localsettings = require("./localsettings");
......
## 商户服务接口
  1 [商户接口](doc/merchant/merchant.md)
  2 [签约管理](doc/merchant/signed.md)
  3 [资金账户](doc/merchant/account.md)
  4 [充值管理](doc/merchant/recharge.md)
  5 [抬头管理](doc/merchant/title.md)
  6 [地址管理](doc/merchant/address.md)
  1 [易云章接口](doc/sign/sign.md)
<a name="menu">目录</a>
1. [银行卡认证](#orderList)
## **<a name="bankVerify"> 银行卡认证 </a>**
[返回到目录](#menu)
##### URL
[/api/op/action/springboard]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
"action_process": "test",
"action_type": "bankVerify",
"action_body": {
"realName": "张奇", //姓名
"mobile": "13716585658", //手机号 三要素 为4是必传
"bankNumber": "61220838112002934029", //银行卡号
"idCardNumber": "1107276789679999", //身份证号
"verifyType": 3, //三要素 =3 四要素 =4
//--------以上必传参数
"appType":1, //应用类型
"dataType":1 //数据类型
"dataId":"No112131", //dataId
}
}
```
#### 成功结果
```javascript
{
"code":0,
"msg":"信息一致",
"requestid":"1201f930ea8e450798b8a6cbbc0c8ab3"
}
```
#### 失败结果
```javascript
{
"code": 16,
"msg": "手机号不合法",
"requestid": "1201f930ea8e450798b8a6cbbc0c8ab3"
}
```
## **<a name="createStep"> 创建进度 </a>**
[返回到目录](#menu)
##### URL
[/web/order/orderCtl/createStep]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
``` javascript
{
}
```
#### 返回结果
```javascript
{
}
```
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -38,13 +38,16 @@
"node-cron": "^2.0.1",
"node-uuid": "^1.4.8",
"qr-image": "^3.2.0",
"request": "^2.88.0",
"sequelize": "^4.37.8",
"sequelize-cli": "^4.1.1",
"serve-favicon": "^2.4.5",
"sha1": "^1.1.1",
"socket.io": "^2.1.1",
"string_decoder": "^1.3.0",
"svg-captcha": "^1.4.0",
"uuid": "^3.2.1"
"uuid": "^3.2.1",
"when": "^3.7.8"
},
"devDependencies": {
"element-theme": "^2.0.1",
......
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