Commit 22b467de by 宋毅

tj

parent 96ef4a91
...@@ -4,6 +4,7 @@ var settings = require("../../../../config/settings"); ...@@ -4,6 +4,7 @@ var settings = require("../../../../config/settings");
class OrderAPI extends APIBase { class OrderAPI extends APIBase {
constructor() { constructor() {
super(); super();
this.orderinfoSve = system.getObject("service.dbcorder.orderinfoSve");
} }
/** /**
* 接口跳转-POST请求 * 接口跳转-POST请求
...@@ -13,7 +14,7 @@ class OrderAPI extends APIBase { ...@@ -13,7 +14,7 @@ class OrderAPI extends APIBase {
*/ */
async springBoard(pobj, qobj, req) { async springBoard(pobj, qobj, req) {
if (!pobj.userInfo) { if (!pobj.userInfo) {
return system.getResult(system.noLogin, "user no login!"); return system.getResultFail(system.noLogin, "user no login!");
} }
if (!pobj.actionType) { if (!pobj.actionType) {
return system.getResult(null, "actionType参数不能为空"); return system.getResult(null, "actionType参数不能为空");
...@@ -27,6 +28,12 @@ class OrderAPI extends APIBase { ...@@ -27,6 +28,12 @@ class OrderAPI extends APIBase {
case "addOrder"://创建订单 case "addOrder"://创建订单
opResult = await this.addOrder(pobj, pobj.actionBody); opResult = await this.addOrder(pobj, pobj.actionBody);
break; break;
case "getPayOrderInfo"://获取付款订单信息
opResult = await this.orderinfoSve.getPayOrderInfo(pobj, pobj.actionBody);
break;
case "putReceiptVoucherInfo"://修改订单收款信息
opResult = await this.orderinfoSve.putReceiptVoucherInfo(pobj, pobj.actionBody);
break;
default: default:
opResult = system.getResult(null, "action_type参数错误"); opResult = system.getResult(null, "action_type参数错误");
break; break;
...@@ -56,7 +63,8 @@ class OrderAPI extends APIBase { ...@@ -56,7 +63,8 @@ class OrderAPI extends APIBase {
if (!invokeObj[interface_info.params]) { if (!invokeObj[interface_info.params]) {
return system.getResult(null, "产品接口参数方法信息有误,20130"); return system.getResult(null, "产品接口参数方法信息有误,20130");
} }
opResult = await invokeObj[interface_info.params].apply(invokeObj, pobj); var params = [pobj];
opResult = await invokeObj[interface_info.params].apply(invokeObj, params);
} }
else if (interface_info.interface_type == "yc") { else if (interface_info.interface_type == "yc") {
......
...@@ -4,25 +4,30 @@ class OrderInfoDao extends Dao { ...@@ -4,25 +4,30 @@ class OrderInfoDao extends Dao {
constructor() { constructor() {
super(Dao.getModelName(OrderInfoDao)); super(Dao.getModelName(OrderInfoDao));
} }
buildAttributes(){ async getItemStatusByOrderNo(orderNo, uapp_id) {
return [ return await this.model.findOne({
"orderNo", where: {
"channelServiceNo", orderNo: orderNo, uapp_id: uapp_id
"needNo", },
"payTime", attributes: [
"channelUserId", "orderNo",
"quantity", "channelServiceNo",
"serviceQuantity", "channelOrderNo",
"orderPayStatusName", "channelUserId",
"orderPayStatus", "ownerUserId",
"totalSum", "needNo",
"payTotalSum", "needNoOrderNo",
"refundSum", "payTime",
"channelProfitSum", "quantity",
"pfSettleProfit", "serviceQuantity",
"notes", "orderStatusName",
"opNotes" "orderStatus",
]; "totalSum",
"payTotalSum",
"refundSum",
"invoiceApplyStatus"],
raw: true
});
} }
} }
module.exports = OrderInfoDao; module.exports = OrderInfoDao;
...@@ -4,5 +4,25 @@ class OrderProductDao extends Dao { ...@@ -4,5 +4,25 @@ class OrderProductDao extends Dao {
constructor() { constructor() {
super(Dao.getModelName(OrderProductDao)); super(Dao.getModelName(OrderProductDao));
} }
async getItemByOrderNo(orderNo, uapp_id) {
return await this.model.findOne({
where: {
sourceOrderNo: orderNo, uapp_id: uapp_id
},
attributes: [
"sourceOrderNo",
"productType_id",
"pathCode",
"itemCode",
"itemName",
"channelItemCode",
"channelItemName",
"serviceItemCode",
"picUrl",
"proPrice",
"quantity"],
raw: true
});
}
} }
module.exports = OrderProductDao; module.exports = OrderProductDao;
...@@ -4,5 +4,31 @@ class OrderReceiptVoucherDao extends Dao { ...@@ -4,5 +4,31 @@ class OrderReceiptVoucherDao extends Dao {
constructor() { constructor() {
super(Dao.getModelName(OrderReceiptVoucherDao)); super(Dao.getModelName(OrderReceiptVoucherDao));
} }
async getItemByOrderNo(orderNo, uapp_id) {
return await this.model.findOne({
where: {
sourceOrderNo: orderNo, uapp_id: uapp_id, auditStatus: "dsh"
},
attributes: [
"id",
"uapp_id",
"sourceOrderNo",
"accountType",
"accountTypeName",
"payDate",
"totalSum",
"payOrderNo",
"buyerOpenId",
"passTradeNo",
"buyerAliLogonId",
"certifyFileUrl",
"wxPayOrderCode",
"aliPayOrderCode",
"busPayOrderCode",
"auditStatusName",
"auditStatus"],
raw: true
});
}
} }
module.exports = OrderReceiptVoucherDao; module.exports = OrderReceiptVoucherDao;
...@@ -5,31 +5,12 @@ const uuidv4 = require('uuid/v4'); ...@@ -5,31 +5,12 @@ const uuidv4 = require('uuid/v4');
class OrderInfoService extends ServiceBase { class OrderInfoService extends ServiceBase {
constructor() { constructor() {
super("dbcorder", ServiceBase.getDaoName(OrderInfoService)); super("dbcorder", ServiceBase.getDaoName(OrderInfoService));
this.orderproductDao = system.getObject("db.dbcorder.orderproductDao");
this.orderReceiptVoucherDao = system.getObject("db.dbcpay.orderreceiptvoucherDao"); this.orderReceiptVoucherDao = system.getObject("db.dbcpay.orderreceiptvoucherDao");
this.orderRefundVoucherDao = system.getObject("db.dbcpay.orderrefundvoucherDao"); // this.orderRefundVoucherDao = system.getObject("db.dbcpay.orderrefundvoucherDao");
this.moneyJourneyDao = system.getObject("db.dbcpay.moneyjourneyDao"); this.moneyJourneyDao = system.getObject("db.dbcpay.moneyjourneyDao");
this.pushlogSve = system.getObject("service.common.pushlogSve"); this.pushlogSve = system.getObject("service.common.pushlogSve");
} }
/*
* 订单验证
*/
async isOrderVerify(pobj) {
var actionBody = pobj.actionBody;
var price_list = actionBody.product_info.price_list;
if (!price_list) {
return system.getResult(null, "产品价格列表信息有误,20150");
}
var product_price = price_list.filter(f => f.id == actionBody.id);
if (!product_price || product_price.length == 0) {
return system.getResult(null, "产品价格信息有误,20180");
}
var totalSum = Number(product_price[0].price) * Number(actionBody.quantity);
if (Number(actionBody.totalSum) < totalSum) {
return system.getResult(null, "订单金额有误,20210");
}
pobj.actionBody.product_info.price_item = product_price[0];
return system.getResultSuccess();
}
async createOrder(pobj, orderNo, t) { async createOrder(pobj, orderNo, t) {
var actionBody = pobj.actionBody; var actionBody = pobj.actionBody;
var channelOrder = actionBody.channelOrder; var channelOrder = actionBody.channelOrder;
...@@ -37,7 +18,7 @@ class OrderInfoService extends ServiceBase { ...@@ -37,7 +18,7 @@ class OrderInfoService extends ServiceBase {
var totalServiceCharge = Number(price_item.service_charge || 0) * Number(actionBody.quantity); var totalServiceCharge = Number(price_item.service_charge || 0) * Number(actionBody.quantity);
var totalPublicExpense = Number(price_item.public_expense || 0) * Number(actionBody.quantity); var totalPublicExpense = Number(price_item.public_expense || 0) * Number(actionBody.quantity);
var totalProfitSum = Number(actionBody.totalSum) - (Number(price_item.supply_price || 0) * Number(actionBody.quantity)); var totalProfitSum = Number(actionBody.totalSum) - (Number(price_item.supply_price || 0) * Number(actionBody.quantity));
var pfProfitSum = (100 - Number(price_item.channel_profit_rate)) / 100 * totalProfitSum; var pfProfitSum = (100 - Number(price_item.channel_profit_rate || 0)) / 100 * totalProfitSum;
if (pfProfitSum < 0) { if (pfProfitSum < 0) {
pfProfitSum = 0; pfProfitSum = 0;
} }
...@@ -57,7 +38,7 @@ class OrderInfoService extends ServiceBase { ...@@ -57,7 +38,7 @@ class OrderInfoService extends ServiceBase {
serviceQuantity: 0,//int(11) //项目订单交付数量(即与项目订单数量相对应) serviceQuantity: 0,//int(11) //项目订单交付数量(即与项目订单数量相对应)
orderStatus: channelOrder.orderStatus || 1,//int //订单状态: 1: 待付款, 2: 已付款, 4: 待服务, 8: 已完成 orderStatus: channelOrder.orderStatus || 1,//int //订单状态: 1: 待付款, 2: 已付款, 4: 待服务, 8: 已完成
totalSum: actionBody.totalSum,//decimal(12,2) //订单总额(产品价格×优惠费率×订单件数) totalSum: actionBody.totalSum,//decimal(12,2) //订单总额(产品价格×优惠费率×订单件数)
payTotalSum: actionBody.payTotalSum,//decimal(12,2) // payTotalSum: actionBody.payTotalSum || actionBody.totalSum,//decimal(12,2) //
refundSum: 0,//decimal(12,2) //退款总额 refundSum: 0,//decimal(12,2) //退款总额
totalServiceCharge: totalServiceCharge,//decimal(12,2) //服务费总额(产品配置的服务费*订单件数) totalServiceCharge: totalServiceCharge,//decimal(12,2) //服务费总额(产品配置的服务费*订单件数)
totalPublicExpense: totalPublicExpense,//decimal(12,2) //官费总额(产品配置的官费*订单件数) totalPublicExpense: totalPublicExpense,//decimal(12,2) //官费总额(产品配置的官费*订单件数)
...@@ -68,27 +49,44 @@ class OrderInfoService extends ServiceBase { ...@@ -68,27 +49,44 @@ class OrderInfoService extends ServiceBase {
totalDiscounts: 0,//decimal(12,2) //优惠总额((服务费总额+官费总额)-订单总额(产品价格×优惠费率×订单件数)>0则有优惠额度)暂时没有用到 totalDiscounts: 0,//decimal(12,2) //优惠总额((服务费总额+官费总额)-订单总额(产品价格×优惠费率×订单件数)>0则有优惠额度)暂时没有用到
pfSettleProfit: 0,//int(11) //平台结算渠道利润,0否,1是 pfSettleProfit: 0,//int(11) //平台结算渠道利润,0否,1是
invoiceApplyStatus: "00",//varchar(10) //发票状态:00: 未申请, 10: 已申请,20:已开票 invoiceApplyStatus: "00",//varchar(10) //发票状态:00: 未申请, 10: 已申请,20:已开票
notes: ,//varchar(255) // notes: "",//varchar(255) //
opNotes: ,//varchar(255) //操作备注 opNotes: "",//varchar(255) //操作备注
}; };
var order = await this.dao.create(params, t);//创建订单 var order = await this.dao.create(params, t);//创建订单
var orderProductObj = { var orderProductObj = {
uapp_id: pobj.appInfo.uapp_id, uapp_id: pobj.appInfo.uapp_id,
sourceOrderNo: orderNo, // 来源单号 sourceOrderNo: orderNo, // 来源单号
productType_id: price_item.productType_id,//产品类型Id productType_id: actionBody.product_info.productType_id,//产品类型Id
pathCode: price_item.path_code,//产品路径 pathCode: actionBody.product_info.path_code,//产品路径
itemCode: price_item.item_code,//产品编码 itemCode: actionBody.product_info.item_code,//产品编码
itemName: price_item.item_name,//产品名称 itemName: actionBody.product_info.item_name,//产品名称
channelItemCode: price_item.channel_item_code,// 渠道产品编码 channelItemCode: actionBody.product_info.channel_item_code,// 渠道产品编码
channelItemName: price_item.channel_item_name,// 渠道产品名称 channelItemName: actionBody.product_info.channel_item_name,// 渠道产品名称
serviceItemCode: price_item.service_item_code,// 服务商产品编码 serviceItemCode: actionBody.product_info.service_item_code,// 服务商产品编码
picUrl: price_item.pic_url,// 产品图片地址 picUrl: actionBody.product_info.pic_url,// 产品图片地址
proPrice: actionBody.totalSum, // 产品总价格 proPrice: actionBody.totalSum, // 产品总价格
quantity: actionBody.quantity,// 订单数量(即产品的倍数,默认值为1) quantity: actionBody.quantity,// 订单数量(即产品的倍数,默认值为1)
opPayType: "00",// 操作付款类型:00: 创建订单, 10: 补单 opPayType: "00",// 操作付款类型:00: 创建订单, 10: 补单
serviceItemSnapshot: JSON.stringify(actionBody.product_info), //产品快照 serviceItemSnapshot: JSON.stringify(actionBody.product_info), //产品快照
}; };
var orderProduct = await this.orderProductDao.create(orderProductObj, t);//订单产品 var orderProduct = await this.orderproductDao.create(orderProductObj, t);//订单产品
var orderReceiptVoucherObj = {
uapp_id: pobj.appInfo.uapp_id,
sourceOrderNo: orderNo, // 来源单号
accountType: "other",
payDate: payTime,//支付时间
totalSum: actionBody.payTotalSum || actionBody.totalSum,//订单总额
auditStatus: "dsh",
wxPayOrderCode: orderNo,//业务微信支付订单号
aliPayOrderCode: orderNo,//业务支付宝支付订单号
busPayOrderCode: orderNo,//业务支付订单号
// payOrderNo: DataTypes.STRING, //支付凭证流水单号,如:微信支付凭证单号
// buyerOpenId: DataTypes.STRING,//用户在支付商户appid下的唯一标识或买家在支付宝的用户id
// passTradeNo: DataTypes.STRING,//通道的统一订单号
// buyerAliLogonId: DataTypes.STRING,//买家支付宝账号
// certifyFileUrl: order.orderNo, //支付证明文件Url
};
if (channelOrder.orderStatus && channelOrder.orderStatus == 2) {//订单状态: 1: 待付款, 2: 已付款, 4: 待服务, 8: 已完成 if (channelOrder.orderStatus && channelOrder.orderStatus == 2) {//订单状态: 1: 待付款, 2: 已付款, 4: 待服务, 8: 已完成
var moneyObj = { var moneyObj = {
uapp_id: pobj.appInfo.uapp_id, uapp_id: pobj.appInfo.uapp_id,
...@@ -98,34 +96,18 @@ class OrderInfoService extends ServiceBase { ...@@ -98,34 +96,18 @@ class OrderInfoService extends ServiceBase {
accountType: "other",//帐户类型( 支付类型):"cash": "现金", "bank": "银行" ,"wx":"微信","alipay":"支付宝","other":"其它" accountType: "other",//帐户类型( 支付类型):"cash": "现金", "bank": "银行" ,"wx":"微信","alipay":"支付宝","other":"其它"
directionType: "sr",//凭单类型,"sr": "收","zc": "支" directionType: "sr",//凭单类型,"sr": "收","zc": "支"
voucherDate: payTime,//凭单时间 voucherDate: payTime,//凭单时间
recvAmount: channelOrder.payTotalSum,//收总额 recvAmount: actionBody.payTotalSum || actionBody.totalSum,//收总额
sourceType: "orderinfo",//来源类型 "orderinfo": "订单","expensevoucher": "费用单" sourceType: "orderinfo",//来源类型 "orderinfo": "订单","expensevoucher": "费用单"
auditStatus: "tg",//审核状态"dsh": "待审核", "btg": "不通过", "tg": "通过" auditStatus: "tg",//审核状态"dsh": "待审核", "btg": "不通过", "tg": "通过"
}; };
var moneyJourney = await this.moneyJourneyDao.create(moneyObj, t); var moneyJourney = await this.moneyJourneyDao.create(moneyObj, t);
var orderReceiptVoucherObj = { orderReceiptVoucherObj.auditStatus = "tg";
uapp_id: pobj.appInfo.uapp_id,
sourceOrderNo: orderNo, // 来源单号
accountType: "other",
payDate: payTime,//支付时间
totalSum: channelOrder.payTotalSum,//订单总额
auditStatus: "tg"
// payOrderNo: DataTypes.STRING, //支付凭证流水单号,如:微信支付凭证单号
// buyerOpenId: DataTypes.STRING,//用户在支付商户appid下的唯一标识或买家在支付宝的用户id
// passTradeNo: DataTypes.STRING,//通道的统一订单号
// buyerAliLogonId: DataTypes.STRING,//买家支付宝账号
// certifyFileUrl: order.orderNo, //支付证明文件Url
// wxPayOrderCode: order.orderNo,//业务微信支付订单号
// aliPayOrderCode: order.orderNo,//业务支付宝支付订单号
// busPayOrderCode: order.orderNo,//业务支付订单号
};
var orderReceiptVoucher = await this.orderReceiptVoucherDao.create(orderReceiptVoucherObj, t);
} }
var orderReceiptVoucher = await this.orderReceiptVoucherDao.create(orderReceiptVoucherObj, t);
} }
/** /**
* 创建商标订单 * 创建商标订单
* @param {*} pobj * @param {*} pobj
* { * {
"actionType": "addOrder", "actionType": "addOrder",
"actionBody": { "actionBody": {
...@@ -139,14 +121,10 @@ class OrderInfoService extends ServiceBase { ...@@ -139,14 +121,10 @@ class OrderInfoService extends ServiceBase {
} }
*/ */
async createTmOrder(pobj) { async createTmOrder(pobj) {
var verifyResult = await this.isOrderVerify(pobj);
if (verifyResult.status != 0) {
return verifyResult;
}
var self = this; var self = this;
return await self.db.transaction(async function (t) { return await self.db.transaction(async function (t) {
var orderNo = await self.getBusUid("tm" + pobj.appInfo.uapp_id); var orderNo = await self.getBusUid("tm" + pobj.appInfo.uapp_id);
var item = self.createOrder(pobj, orderNo, t); var item = await self.createOrder(pobj, orderNo, t);
return system.getResultSuccess({ return system.getResultSuccess({
orderNo: orderNo, orderNo: orderNo,
channelServiceNo: pobj.actionBody.channelOrder.channelServiceNo || orderNo, channelServiceNo: pobj.actionBody.channelOrder.channelServiceNo || orderNo,
...@@ -157,21 +135,17 @@ class OrderInfoService extends ServiceBase { ...@@ -157,21 +135,17 @@ class OrderInfoService extends ServiceBase {
} }
/** /**
* 创建其他订单 * 创建其他订单
* @param {*} pobj * @param {*} pobj
*/ */
async createOtherOrder(pobj) { async createOtherOrder(pobj) {
var verifyResult = await this.isOrderVerify(pobj);
if (verifyResult.status != 0) {
return verifyResult;
}
var self = this; var self = this;
return await self.db.transaction(async function (t) { return await self.db.transaction(async function (t) {
var orderNo = await self.getBusUid("ot" + pobj.appInfo.uapp_id); var orderNo = await self.getBusUid("ot" + pobj.appInfo.uapp_id);
var item = self.createOrder(pobj, orderNo, t); var item = await self.createOrder(pobj, orderNo, t);
return system.getResultSuccess({ return system.getResultSuccess({
orderNo: orderNo, orderNo: orderNo,
channelServiceNo: pobj.actionBody.channelOrder.channelServiceNo || orderNo, channelServiceNo: pobj.actionBody.channelOrder.channelServiceNo || orderNo,
channelParams: opobj.actionBody.channelOrder.channelParams || "" channelParams: pobj.actionBody.channelOrder.channelParams || ""
}); });
}); });
...@@ -188,6 +162,39 @@ class OrderInfoService extends ServiceBase { ...@@ -188,6 +162,39 @@ class OrderInfoService extends ServiceBase {
// } // }
} }
/** /**
* 获取付款订单信息
* @param {*} pobj
* @param {*} actionBody {orderNo:XXXX}
*/
async getPayOrderInfo(pobj, actionBody) {
var productItem = await this.orderproductDao.getItemByOrderNo(actionBody.orderNo, pobj.appInfo.uapp_id);
if (!productItem) {
return system.getResult(null, "订单产品数据异常,30050");
}
var item = await this.orderReceiptVoucherDao.getItemByOrderNo(actionBody.orderNo, pobj.appInfo.uapp_id);
if (!item) {
return system.getResult(null, "订单已经付款成功,请勿重复支付,30010");
}
var param = {
receiptVoucher: item,
orderProduct: productItem
}
return system.getResultSuccess(param);
}
/**
* 修改订单收款信息
* @param {*} pobj
* @param {*} actionBody {orderNo:XXXX,trxid:XXX--支付流水号,isPut:1---大于0则进行修改操作,setField:{XXXXX}---修改的字段,receiptVoucherId:XX--收款Id,opType:"wx"}---"wx":"微信","alipay":"支付宝"
*/
async putReceiptVoucherInfo(pobj, actionBody) {
var isPut = actionBody.isPut || "";
if (isPut > 0) {
await this.orderReceiptVoucherDao.updateByWhere(actionBody.setField, { where: { id: actionBody.receiptVoucherId } });
}
return system.getResultSuccess();
}
/**
* 数据推送 * 数据推送
*/ */
// async pushData(requestid, params, url, req) { // async pushData(requestid, params, url, req) {
...@@ -243,7 +250,7 @@ class OrderInfoService extends ServiceBase { ...@@ -243,7 +250,7 @@ class OrderInfoService extends ServiceBase {
// if (!orderNo) { // if (!orderNo) {
// return system.getResult(null, "订单编号不能为空"); // return system.getResult(null, "订单编号不能为空");
// } // }
// var app = req.app; // var app = req.app;getItemStatusByChannelServiceNo
// if (!app || !app.uAppId) { // if (!app || !app.uAppId) {
// return system.getResult(null, "渠道信息有误"); // return system.getResult(null, "渠道信息有误");
// } // }
......
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