Commit fe5e8019 by linboxuan

pull order

parents 12c8c62e b4867ca2
...@@ -33,6 +33,9 @@ class IcAPI extends APIBase { ...@@ -33,6 +33,9 @@ class IcAPI extends APIBase {
case "submitNeed"://提交需求 case "submitNeed"://提交需求
opResult = await this.needinfoSve.submitNeed(pobj, pobj.actionBody, req); opResult = await this.needinfoSve.submitNeed(pobj, pobj.actionBody, req);
break; break;
case "submitNeedH5"://工商H5提交需求
opResult = await this.needinfoSve.submitNeedH5(pobj, pobj.actionBody, req);
break;
case "getItemByNeedNo"://获取需求详情 case "getItemByNeedNo"://获取需求详情
opResult = await this.needinfoSve.getItemByNeedNo(pobj); opResult = await this.needinfoSve.getItemByNeedNo(pobj);
break; break;
......
...@@ -21,7 +21,8 @@ module.exports = (db, DataTypes) => { ...@@ -21,7 +21,8 @@ module.exports = (db, DataTypes) => {
priceTypeName :DataTypes.STRING(10), //定价类型名称 priceTypeName :DataTypes.STRING(10), //定价类型名称
quantity :DataTypes.INTEGER,// 订单数量(即产品的倍数,默认值为1) quantity :DataTypes.INTEGER,// 订单数量(即产品的倍数,默认值为1)
opPayType :DataTypes.STRING(10),// 操作付款类型:00: 创建订单, 10: 补单 opPayType :DataTypes.STRING(10),// 操作付款类型:00: 创建订单, 10: 补单
serviceItemSnapshot :DataTypes.TEXT('long'), //产品快照 serviceItemSnapshot :DataTypes.TEXT('long'), //产品快照
orderSnapshot :DataTypes.TEXT('long') //订单快照
}, { }, {
paranoid: true,//假的删除 paranoid: true,//假的删除
underscored: true, underscored: true,
......
...@@ -157,6 +157,138 @@ class OrderInfoService extends ServiceBase { ...@@ -157,6 +157,138 @@ class OrderInfoService extends ServiceBase {
} }
} }
*/ */
/**
* 工商H5 创建订单
* @param pobj
* @param orderNo
* @param t
* @returns {Promise<void>}
*/
async createOrderH5(pobj, orderNo, t) {
var actionBody = pobj.actionBody;
var channelOrder = actionBody.channelOrder;
var orderContact = actionBody.orderContact;
var price_item = actionBody.product_info.price_item;
var totalServiceCharge = Number(price_item.service_charge || 0) * Number(actionBody.quantity || 0);
var totalPublicExpense = Number(price_item.public_expense || 0) * Number(actionBody.quantity || 0);
var totalSupplyPrice = Number(price_item.supply_price || 0) * Number(actionBody.quantity || 0);//统计供货价格
var price_additions_item = actionBody.product_info.price_additions_item;
if (price_additions_item && actionBody.additions.quantity) {
totalServiceCharge = totalServiceCharge + Number(price_additions_item.service_charge || 0) * Number(actionBody.additions.quantity || 0);
totalPublicExpense = totalPublicExpense + Number(price_additions_item.public_expense || 0) * Number(actionBody.additions.quantity || 0);
totalSupplyPrice = totalSupplyPrice + Number(price_additions_item.supply_price || 0) * Number(actionBody.additions.quantity || 0);//统计供货价格
}
var totalProfitSum = Number(actionBody.totalSum) - Number(totalSupplyPrice || 0);//利润
var pfProfitSum = (100 - Number(price_item.channel_profit_rate || 0)) / 100 * totalProfitSum;
if (pfProfitSum < 0) {
pfProfitSum = 0;
}
var channelProfitSum = Number(totalProfitSum) - Number(pfProfitSum);
var payTime = channelOrder.payTime || new Date();
var params = {
uapp_id: pobj.appInfo.uapp_id,//int(11) //
orderNo: orderNo,//varchar(64) //订单号
channelServiceNo: channelOrder.channelServiceNo || orderNo,//varchar(64) //渠道服务单号
channelOrderNo: channelOrder.channelOrderNo || orderNo,//varchar(1024) //渠道订单号列表,多个以,隔开
needNo: channelOrder.needNo || "",//需求号--用于服务商或需求表中创建订单
channelUserId: pobj.userInfo.channel_userid,//varchar(64) //
ownerUserId: pobj.userInfo.channel_userid,//varchar(20) //
payTime: channelOrder.orderStatus && channelOrder.orderStatus == 2 ? payTime : null,//datetime //
quantity: actionBody.quantity,//int(11) //项目订单数量(即服务项目的倍数,默认值为1)
serviceQuantity: 0,//int(11) //项目订单交付数量(即与项目订单数量相对应)
orderStatus: channelOrder.orderStatus || 1,//int //订单状态: 1: 待付款, 2: 已付款, 4: 待服务, 8: 已完成
totalSum: actionBody.totalSum,//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) //官费总额(产品配置的官费*订单件数)
totalProfitSum: totalProfitSum,//decimal(12,2) //订单毛利润总额(产品价格-供货价格))
pfProfitSum: pfProfitSum,//decimal(12,2) //订单平台毛利润总额((100-渠道利润分成比例)/100 * 订单毛利润总额)
channelProfitSum: channelProfitSum,//decimal(12,2) //订单渠道分成毛利润总额(订单毛利润总额-平台毛利润总额)
totalDiscounts: 0,//decimal(12,2) //优惠总额((服务费总额+官费总额)-订单总额(产品价格×优惠费率×订单件数)>0则有优惠额度)暂时没有用到
pfSettleProfit: 0,//int(11) //平台结算渠道利润,0否,1是
invoiceApplyStatus: "00",//varchar(10) //发票状态:00: 未申请, 10: 已申请,20:已开票
notes: actionBody.notes || "",//varchar(255) //
opNotes: "",//varchar(255) //操作备注
};
var order = await this.dao.create(params, t);//创建订单
var orderLog = {
uapp_id: pobj.appInfo.uapp_id,
sourceOrderNo: orderNo,
opContent: "您提交了订单,请及时支付",
isShow: 1
};
await this.flowlogDao.create(orderLog, t);
if (["zzsbzc"].indexOf(actionBody.product_info.item_code) < 0) {
delete actionBody.product_info["price_list"];
}
var orderProductObj = {
uapp_id: pobj.appInfo.uapp_id,
sourceOrderNo: orderNo, // 来源单号
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,// 渠道产品名称
channelItemAppendName: actionBody.channelItemAppendName || "",//服务商产品附加名称
serviceItemCode: actionBody.product_info.service_item_code,// 服务商产品编码
payAfterJumpH5Url: actionBody.product_info.pay_after_jump_h5url || "",
payAfterJumpPcUrl: actionBody.product_info.pay_after_jump_pcurl || "",
picUrl: actionBody.product_info.pic_url,// 产品图片地址
price: actionBody.product_info.price_item.price,//定价
priceDesc: actionBody.product_info.price_item.price_desc,//定价描述
priceTypeName: actionBody.product_info.price_item.price_type_name,//定价类型名称
quantity: actionBody.quantity,// 订单数量(即产品的倍数,默认值为1)
opPayType: "00",// 操作付款类型:00: 创建订单, 10: 补单
serviceItemSnapshot: JSON.stringify(actionBody.product_info),//产品快照
orderSnapshot:JSON.stringify(actionBody.registerData)
};
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,//业务支付订单号
};
if (channelOrder.orderStatus && channelOrder.orderStatus == 2) {//订单状态: 1: 待付款, 2: 已付款, 4: 待服务, 8: 已完成
var moneyObj = {
uapp_id: pobj.appInfo.uapp_id,
sourceOrderNo: orderNo, // 来源单号
channelUserId: pobj.userInfo.channel_userid,
ownerUserId: pobj.userInfo.channel_userid,
accountType: "other",//帐户类型( 支付类型):"cash": "现金", "bank": "银行" ,"wx":"微信","alipay":"支付宝","other":"其它"
directionType: "sr",//凭单类型,"sr": "收","zc": "支"
voucherDate: payTime,//凭单时间
recvAmount: actionBody.payTotalSum || actionBody.totalSum,//收总额
sourceType: "orderinfo",//来源类型 "orderinfo": "订单","expensevoucher": "费用单"
auditStatus: "tg",//审核状态"dsh": "待审核", "btg": "不通过", "tg": "通过"
};
var moneyJourney = await this.moneyJourneyDao.create(moneyObj, t);
orderReceiptVoucherObj.auditStatus = "tg";
}
if (orderContact && orderContact.mobile) {
var customerContactObj = {
uapp_id: pobj.appInfo.uapp_id,//int(11) //
sourceOrderNo: orderNo,//交付订单号
contactName: orderContact.contacts || "",//手机号
mobile: orderContact.mobile,//手机号
email: orderContact.email || ""
};
await this.ordercontactsDao.create(customerContactObj, t);
}//渠道购买存在购买者手机号
var orderReceiptVoucher = await this.orderReceiptVoucherDao.create(orderReceiptVoucherObj, t);
}
async createTmOrder(pobj) { async createTmOrder(pobj) {
var packagingTmResult = await this.packagingTmDeliveryData(pobj, pobj.actionBody); var packagingTmResult = await this.packagingTmDeliveryData(pobj, pobj.actionBody);
if (packagingTmResult.status != 0) { if (packagingTmResult.status != 0) {
...@@ -286,6 +418,9 @@ class OrderInfoService extends ServiceBase { ...@@ -286,6 +418,9 @@ class OrderInfoService extends ServiceBase {
return system.getResultSuccess(); return system.getResultSuccess();
} }
//-------------------------------------工商H5 创建订单结束-----------------------------------------
/** /**
* 创建商标订单 * 创建商标订单
* @param {*} pobj * @param {*} pobj
...@@ -404,6 +539,29 @@ class OrderInfoService extends ServiceBase { ...@@ -404,6 +539,29 @@ class OrderInfoService extends ServiceBase {
} }
async createH5Order(pobj){
var self = this;
if (!pobj.actionBody.registerData) {
return system.getResult(null, "注册信息为空");
}
return await self.db.transaction(async function (t) {
var orderNo = await self.getBusUid("ot" + pobj.appInfo.uapp_id);
if (pobj.actionBody.channelOrder && pobj.actionBody.channelOrder.channelOrderNo) {
var count = await self.dao.findCount({ where: { channelOrderNo: pobj.actionBody.channelOrder.channelOrderNo } });
if (count > 0) {
return system.getResultFail(-1, "订单不能重复创建s");
}
}
var item = await self.createOrderH5(pobj, orderNo, t);
return system.getResultSuccess({
orderNo: orderNo,
channelServiceNo: pobj.actionBody.channelOrder.channelServiceNo || orderNo,
channelOrderNo: pobj.actionBody.channelOrder.channelOrderNo || orderNo,
channelParams: pobj.actionBody.channelOrder.channelParams || ""
});
});
}
// orderNo // orderNo
// orderPrice // orderPrice
// phone // phone
...@@ -930,7 +1088,7 @@ class OrderInfoService extends ServiceBase { ...@@ -930,7 +1088,7 @@ class OrderInfoService extends ServiceBase {
async getOrderDetails(pobj, actionBody) {//获取订单详情信息 async getOrderDetails(pobj, actionBody) {//获取订单详情信息
var sql = "select `orderNo`,`channelServiceNo`,`channelOrderNo`,`channelUserId`,`ownerUserId`,`payTime`,`quantity`,`serviceQuantity`,`orderStatusName`,`orderStatus`,`totalSum`,`payTotalSum`,`refundSum`," + var sql = "select `orderNo`,`channelServiceNo`,`channelOrderNo`,`channelUserId`,`ownerUserId`,`payTime`,`quantity`,`serviceQuantity`,`orderStatusName`,`orderStatus`,`totalSum`,`payTotalSum`,`refundSum`," +
" `invoiceApplyStatus`,`opNotes`,`channelItemCode`,`channelItemName`,`price`,priceDesc,priceTypeName,channelItemAppendName,`serviceItemCode`,`picUrl`,created_at from " + " `invoiceApplyStatus`,`opNotes`,`channelItemCode`,`channelItemName`,`price`,priceDesc,priceTypeName,channelItemAppendName,`serviceItemCode`,`picUrl`,`serviceItemSnapshot`,`orderSnapshot`,created_at from " +
" v_order where uapp_id=:uapp_id and orderNo=:orderNo LIMIT 1"; " v_order where uapp_id=:uapp_id and orderNo=:orderNo LIMIT 1";
var paramWhere = { uapp_id: pobj.appInfo.uapp_id, orderNo: actionBody.orderNo }; var paramWhere = { uapp_id: pobj.appInfo.uapp_id, orderNo: actionBody.orderNo };
var list = await this.customQuery(sql, paramWhere); var list = await this.customQuery(sql, paramWhere);
......
...@@ -93,6 +93,49 @@ class NeedinfoService extends ServiceBase { ...@@ -93,6 +93,49 @@ class NeedinfoService extends ServiceBase {
return system.getResultSuccess(); return system.getResultSuccess();
} }
/**
* 工商H5 免费咨询
* @param pobj
* @param actionBody
* @param req
* @returns {Promise<{msg: *, data: *, status: *}|{msg: *, data: (*|null), status: number}>}
*/
async submitNeedH5(pobj, actionBody, req) {
var needNo = await this.getBusUid("n");
var channelNeedNo = await this.getBusUid("i");
if (!actionBody.mobile) {
return system.getResultFail(-5002, "mobile不能为空");
}
if (!actionBody.type) {
return system.getResultFail(-5003, "type不能为空");
}
var ninfo = await this.findOne({ channelNeedNo: actionBody.intentionBizId });
if (ninfo) {
return system.getResultSuccess();
}
var nobj = {
uapp_id: pobj.appInfo.uapp_id,
channelNeedNo: channelNeedNo,
needNo: needNo,
channelUserId: actionBody.mobile,
publishName: actionBody.userName,
publishContent: actionBody.description,
publishMobile: actionBody.mobile,
city: actionBody.area,
typeCode: actionBody.type_code,
typeName: actionBody.type_name,
channelTypeCode: actionBody.channel_type_code,
channelTypeName: actionBody.channel_type_name,
status: "wts"
}
if(nobj.channelTypeCode==7||nobj.channelTypeCode==5){
nobj.province=nobj.city,
nobj.city="";
}
await this.dao.create(nobj);
return system.getResultSuccess();
}
async needClose(pobj, actionBody, req) { async needClose(pobj, actionBody, req) {
if (!actionBody.intentionBizId) { if (!actionBody.intentionBizId) {
return system.getResultFail(-5005, "intentionBizId不能为空"); return system.getResultFail(-5005, "intentionBizId不能为空");
......
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