Commit 5907edc1 by zhaoxiqing

gsb

parent 9fa056e8
...@@ -78,6 +78,9 @@ class ActionAPI extends APIBase { ...@@ -78,6 +78,9 @@ class ActionAPI extends APIBase {
case "merchantOfList": case "merchantOfList":
opResult = await this.merchantSve.merchantOfList(action_body); opResult = await this.merchantSve.merchantOfList(action_body);
break; break;
case "merchantOfInfo":
opResult = await this.merchantSve.merchantOfInfo(action_body);
break;
//商户审核 //商户审核
case "auditMerchant": case "auditMerchant":
opResult = await this.merchantSve.auditMerchant(action_body); opResult = await this.merchantSve.auditMerchant(action_body);
...@@ -101,17 +104,22 @@ class ActionAPI extends APIBase { ...@@ -101,17 +104,22 @@ class ActionAPI extends APIBase {
break; break;
//资金流水 //资金流水
//资金流水
case "merchanttradesOfListAll": case "merchanttradesOfListAll":
opResult = await this.merchanttradeSve.merchanttradesOfListAll(action_body); opResult = await this.merchanttradeSve.merchanttradesOfListAll(action_body);
break; break;
//代客下单流水
case "valetorder":
opResult = await this.merchanttradeSve.valetorder(action_body);
break;
//商户余额 //商户余额
//余额 //余额
case "accountbalance" : case "reduceAccountBalance" :
opResult = await this.merchantaccountSve.accountbalance(action_body); opResult = await this.merchantaccountSve.reduceaccountbalance(action_body);
break; break;
//可用余额 //可用余额
case "accountusablebalance" : case "addordelavailable" :
opResult = await this.merchantaccountSve.accountusablebalance(action_body); opResult = await this.merchantaccountSve.addordelavailable(action_body);
break; break;
default: default:
......
...@@ -6,14 +6,31 @@ class MerchantDao extends Dao { ...@@ -6,14 +6,31 @@ class MerchantDao extends Dao {
} }
async suggest(name) { async suggest(name) {
if (!name) { var sql = "SELECT id, name FROM `e_merchant` WHERE deleted_at IS NULL ";
return []; var list = await this.customQuery(sql);
}
var sql = "SELECT id, name FROM `e_merchant` WHERE name LIKE :queryLike AND deleted_at IS NULL ";
sql = sql + " ORDER BY id ASC LIMIT 10";
var list = await this.customQuery(sql, {queryLike: "%" + name + "%"});
return list || []; return list || [];
} }
async findMapByIds(ids, attrs) {
var result = [];
if (!ids || ids.length == 0) {
return result;
}
attrs = attrs || "*";
var sql = "SELECT " + attrs + " FROM e_merchant 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 = MerchantDao; module.exports = MerchantDao;
...@@ -5,7 +5,6 @@ class MerchantaccountDao extends Dao { ...@@ -5,7 +5,6 @@ class MerchantaccountDao extends Dao {
super(Dao.getModelName(MerchantaccountDao)); super(Dao.getModelName(MerchantaccountDao));
} }
async addtomerchantrmb(params) { async addtomerchantrmb(params) {
var sql = []; var sql = [];
sql.push("UPDATE"); sql.push("UPDATE");
...@@ -15,6 +14,24 @@ class MerchantaccountDao extends Dao { ...@@ -15,6 +14,24 @@ class MerchantaccountDao extends Dao {
sql.push("WHERE merchant_id = :merchant_id"); sql.push("WHERE merchant_id = :merchant_id");
return await this.customUpdate(sql.join(" "), params); return await this.customUpdate(sql.join(" "), params);
} }
async addordelmerchantrmb(params) {
var sql = [];
sql.push("UPDATE");
sql.push(this.model.tableName);
sql.push("SET balance_amount = balance_amount - :amount");
sql.push("WHERE merchant_id = :merchant_id");
return await this.customUpdate(sql.join(" "), params);
}
async addordelavailable(params) {
var sql = [];
sql.push("UPDATE");
sql.push(this.model.tableName);
sql.push("SET available_amount = available_amount + :amount");
sql.push("WHERE merchant_id = :merchant_id");
return await this.customUpdate(sql.join(" "), params);
}
} }
module.exports = MerchantaccountDao; module.exports = MerchantaccountDao;
module.exports = (db, DataTypes) => { module.exports = (db, DataTypes) => {
return db.define("merchantapi", { return db.define("merchantapi", {
secret: DataTypes.STRING, secret: DataTypes.STRING,
name : DataTypes.STRING,
ip: DataTypes.TINYINT, ip: DataTypes.TINYINT,
},{ },{
paranoid: true, //假的删除 paranoid: true, //假的删除
......
...@@ -60,6 +60,7 @@ class MerchantService extends ServiceBase { ...@@ -60,6 +60,7 @@ class MerchantService extends ServiceBase {
var merchant = null; var merchant = null;
if (params.id) { if (params.id) {
merchant = await this.dao.findById(params.id); merchant = await this.dao.findById(params.id);
delete params.deleted_at;
} }
var rtn = null; var rtn = null;
if (merchant) { if (merchant) {
...@@ -80,7 +81,6 @@ class MerchantService extends ServiceBase { ...@@ -80,7 +81,6 @@ class MerchantService extends ServiceBase {
async merchantOfList(params) { async merchantOfList(params) {
try { try {
var currentPage = Number(params.currentPage || 0); var currentPage = Number(params.currentPage || 0);
var pageSize = Number(params.pageSize || 10); var pageSize = Number(params.pageSize || 10);
var where = {}; var where = {};
...@@ -89,15 +89,17 @@ class MerchantService extends ServiceBase { ...@@ -89,15 +89,17 @@ class MerchantService extends ServiceBase {
[this.db.Op.like]: "%" + params.name + "%" [this.db.Op.like]: "%" + params.name + "%"
}; };
} }
if (params.beginTime) {
params.beginTime = params.beginTime + " 00:00:00";
}
if (params.entTime) {
params.entTime = params.entTime + " 23:59:59";
}
this.addWhereTime(where, 'created_at', params.beginTime, params.entTime, true); this.addWhereTime(where, 'created_at', params.beginTime, params.entTime, true);
var orderby = [["id", 'desc']]; var orderby = [["id", 'desc']];
var attributes = [`id`, `name`, `credit_code`, `contact_man`, `contact_mobile`, `contact_email`, `account_name`, `audit_status`]; var attributes = [`id`, `name`, `credit_code`, `contact_man`, `contact_mobile`, `contact_email`, `account_name`, `audit_status`];
var page = await this.getPageList(currentPage, pageSize, where, orderby, attributes); var page = await this.getPageList(currentPage, pageSize, where, orderby, attributes);
// if (page && page.rows) {
// for (var row of page.rows) {
// this.handleDate(row, ["created_at"], null);
// }
// }
return system.getResultSuccess(page); return system.getResultSuccess(page);
} catch (e) { } catch (e) {
console.log(e); console.log(e);
...@@ -105,6 +107,19 @@ class MerchantService extends ServiceBase { ...@@ -105,6 +107,19 @@ class MerchantService extends ServiceBase {
} }
} }
async merchantOfInfo(params) {
try {
if (!params.id) {
return system.getResultFail(-1, "商户ID为空");
}
var merchant = await this.dao.findById(params.id) || {};
return system.getResultSuccess(merchant);
} catch (e) {
console.log(e);
return system.getResultFail();
}
}
async auditMerchant(params) { async auditMerchant(params) {
try { try {
if (!params.id) { if (!params.id) {
......
const ServiceBase = require("../../sve.base"); const ServiceBase = require("../../sve.base");
const system = require("../../../system");
class MerchantaccountService extends ServiceBase { class MerchantaccountService extends ServiceBase {
constructor() { constructor() {
...@@ -13,20 +14,45 @@ class MerchantaccountService extends ServiceBase { ...@@ -13,20 +14,45 @@ class MerchantaccountService extends ServiceBase {
} }
async accountbalance(params) { async reduceaccountbalance(params) {
try { try {
if (!params.merchant_id) {
return system.getResultFail(-1, "请提供商户ID");
}
if (!params.amount) {
return system.getResultFail(-1, "请提供金额");
} else if (0 > params.amount) {
return system.getResultFail(-1, "交易金额错误");
}
var data = await this.dao.addordelmerchantrmb(params);
return system.getResultSuccess(data);
} catch (e) { } catch (e) {
console.log(e); console.log(e);
return system.getResultFail();
} }
} }
async accountusablebalance(params) { async addordelavailable(params) {
try { try {
if (!params.merchant_id) {
return system.getResultFail(-1, "请提供商户ID");
}
if (!params.amount) {
return system.getResultFail(-1, "请提供金额");
}
if (0 > params.amount) {
var amount = await this.dao.findOne({merchant_id: params.merchant_id});
let toam = Math.abs(params.amount);
if (0 > (amount.available_amount - toam)) {
return system.getResultFail(-1, "可用余额不足");
}
}
var data = await this.dao.addordelavailable(params);
return system.getResultSuccess(data);
} catch (e) { } catch (e) {
console.log(e); console.log(e);
return system.getResultFail();
} }
} }
......
...@@ -6,6 +6,7 @@ class MerchanttradeService extends ServiceBase { ...@@ -6,6 +6,7 @@ class MerchanttradeService extends ServiceBase {
constructor() { constructor() {
super("merchant", ServiceBase.getDaoName(MerchanttradeService)); super("merchant", ServiceBase.getDaoName(MerchanttradeService));
this.merchantaccountSve = system.getObject("service.merchant.merchantaccountSve"); this.merchantaccountSve = system.getObject("service.merchant.merchantaccountSve");
this.merchantDao = system.getObject("db.merchant.merchantDao")
} }
async addMerchanttrades(params) { async addMerchanttrades(params) {
...@@ -35,7 +36,7 @@ class MerchanttradeService extends ServiceBase { ...@@ -35,7 +36,7 @@ class MerchanttradeService extends ServiceBase {
params.balance_amount = params.amount; params.balance_amount = params.amount;
if (accountamount) { if (accountamount) {
params.available_amount = params.amount + accountamount.available_amount; params.available_amount = params.amount + accountamount.available_amount;
params.balance_amount = params.available_amount; params.balance_amount = params.amount + accountamount.balance_amount;
} }
var rtn = await this.dao.create(params); var rtn = await this.dao.create(params);
return system.getResultSuccess(rtn); return system.getResultSuccess(rtn);
...@@ -55,17 +56,30 @@ class MerchanttradeService extends ServiceBase { ...@@ -55,17 +56,30 @@ class MerchanttradeService extends ServiceBase {
[this.db.Op.eq]: params.merchant_id [this.db.Op.eq]: params.merchant_id
}; };
} }
if (params.trade_data_id) {
where.trade_data_id = {
[this.db.Op.eq]: params.trade_data_id
};
}
where.trade_type = { where.trade_type = {
[this.db.Op.eq]: 1 [this.db.Op.eq]: 1
}; };
if (params.beginTime) {
params.beginTime = params.beginTime + " 00:00:00";
}
if (params.entTime) {
params.entTime = params.entTime + " 23:59:59";
}
this.addWhereTime(where, 'created_at', params.beginTime, params.entTime, true); this.addWhereTime(where, 'created_at', params.beginTime, params.entTime, true);
var orderby = [["id", 'desc']]; var orderby = [["id", 'desc']];
var attributes = [`id`, `trade_time`, `amount`, `audit_status`, `audit_remark`]; var attributes = [`id`, `trade_data_id`,`trade_time`, `merchant_id`, `amount`, `audit_status`, `audit_remark`];
var page = await this.getPageList(currentPage, pageSize, where, orderby, attributes); var page = await this.getPageList(currentPage, pageSize, where, orderby, attributes);
if (page && page.rows) { if (page && page.rows) {
for (var row of page.rows) { for (var row of page.rows) {
this.handleDate(row, ["trade_time"], null); this.handleDate(row, ["trade_time"], null);
} }
await this.setMerchantName(page.rows);
} }
return system.getResultSuccess(page); return system.getResultSuccess(page);
} catch (e) { } catch (e) {
...@@ -74,6 +88,21 @@ class MerchanttradeService extends ServiceBase { ...@@ -74,6 +88,21 @@ class MerchanttradeService extends ServiceBase {
} }
} }
async setMerchantName(list) {
if (!list || list.length == 0) {
return;
}
var merchantIds = [];
for (var item of list) {
merchantIds.push(item.merchant_id || 0);
}
var merchantMap = await this.merchantDao.findMapByIds(merchantIds, " id, name ");
for (var item of list) {
item.merchant = merchantMap[item.merchant_id] || {};
}
}
async auditMerchanttrade(params) { async auditMerchanttrade(params) {
try { try {
...@@ -123,14 +152,18 @@ class MerchanttradeService extends ServiceBase { ...@@ -123,14 +152,18 @@ class MerchanttradeService extends ServiceBase {
[this.db.Op.eq]: params.amount_type [this.db.Op.eq]: params.amount_type
}; };
} }
where.audit_status = {
[this.db.Op.eq]: 1
};
this.addWhereTime(where, 'created_at', params.beginTime, params.entTime, true); this.addWhereTime(where, 'created_at', params.beginTime, params.entTime, true);
var orderby = [["id", 'desc']]; var orderby = [["id", 'desc']];
var attributes = []; var attributes = [];
var page = await this.getPageList(currentPage, pageSize, where, orderby, attributes); var page = await this.getPageList(currentPage, pageSize, where, orderby, attributes);
if (page && page.rows) { if (page && page.rows) {
for (var row of page.rows) { for (var row of page.rows) {
this.handleDate(row, ["created_at","trade_time","updated_at"], null); this.handleDate(row, ["created_at", "trade_time", "updated_at"], null);
} }
await this.setMerchantName(page.rows);
} }
return system.getResultSuccess(page); return system.getResultSuccess(page);
} catch (e) { } catch (e) {
...@@ -139,6 +172,43 @@ class MerchanttradeService extends ServiceBase { ...@@ -139,6 +172,43 @@ class MerchanttradeService extends ServiceBase {
} }
} }
async valetorder(params) {
try {
if (!params.merchant_id) {
return system.getResultFail(-1, "请提供商户ID");
}
if (!params.trade_data_id) {
return system.getResultFail(-1, "请提供流水号");
}
if (!params.amount) {
return system.getResultFail(-1, "请提供交易金额");
} else if (0 > params.amount) {
return system.getResultFail(-1, "交易金额错误");
}
if (!params.trade_voucher) {
return system.getResultFail(-1, "请提供业务合同");
}
params.trade_type = 2; //线下充值
params.pay_type = 1; //线下支付
params.amount_type = 2;//后入
params.amount = params.amount * 100;
var accountamount = await this.merchantaccountSve.findOne({merchant_id: params.merchant_id})
params.available_amount = params.amount;
params.balance_amount = params.amount;
if (accountamount) {
params.available_amount = params.amount + accountamount.available_amount;
params.balance_amount = params.amount + accountamount.balance_amount;
}
var rtn = await this.dao.create(params);
return system.getResultSuccess(rtn);
} catch (e) {
console.log(e);
return system.getResultFail();
}
}
} }
module.exports = MerchanttradeService; module.exports = MerchanttradeService;
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