Commit 7088df70 by 王昆

gsb

parent 4affafe2
const system = require("../../system");
const Dao = require("../dao.base");
class LDPartnerDao extends Dao {
constructor() {
super(Dao.getModelName(LDPartnerDao));
}
}
module.exports = LDPartnerDao;
const system = require("../../system");
const Dao = require("../dao.base");
class LDUserDao extends Dao {
constructor() {
super(Dao.getModelName(LDUserDao));
}
}
module.exports = LDUserDao;
const system = require("../../system");
const Dao = require("../dao.base");
class LDUserBankDao extends Dao {
constructor() {
super(Dao.getModelName(LDUserBankDao));
}
}
module.exports = LDUserBankDao;
const system = require("../../system");
const Dao = require("../dao.base");
class LDUserTradeDao extends Dao {
constructor() {
super(Dao.getModelName(LDUserTradeDao));
}
}
module.exports = LDUserTradeDao;
module.exports = (db, DataTypes) => {
return db.define("ldpartner", {
name: DataTypes.STRING,
ecid: DataTypes.INTEGER,
},{
paranoid: true,
underscored: true,
version: true,
freezeTableName: true,
tableName: 'ld_partner',
validate: {
},
indexes:[
]
});
}
\ No newline at end of file
module.exports = (db, DataTypes) => {
return db.define("lduser", {
p_id: DataTypes.BIGINT,
p_user_id: DataTypes.STRING,
p_user_name: DataTypes.STRING,
p_user_idno: DataTypes.STRING,
p_user_bank_no: DataTypes.STRING,
p_user_mobile: DataTypes.STRING,
p_user_balance: DataTypes.BIGINT,
is_sign: {
type: DataTypes.BOOLEAN,
defaultValue: false
},
econtract_id: DataTypes.INTEGER,
},{
paranoid: true,
underscored: true,
version: true,
freezeTableName: true,
tableName: 'ld_user',
validate: {
},
indexes:[
]
});
}
\ No newline at end of file
module.exports = (db, DataTypes) => {
return db.define("lduserbank", {
user_id: DataTypes.BIGINT,
bank_user_name: DataTypes.STRING,
bank_user_idno: DataTypes.STRING,
bank_name: DataTypes.STRING,
bank_no: DataTypes.STRING,
},{
paranoid: true,
underscored: true,
version: true,
freezeTableName: true,
tableName: 'ld_user_bank',
validate: {
},
indexes:[
]
});
}
\ No newline at end of file
module.exports = (db, DataTypes) => {
return db.define("ldusertrade", {
p_id: DataTypes.BIGINT,
user_id: DataTypes.BIGINT,
amt: DataTypes.BIGINT,
out_trade_no: DataTypes.STRING,
trade_status: DataTypes.STRING,
complete_time: DataTypes.DATE,
},{
paranoid: true,
underscored: true,
version: true,
freezeTableName: true,
tableName: 'ld_user_trade',
validate: {
},
indexes:[
]
});
}
\ No newline at end of file
......@@ -684,6 +684,26 @@ class EsettleService extends ServiceBase {
return list && list.length > 0 ? list[0] : null;
}
async findMchtApiInfo(params) {
if (!params.mchtId) {
return null;
}
let sql = [];
sql.push("SELECT");
sql.push("t1.id AS mchtId, t1.`company_name` AS companyName, t2.`main_id` AS mainId, t3.id AS appId, t3.secret");
sql.push("FROM `tbl_busi` t1");
sql.push("INNER JOIN tbl_busi_signed t2 ON t1.`id` = t2.`busi_id`");
sql.push("INNER JOIN `tbl_busi_api` t3 ON t3.`busi_id` = t1.`id`");
sql.push("WHERE t1.`id` = :mchtId");
sql.push("LIMIT 1");
let list = await this.settledb.query(sql.join(" "), {replacements: params});
if (list && list.length > 0) {
list = list[0, 0] || [];
}
return (!list || list.length == 0) ? null : list[0];
}
async findTBLOrderIds(begin, end) {
if (!begin) {
begin = moment().subtract(3, "days").format("YYYY-MM-DD");
......
const system = require("../../system");
const ServiceBase = require("../sve.base");
const moment = require("moment");
class LDPartnerService extends ServiceBase {
constructor() {
super(ServiceBase.getDaoName(LDPartnerService));
}
}
module.exports = LDPartnerService;
\ No newline at end of file
const system = require("../../system");
const ServiceBase = require("../sve.base");
const moment = require("moment");
class LDUserService extends ServiceBase {
constructor() {
super(ServiceBase.getDaoName(LDUserService));
}
async loginH5(params) {
let p_id = params.p_id;
let p_user_id = params.p_user_id;
let user = await this.dao.findOne({p_id: p_id, p_user_id: p_user_id});
if (!user) {
user = await this.dao.create(params);
}
return user;
}
}
module.exports = LDUserService;
\ No newline at end of file
const system = require("../../system");
const ServiceBase = require("../sve.base");
const moment = require("moment");
class LDUserTradeService extends ServiceBase {
constructor() {
super(ServiceBase.getDaoName(LDUserTradeService));
}
}
module.exports = LDUserTradeService;
\ No newline at end of file
const system = require("../../system");
const ServiceBase = require("../sve.base");
const moment = require("moment");
class LDUserBankService extends ServiceBase {
constructor() {
super(ServiceBase.getDaoName(LDUserBankService));
}
}
module.exports = LDUserBankService;
\ No newline at end of file
var fs=require("fs");
var objsettings=require("../config/objsettings");
var settings=require("../config/settings");
const crypto = require('crypto');
class System {
static declare(ns) {
var ar = ns.split('.');
......@@ -233,6 +235,38 @@ class System {
}
}
}
static encryption(data) {
if(!data) {
return "";
}
let AES_conf = settings.apiconfig.AES;
let key = AES_conf.key;
let iv = AES_conf.iv;
var cipherChunks = [];
var cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
cipher.setAutoPadding(true);
cipherChunks.push(cipher.update(data, 'utf8', 'base64'));
cipherChunks.push(cipher.final('base64'));
return cipherChunks.join('');
}
static decryption(data){
if(!data) {
return "";
}
let AES_conf = settings.apiconfig.AES;
let key = AES_conf.key;
let iv = AES_conf.iv;
var cipherChunks = [];
var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
decipher.setAutoPadding(true);
cipherChunks.push(decipher.update(data, 'base64', 'utf8'));
cipherChunks.push(decipher.final('utf8'));
return cipherChunks.join('');
}
// static buildObjectFactory(){
// for(var k in objsettings){
// let classpath=objsettings[k];
......
const system = require("../../system")
const querystring = require('querystring');
const settings = require("../../../config/settings");
const AppletBase = require("../applet.base");
const logCtl = system.getObject("web.oplogCtl");
const uuidv4 = require('uuid/v4');
class LDApplet extends AppletBase {
constructor() {
super();
this.ldpartnerSve = system.getObject("service.ldpartnerSve");
this.lduserSve = system.getObject("service.lduserSve");
this.lduserbankSve = system.getObject("service.lduserbankSve");
this.ldusertradeSve = system.getObject("service.ldusertradeSve");
this.esettleSve = system.getObject("service.esettleSve");
this.redisClient = system.getObject("util.redisClient");
}
//************************************************************公共参数处理********************开始***************************************
//验证公共参数信息
async getLoginUser(req) {
let sid = req.headers["ldh5sid"] || "";
try {
let user = JSON.parse(await this.redisClient.get(sid + "_user"));
let mcht = JSON.parse(this.redisClient.get(sid + "_mcht"));
if (user && user.id) {
await this.addLoginCache("LD_H5_LOGIN_" + user.id, sid, user, mcht);
}
return {user: user, mcht: mcht};
} catch (e) {
console.log(e)
return null;
}
}
async encrypt(obj, req) {
let key = {
"partner": "1",
"user_id": "1",
"mchtId": "1103817785420820481",
"balance": "50"
};
let en = system.encryption(JSON.stringify(key));
console.log(en);
console.log(encodeURIComponent(en));
}
async removeLoginCache(uk, sid) {
await this.redisClient.delete(uk);
await this.redisClient.delete(sid + "_user");
await this.redisClient.delete(sid + "_mcht");
}
async addLoginCache(uk, sid, mcht, user) {
await this.redisClient.setWithEx(uk, sid, 60 * 60);
await this.redisClient.setWithEx(sid + "_user", JSON.stringify(user), 6 * 60 * 60);
await this.redisClient.setWithEx(sid + "_mcht", JSON.stringify(mcht), 6 * 60 * 60);
}
async setLogin(user, mcht) {
let uk = "LD_H5_LOGIN_" + user.id;
let sid = await this.redisClient.get(uk);
if (sid) {
await this.removeLoginCache(uk, sid);
}
sid = uuidv4();
await this.addLoginCache(uk, sid, mcht, user);
return sid;
}
async login(query, body, req) {
let data = body.data;
if (!data) {
return system.getErrResult2("登录失败");
}
let loginInfo;
try {
loginInfo = JSON.parse(system.decryption(decodeURIComponent((data))));
} catch (e) {
console.log(e);
return system.getErrResult2(`登录失败${e.stack}`);
}
if (!loginInfo.partner) {
return system.getErrResult2(`登录失败,缺少合作信息`);
}
if (!loginInfo.user_id) {
return system.getErrResult2(`登录失败,缺少用户标识`);
}
if (!loginInfo.mchtId) {
return system.getErrResult2(`登录失败,缺少商户信息`);
}
try {
let mcht = await this.esettleSve.findMchtApiInfo({mchtId: loginInfo.mchtId});
if (!mcht) {
return system.getErrResult2(`登录失败,商户信息不存在`);
}
let partner = await this.ldpartnerSve.findById(loginInfo.partner);
if (!partner) {
return system.getErrResult2(`登录失败,未开通合作`);
}
let user = await this.lduserSve.loginH5({p_id: partner.id, p_user_id: loginInfo.user_id});
let sid = await this.setLogin(user, partner, mcht);
return system.getResult2({
sid: sid,
user: user
});
} catch (e) {
console.log("登录异常:error*****************************************************************************");
console.log(e.stack);
}
}
}
module.exports = LDApplet;
\ No newline at end of file
......@@ -55,7 +55,7 @@ module.exports = function (app) {
app.all('*',function (req, res, next) {
req.objs=System;
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , ldh5sid');
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
res.header("P3P","CP=CAO PSA OUR");
res.header('content-type', 'text/html;charset=UTF-8');
......
......@@ -6,7 +6,7 @@ var settings = {
db: 11,
},
database: {
dbname: "bpo2",
dbname: "bpo",
user: "write",
password: "write",
config: {
......
......@@ -30,6 +30,11 @@ var settings = {
}
},
apiconfig: {
AES: {
key: "qUPsMflPfgpPP1Ua", //密钥
iv: '1012133205963708', //偏移向量
padding: 'PKCS7Padding' //补全值
},
settleApiConfig: function () {
let domain;
if(settings.env == "dev") {
......
<gsb-h5page2>
<gsb-h5nav slot="nav" title="合同详情"></gsb-h5nav>
<el-card shadow="hover" style="background-color:#2692FF;border-radius:0px;">
<el-row style="font-size:16px;color:white;text-align:left;margin-bottom:5px">{{contract.name}}</el-row>
<el-row style="font-size:16px;color:white;text-align:left;margin-bottom:5px">{{contract.eflowstatusname}}</el-row>
......@@ -63,4 +61,3 @@
<el-button type="primary" @click="sendmail" round>确 定</el-button>
</div>
</el-dialog>
</gsb-h5page2>
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