Commit e02e387c by 赵庆

薪比果接口

parent 7f5b74a2
...@@ -9,5 +9,36 @@ class ApiBase{ ...@@ -9,5 +9,36 @@ class ApiBase{
return system.getResult2(null,null,"ok","请检查您的授权KEY"); return system.getResult2(null,null,"ok","请检查您的授权KEY");
} }
} }
doTimeCondition(params, fields) {
if (!params || !fields || fields.length == 0) {
return;
}
for (var f of fields) {
if (params[f]) {
var suffix = this.endWith(f, 'Begin') ? " 00:00:00" : " 23:59:59";
params[f] = params[f] + suffix;
}
}
}
trim(o) {
if(!o) {
return "";
}
return o.toString().trim();
}
getSettleParams(search) {
var params = search || {};
if (this.trim(params.createBegin)) {
params.createBegin = this.trim(params.createBegin) + " 00:00:00";
}
if (this.trim(params.createEnd)) {
params.createEnd = this.trim(params.createEnd) + " 23:59:59";
}
return params;
}
} }
module.exports=ApiBase; module.exports=ApiBase;
var system = require("../../system");
const apiBase = require("../api.base");
class XbgApi extends apiBase{
constructor() {
super();
this.utilesignbaoSve = system.getObject("service.utilesignbaoSve");
this.etemplateSve = system.getObject("service.etemplateSve");
this.ecompanySve = system.getObject("service.ecompanySve");
this.econtractSve = system.getObject("service.econtractSve");
this.esettleSve = system.getObject("service.esettleSve")
}
//合同模板
async etemplateList(qobj) {
try {
var params = qobj || {};
var ecompanyId = params.ecompany_id;
if (ecompanyId.length > 1) {
params.ecompanyIds = ecompanyId;
delete params.ecompany_id;
} else {
params.ecompanyIds = [ecompanyId];
delete params.ecompany_id;
}
var page = await this.etemplateSve.signPage(params);
return system.getResult2(page);
} catch (e) {
console.log(e);
return system.getErrResult2("接口异常");
}
}
//已签合同
async acontractList(qobj) {
try {
var params = qobj || {};
var ecompanyId = params.ecompany_id;
if (ecompanyId.length > 1) {
params.ecompanyIds = [ecompanyId];
delete params.ecompany_id;
} else {
params.ecompanyIds = ecompanyId;
delete params.ecompany_id;
}
params.eflowstatusList = ['2'];
this.doTimeCondition(params, ["signBegin", "signEnd"]);
var page = await this.econtractSve.pageByCondition(params);
return system.getResult2(page);
} catch (e) {
console.log(e);
return system.getErrResult2("接口异常");
}
}
//纳税人人员
async ratepayingListToPe(qobj) {
try {
var params = qobj || {};
var params = this.getSettleParams(params);
var page = await this.esettleSve.ratepayingToPe(params);
return system.getResult2(page);
} catch (e) {
console.log(e);
return system.getErrResult2("接口异常");
}
}
//纳税人按月
async ratepayingListToMonth(qobj) {
try {
var params = qobj || {};
var params = this.getSettleParams(params);
var page = await this.esettleSve.ratepayingToMonth(params);
return system.getResult2(page);
} catch (e) {
console.log(e);
return system.getErrResult2("接口异常");
}
}
//纳税人个人详情
async ratepayingListToOne(qobj) {
try {
var params = qobj || {};
var params = this.getSettleParams(params);
var page = await this.esettleSve.ratepayingToOne(params);
return system.getResult2(page);
} catch (e) {
console.log(e);
return system.getErrResult2("接口异常");
}
}
//数据概览
async dataOverview(qobj){
try {
var params = qobj || {};
var ecompanyId = params.ecompany_id;
if (ecompanyId.length > 1) {
params.ecompanyIds = [ecompanyId];
delete params.ecompany_id;
} else {
params.ecompanyIds = ecompanyId;
delete params.ecompany_id;
}
var result = {};
result.contractCount = await this.econtractSve.getCount(params);
var list = await this.esettleSve.getPays(params);
result.actual_amt = list.actual_amt;
result.income_tax = list.income_tax;
return system.getResult2(result);
}catch (e) {
console.log(e);
return system.getErrResult2("接口异常");
}
}
}
module.exports = XbgApi;
\ No newline at end of file
...@@ -220,7 +220,7 @@ class EsettleCtl extends CtlBase { ...@@ -220,7 +220,7 @@ class EsettleCtl extends CtlBase {
} }
var params = this.getSettleParams(params); var params = this.getSettleParams(params);
var page = await this.service.settlePage(params); var page = await this.service.ratepayingList(params);
return system.getResult2(page); return system.getResult2(page);
} catch (e) { } catch (e) {
console.log(e); console.log(e);
......
...@@ -286,6 +286,17 @@ class EcontractService extends ServiceBase { ...@@ -286,6 +286,17 @@ class EcontractService extends ServiceBase {
return resultAll; return resultAll;
} }
async getCount(params){
var where = {};
if (params.ecompanyIds) {
where.ecompany_id = {
[this.db.Op.in]: params.ecompanyIds
};
}
let contractCount = await this.findCount(where);
return contractCount
}
async pageByCondition(params) { async pageByCondition(params) {
var currentPage = Number(params.currentPage || 0); var currentPage = Number(params.currentPage || 0);
var pageSize = Number(params.pageSize || 10); var pageSize = Number(params.pageSize || 10);
...@@ -708,7 +719,6 @@ class EcontractService extends ServiceBase { ...@@ -708,7 +719,6 @@ class EcontractService extends ServiceBase {
"contractName": item.name, "contractName": item.name,
"companyName": company.name, "companyName": company.name,
"statusName": item.eflowstatusname, "statusName": item.eflowstatusname,
"mobile": item.mobile,
"userName": item.userName, "userName": item.userName,
"mobile": item.mobile, "mobile": item.mobile,
"idCard": item.personsSign.toUpperCase(), "idCard": item.personsSign.toUpperCase(),
......
...@@ -3,742 +3,841 @@ const ServiceBase = require("../sve.base"); ...@@ -3,742 +3,841 @@ const ServiceBase = require("../sve.base");
const moment = require("moment"); const moment = require("moment");
class EsettleService extends ServiceBase { class EsettleService extends ServiceBase {
constructor() { constructor() {
super(ServiceBase.getDaoName(EsettleService)); super(ServiceBase.getDaoName(EsettleService));
//this.appDao=system.getObject("db.appDao"); //this.appDao=system.getObject("db.appDao");
this.settledb=system.getObject("db.connection").getSettleDBCon(); this.settledb = system.getObject("db.connection").getSettleDBCon();
this.ecompanyDao = system.getObject("db.ecompanyDao");
this.epartnerDao = system.getObject("db.epartnerDao");
this.userDao = system.getObject("db.userDao");
this.usereaccountDao = system.getObject("db.usereaccountDao");
this.esettlecommissionDao = system.getObject("db.esettlecommissionDao");
this.pattern = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/;
}
async doSettleLogic(id) {
return 1;
}
async countAmtByCard(idno, begin, end) {
var sql = "SELECT sum(actual_amt) as num FROM `tbl_order_item` t1 " +
"WHERE t1.trade_status = '00' AND t1.id_no = '" + idno + "' ";
if(begin) {
sql = sql + " AND t1.pay_complete_time >= '" + begin + "' ";
}
if(end) {
sql = sql + " AND t1.pay_complete_time <= '" + end + "' ";
}
var count = 0; this.ecompanyDao = system.getObject("db.ecompanyDao");
var countrs = await this.settledb.query(sql); this.epartnerDao = system.getObject("db.epartnerDao");
if(countrs && countrs[0,0]) { this.userDao = system.getObject("db.userDao");
count = countrs[0,0][0].num; this.usereaccountDao = system.getObject("db.usereaccountDao");
} this.esettlecommissionDao = system.getObject("db.esettlecommissionDao");
return parseFloat((Number(count || 0) / 100).toFixed(2)); this.pattern = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/;
}
async findOrderItemsByCard(idno, currentPage, pageSize) {
currentPage = Number(currentPage || 1);
pageSize = Number(pageSize || 10);
var startRow = (currentPage - 1) * pageSize;
var countSql = "SELECT COUNT(1) as num FROM `tbl_order_item` t1 " +
"INNER JOIN `tbl_busi` t3 ON t3.`id` = t1.`busi_id` " +
"WHERE t1.trade_status = '00' AND t1.id_no = '" + idno + "' " +
"ORDER BY t1.`pay_complete_time` DESC ";
var countrs = await this.settledb.query(countSql);
var total = 0;
if(countrs && countrs[0,0]) {
total = countrs[0,0][0].num;
} }
if(total == 0) { async doSettleLogic(id) {
return {count:0, rows:[]} return 1;
} }
var sql = "SELECT t1.id, t1.`id_name`, t1.`id_no`, t1.`actual_amt`, t1.`pay_complete_time`, t1.`busi_id`, t3.`company_name` FROM `tbl_order_item` t1 " + async countAmtByCard(idno, begin, end) {
"INNER JOIN `tbl_busi` t3 ON t3.`id` = t1.`busi_id` " + var sql = "SELECT sum(actual_amt) as num FROM `tbl_order_item` t1 " +
"WHERE t1.trade_status = '00' AND t1.id_no = '" + idno + "' " + "WHERE t1.trade_status = '00' AND t1.id_no = '" + idno + "' ";
"ORDER BY t1.`pay_complete_time` DESC " + if (begin) {
"LIMIT " + Number(startRow) + ", " + Number(pageSize); sql = sql + " AND t1.pay_complete_time >= '" + begin + "' ";
}
var list = await this.settledb.query(sql); if (end) {
if(list && list.length > 0) { sql = sql + " AND t1.pay_complete_time <= '" + end + "' ";
list = list[0,0]; }
for(var item of list) {
item.actual_amt = parseFloat((Number(item.actual_amt || 0) / 100).toFixed(2)); var count = 0;
if(item.pay_complete_time) { var countrs = await this.settledb.query(sql);
item.pay_complete_time = moment(item.pay_complete_time).format("YYYY-MM-DD HH:mm"); if (countrs && countrs[0, 0]) {
} count = countrs[0, 0][0].num;
} }
} else{ return parseFloat((Number(count || 0) / 100).toFixed(2));
list = []
} }
return {count: total, rows:list};
}
async statSettle(params) {
var sql = "";
sql = sql + "SELECT SUM(t1.amt) AS num FROM `tbl_order_item` t1 ";
sql = sql + "INNER JOIN `tbl_busi` t2 ON t1.`busi_id` = t2.id ";
sql = sql + "WHERE t1.`trade_status` = '00' ";
if(params.company_name) { async findOrderItemsByCard(idno, currentPage, pageSize) {
sql = sql + " AND t2.company_name = :company_name "; currentPage = Number(currentPage || 1);
} pageSize = Number(pageSize || 10);
if(params.begin) { var startRow = (currentPage - 1) * pageSize;
sql = sql + " AND pay_complete_time >= :begin ";
}
if(params.end) {
sql = sql + " AND pay_complete_time <= :end ";
}
var list = await this.settledb.query(sql); var countSql = "SELECT COUNT(1) as num FROM `tbl_order_item` t1 " +
if(list && list.length > 0) { "INNER JOIN `tbl_busi` t3 ON t3.`id` = t1.`busi_id` " +
list = list[0,0]; "WHERE t1.trade_status = '00' AND t1.id_no = '" + idno + "' " +
return list[0].num || 0; "ORDER BY t1.`pay_complete_time` DESC ";
} var countrs = await this.settledb.query(countSql);
return 0; var total = 0;
} if (countrs && countrs[0, 0]) {
total = countrs[0, 0][0].num;
async settlePage(condition) { }
var currentPage = Number(condition.currentPage || 1);
var pageSize = Number(condition.pageSize || 20);
var startRow = (currentPage - 1) * pageSize;
var countSql = "SELECT COUNT(DISTINCT t1.id) as num " +
"FROM tbl_order t1 " +
"INNER JOIN `tbl_busi` t2 ON t1.`busi_id` = t2.`id` " +
"WHERE 1 = 1 ";
var listSql = "SELECT " +
"t2.`company_name`, t2.`open_bank`, t2.`bank_no`, t2.`bank_account_name`, t1.`busi_id`, " +
"t1.id AS order_id, t1.out_trade_no, t1.`amt`, t1.`actual_amt`, t1.`deduct_amt`, t1.trade_status , t1.trade_type, " +
"t1.`create_time`, t1.pay_complete_time " +
"FROM tbl_order t1 " +
"INNER JOIN `tbl_busi` t2 ON t1.`busi_id` = t2.`id` " +
"WHERE 1 = 1 ";
if(condition.busi_id) {
countSql = countSql + " AND t2.`id` = " + condition.busi_id + " ";
listSql = listSql + " AND t2.`id` = " + condition.busi_id + " ";
}
if(condition.companyNames && condition.companyNames.length > 0) { if (total == 0) {
countSql = countSql + " AND t2.`company_name` IN (" + "'" + condition.companyNames.join("','") + "'" + ") "; return {count: 0, rows: []}
listSql = listSql + " AND t2.`company_name` IN (" + "'" + condition.companyNames.join("','") + "'" + ") "; }
}
if(condition.companyName) { var sql = "SELECT t1.id, t1.`id_name`, t1.`id_no`, t1.`actual_amt`, t1.`pay_complete_time`, t1.`busi_id`, t3.`company_name` FROM `tbl_order_item` t1 " +
countSql = countSql + " AND t2.`company_name` = '" + condition.companyName + "' "; "INNER JOIN `tbl_busi` t3 ON t3.`id` = t1.`busi_id` " +
listSql = listSql + " AND t2.`company_name` = '" + condition.companyName + "' "; "WHERE t1.trade_status = '00' AND t1.id_no = '" + idno + "' " +
"ORDER BY t1.`pay_complete_time` DESC " +
"LIMIT " + Number(startRow) + ", " + Number(pageSize);
var list = await this.settledb.query(sql);
if (list && list.length > 0) {
list = list[0, 0];
for (var item of list) {
item.actual_amt = parseFloat((Number(item.actual_amt || 0) / 100).toFixed(2));
if (item.pay_complete_time) {
item.pay_complete_time = moment(item.pay_complete_time).format("YYYY-MM-DD HH:mm");
}
}
} else {
list = []
}
return {count: total, rows: list};
} }
if(condition.companyNameLike) { async statSettle(params) {
countSql = countSql + " AND t2.`company_name` LIKE :companyNameLike "; var sql = "";
listSql = listSql + " AND t2.`company_name` LIKE :companyNameLike "; sql = sql + "SELECT SUM(t1.amt) AS num FROM `tbl_order_item` t1 ";
sql = sql + "INNER JOIN `tbl_busi` t2 ON t1.`busi_id` = t2.id ";
sql = sql + "WHERE t1.`trade_status` = '00' ";
} if (params.company_name) {
sql = sql + " AND t2.company_name = :company_name ";
}
if (params.begin) {
sql = sql + " AND pay_complete_time >= :begin ";
}
if (params.end) {
sql = sql + " AND pay_complete_time <= :end ";
}
if(condition.createBegin) { var list = await this.settledb.query(sql);
countSql = countSql + " AND t1.`create_time` >= '" + condition.createBegin + "' "; if (list && list.length > 0) {
listSql = listSql + " AND t1.`create_time` >= '" + condition.createBegin + "' "; list = list[0, 0];
} return list[0].num || 0;
if(condition.createEnd) { }
countSql = countSql + " AND t1.`create_time` <= '" + condition.createEnd + "' "; return 0;
listSql = listSql + " AND t1.`create_time` <= '" + condition.createEnd + "' ";
} }
if(condition.out_trade_no) { async ratepayingToPe(condition) {
countSql = countSql + " AND t1.`out_trade_no` = '" + condition.out_trade_no + "' "; var currentPage = Number(condition.currentPage || 1);
listSql = listSql + " AND t1.`out_trade_no` = '" + condition.out_trade_no + "' "; var pageSize = Number(condition.pageSize || 20);
var startRow = (currentPage - 1) * pageSize;
var listSql = "SELECT COUNT(*) count,id_name,mobile,id_no,pay_complete_time FROM tbl_order_item WHERE trade_status = '00'";
if(condition.ecompany_id){
listSql = listSql + " AND busi_id = '" + condition.ecompany_id + "'";
}
if (condition.id_name) {
listSql = listSql + " AND id_name = '" + condition.id_name + "'";
}
if (condition.id_no) {
listSql = listSql + " AND id_no = '" + condition.id_no + "'";
}
if (condition.mobile) {
listSql = listSql + " AND mobile = '" + condition.mobile + "'";
}
listSql = listSql + " GROUP BY id_no";
var countSql = "SELECT COUNT(ta.id_no) count FROM (" + listSql + ") ta";
listSql = listSql + " ORDER BY create_time DESC LIMIT " + Number(startRow) + ", " + Number(pageSize);
var countrs = await this.settledb.query(countSql);
var total = countrs[0][0].count;
if (total == 0) {
return {count: 0, list: []}
}
var list = await this.settledb.query(listSql);
if (list[0].length > 0) {
for (let i = 0;i < list[0].length; i++){
list[0][i].create_time = moment( list[0][i].create_time).format("YYYY-MM-DD HH:mm:ss");
}
}
return {count: total, list: list[0]}
}
async ratepayingToMonth(condition) {
var currentPage = Number(condition.currentPage || 1);
var pageSize = Number(condition.pageSize || 20);
var startRow = (currentPage - 1) * pageSize;
this.addmonth(condition);
var listSql = "SELECT SUM(actual_amt) actual_amt,SUM(income_tax) income_tax,id_name,mobile,id_no,create_time FROM tbl_order_item WHERE trade_status = '00'";
if(condition.ecompany_id){
listSql = listSql + " AND busi_id = '" + condition.ecompany_id + "'";
}
if (condition.createBegin) {
listSql = listSql + " AND `create_time` >= '" + condition.createBegin + "' ";
}
if (condition.createEnd) {
listSql = listSql + " AND `create_time` <= '" + condition.createEnd + "' ";
}
listSql = listSql + " GROUP BY id_no";
var countSql = "SELECT COUNT(ta.id_no) count FROM (" + listSql + ") ta";
listSql = listSql + " ORDER BY create_time DESC LIMIT " + Number(startRow) + ", " + Number(pageSize);
var countrs = await this.settledb.query(countSql);
var total = countrs[0][0].count;
if (total == 0) {
return {count: 0, list: []}
}
var list = await this.settledb.query(listSql);
if (list[0].length > 0) {
for (let i = 0;i < list[0].length; i++){
list[0][i].create_time = moment( list[0][i].create_time).format("YYYY-MM-DD");
}
}
return {count: total, list: list[0]}
} }
if(condition.amtBegin) { async ratepayingToOne(condition){
countSql = countSql + " AND t1.`amt` >= " + condition.amtBegin; var listSql = "SELECT actual_amt,income_tax,create_time FROM tbl_order_item WHERE trade_status = '00'";
listSql = listSql + " AND t1.`amt` >= " + condition.amtBegin; if(condition.ecompany_id){
listSql = listSql + " AND busi_id = '" + condition.ecompany_id + "'";
}
if(condition.id_no){
listSql = listSql + " AND id_no = '" + condition.id_no + "'";
}
var list = await this.settledb.query(listSql);
if (list[0].length > 0) {
for (let i = 0;i < list[0].length; i++){
list[0][i].actual_amt = parseFloat((Number(list[0][i].actual_amt || 0) / 100).toFixed(2));
list[0][i].income_tax = parseFloat((Number(list[0][i].income_tax || 0) / 100).toFixed(2));
list[0][i].create_time = moment( list[0][i].create_time).format("YYYY-MM-DD");
}
}
return {list: list[0]};
} }
if(condition.amtEnd) { async getPays(condition){
countSql = countSql + " AND t1.`amt` <= " + condition.amtEnd; var countSql = "SELECT SUM(actual_amt) actual_amt,SUM(income_tax) income_tax FROM tbl_order_item WHERE trade_status = '00' AND busi_id IN (" + "'" + condition.ecompanyIds.join("','") + "'" + ") ";
listSql = listSql + " AND t1.`amt` <= " + condition.amtEnd; var list = await this.settledb.query(countSql);
return {actual_amt:list[0][0].actual_amt,income_tax:list[0][0].income_tax}
} }
listSql = listSql + " GROUP BY t1.id ORDER BY t1.`pay_complete_time` DESC "; async settlePage(condition) {
listSql = listSql + " LIMIT " + Number(startRow) + ", " + Number(pageSize); var currentPage = Number(condition.currentPage || 1);
var pageSize = Number(condition.pageSize || 20);
var startRow = (currentPage - 1) * pageSize;
var countrs = await this.settledb.query(countSql, { replacements: { companyNameLike : "%" + condition.companyNameLike + "%" } }); var countSql = "SELECT COUNT(DISTINCT t1.id) as num " +
var total = 0; "FROM tbl_order t1 " +
if(countrs && countrs[0,0]) { "INNER JOIN `tbl_busi` t2 ON t1.`busi_id` = t2.`id` " +
total = countrs[0,0][0].num; "WHERE 1 = 1 ";
}
if(total == 0) { var listSql = "SELECT " +
return {count:0, rows:[]} "t2.`company_name`, t2.`open_bank`, t2.`bank_no`, t2.`bank_account_name`, t1.`busi_id`, " +
} "t1.id AS order_id, t1.out_trade_no, t1.`amt`, t1.`actual_amt`, t1.`deduct_amt`, t1.trade_status , t1.trade_type, " +
"t1.`create_time`, t1.pay_complete_time " +
"FROM tbl_order t1 " +
"INNER JOIN `tbl_busi` t2 ON t1.`busi_id` = t2.`id` " +
"WHERE 1 = 1 ";
var list = await this.settledb.query(listSql, { replacements: { companyNameLike : "%" + condition.companyNameLike + "%" } }); if (condition.busi_id) {
if(list && list.length > 0) { countSql = countSql + " AND t2.`id` = " + condition.busi_id + " ";
list = list[0,0] || []; listSql = listSql + " AND t2.`id` = " + condition.busi_id + " ";
var orderIds = [];
for(var item of list) {
orderIds.push(item.order_id);
}
var itmap = [];
if(orderIds.length > 0) {
var itemSql = "SELECT order_id, COUNT(1) AS num FROM `tbl_order_item` WHERE order_id IN (" + orderIds.join(",") + ") GROUP BY order_id ";
var itlist = await this.settledb.query(itemSql);
if(itlist && itlist.length > 0) {
itlist = itlist[0, 0] || [];
for(var itc of itlist) {
itmap['order_id_' + itc.order_id] = itc.num || 0;
}
}
}
for(var item of list) {
item.amt = parseFloat((Number(item.amt || 0) / 100).toFixed(2));
item.actual_amt = parseFloat((Number(item.actual_amt || 0) / 100).toFixed(2));
item.deduct_amt = parseFloat((Number(item.deduct_amt || 0) / 100).toFixed(2));
if (item.trade_status == "00") {
item.trade_status_name = "成功";
} else if (item.trade_status == "01") {
item.trade_status_name = "待处理";
} else if (item.trade_status == "02") {
item.trade_status_name = "失败";
} else {
item.trade_status_name = "";
} }
if (item.trade_type == "00") { if (condition.companyNames && condition.companyNames.length > 0) {
item.trade_type_name = "实时"; countSql = countSql + " AND t2.`company_name` IN (" + "'" + condition.companyNames.join("','") + "'" + ") ";
} else if (item.trade_type == "01") { listSql = listSql + " AND t2.`company_name` IN (" + "'" + condition.companyNames.join("','") + "'" + ") ";
item.trade_type_name = "批量";
} else {
item.trade_type_name = "";
} }
if(item.create_time) { if (condition.companyName) {
item.create_time = moment(item.create_time).subtract(8, "hours").format("YYYY-MM-DD HH:mm"); countSql = countSql + " AND t2.`company_name` = '" + condition.companyName + "' ";
listSql = listSql + " AND t2.`company_name` = '" + condition.companyName + "' ";
} }
if(item.pay_complete_time) {
item.pay_complete_time = moment(item.pay_complete_time).subtract(8, "hours").format("YYYY-MM-DD HH:mm"); if (condition.companyNameLike) {
countSql = countSql + " AND t2.`company_name` LIKE :companyNameLike ";
listSql = listSql + " AND t2.`company_name` LIKE :companyNameLike ";
} }
item.itemCount = itmap["order_id_" + item.order_id] || 0;
}
} else{
list = []
}
return {count: total, rows:list};
}
async statSettleAmt(condition) {
var sql = "SELECT " +
"t1.`amt` " +
"FROM tbl_order t1 " +
"INNER JOIN `tbl_busi` t2 ON t1.`busi_id` = t2.`id` " +
"WHERE 1 = 1 ";
if(condition.companyNames && condition.companyNames.length > 0) {
sql = sql + " AND t2.`company_name` IN (" + "'" + condition.companyNames.join("','") + "'" + ") ";
}
if(condition.companyName) { if (condition.createBegin) {
sql = sql + " AND t2.`company_name` = '" + condition.companyName + "' "; countSql = countSql + " AND t1.`create_time` >= '" + condition.createBegin + "' ";
} listSql = listSql + " AND t1.`create_time` >= '" + condition.createBegin + "' ";
}
if (condition.createEnd) {
countSql = countSql + " AND t1.`create_time` <= '" + condition.createEnd + "' ";
listSql = listSql + " AND t1.`create_time` <= '" + condition.createEnd + "' ";
}
if(condition.companyNameLike) { if (condition.out_trade_no) {
sql = sql + " AND t2.`company_name` LIKE :companyNameLike "; countSql = countSql + " AND t1.`out_trade_no` = '" + condition.out_trade_no + "' ";
} listSql = listSql + " AND t1.`out_trade_no` = '" + condition.out_trade_no + "' ";
}
if(condition.createBegin) { if (condition.amtBegin) {
sql = sql + " AND t1.`create_time` >= '" + condition.createBegin + "' "; countSql = countSql + " AND t1.`amt` >= " + condition.amtBegin;
} listSql = listSql + " AND t1.`amt` >= " + condition.amtBegin;
if(condition.createEnd) { }
sql = sql + " AND t1.`create_time` >= '" + condition.createBegin + "' ";
}
if(condition.out_trade_no) { if (condition.amtEnd) {
sql = sql + " AND t1.`out_trade_no` = '" + condition.out_trade_no + "' "; countSql = countSql + " AND t1.`amt` <= " + condition.amtEnd;
} listSql = listSql + " AND t1.`amt` <= " + condition.amtEnd;
}
if(condition.amtBegin) { listSql = listSql + " GROUP BY t1.id ORDER BY t1.`pay_complete_time` DESC ";
sql = sql + " AND t1.`amt` >= " + condition.amtBegin; listSql = listSql + " LIMIT " + Number(startRow) + ", " + Number(pageSize);
}
if(condition.amtEnd) { var countrs = await this.settledb.query(countSql, {replacements: {companyNameLike: "%" + condition.companyNameLike + "%"}});
sql = sql + " AND t1.`amt` <= " + condition.amtEnd; var total = 0;
} if (countrs && countrs[0, 0]) {
total = countrs[0, 0][0].num;
}
sql = sql + " GROUP BY t1.id "; if (total == 0) {
return {count: 0, rows: []}
}
var amt = 0; var list = await this.settledb.query(listSql, {replacements: {companyNameLike: "%" + condition.companyNameLike + "%"}});
var list = await this.settledb.query(sql, { replacements: { companyNameLike : "%" + condition.companyNameLike + "%" } }); if (list && list.length > 0) {
if(list && list.length > 0) { list = list[0, 0] || [];
list = list[0,0] || []; var orderIds = [];
for(var item of list) { for (var item of list) {
amt = amt + Number(item.amt); orderIds.push(item.order_id);
} }
}
return parseFloat((amt / 100).toFixed(2)); var itmap = [];
} if (orderIds.length > 0) {
var itemSql = "SELECT order_id, COUNT(1) AS num FROM `tbl_order_item` WHERE order_id IN (" + orderIds.join(",") + ") GROUP BY order_id ";
async settleItemList(condition) { var itlist = await this.settledb.query(itemSql);
var currentPage = Number(condition.currentPage || 1); if (itlist && itlist.length > 0) {
var pageSize = Number(condition.pageSize || 20); itlist = itlist[0, 0] || [];
var startRow = (currentPage - 1) * pageSize; for (var itc of itlist) {
itmap['order_id_' + itc.order_id] = itc.num || 0;
var countSql = "SELECT COUNT(1) as num FROM tbl_order_item WHERE 1 = 1 "; }
var listSql = "SELECT * FROM tbl_order_item WHERE 1 = 1 "; }
}
var where = {};
if(condition.orderId) { for (var item of list) {
countSql = countSql + " AND order_id = :orderId "; item.amt = parseFloat((Number(item.amt || 0) / 100).toFixed(2));
listSql = listSql + " AND order_id = :orderId "; item.actual_amt = parseFloat((Number(item.actual_amt || 0) / 100).toFixed(2));
where.orderId = condition.orderId; item.deduct_amt = parseFloat((Number(item.deduct_amt || 0) / 100).toFixed(2));
if (item.trade_status == "00") {
item.trade_status_name = "成功";
} else if (item.trade_status == "01") {
item.trade_status_name = "待处理";
} else if (item.trade_status == "02") {
item.trade_status_name = "失败";
} else {
item.trade_status_name = "";
}
if (item.trade_type == "00") {
item.trade_type_name = "实时";
} else if (item.trade_type == "01") {
item.trade_type_name = "批量";
} else {
item.trade_type_name = "";
}
if (item.create_time) {
item.create_time = moment(item.create_time).subtract(8, "hours").format("YYYY-MM-DD HH:mm");
}
if (item.pay_complete_time) {
item.pay_complete_time = moment(item.pay_complete_time).subtract(8, "hours").format("YYYY-MM-DD HH:mm");
}
item.itemCount = itmap["order_id_" + item.order_id] || 0;
}
} else {
list = []
}
return {count: total, rows: list};
} }
listSql = listSql + " ORDER BY pay_complete_time DESC, id ASC "; async statSettleAmt(condition) {
listSql = listSql + " LIMIT " + Number(startRow) + ", " + Number(pageSize); var sql = "SELECT " +
"t1.`amt` " +
"FROM tbl_order t1 " +
"INNER JOIN `tbl_busi` t2 ON t1.`busi_id` = t2.`id` " +
"WHERE 1 = 1 ";
var countrs = await this.settledb.query(countSql, {replacements: where}); if (condition.companyNames && condition.companyNames.length > 0) {
var total = 0; sql = sql + " AND t2.`company_name` IN (" + "'" + condition.companyNames.join("','") + "'" + ") ";
if(countrs && countrs[0,0]) { }
total = countrs[0,0][0].num;
}
if(total == 0) { if (condition.companyName) {
return {count:0, rows:[]} sql = sql + " AND t2.`company_name` = '" + condition.companyName + "' ";
} }
var list = await this.settledb.query(listSql, { replacements: where}); if (condition.companyNameLike) {
if(list && list.length > 0) { sql = sql + " AND t2.`company_name` LIKE :companyNameLike ";
list = list[0,0] || [];
for(var item of list) {
item.amt = parseFloat((Number(item.amt || 0) / 100).toFixed(2));
item.actual_amt = parseFloat((Number(item.actual_amt || 0) / 100).toFixed(2));
item.deduct_amt = parseFloat((Number(item.deduct_amt || 0) / 100).toFixed(2));
if (item.trade_status == "00") {
item.trade_status_name = "成功";
} else if (item.trade_status == "01") {
item.trade_status_name = "待处理";
} else if (item.trade_status == "02") {
item.trade_status_name = "失败";
} else {
item.trade_status_name = "";
} }
if (item.trade_type == "00") { if (condition.createBegin) {
item.trade_type_name = "实时"; sql = sql + " AND t1.`create_time` >= '" + condition.createBegin + "' ";
} else if (item.trade_type == "01") { }
item.trade_type_name = "批量"; if (condition.createEnd) {
} else { sql = sql + " AND t1.`create_time` >= '" + condition.createBegin + "' ";
item.trade_type_name = "";
} }
if(item.create_time) { if (condition.out_trade_no) {
item.create_time = moment(item.create_time).subtract(8, "hours").format("YYYY-MM-DD HH:mm"); sql = sql + " AND t1.`out_trade_no` = '" + condition.out_trade_no + "' ";
} }
if(item.pay_complete_time) {
item.pay_complete_time = moment(item.pay_complete_time).subtract(8, "hours").format("YYYY-MM-DD HH:mm"); if (condition.amtBegin) {
sql = sql + " AND t1.`amt` >= " + condition.amtBegin;
} }
}
} else{
list = []
}
return {count: total, rows:list};
}
async doCommission(orderId) { if (condition.amtEnd) {
var tblorder = await this.findTBLOrderById(orderId); sql = sql + " AND t1.`amt` <= " + condition.amtEnd;
if(!tblorder || !tblorder.company_name) { }
return;
}
var ecompany = await this.ecompanyDao.findOne({name:tblorder.company_name}); sql = sql + " GROUP BY t1.id ";
var ecompanyId = 0;
var epartnerId = 0;
var epartnerUserId = 0;
var epartner = null;
if(ecompany) {
ecompanyId = ecompany.id;
epartner = await this.epartnerDao.findById(ecompany.epartner_id);
if(epartner) {
epartnerId = epartner.id;
epartnerUserId = epartner.user_id;
}
}
// || !ecompany.epartner_id || !ecompany.isBenefit
var settle = await this.findOne({tbl_order_id: orderId});
var payTime = moment(tblorder.create_time).subtract(8, "hours");
var payCompleteTime = moment(tblorder.create_time).subtract(8, "hours");
var month = Number(moment(payCompleteTime).format("YYYYMM"));
if(!settle) {
settle = {
ecompany_id: ecompanyId,
ecompanyName: tblorder.company_name,
epartner_id: epartnerId,
user_id: epartnerUserId,
month: month,
pay_time: payTime,
pay_complete_time: payCompleteTime,
out_trade_no: tblorder.out_trade_no,
tbl_order_id: tblorder.id,
busi_id: tblorder.busi_id,
amt: tblorder.amt || 0,
actual_amt: tblorder.actual_amt || 0,
deduct_amt: tblorder.deduct_amt || 0,
service_tax: tblorder.service_tax || 0,
added_value_tax: tblorder.added_value_tax || 0,
service_rate: tblorder.service_rate || 0,
}
settle = await this.create(settle);
} else {
settle.ecompany_id = ecompanyId;
settle.ecompanyName = tblorder.company_name;
settle.epartner_id = epartnerId;
settle.user_id = epartnerUserId;
settle.month = month;
settle.pay_time = payTime;
settle.pay_complete_time = payCompleteTime;
settle.out_trade_no = tblorder.out_trade_no;
settle.tbl_order_id = tblorder.id;
settle.busi_id = tblorder.busi_id;
settle.amt = tblorder.amt || 0;
settle.actual_amt = tblorder.actual_amt || 0;
settle.deduct_amt = tblorder.deduct_amt || 0;
settle.service_rate = tblorder.service_rate || 0;
settle.service_tax = tblorder.service_tax || 0;
settle.added_value_tax = tblorder.added_value_tax || 0;
await settle.save();
}
if(ecompany && epartner) { var amt = 0;
await this.addCommission(settle, epartner, ecompany); var list = await this.settledb.query(sql, {replacements: {companyNameLike: "%" + condition.companyNameLike + "%"}});
} if (list && list.length > 0) {
} list = list[0, 0] || [];
for (var item of list) {
async addCommission(esettle, epartner, ecompany) { amt = amt + Number(item.amt);
var commission = 0; }
var commissionTypeName = "每次发薪提成"; }
var commissionType = '1'; return parseFloat((amt / 100).toFixed(2));
var commissionSourceName = '我的客户';
var commissionSource = '0';
var serviceRate = Number(esettle.service_rate);
// 合伙人等级
if (ecompany.partnerType == '1') {
// 中级
commission = Math.floor(esettle.service_tax * 0.1);
} else if (ecompany.partnerType == '2') {
// 高级
if (!serviceRate) {
commission = 0;
} else {
commission = Math.floor((serviceRate - 1) * esettle.service_tax / serviceRate);
}
} else {
// 查询公司上个月分润
var lastMonth = Number(moment(esettle.pay_complete_time).subtract(1, 'months').format("YYYYMM"));
var sql = "SELECT COUNT(1) as num FROM `c_esettle_commission` WHERE ecompany_id = :ecompanyId AND `month` = :month ";
var countrs = await this.customQuery(sql, {ecompanyId: ecompany.id, month: lastMonth});
if(countrs && countrs.length > 0 && countrs[0].num) {
ecompany.isBenefit = false;
await ecompany.save();
return;
}
// 初级
commission = Math.floor(esettle.service_tax * 0.1);
commissionTypeName = '首次发薪提成';
commissionType = '0';
} }
var esettleCommssion = await this.esettlecommissionDao.findOne({esettle_id: esettle.id, epartner_id: epartner.id}); async settleItemList(condition) {
var isExist = esettleCommssion ? true : false; var currentPage = Number(condition.currentPage || 1);
if(!isExist) { var pageSize = Number(condition.pageSize || 20);
esettleCommssion = {}; var startRow = (currentPage - 1) * pageSize;
}
esettleCommssion.month = esettle.month;
esettleCommssion.esettle_id = esettle.id;
esettleCommssion.ecompany_id = esettle.ecompany_id;
esettleCommssion.ecompanyName = esettle.ecompanyName;
esettleCommssion.amt = esettle.amt;
esettleCommssion.service_tax = esettle.service_tax;
esettleCommssion.service_rate = esettle.service_rate;
esettleCommssion.out_trade_no = esettle.out_trade_no;
esettleCommssion.commission = commission;
esettleCommssion.commissionType = commissionType;
esettleCommssion.commissionTypeName = commissionTypeName;
esettleCommssion.commissionSource = commissionSource;
esettleCommssion.commissionSourceName = commissionSourceName;
esettleCommssion.epartner_id = esettle.epartner_id;
esettleCommssion.user_id = esettle.user_id;
esettleCommssion.epartnerSourceName = "";
esettleCommssion.pay_complete_time = esettle.pay_complete_time;
if(isExist) {
await esettleCommssion.save();
} else {
await this.esettlecommissionDao.create(esettleCommssion);
}
if (epartner.sourcePartnerId) { var countSql = "SELECT COUNT(1) as num FROM tbl_order_item WHERE 1 = 1 ";
var pepartner = await this.epartnerDao.findById(epartner.sourcePartnerId); var listSql = "SELECT * FROM tbl_order_item WHERE 1 = 1 ";
var pcommission = Math.floor(commission * 0.1);
pcommission = pcommission < 0 ? 0 : pcommission;
var pesettleCommssion = await this.esettlecommissionDao.findOne({esettle_id: esettle.id, epartner_id: pepartner.id});
var pIsExist = pesettleCommssion ? true : false;
if(!pIsExist) {
pesettleCommssion = {};
}
pesettleCommssion.month = esettle.month;
pesettleCommssion.esettle_id = esettle.id;
pesettleCommssion.ecompany_id = esettle.ecompany_id;
pesettleCommssion.ecompanyName = esettle.ecompanyName;
pesettleCommssion.amt = esettle.amt;
pesettleCommssion.service_tax = esettle.service_tax;
pesettleCommssion.service_rate = esettle.service_rate;
pesettleCommssion.out_trade_no = esettle.out_trade_no;
pesettleCommssion.commission = commission;
pesettleCommssion.commissionType = "2";
pesettleCommssion.commissionTypeName = "佣金提成";
pesettleCommssion.commissionSource = "1";
pesettleCommssion.commissionSourceName = "合伙人";
pesettleCommssion.epartner_id = pepartner.id;
pesettleCommssion.user_id = pepartner.user_id;
pesettleCommssion.epartnerSourceName = epartner.nickName;
pesettleCommssion.pay_complete_time = esettle.pay_complete_time;
if(pIsExist) {
await pesettleCommssion.save();
} else {
await this.esettlecommissionDao.create(pesettleCommssion);
}
}
}
async settleCommission(begin, end) { var where = {};
var orderIds = await this.findTBLOrderIds(begin, end); if (condition.orderId) {
if(!orderIds || orderIds.length == 0) { countSql = countSql + " AND order_id = :orderId ";
return; listSql = listSql + " AND order_id = :orderId ";
} where.orderId = condition.orderId;
}
for(var order of orderIds) { listSql = listSql + " ORDER BY pay_complete_time DESC, id ASC ";
try { listSql = listSql + " LIMIT " + Number(startRow) + ", " + Number(pageSize);
await this.doCommission(order.id);
} catch (error) {
console.log(error);
}
}
}
async findTBLOrderById(id) {
var sql = [];
sql.push("SELECT ");
sql.push("t1.create_time, t1.pay_complete_time, t1.out_trade_no, t1.id, t1.busi_id,");
sql.push("t1.amt, t1.actual_amt, t1.deduct_amt, t1.service_tax, t1.added_value_tax,");
sql.push("t2.company_name,");
sql.push("t3.service_rate,");
sql.push("1")
sql.push("FROM tbl_order t1");
sql.push("INNER JOIN tbl_busi t2 ON t1.busi_id = t2.id");
sql.push("INNER JOIN tbl_busi_signed t3 ON t1.busi_id = t3.busi_id");
sql.push("WHERE t1.id = :id");
var where = {id: id};
var list = await this.settledb.query(sql.join(" "), {replacements: where});
if(list && list.length > 0) {
list = list[0,0] || [];
}
return list && list.length > 0 ? list[0] : null; var countrs = await this.settledb.query(countSql, {replacements: where});
} var total = 0;
if (countrs && countrs[0, 0]) {
total = countrs[0, 0][0].num;
}
async findTBLOrderIds(begin, end) { if (total == 0) {
if(!begin) { return {count: 0, rows: []}
begin = moment().subtract(3, "days").format("YYYY-MM-DD"); }
}
begin = begin + " 00:00:00";
if(!end) {
end = moment().format("YYYY-MM-DD");
}
end = end + " 23:59:59";
console.log(begin, end);
var sql = [];
sql.push("SELECT id");
sql.push("FROM tbl_order");
sql.push("WHERE");
sql.push("trade_status = '00' AND check_status = '3'");
sql.push("AND pay_complete_time >= :begin AND pay_complete_time <= :end");
sql.push("AND pay_complete_time IS NOT NULL");
sql.push("ORDER BY pay_complete_time ASC");
var where = {begin: begin, end: end};
var list = await this.settledb.query(sql.join(" "), {replacements: where});
if(list && list.length > 0) {
list = list[0,0] || [];
}
return list;
}
async balancePage(condition) {
var currentPage = Number(condition.currentPage || 1);
var pageSize = Number(condition.pageSize || 20);
var startRow = (currentPage - 1) * pageSize;
var countSql = [];
countSql.push("SELECT COUNT(1) AS num ");
countSql.push("FROM tbl_busi_account t1");
countSql.push("INNER JOIN `tbl_busi` t2 ON t1.`bus_id` = t2.`id`");
countSql.push("WHERE 1 = 1 ");
var listSql = [];
listSql.push("SELECT t1.bus_id, t2.`company_name`, t1.`available_amt`,t1.`frozen_amt`");
listSql.push("FROM tbl_busi_account t1");
listSql.push("INNER JOIN `tbl_busi` t2 ON t1.`bus_id` = t2.`id`");
listSql.push("WHERE 1 = 1 ");
var where = {};
if(condition.companyNames) {
countSql.push(" AND t2.company_name IN (:companyNames)");
listSql.push(" AND t2.company_name IN (:companyNames)");
where.companyNames = condition.companyNames;
}
if(condition.ecompanyName) { var list = await this.settledb.query(listSql, {replacements: where});
countSql.push(" AND t2.`company_name` LIKE :companyNameLike "); if (list && list.length > 0) {
listSql.push(" AND t2.`company_name` LIKE :companyNameLike "); list = list[0, 0] || [];
where.companyNameLike = "%" + condition.ecompanyName + "%"; for (var item of list) {
item.amt = parseFloat((Number(item.amt || 0) / 100).toFixed(2));
item.actual_amt = parseFloat((Number(item.actual_amt || 0) / 100).toFixed(2));
item.deduct_amt = parseFloat((Number(item.deduct_amt || 0) / 100).toFixed(2));
if (item.trade_status == "00") {
item.trade_status_name = "成功";
} else if (item.trade_status == "01") {
item.trade_status_name = "待处理";
} else if (item.trade_status == "02") {
item.trade_status_name = "失败";
} else {
item.trade_status_name = "";
}
if (item.trade_type == "00") {
item.trade_type_name = "实时";
} else if (item.trade_type == "01") {
item.trade_type_name = "批量";
} else {
item.trade_type_name = "";
}
if (item.create_time) {
item.create_time = moment(item.create_time).subtract(8, "hours").format("YYYY-MM-DD HH:mm");
}
if (item.pay_complete_time) {
item.pay_complete_time = moment(item.pay_complete_time).subtract(8, "hours").format("YYYY-MM-DD HH:mm");
}
}
} else {
list = []
}
return {count: total, rows: list};
} }
listSql.push(" ORDER BY t1.`available_amt` ASC, t1.`frozen_amt` ASC "); async doCommission(orderId) {
listSql.push(" LIMIT " + Number(startRow) + ", " + Number(pageSize)); var tblorder = await this.findTBLOrderById(orderId);
if (!tblorder || !tblorder.company_name) {
return;
}
var countrs = await this.settledb.query(countSql.join(" "), {replacements: where}); var ecompany = await this.ecompanyDao.findOne({name: tblorder.company_name});
var total = 0; var ecompanyId = 0;
if(countrs && countrs[0,0]) { var epartnerId = 0;
total = countrs[0,0][0].num; var epartnerUserId = 0;
} var epartner = null;
if (ecompany) {
ecompanyId = ecompany.id;
epartner = await this.epartnerDao.findById(ecompany.epartner_id);
if (epartner) {
epartnerId = epartner.id;
epartnerUserId = epartner.user_id;
}
}
// || !ecompany.epartner_id || !ecompany.isBenefit
var settle = await this.findOne({tbl_order_id: orderId});
var payTime = moment(tblorder.create_time).subtract(8, "hours");
var payCompleteTime = moment(tblorder.create_time).subtract(8, "hours");
var month = Number(moment(payCompleteTime).format("YYYYMM"));
if (!settle) {
settle = {
ecompany_id: ecompanyId,
ecompanyName: tblorder.company_name,
epartner_id: epartnerId,
user_id: epartnerUserId,
month: month,
pay_time: payTime,
pay_complete_time: payCompleteTime,
out_trade_no: tblorder.out_trade_no,
tbl_order_id: tblorder.id,
busi_id: tblorder.busi_id,
amt: tblorder.amt || 0,
actual_amt: tblorder.actual_amt || 0,
deduct_amt: tblorder.deduct_amt || 0,
service_tax: tblorder.service_tax || 0,
added_value_tax: tblorder.added_value_tax || 0,
service_rate: tblorder.service_rate || 0,
}
settle = await this.create(settle);
} else {
settle.ecompany_id = ecompanyId;
settle.ecompanyName = tblorder.company_name;
settle.epartner_id = epartnerId;
settle.user_id = epartnerUserId;
settle.month = month;
settle.pay_time = payTime;
settle.pay_complete_time = payCompleteTime;
settle.out_trade_no = tblorder.out_trade_no;
settle.tbl_order_id = tblorder.id;
settle.busi_id = tblorder.busi_id;
settle.amt = tblorder.amt || 0;
settle.actual_amt = tblorder.actual_amt || 0;
settle.deduct_amt = tblorder.deduct_amt || 0;
settle.service_rate = tblorder.service_rate || 0;
settle.service_tax = tblorder.service_tax || 0;
settle.added_value_tax = tblorder.added_value_tax || 0;
await settle.save();
}
if(total == 0) { if (ecompany && epartner) {
return {count:0, rows:[]} await this.addCommission(settle, epartner, ecompany);
}
} }
var list = await this.settledb.query(listSql.join(" "), { replacements: where}); async addCommission(esettle, epartner, ecompany) {
if(list && list.length > 0) { var commission = 0;
list = list[0,0] || []; var commissionTypeName = "每次发薪提成";
for(var item of list) { var commissionType = '1';
item.available_amt = parseFloat((Number(item.available_amt || 0) / 100).toFixed(2)); var commissionSourceName = '我的客户';
item.frozen_amt = parseFloat((Number(item.frozen_amt || 0) / 100).toFixed(2)); var commissionSource = '0';
} var serviceRate = Number(esettle.service_rate);
} else{ // 合伙人等级
list = [] if (ecompany.partnerType == '1') {
} // 中级
return {count: total, rows:list}; commission = Math.floor(esettle.service_tax * 0.1);
} } else if (ecompany.partnerType == '2') {
// 高级
async statOnlineSettle(params) { if (!serviceRate) {
var sql = []; commission = 0;
sql.push("SELECT"); } else {
sql.push("SUM(amt) AS amtCount,"); commission = Math.floor((serviceRate - 1) * esettle.service_tax / serviceRate);
sql.push("SUM(actual_amt) AS actualAmtCount,"); }
sql.push("SUM(service_tax) AS serviceTaxCount,"); } else {
sql.push("SUM(added_value_tax) AS addedValueTaxCount,");
sql.push("COUNT(DISTINCT busi_id) AS busiCount,");
sql.push("COUNT(DISTINCT id_no) AS idNoCount");
sql.push("FROM");
sql.push("tbl_order_item");
sql.push("WHERE pay_complete_time IS NOT NULL AND trade_status = '00'");
var where = {};
if(params.payTimeBegin) {
sql.push("AND pay_complete_time >= :payTimeBegin");
where.payTimeBegin = params.payTimeBegin;
}
if(params.payTimeEnd) { // 查询公司上个月分润
sql.push("AND pay_complete_time <= :payTimeEnd"); var lastMonth = Number(moment(esettle.pay_complete_time).subtract(1, 'months').format("YYYYMM"));
where.payTimeEnd = params.payTimeEnd; var sql = "SELECT COUNT(1) as num FROM `c_esettle_commission` WHERE ecompany_id = :ecompanyId AND `month` = :month ";
} var countrs = await this.customQuery(sql, {ecompanyId: ecompany.id, month: lastMonth});
var stat = {}; if (countrs && countrs.length > 0 && countrs[0].num) {
var list = await this.settledb.query(sql.join(" "), {replacements: where}); ecompany.isBenefit = false;
if(list && list.length > 0) { await ecompany.save();
list = list[0,0] || []; return;
if(list && list.length > 0) { }
stat = list[0] || {};
stat.amtCount = system.f2y(stat.amtCount); // 初级
stat.actualAmtCount = system.f2y(stat.actualAmtCount); commission = Math.floor(esettle.service_tax * 0.1);
stat.serviceTaxCount = system.f2y(stat.serviceTaxCount); commissionTypeName = '首次发薪提成';
stat.addedValueTaxCount = system.f2y(stat.addedValueTaxCount); commissionType = '0';
} }
}
return stat;
}
async findIncomeTaxById(orderItemId) { var esettleCommssion = await this.esettlecommissionDao.findOne({
var getTax = {}; esettle_id: esettle.id,
if(!orderItemId) { epartner_id: epartner.id
return getTax; });
var isExist = esettleCommssion ? true : false;
if (!isExist) {
esettleCommssion = {};
}
esettleCommssion.month = esettle.month;
esettleCommssion.esettle_id = esettle.id;
esettleCommssion.ecompany_id = esettle.ecompany_id;
esettleCommssion.ecompanyName = esettle.ecompanyName;
esettleCommssion.amt = esettle.amt;
esettleCommssion.service_tax = esettle.service_tax;
esettleCommssion.service_rate = esettle.service_rate;
esettleCommssion.out_trade_no = esettle.out_trade_no;
esettleCommssion.commission = commission;
esettleCommssion.commissionType = commissionType;
esettleCommssion.commissionTypeName = commissionTypeName;
esettleCommssion.commissionSource = commissionSource;
esettleCommssion.commissionSourceName = commissionSourceName;
esettleCommssion.epartner_id = esettle.epartner_id;
esettleCommssion.user_id = esettle.user_id;
esettleCommssion.epartnerSourceName = "";
esettleCommssion.pay_complete_time = esettle.pay_complete_time;
if (isExist) {
await esettleCommssion.save();
} else {
await this.esettlecommissionDao.create(esettleCommssion);
}
if (epartner.sourcePartnerId) {
var pepartner = await this.epartnerDao.findById(epartner.sourcePartnerId);
var pcommission = Math.floor(commission * 0.1);
pcommission = pcommission < 0 ? 0 : pcommission;
var pesettleCommssion = await this.esettlecommissionDao.findOne({
esettle_id: esettle.id,
epartner_id: pepartner.id
});
var pIsExist = pesettleCommssion ? true : false;
if (!pIsExist) {
pesettleCommssion = {};
}
pesettleCommssion.month = esettle.month;
pesettleCommssion.esettle_id = esettle.id;
pesettleCommssion.ecompany_id = esettle.ecompany_id;
pesettleCommssion.ecompanyName = esettle.ecompanyName;
pesettleCommssion.amt = esettle.amt;
pesettleCommssion.service_tax = esettle.service_tax;
pesettleCommssion.service_rate = esettle.service_rate;
pesettleCommssion.out_trade_no = esettle.out_trade_no;
pesettleCommssion.commission = commission;
pesettleCommssion.commissionType = "2";
pesettleCommssion.commissionTypeName = "佣金提成";
pesettleCommssion.commissionSource = "1";
pesettleCommssion.commissionSourceName = "合伙人";
pesettleCommssion.epartner_id = pepartner.id;
pesettleCommssion.user_id = pepartner.user_id;
pesettleCommssion.epartnerSourceName = epartner.nickName;
pesettleCommssion.pay_complete_time = esettle.pay_complete_time;
if (pIsExist) {
await pesettleCommssion.save();
} else {
await this.esettlecommissionDao.create(pesettleCommssion);
}
}
} }
var sql = [];
sql.push("SELECT"); async settleCommission(begin, end) {
sql.push("income_tax AS incomeTax "); var orderIds = await this.findTBLOrderIds(begin, end);
sql.push("FROM"); if (!orderIds || orderIds.length == 0) {
sql.push("tbl_order_item "); return;
sql.push("WHERE pay_complete_time IS NOT NULL AND trade_status = '00'"); }
var where = {};
if(orderItemId) { for (var order of orderIds) {
sql.push("AND id = :id"); try {
where.id = orderItemId; await this.doCommission(order.id);
} catch (error) {
console.log(error);
}
}
} }
var list = await this.settledb.query(sql.join(" "), {replacements: where}); async findTBLOrderById(id) {
if(list && list.length > 0) { var sql = [];
list = list[0,0] || []; sql.push("SELECT ");
if(list && list.length > 0) { sql.push("t1.create_time, t1.pay_complete_time, t1.out_trade_no, t1.id, t1.busi_id,");
getTax = list[0] || {}; sql.push("t1.amt, t1.actual_amt, t1.deduct_amt, t1.service_tax, t1.added_value_tax,");
getTax.incomeTax = getTax.incomeTax; sql.push("t2.company_name,");
} sql.push("t3.service_rate,");
sql.push("1")
sql.push("FROM tbl_order t1");
sql.push("INNER JOIN tbl_busi t2 ON t1.busi_id = t2.id");
sql.push("INNER JOIN tbl_busi_signed t3 ON t1.busi_id = t3.busi_id");
sql.push("WHERE t1.id = :id");
var where = {id: id};
var list = await this.settledb.query(sql.join(" "), {replacements: where});
if (list && list.length > 0) {
list = list[0, 0] || [];
}
return list && list.length > 0 ? list[0] : null;
} }
return getTax;
} async findTBLOrderIds(begin, end) {
if (!begin) {
async findOrderItemById(orderItemId) { begin = moment().subtract(3, "days").format("YYYY-MM-DD");
if(!orderItemId) { }
return null; begin = begin + " 00:00:00";
if (!end) {
end = moment().format("YYYY-MM-DD");
}
end = end + " 23:59:59";
console.log(begin, end);
var sql = [];
sql.push("SELECT id");
sql.push("FROM tbl_order");
sql.push("WHERE");
sql.push("trade_status = '00' AND check_status = '3'");
sql.push("AND pay_complete_time >= :begin AND pay_complete_time <= :end");
sql.push("AND pay_complete_time IS NOT NULL");
sql.push("ORDER BY pay_complete_time ASC");
var where = {begin: begin, end: end};
var list = await this.settledb.query(sql.join(" "), {replacements: where});
if (list && list.length > 0) {
list = list[0, 0] || [];
}
return list;
}
async balancePage(condition) {
var currentPage = Number(condition.currentPage || 1);
var pageSize = Number(condition.pageSize || 20);
var startRow = (currentPage - 1) * pageSize;
var countSql = [];
countSql.push("SELECT COUNT(1) AS num ");
countSql.push("FROM tbl_busi_account t1");
countSql.push("INNER JOIN `tbl_busi` t2 ON t1.`bus_id` = t2.`id`");
countSql.push("WHERE 1 = 1 ");
var listSql = [];
listSql.push("SELECT t1.bus_id, t2.`company_name`, t1.`available_amt`,t1.`frozen_amt`");
listSql.push("FROM tbl_busi_account t1");
listSql.push("INNER JOIN `tbl_busi` t2 ON t1.`bus_id` = t2.`id`");
listSql.push("WHERE 1 = 1 ");
var where = {};
if (condition.companyNames) {
countSql.push(" AND t2.company_name IN (:companyNames)");
listSql.push(" AND t2.company_name IN (:companyNames)");
where.companyNames = condition.companyNames;
}
if (condition.ecompanyName) {
countSql.push(" AND t2.`company_name` LIKE :companyNameLike ");
listSql.push(" AND t2.`company_name` LIKE :companyNameLike ");
where.companyNameLike = "%" + condition.ecompanyName + "%";
}
listSql.push(" ORDER BY t1.`available_amt` ASC, t1.`frozen_amt` ASC ");
listSql.push(" LIMIT " + Number(startRow) + ", " + Number(pageSize));
var countrs = await this.settledb.query(countSql.join(" "), {replacements: where});
var total = 0;
if (countrs && countrs[0, 0]) {
total = countrs[0, 0][0].num;
}
if (total == 0) {
return {count: 0, rows: []}
}
var list = await this.settledb.query(listSql.join(" "), {replacements: where});
if (list && list.length > 0) {
list = list[0, 0] || [];
for (var item of list) {
item.available_amt = parseFloat((Number(item.available_amt || 0) / 100).toFixed(2));
item.frozen_amt = parseFloat((Number(item.frozen_amt || 0) / 100).toFixed(2));
}
} else {
list = []
}
return {count: total, rows: list};
}
async statOnlineSettle(params) {
var sql = [];
sql.push("SELECT");
sql.push("SUM(amt) AS amtCount,");
sql.push("SUM(actual_amt) AS actualAmtCount,");
sql.push("SUM(service_tax) AS serviceTaxCount,");
sql.push("SUM(added_value_tax) AS addedValueTaxCount,");
sql.push("COUNT(DISTINCT busi_id) AS busiCount,");
sql.push("COUNT(DISTINCT id_no) AS idNoCount");
sql.push("FROM");
sql.push("tbl_order_item");
sql.push("WHERE pay_complete_time IS NOT NULL AND trade_status = '00'");
var where = {};
if (params.payTimeBegin) {
sql.push("AND pay_complete_time >= :payTimeBegin");
where.payTimeBegin = params.payTimeBegin;
}
if (params.payTimeEnd) {
sql.push("AND pay_complete_time <= :payTimeEnd");
where.payTimeEnd = params.payTimeEnd;
}
var stat = {};
var list = await this.settledb.query(sql.join(" "), {replacements: where});
if (list && list.length > 0) {
list = list[0, 0] || [];
if (list && list.length > 0) {
stat = list[0] || {};
stat.amtCount = system.f2y(stat.amtCount);
stat.actualAmtCount = system.f2y(stat.actualAmtCount);
stat.serviceTaxCount = system.f2y(stat.serviceTaxCount);
stat.addedValueTaxCount = system.f2y(stat.addedValueTaxCount);
}
}
return stat;
} }
var sql = [];
sql.push("SELECT"); async findIncomeTaxById(orderItemId) {
sql.push("*"); var getTax = {};
sql.push("FROM"); if (!orderItemId) {
sql.push("tbl_order_item "); return getTax;
sql.push("WHERE pay_complete_time IS NOT NULL AND trade_status = '00'"); }
var where = {}; var sql = [];
if(orderItemId) { sql.push("SELECT");
sql.push("AND id = :id"); sql.push("income_tax AS incomeTax ");
where.id = orderItemId; sql.push("FROM");
sql.push("tbl_order_item ");
sql.push("WHERE pay_complete_time IS NOT NULL AND trade_status = '00'");
var where = {};
if (orderItemId) {
sql.push("AND id = :id");
where.id = orderItemId;
}
var list = await this.settledb.query(sql.join(" "), {replacements: where});
if (list && list.length > 0) {
list = list[0, 0] || [];
if (list && list.length > 0) {
getTax = list[0] || {};
getTax.incomeTax = getTax.incomeTax;
}
}
return getTax;
} }
var getTax;
var list = await this.settledb.query(sql.join(" "), {replacements: where}); async findOrderItemById(orderItemId) {
if(list && list.length > 0) { if (!orderItemId) {
list = list[0,0] || []; return null;
if(list && list.length > 0) { }
getTax = list[0]; var sql = [];
} sql.push("SELECT");
sql.push("*");
sql.push("FROM");
sql.push("tbl_order_item ");
sql.push("WHERE pay_complete_time IS NOT NULL AND trade_status = '00'");
var where = {};
if (orderItemId) {
sql.push("AND id = :id");
where.id = orderItemId;
}
var getTax;
var list = await this.settledb.query(sql.join(" "), {replacements: where});
if (list && list.length > 0) {
list = list[0, 0] || [];
if (list && list.length > 0) {
getTax = list[0];
}
}
return getTax;
} }
return getTax;
}
} }
module.exports = EsettleService; module.exports = EsettleService;
\ No newline at end of file
...@@ -100,7 +100,7 @@ class ServiceBase{ ...@@ -100,7 +100,7 @@ class ServiceBase{
} else { } else {
row[field] = moment(row[field]).format(pattern); row[field] = moment(row[field]).format(pattern);
} }
} }
} }
} }
...@@ -131,5 +131,12 @@ class ServiceBase{ ...@@ -131,5 +131,12 @@ class ServiceBase{
} }
return o.toString().trim(); return o.toString().trim();
} }
addmonth(params) {
if (this.trim(params.month)) {
params.createBegin = moment(params.month).format("YYYY-MM-DD") + " 00:00:00";
params.createEnd = moment(params.month).add(1, "months").subtract(1, 'days').format("YYYY-MM-DD") + " 23:59:59";
}
}
} }
module.exports=ServiceBase; module.exports=ServiceBase;
...@@ -3,15 +3,15 @@ var settings = { ...@@ -3,15 +3,15 @@ var settings = {
host: "43.247.184.32", host: "43.247.184.32",
port: 8967, port: 8967,
password: "Gongsibao2018", password: "Gongsibao2018",
db:10, db:11,
}, },
database: { database: {
dbname: "bpo", dbname: "bpo",
user: "root", user: "write",
password: "123456", password: "write",
config: { config: {
host: '43.247.184.35', host: '192.168.18.237',
port: 8899, port: 3306,
dialect: 'mysql', dialect: 'mysql',
operatorsAliases: false, operatorsAliases: false,
pool: { pool: {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
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