Commit 22b467de by 宋毅

tj

parent 96ef4a91
......@@ -4,6 +4,7 @@ var settings = require("../../../../config/settings");
class OrderAPI extends APIBase {
constructor() {
super();
this.orderinfoSve = system.getObject("service.dbcorder.orderinfoSve");
}
/**
* 接口跳转-POST请求
......@@ -13,7 +14,7 @@ class OrderAPI extends APIBase {
*/
async springBoard(pobj, qobj, req) {
if (!pobj.userInfo) {
return system.getResult(system.noLogin, "user no login!");
return system.getResultFail(system.noLogin, "user no login!");
}
if (!pobj.actionType) {
return system.getResult(null, "actionType参数不能为空");
......@@ -27,6 +28,12 @@ class OrderAPI extends APIBase {
case "addOrder"://创建订单
opResult = await this.addOrder(pobj, pobj.actionBody);
break;
case "getPayOrderInfo"://获取付款订单信息
opResult = await this.orderinfoSve.getPayOrderInfo(pobj, pobj.actionBody);
break;
case "putReceiptVoucherInfo"://修改订单收款信息
opResult = await this.orderinfoSve.putReceiptVoucherInfo(pobj, pobj.actionBody);
break;
default:
opResult = system.getResult(null, "action_type参数错误");
break;
......@@ -56,7 +63,8 @@ class OrderAPI extends APIBase {
if (!invokeObj[interface_info.params]) {
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") {
......
......@@ -4,25 +4,30 @@ class OrderInfoDao extends Dao {
constructor() {
super(Dao.getModelName(OrderInfoDao));
}
buildAttributes(){
return [
"orderNo",
"channelServiceNo",
"needNo",
"payTime",
"channelUserId",
"quantity",
"serviceQuantity",
"orderPayStatusName",
"orderPayStatus",
"totalSum",
"payTotalSum",
"refundSum",
"channelProfitSum",
"pfSettleProfit",
"notes",
"opNotes"
];
async getItemStatusByOrderNo(orderNo, uapp_id) {
return await this.model.findOne({
where: {
orderNo: orderNo, uapp_id: uapp_id
},
attributes: [
"orderNo",
"channelServiceNo",
"channelOrderNo",
"channelUserId",
"ownerUserId",
"needNo",
"needNoOrderNo",
"payTime",
"quantity",
"serviceQuantity",
"orderStatusName",
"orderStatus",
"totalSum",
"payTotalSum",
"refundSum",
"invoiceApplyStatus"],
raw: true
});
}
}
module.exports = OrderInfoDao;
......@@ -4,5 +4,25 @@ class OrderProductDao extends Dao {
constructor() {
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;
......@@ -4,5 +4,31 @@ class OrderReceiptVoucherDao extends Dao {
constructor() {
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;
......@@ -5,31 +5,12 @@ const uuidv4 = require('uuid/v4');
class OrderInfoService extends ServiceBase {
constructor() {
super("dbcorder", ServiceBase.getDaoName(OrderInfoService));
this.orderproductDao = system.getObject("db.dbcorder.orderproductDao");
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.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) {
var actionBody = pobj.actionBody;
var channelOrder = actionBody.channelOrder;
......@@ -37,7 +18,7 @@ class OrderInfoService extends ServiceBase {
var totalServiceCharge = Number(price_item.service_charge || 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 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) {
pfProfitSum = 0;
}
......@@ -57,7 +38,7 @@ class OrderInfoService extends ServiceBase {
serviceQuantity: 0,//int(11) //项目订单交付数量(即与项目订单数量相对应)
orderStatus: channelOrder.orderStatus || 1,//int //订单状态: 1: 待付款, 2: 已付款, 4: 待服务, 8: 已完成
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) //退款总额
totalServiceCharge: totalServiceCharge,//decimal(12,2) //服务费总额(产品配置的服务费*订单件数)
totalPublicExpense: totalPublicExpense,//decimal(12,2) //官费总额(产品配置的官费*订单件数)
......@@ -68,27 +49,44 @@ class OrderInfoService extends ServiceBase {
totalDiscounts: 0,//decimal(12,2) //优惠总额((服务费总额+官费总额)-订单总额(产品价格×优惠费率×订单件数)>0则有优惠额度)暂时没有用到
pfSettleProfit: 0,//int(11) //平台结算渠道利润,0否,1是
invoiceApplyStatus: "00",//varchar(10) //发票状态:00: 未申请, 10: 已申请,20:已开票
notes: ,//varchar(255) //
opNotes: ,//varchar(255) //操作备注
notes: "",//varchar(255) //
opNotes: "",//varchar(255) //操作备注
};
var order = await this.dao.create(params, t);//创建订单
var orderProductObj = {
uapp_id: pobj.appInfo.uapp_id,
sourceOrderNo: orderNo, // 来源单号
productType_id: price_item.productType_id,//产品类型Id
pathCode: price_item.path_code,//产品路径
itemCode: price_item.item_code,//产品编码
itemName: price_item.item_name,//产品名称
channelItemCode: price_item.channel_item_code,// 渠道产品编码
channelItemName: price_item.channel_item_name,// 渠道产品名称
serviceItemCode: price_item.service_item_code,// 服务商产品编码
picUrl: price_item.pic_url,// 产品图片地址
productType_id: actionBody.product_info.productType_id,//产品类型Id
pathCode: actionBody.product_info.path_code,//产品路径
itemCode: actionBody.product_info.item_code,//产品编码
itemName: actionBody.product_info.item_name,//产品名称
channelItemCode: actionBody.product_info.channel_item_code,// 渠道产品编码
channelItemName: actionBody.product_info.channel_item_name,// 渠道产品名称
serviceItemCode: actionBody.product_info.service_item_code,// 服务商产品编码
picUrl: actionBody.product_info.pic_url,// 产品图片地址
proPrice: actionBody.totalSum, // 产品总价格
quantity: actionBody.quantity,// 订单数量(即产品的倍数,默认值为1)
opPayType: "00",// 操作付款类型:00: 创建订单, 10: 补单
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: 已完成
var moneyObj = {
uapp_id: pobj.appInfo.uapp_id,
......@@ -98,34 +96,18 @@ class OrderInfoService extends ServiceBase {
accountType: "other",//帐户类型( 支付类型):"cash": "现金", "bank": "银行" ,"wx":"微信","alipay":"支付宝","other":"其它"
directionType: "sr",//凭单类型,"sr": "收","zc": "支"
voucherDate: payTime,//凭单时间
recvAmount: channelOrder.payTotalSum,//收总额
recvAmount: actionBody.payTotalSum || actionBody.totalSum,//收总额
sourceType: "orderinfo",//来源类型 "orderinfo": "订单","expensevoucher": "费用单"
auditStatus: "tg",//审核状态"dsh": "待审核", "btg": "不通过", "tg": "通过"
};
var moneyJourney = await this.moneyJourneyDao.create(moneyObj, t);
var orderReceiptVoucherObj = {
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);
orderReceiptVoucherObj.auditStatus = "tg";
}
var orderReceiptVoucher = await this.orderReceiptVoucherDao.create(orderReceiptVoucherObj, t);
}
/**
* 创建商标订单
* @param {*} pobj
* @param {*} pobj
* {
"actionType": "addOrder",
"actionBody": {
......@@ -139,14 +121,10 @@ class OrderInfoService extends ServiceBase {
}
*/
async createTmOrder(pobj) {
var verifyResult = await this.isOrderVerify(pobj);
if (verifyResult.status != 0) {
return verifyResult;
}
var self = this;
return await self.db.transaction(async function (t) {
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({
orderNo: orderNo,
channelServiceNo: pobj.actionBody.channelOrder.channelServiceNo || orderNo,
......@@ -157,21 +135,17 @@ class OrderInfoService extends ServiceBase {
}
/**
* 创建其他订单
* @param {*} pobj
* @param {*} pobj
*/
async createOtherOrder(pobj) {
var verifyResult = await this.isOrderVerify(pobj);
if (verifyResult.status != 0) {
return verifyResult;
}
var self = this;
return await self.db.transaction(async function (t) {
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({
orderNo: 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 {
// }
}
/**
* 获取付款订单信息
* @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) {
......@@ -243,7 +250,7 @@ class OrderInfoService extends ServiceBase {
// if (!orderNo) {
// return system.getResult(null, "订单编号不能为空");
// }
// var app = req.app;
// var app = req.app;getItemStatusByChannelServiceNo
// if (!app || !app.uAppId) {
// 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