Commit 5907edc1 by zhaoxiqing

gsb

parent 9fa056e8
......@@ -78,6 +78,9 @@ class ActionAPI extends APIBase {
case "merchantOfList":
opResult = await this.merchantSve.merchantOfList(action_body);
break;
case "merchantOfInfo":
opResult = await this.merchantSve.merchantOfInfo(action_body);
break;
//商户审核
case "auditMerchant":
opResult = await this.merchantSve.auditMerchant(action_body);
......@@ -101,17 +104,22 @@ class ActionAPI extends APIBase {
break;
//资金流水
//资金流水
case "merchanttradesOfListAll":
opResult = await this.merchanttradeSve.merchanttradesOfListAll(action_body);
break;
//代客下单流水
case "valetorder":
opResult = await this.merchanttradeSve.valetorder(action_body);
break;
//商户余额
//余额
case "accountbalance" :
opResult = await this.merchantaccountSve.accountbalance(action_body);
case "reduceAccountBalance" :
opResult = await this.merchantaccountSve.reduceaccountbalance(action_body);
break;
//可用余额
case "accountusablebalance" :
opResult = await this.merchantaccountSve.accountusablebalance(action_body);
case "addordelavailable" :
opResult = await this.merchantaccountSve.addordelavailable(action_body);
break;
default:
......
......@@ -6,14 +6,31 @@ class MerchantDao extends Dao {
}
async suggest(name) {
if (!name) {
return [];
}
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 + "%"});
var sql = "SELECT id, name FROM `e_merchant` WHERE deleted_at IS NULL ";
var list = await this.customQuery(sql);
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;
......@@ -5,7 +5,6 @@ class MerchantaccountDao extends Dao {
super(Dao.getModelName(MerchantaccountDao));
}
async addtomerchantrmb(params) {
var sql = [];
sql.push("UPDATE");
......@@ -15,6 +14,24 @@ class MerchantaccountDao extends Dao {
sql.push("WHERE merchant_id = :merchant_id");
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 = (db, DataTypes) => {
return db.define("merchantapi", {
secret: DataTypes.STRING,
name : DataTypes.STRING,
ip: DataTypes.TINYINT,
},{
paranoid: true, //假的删除
......
......@@ -60,6 +60,7 @@ class MerchantService extends ServiceBase {
var merchant = null;
if (params.id) {
merchant = await this.dao.findById(params.id);
delete params.deleted_at;
}
var rtn = null;
if (merchant) {
......@@ -80,7 +81,6 @@ class MerchantService extends ServiceBase {
async merchantOfList(params) {
try {
var currentPage = Number(params.currentPage || 0);
var pageSize = Number(params.pageSize || 10);
var where = {};
......@@ -89,15 +89,17 @@ class MerchantService extends ServiceBase {
[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);
var orderby = [["id", 'desc']];
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);
// if (page && page.rows) {
// for (var row of page.rows) {
// this.handleDate(row, ["created_at"], null);
// }
// }
return system.getResultSuccess(page);
} catch (e) {
console.log(e);
......@@ -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) {
try {
if (!params.id) {
......
const ServiceBase = require("../../sve.base");
const system = require("../../../system");
class MerchantaccountService extends ServiceBase {
constructor() {
......@@ -13,20 +14,45 @@ class MerchantaccountService extends ServiceBase {
}
async accountbalance(params) {
async reduceaccountbalance(params) {
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) {
console.log(e);
return system.getResultFail();
}
}
async accountusablebalance(params) {
async addordelavailable(params) {
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) {
console.log(e);
return system.getResultFail();
}
}
......
......@@ -6,6 +6,7 @@ class MerchanttradeService extends ServiceBase {
constructor() {
super("merchant", ServiceBase.getDaoName(MerchanttradeService));
this.merchantaccountSve = system.getObject("service.merchant.merchantaccountSve");
this.merchantDao = system.getObject("db.merchant.merchantDao")
}
async addMerchanttrades(params) {
......@@ -35,7 +36,7 @@ class MerchanttradeService extends ServiceBase {
params.balance_amount = params.amount;
if (accountamount) {
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);
return system.getResultSuccess(rtn);
......@@ -55,17 +56,30 @@ class MerchanttradeService extends ServiceBase {
[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 = {
[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);
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);
if (page && page.rows) {
for (var row of page.rows) {
this.handleDate(row, ["trade_time"], null);
}
await this.setMerchantName(page.rows);
}
return system.getResultSuccess(page);
} catch (e) {
......@@ -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) {
try {
......@@ -123,14 +152,18 @@ class MerchanttradeService extends ServiceBase {
[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);
var orderby = [["id", 'desc']];
var 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","trade_time","updated_at"], null);
this.handleDate(row, ["created_at", "trade_time", "updated_at"], null);
}
await this.setMerchantName(page.rows);
}
return system.getResultSuccess(page);
} catch (e) {
......@@ -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;
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