Commit 6a1147e8 by 宋毅

修改订单推送信息

parents b4104a53 3db5b6cc
...@@ -28,7 +28,7 @@ class APIBase { ...@@ -28,7 +28,7 @@ class APIBase {
return system.getResultSuccess(); return system.getResultSuccess();
} }
} }
if (["updateTmStatus"].indexOf(methodname) >= 0) { if (["updateTmStatus","bulkCreateNeeds","bulkCreateOrders"].indexOf(methodname) >= 0) {
return system.getResultSuccess(); return system.getResultSuccess();
} }
if (!pobj.appInfo) { if (!pobj.appInfo) {
......
...@@ -48,6 +48,9 @@ class IcAPI extends APIBase { ...@@ -48,6 +48,9 @@ class IcAPI extends APIBase {
case "getStatisticsByProduct": case "getStatisticsByProduct":
opResult = await this.opNeedInfoSve.getStatisticsByProduct(pobj); opResult = await this.opNeedInfoSve.getStatisticsByProduct(pobj);
break; break;
case "getNeedProductType":
opResult = await this.opNeedInfoSve.getNeedProductType(pobj);
break;
case "getStatisticsByArea": case "getStatisticsByArea":
opResult = await this.opNeedInfoSve.getStatisticsByCity(pobj); opResult = await this.opNeedInfoSve.getStatisticsByCity(pobj);
break; break;
......
...@@ -131,6 +131,10 @@ class QcAPI extends APIBase { ...@@ -131,6 +131,10 @@ class QcAPI extends APIBase {
case "addIcpSalesmanInfo"://添加业务员信息,用于直接下单的icp订单 case "addIcpSalesmanInfo"://添加业务员信息,用于直接下单的icp订单
opResult = await this.baiduqcSve.addIcpSalesmanInfo(pobj); opResult = await this.baiduqcSve.addIcpSalesmanInfo(pobj);
break; break;
case "tmFeedbackSubmit"://商标用户反馈
opResult = await this.aliyunqcSve.tmFeedbackSubmit(pobj);
break;
default: default:
opResult = system.getResult(null, "action_type参数错误"); opResult = system.getResult(null, "action_type参数错误");
break; break;
......
var APIBase = require("../../api.base"); var APIBase = require("../../api.base");
var system = require("../../../system"); // var system = require("../../../system");
var settings = require("../../../../config/settings"); // var settings = require("../../../../config/settings");
class TaskAction extends APIBase { class TaskAction extends APIBase {
constructor() { // constructor() {//由dba进行处理了
super(); // super();
this.orderinfoSve = system.getObject("service.dbcorder.orderinfoSve"); // this.orderinfoSve = system.getObject("service.dbcorder.orderinfoSve");
this.opneedinfoSve = system.getObject("service.dbneed.opneedinfoSve"); // this.opneedinfoSve = system.getObject("service.dbneed.opneedinfoSve");
this.orderproductSve = system.getObject("service.dbcorder.orderproductSve"); // this.orderproductSve = system.getObject("service.dbcorder.orderproductSve");
} // }
/** // /**
* 接口跳转-POST请求 // * 需求商机同步
* action_process 执行的流程 // * action_process 执行的流程
* action_type 执行的类型 // * action_type 执行的类型
* action_body 执行的参数 // * action_body 执行的参数
*/ // */
async taskNeed(pobj, qobj, req) { // async taskNeed(pobj, qobj, req) {
var result = await this.opneedinfoSve.syncNeedBusiness(); // var result = await this.opneedinfoSve.syncNeedBusiness();
return result; // return result;
} // }
//
async taskProduct(pobj, qobj, req) { // async taskProduct(pobj, qobj, req) {
var result = await this.orderproductSve.syncProductData(); // var result = await this.orderproductSve.syncProductData();
return result; // }
} // /**
// * 订单商机同步
// * action_process 执行的流程
// * action_type 执行的类型
// * action_body 执行的参数
// */
// async taskOrder(pobj, qobj, req) {
// var result = await this.orderinfoSve.syncOrderBusiness();
// return result;
// }
} }
module.exports = TaskAction; module.exports = TaskAction;
\ No newline at end of file
const system = require("../../../system"); const system = require("../../../system");
const Dao = require("../../dao.base"); const Dao = require("../../dao.base");
const {Op} = require("sequelize");
class OrderInfoDao extends Dao { class OrderInfoDao extends Dao {
constructor() { constructor() {
super(Dao.getModelName(OrderInfoDao)); super(Dao.getModelName(OrderInfoDao));
...@@ -56,5 +57,50 @@ class OrderInfoDao extends Dao { ...@@ -56,5 +57,50 @@ class OrderInfoDao extends Dao {
await this.customInsert(sql, null, t); await this.customInsert(sql, null, t);
return system.getResultSuccess() return system.getResultSuccess()
} }
/**
* 根据ids 获取需求
* @param ids
* @returns {Promise<void>}
*/
async getOrdersByIds(ids){
let orders = await this.findAll({
where: {
channelOrderNo: {
[Op.in]:ids
}
}
})
return orders;
}
/**
* 批量更新
* @param needs
* @returns {Promise<Array<Model>|*>}
*/
async bulkUpdate(orders){
let result = await this.bulkCreate(orders,{
fields:["id", "status","statusName"] ,
updateOnDuplicate: ["status","statusName"]
});
return result;
}
/**
* 批量更新
* @param needs
* @returns {Promise<Array<Model>|*>}
*/
async bulkUpdateStatus(status,statusName,ids){
let result = await this.updateByWhere({orderStatus:status,orderStatusName:statusName},{
where : {
channelOrderNo:{
[Op.in]:ids
}
}
});
return result;
}
} }
module.exports = OrderInfoDao; module.exports = OrderInfoDao;
const system = require("../../../system");
const Dao = require("../../dao.base");
const {Op} = require("sequelize");
class OrderinfofqDao extends Dao {
constructor() {
super(Dao.getModelName(OrderinfofqDao));
}
/**
* 取300条未处理的数据
* @returns {Promise<Array<Model>>}
*/
async getAllOrders(){
let fqNeeds = await this.findAll({
where: {
handleStatus: 0
},
order: [["id","desc"]],
limit: 300
})
return fqNeeds;
}
/**
* 批量更新
* @param needs
* @returns {Promise<Array<Model>|*>}
*/
async bulkUpdate(ids){
let result = await this.updateByWhere({handleStatus:1},{
where : {
channelOrderNo:{
[Op.in]:ids
}
}
});
return result;
}
}
module.exports = OrderinfofqDao;
...@@ -6,6 +6,10 @@ class NeedinfofqDao extends Dao { ...@@ -6,6 +6,10 @@ class NeedinfofqDao extends Dao {
super(Dao.getModelName(NeedinfofqDao)); super(Dao.getModelName(NeedinfofqDao));
} }
/**
* 取300条未处理的数据
* @returns {Promise<Array<Model>>}
*/
async getAllNeeds(){ async getAllNeeds(){
let fqNeeds = await this.findAll({ let fqNeeds = await this.findAll({
where: { where: {
......
...@@ -38,6 +38,8 @@ module.exports = (db, DataTypes) => { ...@@ -38,6 +38,8 @@ module.exports = (db, DataTypes) => {
opNotes :DataTypes.STRING,// 备注 opNotes :DataTypes.STRING,// 备注
notes :DataTypes.STRING,// 备注 notes :DataTypes.STRING,// 备注
isSolution :DataTypes.INTEGER,// 是否有方案,0无,1有 isSolution :DataTypes.INTEGER,// 是否有方案,0无,1有
isPushNum :DataTypes.INTEGER,// 推送次数
pushStatus :DataTypes.INTEGER,// 推送状态0待推送2推送失败3已成功推送
}, { }, {
paranoid: true,//假的删除 paranoid: true,//假的删除
underscored: true, underscored: true,
......
const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
return db.define("orderinfofq", {
sourceName :DataTypes.STRING(128),// 来源名称(source_name)
serviceOrderNo :DataTypes.STRING(128),// 服务商订单号(页面中列表中显示该单号)-云服(no)
channelServiceNo :DataTypes.STRING(128),// 渠道服务单号
channelOrderNo :DataTypes.STRING(128),// 渠道订单号(页面中列表中显示该单号)(idempotent_no)
channelNeedNo :DataTypes.STRING(128), // 渠道需求号(页面中列表中显示该需求号)
needNo :DataTypes.STRING(128), //需求号(need_no)
payTime :DataTypes.DATE,// 支付时间(first_pay_time)
quantity :DataTypes.INTEGER,// 项目订单数量(即服务项目的倍数,默认值为1)
orderStatusName :DataTypes.STRING(50),//订单状态名称
orderStatus :DataTypes.INTEGER,// 订单状态: 1: 待付款, 2: 已付款, 4: 服务中, 8: 已完成, 16: 已退款, 32: 已作废
totalSum :DataTypes.DECIMAL(12, 2),// 订单总额(产品价格×优惠费率×订单件数)
payTotalSum :DataTypes.DECIMAL(12, 2),// 订单付款总额
refundSum :DataTypes.DECIMAL(12, 2),// 退款金额
refundTime :DataTypes.DATE, //2020/6/17 lin新增 退款时间
notes :DataTypes.STRING,// 备注
isSolution :DataTypes.INTEGER,// 是否有方案,0无,1有
handleStatus :DataTypes.INTEGER, // 处理状态,0否,1是
source_code :DataTypes.STRING
}, {
paranoid: true,//假的删除
underscored: true,
version: true,
freezeTableName: true,
timestamps: true,
updated_at: true,// 2020 0618 lin修改
//freezeTableName: true,
// define the table's name
tableName: 'c_order_info_fq',
validate: {
},
indexes: [
]
});
}
...@@ -5,10 +5,10 @@ module.exports = (db, DataTypes) => { ...@@ -5,10 +5,10 @@ module.exports = (db, DataTypes) => {
return db.define("needinfofq", { return db.define("needinfofq", {
sourceCode: DataTypes.STRING(128), //来源code )idempotent_source sourceCode: DataTypes.STRING(128), //来源code )idempotent_source
channelNeedNo: DataTypes.STRING(128), //渠道需求号(页面中列表中显示该需求号) channelNeedNo: DataTypes.STRING(128), //渠道需求号(页面中列表中显示该需求号)
publishContent: DataTypes.STRING,//发布内容 publishContent: DataTypes.TEXT,//发布内容
publishMobile: DataTypes.STRING,//发布者手机号 publishMobile: DataTypes.STRING,//发布者手机号
followContent: DataTypes.JSON,//跟进内容 followContent: DataTypes.TEXT,//跟进内容
notes: DataTypes.STRING,//备注 notes: DataTypes.TEXT,//备注
disposeNotes: DataTypes.STRING,//处理的备注 disposeNotes: DataTypes.STRING,//处理的备注
statusName: DataTypes.STRING, statusName: DataTypes.STRING,
status: DataTypes.INTEGER, status: DataTypes.INTEGER,
......
...@@ -5,7 +5,6 @@ const ServiceBase = require("../../sve.base"); ...@@ -5,7 +5,6 @@ const ServiceBase = require("../../sve.base");
const uuidv4 = require('uuid/v4'); const uuidv4 = require('uuid/v4');
const sequelize = require('sequelize'); const sequelize = require('sequelize');
const platformConfig = require("../../../db/metadata/apps/platform.js"); const platformConfig = require("../../../db/metadata/apps/platform.js");
class OrderInfoService extends ServiceBase { class OrderInfoService extends ServiceBase {
constructor() { constructor() {
super("dbcorder", ServiceBase.getDaoName(OrderInfoService)); super("dbcorder", ServiceBase.getDaoName(OrderInfoService));
...@@ -18,7 +17,8 @@ class OrderInfoService extends ServiceBase { ...@@ -18,7 +17,8 @@ class OrderInfoService extends ServiceBase {
this.needsolutionDao = system.getObject("db.dbneed.needsolutionDao"); this.needsolutionDao = system.getObject("db.dbneed.needsolutionDao");
this.orderRegionDao = system.getObject("db.dbcorder.orderregionDao"); this.orderRegionDao = system.getObject("db.dbcorder.orderregionDao");
this.push360Sve = system.getObject('service.common.push360Sve'); this.push360Sve = system.getObject('service.common.push360Sve');
this.orderinfoDao = system.getObject('db.dbcorder.orderinfoDao');
this.orderinfofqDao = system.getObject('db.dbcorder.orderinfofqDao');
} }
/** /**
...@@ -45,15 +45,6 @@ class OrderInfoService extends ServiceBase { ...@@ -45,15 +45,6 @@ class OrderInfoService extends ServiceBase {
return system.getResultSuccess(); return system.getResultSuccess();
} }
//--------------------task----------------start-------------------
async taskSyncOrderStatus() {
let sql = "SELECT * FROM `c_order_info_fq` LIMIT 300";
var result = await this.customQuery(sql);
}
//--------------------task--------------ednd---------------------
//----------------------订单创建-----------start---------------- //----------------------订单创建-----------start----------------
async createOrder(pobj, orderNo, t) { async createOrder(pobj, orderNo, t) {
this.execClientNew.execLogs("center-order-createOrder-3", pobj, "center-order-doexecMethod-info", null, null); this.execClientNew.execLogs("center-order-createOrder-3", pobj, "center-order-doexecMethod-info", null, null);
...@@ -186,7 +177,6 @@ class OrderInfoService extends ServiceBase { ...@@ -186,7 +177,6 @@ class OrderInfoService extends ServiceBase {
}//渠道购买存在购买者手机号 }//渠道购买存在购买者手机号
var orderReceiptVoucher = await this.orderReceiptVoucherDao.create(orderReceiptVoucherObj, t); var orderReceiptVoucher = await this.orderReceiptVoucherDao.create(orderReceiptVoucherObj, t);
} }
/** /**
* 创建商标订单 * 创建商标订单
* @param {*} pobj * @param {*} pobj
...@@ -333,6 +323,7 @@ class OrderInfoService extends ServiceBase { ...@@ -333,6 +323,7 @@ class OrderInfoService extends ServiceBase {
} }
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) {
...@@ -525,19 +516,16 @@ class OrderInfoService extends ServiceBase { ...@@ -525,19 +516,16 @@ class OrderInfoService extends ServiceBase {
// } // }
return system.getResultSuccess(deliveryData); return system.getResultSuccess(deliveryData);
} }
async createLogoOrder(pobj) { async createLogoOrder(pobj) {
var packagingTmResult = await this.packagingLogoDeliveryData(pobj, pobj.actionBody); var packagingTmResult = await this.packagingLogoDeliveryData(pobj, pobj.actionBody);
if (packagingTmResult.status != 0) { if (packagingTmResult.status != 0) {
return packagingTmResult; return packagingTmResult;
} }
if (pobj.actionBody.deliveryData.color_description) { if (pobj.actionBody.deliveryData.color_description) {
pobj.actionBody.deliveryData.color_description = pobj.actionBody.deliveryData.color_description.replace(/\"/g, "\\\""); pobj.actionBody.deliveryData.color_description = pobj.actionBody.deliveryData.color_description.replace(/\"/g, "\\\"");;
;
} }
if (pobj.actionBody.deliveryData.font_description) { if (pobj.actionBody.deliveryData.font_description) {
pobj.actionBody.deliveryData.font_description = pobj.actionBody.deliveryData.font_description.replace(/\"/g, "\\\""); pobj.actionBody.deliveryData.font_description = pobj.actionBody.deliveryData.font_description.replace(/\"/g, "\\\"");;
;
} }
pobj.actionBody.deliveryData.itemCode = "znlogosjcp"; pobj.actionBody.deliveryData.itemCode = "znlogosjcp";
var sql = "SELECT * FROM " + var sql = "SELECT * FROM " +
...@@ -563,7 +551,6 @@ class OrderInfoService extends ServiceBase { ...@@ -563,7 +551,6 @@ class OrderInfoService extends ServiceBase {
}); });
}); });
} }
/** /**
* 创建其他订单 * 创建其他订单
* @param {*} pobj * @param {*} pobj
...@@ -573,7 +560,7 @@ class OrderInfoService extends ServiceBase { ...@@ -573,7 +560,7 @@ class OrderInfoService extends ServiceBase {
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);
if (pobj.actionBody.channelOrder && pobj.actionBody.channelOrder.channelOrderNo) { if (pobj.actionBody.channelOrder && pobj.actionBody.channelOrder.channelOrderNo) {
var rtn = await self.dao.findOne({channelOrderNo: pobj.actionBody.channelOrder.channelOrderNo}, t); var rtn = await self.dao.findOne({ channelOrderNo: pobj.actionBody.channelOrder.channelOrderNo }, t);
if (rtn) { if (rtn) {
return system.getResultSuccess({ return system.getResultSuccess({
orderNo: rtn.orderNo, orderNo: rtn.orderNo,
...@@ -603,7 +590,7 @@ class OrderInfoService extends ServiceBase { ...@@ -603,7 +590,7 @@ class OrderInfoService extends ServiceBase {
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);
if (pobj.actionBody.channelOrder && pobj.actionBody.channelOrder.channelOrderNo) { if (pobj.actionBody.channelOrder && pobj.actionBody.channelOrder.channelOrderNo) {
var count = await self.dao.findCount({where: {channelOrderNo: pobj.actionBody.channelOrder.channelOrderNo}}); var count = await self.dao.findCount({ where: { channelOrderNo: pobj.actionBody.channelOrder.channelOrderNo } });
if (count > 0) { if (count > 0) {
return system.getResultFail(-1, "订单不能重复创建s"); return system.getResultFail(-1, "订单不能重复创建s");
} }
...@@ -671,7 +658,7 @@ class OrderInfoService extends ServiceBase { ...@@ -671,7 +658,7 @@ class OrderInfoService extends ServiceBase {
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("ic" + pobj.appInfo.uapp_id); var orderNo = await self.getBusUid("ic" + pobj.appInfo.uapp_id);
var needsolutioninfo = await self.needsolutionDao.findOne({channelSolutionNo: pobj.actionBody.solutionBizId}, t) var needsolutioninfo = await self.needsolutionDao.findOne({ channelSolutionNo: pobj.actionBody.solutionBizId }, t)
pobj.actionBody.channelOrder = { pobj.actionBody.channelOrder = {
channelServiceNo: pobj.actionBody.orderNo, channelServiceNo: pobj.actionBody.orderNo,
channelOrderNo: pobj.actionBody.orderNo, channelOrderNo: pobj.actionBody.orderNo,
...@@ -680,7 +667,7 @@ class OrderInfoService extends ServiceBase { ...@@ -680,7 +667,7 @@ class OrderInfoService extends ServiceBase {
} }
var item = await self.createOrder(pobj, orderNo, t); var item = await self.createOrder(pobj, orderNo, t);
// needsolutioninfo.status = "ywc"; // needsolutioninfo.status = "ywc";
await self.needsolutionDao.update({id: needsolutioninfo.id, status: "dqr"}, t); await self.needsolutionDao.update({ id: needsolutioninfo.id, status: "dqr" }, t);
self.dao.addOrderDelivery(pobj.actionBody.deliveryData, orderNo, t); self.dao.addOrderDelivery(pobj.actionBody.deliveryData, orderNo, t);
return system.getResultSuccess({ return system.getResultSuccess({
orderNo: orderNo, orderNo: orderNo,
...@@ -692,10 +679,9 @@ class OrderInfoService extends ServiceBase { ...@@ -692,10 +679,9 @@ class OrderInfoService extends ServiceBase {
} }
//接收方案状态及支付信息 //接收方案状态及支付信息
async receiveSolutionPayInfo(channelSolutionNo, status, orderPrice, self, t) { async receiveSolutionPayInfo(channelSolutionNo, status, orderPrice, self, t) {
var needsolutioninfo = await self.needsolutionDao.findOne({channelSolutionNo: channelSolutionNo}, t); var needsolutioninfo = await self.needsolutionDao.findOne({ channelSolutionNo: channelSolutionNo }, t);
if (!needsolutioninfo || !needsolutioninfo.id) { if (!needsolutioninfo || !needsolutioninfo.id) {
return system.getResultFail(-400, "未知方案"); return system.getResultFail(-400, "未知方案");
} }
...@@ -722,6 +708,7 @@ class OrderInfoService extends ServiceBase { ...@@ -722,6 +708,7 @@ class OrderInfoService extends ServiceBase {
//----------------------订单创建-----------end---------------------- //----------------------订单创建-----------end----------------------
//=================================修改订单信息==============end====================================== //=================================修改订单信息==============end======================================
async updateContacts(pobj, actionBody) {//修改订单联系人 async updateContacts(pobj, actionBody) {//修改订单联系人
...@@ -755,7 +742,7 @@ class OrderInfoService extends ServiceBase { ...@@ -755,7 +742,7 @@ class OrderInfoService extends ServiceBase {
if (actionBody.orderContact.fax) { if (actionBody.orderContact.fax) {
updateFields['fax'] = actionBody.orderContact.fax updateFields['fax'] = actionBody.orderContact.fax
} }
this.ordercontactsDao.updateByWhere(updateFields, {where: {sourceOrderNo: actionBody.orderNo}}); this.ordercontactsDao.updateByWhere(updateFields, { where: { sourceOrderNo: actionBody.orderNo } });
if (actionBody.notes) { if (actionBody.notes) {
actionBody.isGetContact = 0; actionBody.isGetContact = 0;
var itemResult = await this.getOrderDeliveryInfo(pobj, actionBody); var itemResult = await this.getOrderDeliveryInfo(pobj, actionBody);
...@@ -766,7 +753,7 @@ class OrderInfoService extends ServiceBase { ...@@ -766,7 +753,7 @@ class OrderInfoService extends ServiceBase {
} }
} }
}//修改备注 }//修改备注
var resultParams = {orderStatus: orderItem.orderStatus}; var resultParams = { orderStatus: orderItem.orderStatus };
if (orderItem.orderStatus < 4) { if (orderItem.orderStatus < 4) {
var orderProductItem = await this.orderproductDao.getItemInfoByOrderNo(actionBody.orderNo); var orderProductItem = await this.orderproductDao.getItemInfoByOrderNo(actionBody.orderNo);
if (orderProductItem) { if (orderProductItem) {
...@@ -775,7 +762,6 @@ class OrderInfoService extends ServiceBase { ...@@ -775,7 +762,6 @@ class OrderInfoService extends ServiceBase {
} }
return system.getResultSuccess(resultParams); return system.getResultSuccess(resultParams);
} }
async updateTmOrder(pobj, actionBody) {//修改商标订单信息 async updateTmOrder(pobj, actionBody) {//修改商标订单信息
var orderItem = await this.dao.getItemStatusByOrderNo(actionBody.orderNo, pobj.appInfo.uapp_id); var orderItem = await this.dao.getItemStatusByOrderNo(actionBody.orderNo, pobj.appInfo.uapp_id);
if (!orderItem) { if (!orderItem) {
...@@ -880,7 +866,7 @@ class OrderInfoService extends ServiceBase { ...@@ -880,7 +866,7 @@ class OrderInfoService extends ServiceBase {
} }
if (putOrderProductItem.channelItemAppendName) { if (putOrderProductItem.channelItemAppendName) {
self.orderproductDao.updateByWhere(putOrderProductItem, {where: {sourceOrderNo: actionBody.orderNo}}); self.orderproductDao.updateByWhere(putOrderProductItem, { where: { sourceOrderNo: actionBody.orderNo } });
} }
} }
if (tipsMsg) { if (tipsMsg) {
...@@ -954,7 +940,8 @@ class OrderInfoService extends ServiceBase { ...@@ -954,7 +940,8 @@ class OrderInfoService extends ServiceBase {
const nclThree = tempNclList[g].nclThree; const nclThree = tempNclList[g].nclThree;
tempNclList[g].nclPublicExpense = Number(tempNclList[g].nclPublicExpense) + (nclThree.length - 10) * Number(price_additions_item.public_expense); tempNclList[g].nclPublicExpense = Number(tempNclList[g].nclPublicExpense) + (nclThree.length - 10) * Number(price_additions_item.public_expense);
} }
} else { }
else {
if (price_additions_item) { if (price_additions_item) {
isUpdateProduct++; isUpdateProduct++;
delete product_info["price_additions_item"]; delete product_info["price_additions_item"];
...@@ -978,11 +965,11 @@ class OrderInfoService extends ServiceBase { ...@@ -978,11 +965,11 @@ class OrderInfoService extends ServiceBase {
pfProfitSum: pfProfitSum,//decimal(12,2) //订单平台毛利润总额((100-渠道利润分成比例)/100 * 订单毛利润总额) pfProfitSum: pfProfitSum,//decimal(12,2) //订单平台毛利润总额((100-渠道利润分成比例)/100 * 订单毛利润总额)
channelProfitSum: channelProfitSum//decimal(12,2) //订单渠道分成毛利润总额(订单毛利润总额-平台毛利润总额) channelProfitSum: channelProfitSum//decimal(12,2) //订单渠道分成毛利润总额(订单毛利润总额-平台毛利润总额)
} }
self.updateByWhere(putOrderFields, {where: {orderNo: actionBody.orderNo}}, t); self.updateByWhere(putOrderFields, { where: { orderNo: actionBody.orderNo } }, t);
self.orderReceiptVoucherDao.updateByWhere({totalSum: totalSum}, {where: {sourceOrderNo: actionBody.orderNo}}, t); self.orderReceiptVoucherDao.updateByWhere({ totalSum: totalSum }, { where: { sourceOrderNo: actionBody.orderNo } }, t);
} }
if (isUpdateProduct > 0) { if (isUpdateProduct > 0) {
self.orderproductDao.updateByWhere({serviceItemSnapshot: JSON.stringify(product_info)}, {where: {sourceOrderNo: actionBody.orderNo}}, t); self.orderproductDao.updateByWhere({ serviceItemSnapshot: JSON.stringify(product_info) }, { where: { sourceOrderNo: actionBody.orderNo } }, t);
} }
}); });
}//未付款进行订单金额修改 }//未付款进行订单金额修改
...@@ -1021,31 +1008,26 @@ class OrderInfoService extends ServiceBase { ...@@ -1021,31 +1008,26 @@ class OrderInfoService extends ServiceBase {
sql = sql.replace('\n', ''); sql = sql.replace('\n', '');
this.customQuery(sql); this.customQuery(sql);
} }
async addOrderDelivery(data, orderNo, t) {//新增交付信息 async addOrderDelivery(data, orderNo, t) {//新增交付信息
await this.dao.addOrderDelivery(data, orderNo, t); await this.dao.addOrderDelivery(data, orderNo, t);
} }
async getOrderDelivery(orderNo) {//查询交付信息 async getOrderDelivery(orderNo) {//查询交付信息
var sql = "select * from `c_order_delivery` where sourceOrderNo='" + orderNo + "'"; var sql = "select * from `c_order_delivery` where sourceOrderNo='" + orderNo + "'";
return await this.customQuery(sql); return await this.customQuery(sql);
} }
async delOrder(pobj, actionBody) {//删除订单 async delOrder(pobj, actionBody) {//删除订单
await this.dao.delOrderByOrderNo(actionBody.orderNo, pobj.appInfo.uapp_id, pobj.userInfo.channel_userid); await this.dao.delOrderByOrderNo(actionBody.orderNo, pobj.appInfo.uapp_id, pobj.userInfo.channel_userid);
return system.getResultSuccess(); return system.getResultSuccess();
} }
//baidureg关闭订单 2020-12-20 //baidureg关闭订单 2020-12-20
async delOrders(pobj, actionBody) {//删除订单 async delOrders(pobj, actionBody) {//删除订单
var i; var i;
var len = actionBody.orderNo.length var len = actionBody.orderNo.length
for (i = 0; i < len; i++) { for(i=0;i<len;i++){
await this.dao.delOrderByOrderNo(actionBody.orderNo[i], pobj.appInfo.uapp_id, pobj.userInfo.channel_userid); await this.dao.delOrderByOrderNo(actionBody.orderNo[i], pobj.appInfo.uapp_id, pobj.userInfo.channel_userid);
} }
return system.getResultSuccess(); return system.getResultSuccess();
} }
// 2020 0918 lin 新增 根据OrderStatus查询订单 // 2020 0918 lin 新增 根据OrderStatus查询订单
async queryVOrderByOrderStatusAndItemCode(pobj, actionBody) { async queryVOrderByOrderStatusAndItemCode(pobj, actionBody) {
var sql = "select `id`,`isSolution`,`orderNo`,`channelServiceNo`,`channelOrderNo`,`channelUserId`,`ownerUserId`,`payTime`,`quantity`,`serviceQuantity`,`orderStatusName`,`orderStatus`,`totalSum`,`payTotalSum`,`refundSum`," var sql = "select `id`,`isSolution`,`orderNo`,`channelServiceNo`,`channelOrderNo`,`channelUserId`,`ownerUserId`,`payTime`,`quantity`,`serviceQuantity`,`orderStatusName`,`orderStatus`,`totalSum`,`payTotalSum`,`refundSum`,"
...@@ -1074,13 +1056,12 @@ class OrderInfoService extends ServiceBase { ...@@ -1074,13 +1056,12 @@ class OrderInfoService extends ServiceBase {
// 2020 0923 lin 新增 根据id修改orderStatus,目前用来商标交易更新订单状态 // 2020 0923 lin 新增 根据id修改orderStatus,目前用来商标交易更新订单状态
async updateOrderStatusById(pobj, actionBody) { async updateOrderStatusById(pobj, actionBody) {
var orderInfo = await this.dao.model.update({orderStatus: actionBody.orderStatus}, {where: {id: actionBody.orderId}}) var orderInfo = await this.dao.model.update({ orderStatus: actionBody.orderStatus }, { where: { id: actionBody.orderId } })
if (!orderInfo) { if (!orderInfo) {
return system.getResult(null, "修改失败"); return system.getResult(null, "修改失败");
} }
return system.getResultSuccess(orderInfo); return system.getResultSuccess(orderInfo);
} }
//=================================修改订单信息==============end====================================== //=================================修改订单信息==============end======================================
...@@ -1107,7 +1088,6 @@ class OrderInfoService extends ServiceBase { ...@@ -1107,7 +1088,6 @@ class OrderInfoService extends ServiceBase {
} }
return system.getResultSuccess(param); return system.getResultSuccess(param);
} }
/** /**
* 修改订单收款信息 * 修改订单收款信息
* @param {*} pobj * @param {*} pobj
...@@ -1116,7 +1096,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1116,7 +1096,7 @@ class OrderInfoService extends ServiceBase {
async putReceiptVoucherInfo(pobj, actionBody) { async putReceiptVoucherInfo(pobj, actionBody) {
var isPut = actionBody.isPut || ""; var isPut = actionBody.isPut || "";
if (isPut > 0) { if (isPut > 0) {
await this.orderReceiptVoucherDao.updateByWhere(actionBody.setField, {where: {id: actionBody.receiptVoucherId}}); await this.orderReceiptVoucherDao.updateByWhere(actionBody.setField, { where: { id: actionBody.receiptVoucherId } });
} }
return system.getResultSuccess(); return system.getResultSuccess();
} }
...@@ -1129,13 +1109,13 @@ class OrderInfoService extends ServiceBase { ...@@ -1129,13 +1109,13 @@ class OrderInfoService extends ServiceBase {
actionBody: actionBody:
{ {
delivery_content: {}, delivery_content: {},
order_info: {orderStatus: 2}, order_info: { orderStatus: 2 },
product_info: {} product_info: {}
} }
}; };
var sql = "select * from c_order_delivery where sourceOrderNo=:sourceOrderNo"; var sql = "select * from c_order_delivery where sourceOrderNo=:sourceOrderNo";
var paramWhere = {sourceOrderNo: actionBody.orderNo}; var paramWhere = { sourceOrderNo: actionBody.orderNo };
var list = await this.customQuery(sql, paramWhere); var list = await this.customQuery(sql, paramWhere);
if (list && list.length > 0) { if (list && list.length > 0) {
if (list[0].deliveryContent) { if (list[0].deliveryContent) {
...@@ -1242,85 +1222,84 @@ class OrderInfoService extends ServiceBase { ...@@ -1242,85 +1222,84 @@ class OrderInfoService extends ServiceBase {
} }
/** /**
* 需求统计(产品维度) * 订单统计(产品维度)
* @param pobj * @param pobj
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async getOrdersStatisticsByUappId(pobj) { async getOrdersStatisticsByUappId(pobj){
let ac = pobj.actionBody; let ac = pobj.actionBody;
let sql = `SELECT uapp_id,count(*) count,DATE_FORMAT(created_at,'%Y-%m-%d') time FROM c_order_info WHERE deleted_at is null `; let sql = `SELECT uapp_id,count(*) count,DATE_FORMAT(created_at,'%Y-%m-%d') time FROM c_order_info WHERE deleted_at is null `;
let whereParam = {}; let whereParam = {};
if (ac.start && ac.end) { if(ac.start&&ac.end){
sql += ` AND created_at >= :start AND created_at <= :end`; sql += ` AND created_at >= :start AND created_at <= :end`;
whereParam.start = ac.start; whereParam.start = ac.start;
whereParam.end = ac.end; whereParam.end = ac.end;
} }
if (ac.type_code) { if(ac.type_code){
sql += ` AND typeCode = :type_code`; sql += ` AND typeCode = :type_code`;
whereParam.type_code = ac.type_code; whereParam.type_code = ac.type_code;
} }
if (ac.status) { if(ac.status){
sql += ` AND status = :status`; sql += ` AND orderStatus = :status`;
whereParam.status = ac.status; whereParam.status = ac.status;
} }
sql += ` GROUP BY uapp_id,DATE_FORMAT(created_at,'%Y-%m-%d') ORDER BY created_at ASC` sql += ` GROUP BY uapp_id,DATE_FORMAT(created_at,'%Y-%m-%d') ORDER BY created_at ASC`
let result = await this.customQuery(sql, whereParam); let result = await this.customQuery(sql,whereParam);
return system.getResultSuccess(result); return system.getResultSuccess(result);
} }
/** /**
* 需求统计(产品维度) * 订单统计(产品维度)
* @param pobj * @param pobj
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async getOrdersStatisticsByProduct(pobj) { async getOrdersStatisticsByProduct(pobj){
let ac = pobj.actionBody; let ac = pobj.actionBody;
let sql = `SELECT b.itemCode typeCode,a.uapp_id,count( * ) count FROM c_order_info a left join c_order_product b on a.orderNo = b.sourceOrderNo WHERE b.itemCode is not null `; let sql = `SELECT b.channelItemName typeCode,a.uapp_id,count( * ) count FROM c_order_info a left join c_order_product b on a.orderNo = b.sourceOrderNo WHERE b.itemCode is not null `;
let whereParams = {}; let whereParams = {};
if (ac.start && ac.end) { if(ac.start&&ac.end){
sql += ` and a.created_at >= :start and a.created_at <= :end `; sql += ` and a.created_at >= :start and a.created_at <= :end `;
whereParams.start = ac.start; whereParams.start = ac.start;
whereParams.end = ac.end; whereParams.end = ac.end;
} }
sql += ` GROUP BY b.itemCode,a.uapp_id`; sql += ` GROUP BY b.channelItemName,a.uapp_id`;
let result = await this.customQuery(sql, whereParams); let result = await this.customQuery(sql,whereParams);
return system.getResultSuccess(result); return system.getResultSuccess(result);
} }
/** /**
* 订单对比 * 订单对比
* @param pobj * @param pobj
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async getOrdersComparison(pobj) { async getOrdersComparison(pobj){
let ab = pobj.actionBody; let ab =pobj.actionBody;
let sql1 = `select count(*) count from c_order_info a left join c_order_product b on a.orderNo = b.sourceOrderNo where a.deleted_at is null `; let sql1 = `select count(*) count from c_order_info a left join c_order_product b on a.orderNo = b.sourceOrderNo where a.deleted_at is null `;
let whereParams = {}; let whereParams = {};
if (ab.startNow && ab.endNow) { if(ab.startNow&&ab.endNow){
sql1 += ` and a.created_at >= :start and a.created_at <= :end`; sql1 += ` and a.created_at >= :start and a.created_at <= :end`;
whereParams.start = ab.startNow; whereParams.start = ab.startNow;
whereParams.end = ab.endNow; whereParams.end = ab.endNow;
} }
if (ab.uapp_id) { if(ab.uapp_id){
sql1 += ` and a.uapp_id = :uapp_id`; sql1 += ` and a.uapp_id = :uapp_id`;
whereParams.uapp_id = ab.uapp_id; whereParams.uapp_id = ab.uapp_id;
} }
if (ab.type_code) { if(ab.type_code){
sql1 += ` and b.itemCode = :type_code`; sql1 += ` and b.itemCode = :type_code`;
whereParams.type_code = ab.type_code; whereParams.type_code = ab.type_code;
} }
let totalRet1 = await this.customQuery(sql1, whereParams); let totalRet1 = await this.customQuery(sql1,whereParams);
if (ab.startLast && ab.endLast) { if(ab.startLast&&ab.endLast){
whereParams.start = ab.startLast; whereParams.start = ab.startLast;
whereParams.end = ab.endLast; whereParams.end = ab.endLast;
} }
let totalRet2 = await this.customQuery(sql1, whereParams); let totalRet2 = await this.customQuery(sql1,whereParams);
let result = { let result ={
now: { now:{
total: totalRet1[0].count, total:totalRet1[0].count,
}, },
last: { last:{
total: totalRet2[0].count, total:totalRet2[0].count,
} }
} }
return system.getResultSuccess(result); return system.getResultSuccess(result);
...@@ -1331,7 +1310,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1331,7 +1310,7 @@ class OrderInfoService extends ServiceBase {
* @param pobj * @param pobj
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async getOrdersComparisonList(pobj) { async getOrdersComparisonList(pobj){
let ab = pobj.actionBody; let ab = pobj.actionBody;
let pageSize = Number(ab.pageSize || 20); let pageSize = Number(ab.pageSize || 20);
let pageIndex = Number(ab.pageIndex || 1); let pageIndex = Number(ab.pageIndex || 1);
...@@ -1349,6 +1328,8 @@ class OrderInfoService extends ServiceBase { ...@@ -1349,6 +1328,8 @@ class OrderInfoService extends ServiceBase {
a.orderStatusName, a.orderStatusName,
c.contactName, c.contactName,
c.mobile, c.mobile,
a.isPushNum,
a.pushStatus,
a.created_at a.created_at
FROM FROM
center_order.c_order_info a center_order.c_order_info a
...@@ -1358,46 +1339,51 @@ class OrderInfoService extends ServiceBase { ...@@ -1358,46 +1339,51 @@ class OrderInfoService extends ServiceBase {
WHERE WHERE
a.deleted_at IS NULL`; a.deleted_at IS NULL`;
let totalSql = `select count(DISTINCT(a.orderNo)) count from c_order_info a left join c_order_product b on a.orderNo = b.sourceOrderNo LEFT JOIN center_order.c_order_contacts c on a.orderNo = c.sourceOrderNo where a.deleted_at is null ` let totalSql = `select count(DISTINCT(a.orderNo)) count from c_order_info a left join c_order_product b on a.orderNo = b.sourceOrderNo LEFT JOIN center_order.c_order_contacts c on a.orderNo = c.sourceOrderNo where a.deleted_at is null `
let whereParams = {}; let whereParams ={};
if (ab.start && ab.end) { if(ab.start&&ab.end){
listSql += ` and a.created_at >= :start and a.created_at <= :end`; listSql += ` and a.created_at >= :start and a.created_at <= :end`;
totalSql += ` and a.created_at >= :start and a.created_at <= :end`; totalSql += ` and a.created_at >= :start and a.created_at <= :end`;
whereParams.start = ab.start; whereParams.start = ab.start;
whereParams.end = ab.end; whereParams.end = ab.end;
} }
if (ab.uapp_id) { if(ab.uapp_id){
listSql += ` and a.uapp_id = :uapp_id`; listSql += ` and a.uapp_id = :uapp_id`;
totalSql += ` and a.uapp_id = :uapp_id`; totalSql += ` and a.uapp_id = :uapp_id`;
whereParams.uapp_id = ab.uapp_id; whereParams.uapp_id = ab.uapp_id;
} }
if (ab.type_code) { if(ab.status){
listSql += ` and a.orderStatus = :status`;
totalSql += ` and a.orderStatus = :status`;
whereParams.status = ab.status;
}
if(ab.type_code){
listSql += ` and b.itemCode = :type_code`; listSql += ` and b.itemCode = :type_code`;
totalSql += ` and b.itemCode = :type_code`; totalSql += ` and b.itemCode = :type_code`;
whereParams.type_code = ab.type_code; whereParams.type_code = ab.type_code;
} }
if (ab.fuzzy_code) { if(ab.fuzzy_code){
listSql += ` and ( a.orderNo like :fuzzy_code or a.channelOrderNo like :fuzzy_code or c.mobile like :fuzzy_code)`; listSql += ` and ( a.orderNo like :fuzzy_code or a.channelOrderNo like :fuzzy_code or c.mobile like :fuzzy_code)`;
totalSql += ` and ( a.orderNo like :fuzzy_code or a.channelOrderNo like :fuzzy_code or c.mobile like :fuzzy_code)`; totalSql += ` and ( a.orderNo like :fuzzy_code or a.channelOrderNo like :fuzzy_code or c.mobile like :fuzzy_code)`;
whereParams.fuzzy_code = "%" + ab.fuzzy_code + "%"; whereParams.fuzzy_code = "%"+ab.fuzzy_code+"%";
} }
listSql += ` order by a.created_at desc`; listSql += ` order by a.created_at desc`;
if (pageSize != -1) { if(pageSize != -1){
listSql += ` limit ${pageSize} offset ${from}`; listSql += ` limit ${pageSize} offset ${from}`;
} }
let result = await this.customQuery(listSql, whereParams); let result = await this.customQuery(listSql,whereParams);
let total = await this.customQuery(totalSql, whereParams); let total = await this.customQuery(totalSql,whereParams);
result = result.map(t => { result = result.map(t =>{
if (t.itemName.endsWith('市')) { if(t.itemName && t.itemName.endsWith('市')){
t.itemName = '公司注册'; t.itemName = '公司注册';
} }
if (t.itemName.endsWith('区')) { if(t.itemName &&t.itemName.endsWith('区')){
t.itemName = '云上园区注册'; t.itemName = '云上园区注册';
} }
return t; return t;
}) })
let data = { let data ={
total: total[0].count, total:total[0].count,
rows: result rows:result
} }
return system.getResult(data); return system.getResult(data);
} }
...@@ -1421,7 +1407,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1421,7 +1407,7 @@ class OrderInfoService extends ServiceBase {
async getOrderServiceNoByOrderNo(pobj, actionBody) {//根据订单号获取订单信息 async getOrderServiceNoByOrderNo(pobj, actionBody) {//根据订单号获取订单信息
var sql = "select `orderNo`,orderServiceNo from v_order where orderNo=:orderNo LIMIT 1"; var sql = "select `orderNo`,orderServiceNo from v_order where orderNo=:orderNo LIMIT 1";
var paramWhere = {orderNo: actionBody.orderNo}; var paramWhere = { orderNo: actionBody.orderNo };
var list = await this.customQuery(sql, paramWhere); var list = await this.customQuery(sql, paramWhere);
if (!list || list.length == 0) { if (!list || list.length == 0) {
return system.getResult(null, "订单数据为空,30200"); return system.getResult(null, "订单数据为空,30200");
...@@ -1434,7 +1420,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1434,7 +1420,7 @@ class OrderInfoService extends ServiceBase {
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`,`notes`,`channelItemCode`,`channelItemName`,`price`,priceDesc,priceTypeName,channelItemAppendName,`serviceItemCode`,`picUrl`,`serviceItemSnapshot`,`orderSnapshot`,created_at from " + " `invoiceApplyStatus`,`opNotes`,`notes`,`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);
if (!list || list.length == 0) { if (!list || list.length == 0) {
return system.getResult(null, "订单数据为空,30200"); return system.getResult(null, "订单数据为空,30200");
...@@ -1454,7 +1440,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1454,7 +1440,7 @@ class OrderInfoService extends ServiceBase {
async getOrderByChannelOrderNo(pobj, actionBody) {// 根据渠道订单号获取订单 async getOrderByChannelOrderNo(pobj, actionBody) {// 根据渠道订单号获取订单
var app = pobj.appInfo; var app = pobj.appInfo;
let orderItem = await this.findOne({channelOrderNo: actionBody.bizId, uapp_id: app.uapp_id}); let orderItem = await this.findOne({ channelOrderNo: actionBody.bizId, uapp_id: app.uapp_id });
if (!orderItem) { if (!orderItem) {
return system.getResult(null, "order data is empty"); return system.getResult(null, "order data is empty");
} }
...@@ -1464,7 +1450,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1464,7 +1450,7 @@ class OrderInfoService extends ServiceBase {
async getOrderDeliveryInfo(pobj, actionBody) {//获取订单交付信息 async getOrderDeliveryInfo(pobj, actionBody) {//获取订单交付信息
var sql = "select * from c_order_delivery where sourceOrderNo=:sourceOrderNo"; var sql = "select * from c_order_delivery where sourceOrderNo=:sourceOrderNo";
var paramWhere = {sourceOrderNo: actionBody.orderNo}; var paramWhere = { sourceOrderNo: actionBody.orderNo };
var list = await this.customQuery(sql, paramWhere); var list = await this.customQuery(sql, paramWhere);
var result = system.getResultSuccess(); var result = system.getResultSuccess();
result.data = {}; result.data = {};
...@@ -1482,10 +1468,9 @@ class OrderInfoService extends ServiceBase { ...@@ -1482,10 +1468,9 @@ class OrderInfoService extends ServiceBase {
}//是否获取联系人,isGetContact有值则不获取 }//是否获取联系人,isGetContact有值则不获取
return result; return result;
} }
async getOrderDeliveryFlowInfo(pobj, actionBody) {//获取订单交付流程信息 async getOrderDeliveryFlowInfo(pobj, actionBody) {//获取订单交付流程信息
var sql = "select * from c_delivery_official_flow where sourceOrderNo=:sourceOrderNo"; var sql = "select * from c_delivery_official_flow where sourceOrderNo=:sourceOrderNo";
var paramWhere = {sourceOrderNo: actionBody.sourceOrderNo}; var paramWhere = { sourceOrderNo: actionBody.sourceOrderNo };
var list = await this.customQuery(sql, paramWhere); var list = await this.customQuery(sql, paramWhere);
var result = system.getResultSuccess(); var result = system.getResultSuccess();
if (list && list.length > 0) { if (list && list.length > 0) {
...@@ -1495,10 +1480,9 @@ class OrderInfoService extends ServiceBase { ...@@ -1495,10 +1480,9 @@ class OrderInfoService extends ServiceBase {
} }
return result; return result;
} }
async getOrderDeliveryFlowList(pobj, actionBody) {//获取订单交付流程列表信息 async getOrderDeliveryFlowList(pobj, actionBody) {//获取订单交付流程列表信息
var sql = "select * from c_delivery_official_flow where sourceOrderNo IN(:sourceOrderNo)"; var sql = "select * from c_delivery_official_flow where sourceOrderNo IN(:sourceOrderNo)";
var paramWhere = {sourceOrderNo: actionBody.sourceOrderNoList}; var paramWhere = { sourceOrderNo: actionBody.sourceOrderNoList };
var list = await this.customQuery(sql, paramWhere); var list = await this.customQuery(sql, paramWhere);
var tmpList = []; var tmpList = [];
if (list && list.length > 0) { if (list && list.length > 0) {
...@@ -1514,7 +1498,6 @@ class OrderInfoService extends ServiceBase { ...@@ -1514,7 +1498,6 @@ class OrderInfoService extends ServiceBase {
} }
return system.getResultSuccess(tmpList); return system.getResultSuccess(tmpList);
} }
async getOrderLogInfo(pobj, actionBody) {//获取订单日志信息 async getOrderLogInfo(pobj, actionBody) {//获取订单日志信息
var list = await this.flowlogDao.getlogListBySourceOrderNo(actionBody.sourceOrderNo); var list = await this.flowlogDao.getlogListBySourceOrderNo(actionBody.sourceOrderNo);
return system.getResultSuccess(list); return system.getResultSuccess(list);
...@@ -1581,12 +1564,13 @@ class OrderInfoService extends ServiceBase { ...@@ -1581,12 +1564,13 @@ class OrderInfoService extends ServiceBase {
await this.flowlogDao.create(orderLog); await this.flowlogDao.create(orderLog);
var sql = null; var sql = null;
if (addi > 0) { if (addi > 0) {
await this.dao.updateByWhere({orderStatus: 4}, {where: {id: item.id}}); await this.dao.updateByWhere({ orderStatus: 4 }, { where: { id: item.id } });
sql = "INSERT INTO `c_delivery_official_flow` (`sourceOrderNo`,`officialFlow`) VALUE('" + sql = "INSERT INTO `c_delivery_official_flow` (`sourceOrderNo`,`officialFlow`) VALUE('" +
actionBody.orderNo + "','" + JSON.stringify(updateDeliveryInfo) + "')"; actionBody.orderNo + "','" + JSON.stringify(updateDeliveryInfo) + "')";
} else { }
else {
if (updateDeliveryInfo.orderDeliveryStatusName == "证件邮寄环节") { if (updateDeliveryInfo.orderDeliveryStatusName == "证件邮寄环节") {
await this.dao.updateByWhere({orderStatus: 8}, {where: {id: item.id}}); await this.dao.updateByWhere({ orderStatus: 8 }, { where: { id: item.id } });
} }
sql = "UPDATE `c_delivery_official_flow` SET officialFlow ='" + JSON.stringify(updateDeliveryInfo) + "' where sourceOrderNo='" + actionBody.orderNo + "'"; sql = "UPDATE `c_delivery_official_flow` SET officialFlow ='" + JSON.stringify(updateDeliveryInfo) + "' where sourceOrderNo='" + actionBody.orderNo + "'";
sql = sql.replace('\n', ''); sql = sql.replace('\n', '');
...@@ -1686,7 +1670,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1686,7 +1670,7 @@ class OrderInfoService extends ServiceBase {
try { try {
await self.db.transaction(async function (t) { await self.db.transaction(async function (t) {
if (Object.keys(updateOrderFields).length > 0) { if (Object.keys(updateOrderFields).length > 0) {
self.updateByWhere(updateOrderFields, {where: {orderNo: actionBody.orderNo}}, t); self.updateByWhere(updateOrderFields, { where: { orderNo: actionBody.orderNo } }, t);
} }
await self.flowlogDao.create(orderLog, t); await self.flowlogDao.create(orderLog, t);
}); });
...@@ -1728,7 +1712,8 @@ class OrderInfoService extends ServiceBase { ...@@ -1728,7 +1712,8 @@ class OrderInfoService extends ServiceBase {
tmStatusName: actionBody.tmStatusName tmStatusName: actionBody.tmStatusName
}); });
addi++; addi++;
} else { }
else {
flowList = deliveryFlowInfo.data; flowList = deliveryFlowInfo.data;
} }
var dataIndex = flowList.findIndex(f => f.tmStatus == actionBody.tmStatus); var dataIndex = flowList.findIndex(f => f.tmStatus == actionBody.tmStatus);
...@@ -1745,7 +1730,8 @@ class OrderInfoService extends ServiceBase { ...@@ -1745,7 +1730,8 @@ class OrderInfoService extends ServiceBase {
if (addi > 0) { if (addi > 0) {
sql = "INSERT INTO `c_delivery_official_flow` (`sourceOrderNo`,`officialFlow`) VALUE('" + sql = "INSERT INTO `c_delivery_official_flow` (`sourceOrderNo`,`officialFlow`) VALUE('" +
actionBody.officialInfo.tmRegistNum + "','" + JSON.stringify(flowList) + "')"; actionBody.officialInfo.tmRegistNum + "','" + JSON.stringify(flowList) + "')";
} else { }
else {
sql = "UPDATE `c_delivery_official_flow` SET officialFlow ='" + JSON.stringify(flowList) + "' where sourceOrderNo='" + actionBody.officialInfo.tmRegistNum + "'"; sql = "UPDATE `c_delivery_official_flow` SET officialFlow ='" + JSON.stringify(flowList) + "' where sourceOrderNo='" + actionBody.officialInfo.tmRegistNum + "'";
sql = sql.replace('\n', ''); sql = sql.replace('\n', '');
} }
...@@ -1763,7 +1749,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1763,7 +1749,7 @@ class OrderInfoService extends ServiceBase {
} }
var self = this; var self = this;
await self.db.transaction(async function (t) { await self.db.transaction(async function (t) {
await self.dao.updateByWhere({orderStatus: 2, payTime: new Date()}, {where: {orderNo: parmas.orderNo}}, t); await self.dao.updateByWhere({ orderStatus: 2, payTime: new Date() }, { where: { orderNo: parmas.orderNo } }, t);
var putFields = { var putFields = {
auditStatus: "tg", auditStatus: "tg",
accountType: parmas.pay_type, accountType: parmas.pay_type,
...@@ -1774,7 +1760,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1774,7 +1760,7 @@ class OrderInfoService extends ServiceBase {
buyerAliLogonId: parmas.buyer_logon_id || "",//买家支付宝账号 buyerAliLogonId: parmas.buyer_logon_id || "",//买家支付宝账号
notes: parmas.paytime || ""//备注下支付时间 notes: parmas.paytime || ""//备注下支付时间
}; };
await self.orderReceiptVoucherDao.updateByWhere(putFields, {where: {sourceOrderNo: parmas.orderNo}}, t); await self.orderReceiptVoucherDao.updateByWhere(putFields, { where: { sourceOrderNo: parmas.orderNo } }, t);
var orderLog = { var orderLog = {
uapp_id: appInfo.uapp_id, uapp_id: appInfo.uapp_id,
sourceOrderNo: parmas.orderNo, sourceOrderNo: parmas.orderNo,
...@@ -1823,10 +1809,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1823,10 +1809,7 @@ class OrderInfoService extends ServiceBase {
} }
var self = this; var self = this;
await self.db.transaction(async function (t) { await self.db.transaction(async function (t) {
await self.dao.updateByWhere({ await self.dao.updateByWhere({ orderStatus: 2, payTime: parmas.gmt_payment }, { where: { orderNo: parmas.orderNo } }, t);
orderStatus: 2,
payTime: parmas.gmt_payment
}, {where: {orderNo: parmas.orderNo}}, t);
var putFields = { var putFields = {
auditStatus: "tg", auditStatus: "tg",
accountType: parmas.pay_type, accountType: parmas.pay_type,
...@@ -1838,7 +1821,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1838,7 +1821,7 @@ class OrderInfoService extends ServiceBase {
updated_at: parmas.gmt_payment,//该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss。 updated_at: parmas.gmt_payment,//该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss。
notes: parmas.gmt_create || ""//该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss。 notes: parmas.gmt_create || ""//该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss。
}; };
await self.orderReceiptVoucherDao.updateByWhere(putFields, {where: {sourceOrderNo: parmas.orderNo}}, t); await self.orderReceiptVoucherDao.updateByWhere(putFields, { where: { sourceOrderNo: parmas.orderNo } }, t);
var orderLog = { var orderLog = {
uapp_id: appInfo.uapp_id, uapp_id: appInfo.uapp_id,
sourceOrderNo: parmas.orderNo, sourceOrderNo: parmas.orderNo,
...@@ -1880,7 +1863,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1880,7 +1863,7 @@ class OrderInfoService extends ServiceBase {
if (applyAddr.indexOf(addArr[i]) >= 0) { if (applyAddr.indexOf(addArr[i]) >= 0) {
var sql = "update c_order_region set count=count+1 where province=:province"; var sql = "update c_order_region set count=count+1 where province=:province";
// 修改条件 省名字相同,appid相同 // 修改条件 省名字相同,appid相同
var paramWhere = {where: {province: addArr[i], uapp_id: item.uapp_id}}; var paramWhere = { where: { province: addArr[i], uapp_id: item.uapp_id } };
var updateFields = { var updateFields = {
count: sequelize.literal('count+1') count: sequelize.literal('count+1')
} }
...@@ -1908,10 +1891,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1908,10 +1891,7 @@ class OrderInfoService extends ServiceBase {
} }
var self = this; var self = this;
await self.db.transaction(async function (t) { await self.db.transaction(async function (t) {
await self.dao.updateByWhere({ await self.dao.updateByWhere({ orderStatus: 2, payTime: parmas.time_end }, { where: { orderNo: parmas.orderNo } }, t);
orderStatus: 2,
payTime: parmas.time_end
}, {where: {orderNo: parmas.orderNo}}, t);
var putFields = { var putFields = {
auditStatus: "tg", auditStatus: "tg",
accountType: parmas.pay_type, accountType: parmas.pay_type,
...@@ -1923,7 +1903,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1923,7 +1903,7 @@ class OrderInfoService extends ServiceBase {
updated_at: parmas.time_end,//该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss。 updated_at: parmas.time_end,//该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss。
notes: parmas.gmt_create || ""//该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss。 notes: parmas.gmt_create || ""//该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss。
}; };
await self.orderReceiptVoucherDao.updateByWhere(putFields, {where: {sourceOrderNo: parmas.orderNo}}, t); await self.orderReceiptVoucherDao.updateByWhere(putFields, { where: { sourceOrderNo: parmas.orderNo } }, t);
var orderLog = { var orderLog = {
uapp_id: appInfo.uapp_id, uapp_id: appInfo.uapp_id,
sourceOrderNo: parmas.orderNo, sourceOrderNo: parmas.orderNo,
...@@ -1970,15 +1950,12 @@ class OrderInfoService extends ServiceBase { ...@@ -1970,15 +1950,12 @@ class OrderInfoService extends ServiceBase {
if (item.orderStatus > 1) { if (item.orderStatus > 1) {
return system.getResultSuccess(null, "order status is pay!"); return system.getResultSuccess(null, "order status is pay!");
} }
if (item.payTotalSum > parmas.payTotalSum) { if(item.payTotalSum > parmas.payTotalSum){
return system.getResultFail(-1, '支付金额有误!') return system.getResultFail(-1,'支付金额有误!')
} }
var self = this; var self = this;
await self.db.transaction(async function (t) { await self.db.transaction(async function (t) {
await self.dao.updateByWhere({ await self.dao.updateByWhere({ orderStatus: 2, payTime: parmas.time_end }, { where: { orderNo: parmas.orderNo } }, t);
orderStatus: 2,
payTime: parmas.time_end
}, {where: {orderNo: parmas.orderNo}}, t);
var putFields = { var putFields = {
auditStatus: "tg", auditStatus: "tg",
accountType: parmas.pay_type, accountType: parmas.pay_type,
...@@ -1990,7 +1967,7 @@ class OrderInfoService extends ServiceBase { ...@@ -1990,7 +1967,7 @@ class OrderInfoService extends ServiceBase {
updated_at: new Date(),//该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss。 updated_at: new Date(),//该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss。
notes: parmas.gmt_create || ""//该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss。 notes: parmas.gmt_create || ""//该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss。
}; };
await self.orderReceiptVoucherDao.updateByWhere(putFields, {where: {sourceOrderNo: parmas.orderNo}}, t); await self.orderReceiptVoucherDao.updateByWhere(putFields, { where: { sourceOrderNo: parmas.orderNo } }, t);
var orderLog = { var orderLog = {
uapp_id: appInfo.uapp_id, uapp_id: appInfo.uapp_id,
sourceOrderNo: parmas.orderNo, sourceOrderNo: parmas.orderNo,
...@@ -2028,7 +2005,6 @@ class OrderInfoService extends ServiceBase { ...@@ -2028,7 +2005,6 @@ class OrderInfoService extends ServiceBase {
} }
return system.getResultSuccess(resultParams); return system.getResultSuccess(resultParams);
} }
//-------------------------------服务商通知订单流程-------------end---------------- //-------------------------------服务商通知订单流程-------------end----------------
//商标方案确认 //商标方案确认
async tmConfirm(pobj) { async tmConfirm(pobj) {
...@@ -2056,7 +2032,7 @@ class OrderInfoService extends ServiceBase { ...@@ -2056,7 +2032,7 @@ class OrderInfoService extends ServiceBase {
} }
//获取订单信息 //获取订单信息
var orderinfo = await this.dao.model.findOne({ var orderinfo = await this.dao.model.findOne({
where: {orderNo: orderNo, uapp_id: app.uapp_id}, raw: true where: { orderNo: orderNo, uapp_id: app.uapp_id }, raw: true
}); });
if (!orderinfo || !orderinfo.id) { if (!orderinfo || !orderinfo.id) {
return system.getResultFail(-110, "未知订单信息"); return system.getResultFail(-110, "未知订单信息");
...@@ -2139,7 +2115,7 @@ class OrderInfoService extends ServiceBase { ...@@ -2139,7 +2115,7 @@ class OrderInfoService extends ServiceBase {
async tmRefuse(pobj) { async tmRefuse(pobj) {
var ab = pobj.actionBody; var ab = pobj.actionBody;
var app = pobj.appInfo; var app = pobj.appInfo;
var orderinfo = await this.findOne({channelOrderNo: ab.bizId, uapp_id: app.uapp_id}); var orderinfo = await this.findOne({ channelOrderNo: ab.bizId, uapp_id: app.uapp_id });
if (!orderinfo) { if (!orderinfo) {
return system.getResultFail(-6001, "订单不存在"); return system.getResultFail(-6001, "订单不存在");
} }
...@@ -2156,7 +2132,7 @@ class OrderInfoService extends ServiceBase { ...@@ -2156,7 +2132,7 @@ class OrderInfoService extends ServiceBase {
//智能选择 尼斯类获取 //智能选择 尼斯类获取
async getNclByCode(pobj) { async getNclByCode(pobj) {
var sql = "select `business_code`,`ncl_content` from b_business_ncl where business_code=:business_code LIMIT 1"; var sql = "select `business_code`,`ncl_content` from b_business_ncl where business_code=:business_code LIMIT 1";
var paramWhere = {business_code: pobj.actionBody.businessCode}; var paramWhere = { business_code: pobj.actionBody.businessCode };
var result = await this.customQuery(sql, paramWhere); var result = await this.customQuery(sql, paramWhere);
if (Object.keys(result).length == 0) { if (Object.keys(result).length == 0) {
return system.getResultFail(-1, 'find err'); return system.getResultFail(-1, 'find err');
...@@ -2226,7 +2202,7 @@ class OrderInfoService extends ServiceBase { ...@@ -2226,7 +2202,7 @@ class OrderInfoService extends ServiceBase {
* @param pobj * @param pobj
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async bulkCreateOrders(pobj, req) { async bulkCreateOrders(pobj,req) {
let ordersArr = []; let ordersArr = [];
let contactsArr = []; let contactsArr = [];
let productsArr = []; let productsArr = [];
...@@ -2246,9 +2222,9 @@ class OrderInfoService extends ServiceBase { ...@@ -2246,9 +2222,9 @@ class OrderInfoService extends ServiceBase {
}*/ }*/
let sql = 'select channelOrderNo from c_order_info where uapp_id = :uapp_id'; let sql = 'select channelOrderNo from c_order_info where uapp_id = :uapp_id';
let whereParam = { let whereParam = {
uapp_id: uapp_id uapp_id:uapp_id
} }
let ret = await this.customQuery(sql, whereParam); let ret = await this.customQuery(sql,whereParam);
let existIds = ret.map(item => { let existIds = ret.map(item => {
return item.channelOrderNo; return item.channelOrderNo;
}) })
...@@ -2264,19 +2240,22 @@ class OrderInfoService extends ServiceBase { ...@@ -2264,19 +2240,22 @@ class OrderInfoService extends ServiceBase {
orderStatus: 2,//订单状态: 1: 待付款, 2: 已付款, 4: 待服务, 8: 已完成 orderStatus: 2,//订单状态: 1: 待付款, 2: 已付款, 4: 待服务, 8: 已完成
totalSum: order.price, //订单总额(产品价格×优惠费率×订单件数) totalSum: order.price, //订单总额(产品价格×优惠费率×订单件数)
payTotalSum: order.price, payTotalSum: order.price,
created_at: order.createdAt created_at:order.createdAt
} }
if (order.status == '已签收' || order.status == '服务已完成') { if (order.status == '已签收' || order.status == '服务已完成') {
orderObj['orderStatus'] = 8; orderObj['orderStatus'] = 8;
} }
if (order.status == '已关闭') {
orderObj['orderStatus'] = 32;
}
ordersArr.push(orderObj); ordersArr.push(orderObj);
if (order.personName && order.personMobile) { if(order.personName && order.personMobile){
let customerContactObj = { let customerContactObj = {
uapp_id: uapp_id, uapp_id: uapp_id,
sourceOrderNo: order.number, sourceOrderNo: order.number,
contactName: order.personName || "", contactName: order.personName || "",
mobile: order.personMobile, mobile: order.personMobile,
created_at: order.createdAt created_at:order.createdAt
}; };
contactsArr.push(customerContactObj); contactsArr.push(customerContactObj);
} }
...@@ -2304,25 +2283,160 @@ class OrderInfoService extends ServiceBase { ...@@ -2304,25 +2283,160 @@ class OrderInfoService extends ServiceBase {
price: order.price,//定价 price: order.price,//定价
quantity: 1,// 订单数量(即产品的倍数,默认值为1) quantity: 1,// 订单数量(即产品的倍数,默认值为1)
opPayType: "10",// 操作付款类型:00: 创建订单, 10: 补单 opPayType: "10",// 操作付款类型:00: 创建订单, 10: 补单
created_at: order.createdAt created_at:order.createdAt
}; };
productsArr.push(orderProductObj); productsArr.push(orderProductObj);
} }
let orRet = null; let orRet = null;
if (ordersArr.length > 0) { if(ordersArr.length >0){
orRet = await this.dao.bulkCreate(ordersArr); orRet = await this.dao.bulkCreate(ordersArr);
if (orRet.length == 0) { if(orRet.length ==0){
return system.getResultFail(-1, '保存订单失败'); return system.getResultFail(-1,'保存订单失败');
} }
} }
if (contactsArr.length > 0) { if(contactsArr.length>0){
this.ordercontactsDao.bulkCreate(contactsArr); this.ordercontactsDao.bulkCreate(contactsArr);
} }
if (productsArr.length > 0) { if(productsArr.length>0){
this.orderproductDao.bulkCreate(productsArr); this.orderproductDao.bulkCreate(productsArr);
} }
return system.getResultSuccess(orRet); return system.getResultSuccess(orRet);
} }
}
module.exports = OrderInfoService; /**
\ No newline at end of file * 同步蜂擎订单商机
* @returns {Promise<void>}
*/
async syncOrderBusiness() {
//获取 need_info_fq 未处理的需求
let fqOrders = await this.orderinfofqDao.getAllOrders()
let ids = [];
let orderDict = {};
for (let i = 0; i < fqOrders.length; i++) {
ids.push(fqOrders[i].channelOrderNo);
orderDict[fqOrders[i].channelOrderNo] = fqOrders[i].orderStatus;
}
//根据ids 获取企服通需求
let orders = await this.orderinfoDao.getOrdersByIds(ids);
let setObj = [];
let existIds = [];
let ids1 = [];
let ids2 = [];
let ids3 = [];
let ids4 = [];
let ids5 = [];
let ids6 = [];
let ids7 = [];
//已经存在的需求,更改状态
for(let i = 0;i < orders.length; i++){
let order = orders[i];
let obj = {
id:order.id,
}
if(orderDict[order.channelOrderNo] == 1){
ids1.push(order.channelOrderNo);
}
if(orderDict[order.channelOrderNo] == 2){
ids2.push(order.channelOrderNo);
}
if(orderDict[order.channelOrderNo] == 4){
ids3.push(order.channelOrderNo);
}
if(orderDict[order.channelOrderNo] == 8){
ids4.push(order.channelOrderNo);
}
if(orderDict[order.channelOrderNo] == 16){
ids5.push(order.channelOrderNo);
}
if(orderDict[order.channelOrderNo] == 32){
ids6.push(order.channelOrderNo);
}
if(orderDict[order.channelOrderNo] == 64){
ids7.push(order.channelOrderNo);
}
setObj.push(obj);
existIds.push(order.channelOrderNo);
}
// 不存在的订单 添加到企服通
let createObj = [];
let setFqObj1 = [];
let setFqObj2 = [];
for(let i =0;i<fqOrders.length;i++){
let fqOrder = fqOrders[i].dataValues;
if(!existIds.includes(fqOrder.channelOrderNo)){
fqOrder.orderNo = fqOrder.channelOrderNo;
if(['360_icp ','360_edi','360_sbzc'].includes(fqOrder.source_code)){
fqOrder.uapp_id = 50;
}
if(['baidu_edi','baidu_gsreg','baidu_icp','baidu_radiotv','baidu_wangwen'].includes(fqOrder.source_code)){
fqOrder.uapp_id = 44;
}
if(['edi_ali','ic_ali','icp_ali','tm_ali','tmd_ali'].includes(fqOrder.source_code)){
fqOrder.uapp_id = 18;
}
if(['youke'].includes(fqOrder.source_code)){
fqOrder.uapp_id = 40;
}
if(['tm_jdyun'].includes(fqOrder.source_code)){
fqOrder.uapp_id = 31;
}
if(['tm_bw'].includes(fqOrder.source_code)){
fqOrder.uapp_id = 35;
}
if(['tm_1688'].includes(fqOrder.source_code)){
fqOrder.uapp_id = 0;
}
delete fqOrder.sourceName;
delete fqOrder.source_code;
delete fqOrder.handleStatus;
delete fqOrder.id;
if(!setFqObj2.includes(fqOrder.channelOrderNo)){
createObj.push(fqOrder);
setFqObj2.push(fqOrder.channelOrderNo);
}
}else {
setFqObj1.push(fqOrder.channelOrderNo);
}
}
//企服通 批量更新状态
let updateRet =[];
if(setObj.length>0){
// updateRet = await this.needinfoDao.bulkUpdate(setObj);
// 1: 待付款, 2: 已付款, 4: 服务中, 8: 已完成, 16: 已退款, 32: 已作废, 64: 已付部分款
if(ids1.length>0){
updateRet = await this.orderinfoDao.bulkUpdateStatus(1,'待付款',ids1);
}
if(ids2.length>0){
updateRet = await this.orderinfoDao.bulkUpdateStatus(2,'已付款',ids2);
}
if(ids3.length>0){
updateRet = await this.orderinfoDao.bulkUpdateStatus(4,'服务中',ids3);
}
if(ids4.length>0){
updateRet = await this.orderinfoDao.bulkUpdateStatus(8,'已完成',ids4);
}
if(ids5.length>0){
updateRet = await this.orderinfoDao.bulkUpdateStatus(16,'已退款',ids5);
}
if(ids6.length>0){
updateRet = await this.orderinfoDao.bulkUpdateStatus(32,'已作废',ids6);
}
if(ids7.length>0){
updateRet = await this.orderinfoDao.bulkUpdateStatus(64,'已付部分款',ids7);
}
if(updateRet.length > 0){
updateRet = await this.orderinfofqDao.bulkUpdate(setFqObj1);
}
}
//企服通 批量添加
if(createObj.length>0){
updateRet = await this.orderinfoDao.bulkCreate(createObj);
if(updateRet.length >0 ){
updateRet = await this.orderinfofqDao.bulkUpdate(setFqObj2);
}
}
return system.getResult(updateRet)
}
}
module.exports = OrderInfoService;
...@@ -184,6 +184,7 @@ class NeedinfoService2 extends ServiceBase { ...@@ -184,6 +184,7 @@ class NeedinfoService2 extends ServiceBase {
} }
async writeCommunicationLog(pobj, actionBody) { async writeCommunicationLog(pobj, actionBody) {
console.log('actionBody---writeCommunicationLog---',actionBody)
// 查询需求沟通记录 // 查询需求沟通记录
// 2020 0820 lin 修改channel传过来的参数 为 note/intentionBizId // 2020 0820 lin 修改channel传过来的参数 为 note/intentionBizId
actionBody.Note = ["noteTime", moment().format("YYYY-MM-DD HH:mm:ss"), "note", actionBody.note]; actionBody.Note = ["noteTime", moment().format("YYYY-MM-DD HH:mm:ss"), "note", actionBody.note];
......
...@@ -149,16 +149,16 @@ class NeedinfoService extends ServiceBase { ...@@ -149,16 +149,16 @@ class NeedinfoService extends ServiceBase {
*/ */
async getStatisticsByUappId(pobj){ async getStatisticsByUappId(pobj){
let ac = pobj.actionBody; let ac = pobj.actionBody;
let sql = `SELECT uapp_id,count(*) count,DATE_FORMAT(created_at,'%Y-%m-%d') time FROM n_need_info WHERE deleted_at is null `; let sql = `SELECT uapp_id,count(*) count,DATE_FORMAT(created_at,'%Y-%m-%d') time FROM n_need_info WHERE deleted_at is null AND (channelTypeName <> "商标交易" or channelTypeName is null)`;
let whereParam = {}; let whereParam = {};
if(ac.start&&ac.end){ if(ac.start&&ac.end){
sql += ` AND created_at >= :start AND created_at <= :end`; sql += ` AND created_at >= :start AND created_at <= :end`;
whereParam.start = ac.start; whereParam.start = ac.start;
whereParam.end = ac.end; whereParam.end = ac.end;
} }
if(ac.type_code){ if(ac.type_name){
sql += ` AND typeCode = :type_code`; sql += ` AND typeName = :type_name`;
whereParam.type_code = ac.type_code; whereParam.type_name = ac.type_name;
} }
if(ac.status){ if(ac.status){
sql += ` AND status = :status`; sql += ` AND status = :status`;
...@@ -176,28 +176,31 @@ class NeedinfoService extends ServiceBase { ...@@ -176,28 +176,31 @@ class NeedinfoService extends ServiceBase {
*/ */
async getNeedFunnelStatistics(pobj){ async getNeedFunnelStatistics(pobj){
let ac = pobj.actionBody; let ac = pobj.actionBody;
let sql = `select count(*) count from n_need_info where deleted_at is null `; let sql = `select count(*) count from n_need_info where deleted_at is null AND (channelTypeName <> "商标交易" or channelTypeName is null) `;
let sql2 = `select count(DISTINCT(a.needNo)) count from n_need_solution a left join n_need_info b on a.needNo = b.needNo where a.deleted_at is null`; let sql2 = sql + ` and status in('ygj','ygb','ycd')`;
let sql3 = sql + ` and status = 'ycd'`;
let whereParams = {}; let whereParams = {};
if (ac.start&&ac.end){ if (ac.start&&ac.end){
sql += ` AND created_at >= :start and created_at <= :end`; sql += ` AND created_at >= :start and created_at <= :end`;
sql2 += ` AND b.created_at >= :start and b.created_at <= :end`; sql2 += ` AND created_at >= :start and created_at <= :end`;
sql3 += ` AND created_at >= :start and created_at <= :end`;
whereParams.start = ac.start; whereParams.start = ac.start;
whereParams.end = ac.end; whereParams.end = ac.end;
} }
if(ac.uapp_id){ if(ac.uapp_id){
sql += ` and uapp_id = :uapp_id`; sql += ` and uapp_id = :uapp_id`;
sql2 += ` and b.uapp_id = :uapp_id`; sql2 += ` and uapp_id = :uapp_id`;
sql3 += ` and uapp_id = :uapp_id`;
whereParams.uapp_id = ac.uapp_id; whereParams.uapp_id = ac.uapp_id;
} }
if(ac.type_code){ if(ac.type_name){
sql += ` and typeCode = :type_code`; sql += ` and typeName = :type_name`;
sql2 += ` and b.typeCode = :type_code`; sql2 += ` and typeName = :type_name`;
whereParams.type_code = ac.type_code; sql3 += ` and typeName = :type_name`;
whereParams.type_name = ac.type_name;
} }
let total = await this.customQuery(sql,whereParams); let total = await this.customQuery(sql,whereParams);
let middle = await this.customQuery(sql2,whereParams); let middle = await this.customQuery(sql2,whereParams);
let sql3 = sql2 + ` and b.status = 'ycd'`
let finish = await this.customQuery(sql3,whereParams); let finish = await this.customQuery(sql3,whereParams);
let result = { let result = {
total:total[0].count, total:total[0].count,
...@@ -208,47 +211,61 @@ class NeedinfoService extends ServiceBase { ...@@ -208,47 +211,61 @@ class NeedinfoService extends ServiceBase {
} }
/** /**
* 需求统计(产品维度 * 需求统计(产品类型
* @param pobj * @param pobj
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async getStatisticsByProduct(pobj){ async getStatisticsByProduct(pobj){
let ac = pobj.actionBody; let ac = pobj.actionBody;
let sql = `select typeCode,uapp_id,count(*) count from n_need_info where typeCode is not null `; let sql = `select typeName typeCode,uapp_id,count(*) count from n_need_info where typeName is not null AND (channelTypeName <> "商标交易" or channelTypeName is null) `;
let whereParams = {}; let whereParams = {};
if(ac.start&&ac.end){ if(ac.start&&ac.end){
sql += ` and created_at >= :start and created_at <= :end `; sql += ` and created_at >= :start and created_at <= :end `;
whereParams.start = ac.start; whereParams.start = ac.start;
whereParams.end = ac.end; whereParams.end = ac.end;
} }
sql += ` GROUP BY typeCode,uapp_id`; sql += ` GROUP BY typeName,uapp_id`;
let result = await this.customQuery(sql,whereParams); let result = await this.customQuery(sql,whereParams);
return system.getResultSuccess(result); return system.getResultSuccess(result);
} }
/** /**
* 需求统计(获取产品类型)
* @param pobj
* @returns {Promise<void>}
*/
async getNeedProductType(pobj){
let sql = `select typeName,count(*) count from n_need_info where typeName is not null AND (channelTypeName <> "商标交易" or channelTypeName is null) GROUP BY typeName`;
let result = await this.customQuery(sql);
let typeNames = result.map(item =>{
return item.typeName;
})
return system.getResultSuccess(typeNames);
}
/**
* 需求统计(区域维度) * 需求统计(区域维度)
* @param pobj * @param pobj
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async getStatisticsByCity(pobj){ async getStatisticsByCity(pobj){
let ac = pobj.actionBody; let ac = pobj.actionBody;
let sql = `select typeCode,province,count(*) count from n_need_info where province is not null and typeCode is not null `; let sql = `select typeName typeCode,province,count(*) count from n_need_info where province is not null and typeCode is not null AND (channelTypeName <> "商标交易" or channelTypeName is null) `;
let whereParams = {}; let whereParams = {};
if(ac.start&&ac.end){ if(ac.start&&ac.end){
sql += ` and created_at >= :start and created_at <= :end `; sql += ` and created_at >= :start and created_at <= :end `;
whereParams.start = ac.start; whereParams.start = ac.start;
whereParams.end = ac.end; whereParams.end = ac.end;
} }
if(ac.type_code){ if(ac.type_name){
sql += ` and typeCode = :typeCode`; sql += ` and typeName = :typeName`;
whereParams.typeCode = ac.type_code; whereParams.typeName = ac.type_name;
} }
if(ac.uapp_id){ if(ac.uapp_id){
sql += ` and uapp_id = :uapp_id`; sql += ` and uapp_id = :uapp_id`;
whereParams.uapp_id = ac.uapp_id; whereParams.uapp_id = ac.uapp_id;
} }
sql += ` GROUP BY province,typeCode`; sql += ` GROUP BY province,typeName`;
let result = await this.customQuery(sql,whereParams); let result = await this.customQuery(sql,whereParams);
return system.getResultSuccess(result); return system.getResultSuccess(result);
} }
...@@ -260,8 +277,8 @@ class NeedinfoService extends ServiceBase { ...@@ -260,8 +277,8 @@ class NeedinfoService extends ServiceBase {
*/ */
async getNeedComparison(pobj){ async getNeedComparison(pobj){
let ab =pobj.actionBody; let ab =pobj.actionBody;
let sql1 = `select count(DISTINCT(needNo)) count from n_need_info where deleted_at is null `; let sql1 = `select count(DISTINCT(channelNeedNo)) count from n_need_info where deleted_at is null AND (channelTypeName <> "商标交易" or channelTypeName is null) `;
let sql2 = `select count(DISTINCT(b.needNo)) count from n_need_solution a left join n_need_info b on a.needNo = b.needNo where a.deleted_at is null and b.status = 'ycd'`; let sql2 = `select count(DISTINCT(b.channelNeedNo)) count from n_need_solution a left join n_need_info b on a.needNo = b.needNo where a.deleted_at is null and b.status = 'ycd' AND (b.channelTypeName <> "商标交易" or b.channelTypeName is null)`;
let whereParams = {}; let whereParams = {};
if(ab.startNow&&ab.endNow){ if(ab.startNow&&ab.endNow){
sql1 += ` and created_at >= :start and created_at <= :end`; sql1 += ` and created_at >= :start and created_at <= :end`;
...@@ -274,10 +291,10 @@ class NeedinfoService extends ServiceBase { ...@@ -274,10 +291,10 @@ class NeedinfoService extends ServiceBase {
sql2 += ` and b.uapp_id = :uapp_id`; sql2 += ` and b.uapp_id = :uapp_id`;
whereParams.uapp_id = ab.uapp_id; whereParams.uapp_id = ab.uapp_id;
} }
if(ab.type_code){ if(ab.type_name){
sql1 += ` and typeCode = :type_code`; sql1 += ` and typeName = :type_name`;
sql2 += ` and b.typeCode = :type_code`; sql2 += ` and b.typename = :type_name`;
whereParams.type_code = ab.type_code; whereParams.type_name = ab.type_name;
} }
let totalRet1 = await this.customQuery(sql1,whereParams); let totalRet1 = await this.customQuery(sql1,whereParams);
let orderRet1 = await this.customQuery(sql2,whereParams); let orderRet1 = await this.customQuery(sql2,whereParams);
...@@ -315,13 +332,13 @@ class NeedinfoService extends ServiceBase { ...@@ -315,13 +332,13 @@ class NeedinfoService extends ServiceBase {
} }
let tag = actionBody.tag; let tag = actionBody.tag;
//需求列表 //需求列表
let needSql = `select DISTINCT(a.channelNeedNo),b.app_name,a.needNo,a.typeName,a.province,a.city,a.publishContent,a.publishName,a.publishMobile,a.statusName,a.created_at from center_order.n_need_info a left join center_app.p_app b on a.uapp_id = b.uapp_id where a.deleted_at is null`; let needSql = `select DISTINCT(a.channelNeedNo),b.app_name,a.needNo,a.typeName,a.province,a.city,a.publishContent,a.publishName,a.publishMobile,a.statusName,a.created_at from center_order.n_need_info a left join center_app.p_app b on a.uapp_id = b.uapp_id where a.deleted_at is null AND (a.channelTypeName <> "商标交易" or a.channelTypeName is null) `;
//需求总数 //需求总数
let needTotalSql = `select count(DISTINCT(a.channelNeedNo)) count from center_order.n_need_info a left join center_app.p_app b on a.uapp_id = b.uapp_id where a.deleted_at is null`; let needTotalSql = `select count(DISTINCT(a.channelNeedNo)) count from center_order.n_need_info a left join center_app.p_app b on a.uapp_id = b.uapp_id where a.deleted_at is null AND (a.channelTypeName <> "商标交易" or a.channelTypeName is null) `;
//需求成单 //需求成单
let needToOrderSql = `select DISTINCT(b.channelNeedNo),c.app_name,b.channelNeedNo,b.province,b.city,b.typeName,b.publishContent,b.publishName,b.publishMobile,b.statusName,b.created_at from center_order.n_need_solution a left join center_order.n_need_info b on a.needNo = b.needNo left join center_app.p_app c on b.uapp_id = c.uapp_id where a.deleted_at is null and b.status = 'ycd'`; let needToOrderSql = `select DISTINCT(b.channelNeedNo),c.app_name,b.channelNeedNo,b.province,b.city,b.typeName,b.publishContent,b.publishName,b.publishMobile,b.statusName,b.created_at from center_order.n_need_solution a left join center_order.n_need_info b on a.needNo = b.needNo left join center_app.p_app c on b.uapp_id = c.uapp_id where a.deleted_at is null and b.status = 'ycd' AND (b.channelTypeName <> "商标交易" or b.channelTypeName is null) `;
//需求成单总数 //需求成单总数
let needToOrderTotalSql = `select count(DISTINCT(a.channelNeedNo)) count from n_need_solution a left join n_need_info b on a.needNo = b.needNo where a.deleted_at is null and b.status = 'ycd'`; let needToOrderTotalSql = `select count(DISTINCT(a.channelNeedNo)) count from n_need_solution a left join n_need_info b on a.needNo = b.needNo where a.deleted_at is null and b.status = 'ycd' AND (b.channelTypeName <> "商标交易" or b.channelTypeName is null) `;
let whereParams = {}; let whereParams = {};
if(actionBody.start&&actionBody.end){ if(actionBody.start&&actionBody.end){
needSql += ` and a.created_at >= :start and a.created_at <= :end`; needSql += ` and a.created_at >= :start and a.created_at <= :end`;
...@@ -339,12 +356,19 @@ class NeedinfoService extends ServiceBase { ...@@ -339,12 +356,19 @@ class NeedinfoService extends ServiceBase {
needToOrderTotalSql += ` and b.uapp_id = :uapp_id`; needToOrderTotalSql += ` and b.uapp_id = :uapp_id`;
whereParams.uapp_id = actionBody.uapp_id; whereParams.uapp_id = actionBody.uapp_id;
} }
if(actionBody.type_code){ if(actionBody.type_name){
needSql += ` and a.typeCode = :type_code`; needSql += ` and a.typeName = :type_name`;
needTotalSql += ` and a.typeCode = :type_code`; needTotalSql += ` and a.typeName = :type_name`;
needToOrderSql += ` and b.typeCode = :type_code`; needToOrderSql += ` and b.typeName = :type_name`;
needToOrderTotalSql += ` and b.typeCode = :type_code`; needToOrderTotalSql += ` and b.typeName = :type_name`;
whereParams.type_code = actionBody.type_code; whereParams.type_name = actionBody.type_name;
}
if(actionBody.status){
needSql += ` and a.status = :status`;
needTotalSql += ` and a.status = :status`;
needToOrderSql += ` and b.status = :status`;
needToOrderTotalSql += ` and b.status = :status`;
whereParams.status = actionBody.status;
} }
if(actionBody.fuzzy_code){ if(actionBody.fuzzy_code){
needSql += ` and ( a.needNo like :fuzzy_code or a.channelNeedNo like :fuzzy_code or a.publishMobile like :fuzzy_code)`; needSql += ` and ( a.needNo like :fuzzy_code or a.channelNeedNo like :fuzzy_code or a.publishMobile like :fuzzy_code)`;
...@@ -374,12 +398,13 @@ class NeedinfoService extends ServiceBase { ...@@ -374,12 +398,13 @@ class NeedinfoService extends ServiceBase {
} }
return system.getResult(data); return system.getResult(data);
} }
/**
* 修改需求商机推送状态 /**
* @param actionBody * 修改需求商机推送状态
* @returns {Promise<void>} * @param actionBody
*/ * @returns {Promise<void>}
async updateNeedPushStatus(actionBody) { */
async updateNeedPushStatus(actionBody) {
let channelNeedNo = actionBody.intentionBizId; let channelNeedNo = actionBody.intentionBizId;
let setObj = { let setObj = {
status: 'yts', status: 'yts',
...@@ -451,10 +476,7 @@ class NeedinfoService extends ServiceBase { ...@@ -451,10 +476,7 @@ class NeedinfoService extends ServiceBase {
channelNeedNo:fqNeed.channelNeedNo, channelNeedNo:fqNeed.channelNeedNo,
city:fqNeed.city, city:fqNeed.city,
province:fqNeed.province, province:fqNeed.province,
publishContent: fqNeed.publishContent,
publishMobile:fqNeed.publishMobile, publishMobile:fqNeed.publishMobile,
notes:fqNeed.notes,
followContent:fqNeed.followContent,
disposeNotes:fqNeed.disposeNotes, disposeNotes:fqNeed.disposeNotes,
typeCode:fqNeed.typeCode, typeCode:fqNeed.typeCode,
created_at:fqNeed.created_at created_at:fqNeed.created_at
......
...@@ -841,6 +841,48 @@ class AliyunQcService { ...@@ -841,6 +841,48 @@ class AliyunQcService {
await this.needsolutionDao.update(updateObj);//方案状态修改 await this.needsolutionDao.update(updateObj);//方案状态修改
return system.getResultSuccess(needinfo); return system.getResultSuccess(needinfo);
} }
//接收tm用户方案反馈
async tmFeedbackSubmit(pobj) {
var ab = pobj.actionBody;
if (!ab.intentionBizId) {
return system.getResultFail(-101, "渠道需求编号错误");
}
if (!ab.description) {
return system.getResultFail(-102, "问题描述不能为空");
}
//获取需求信息
var needinfo = await this.needinfoDao.model.findOne({
where: { channelNeedNo: ab.intentionBizId }, raw: true
});
if (!needinfo) {
return system.getResultFail(-104, "未知方案需求");
}
if (needinfo.status == "ygb") {
return system.getResultFail(-105, "该方案需求状态为" + needinfo.statusName + ",不能执行此操作");
}
//获取方案信息
var ns = await this.needsolutionDao.model.findOne({
where: { channelNeedNo: ab.intentionBizId, isInvalid: 0 }, raw: true
});
if (!ns) {
return system.getResultSuccess();
}
var intentionStatusList = ["未知", "⽅案待服务商确认", "⽅案待⽤户确认", "处理中", "已完成", "已关闭"];
var updateObj = {
id: ns.id
};
var solutionContent = ns.solutionContent;
solutionContent.customerRemark = ab.description;
solutionContent.needStatus = 1;
updateObj["status"] = "ybh";
solutionContent.needStatusName = intentionStatusList[ab.intentionStatus];
solutionContent = JSON.stringify(solutionContent);
updateObj["solutionContent"] = solutionContent;
await this.needsolutionDao.update(updateObj);//方案状态修改
return system.getResultSuccess(needinfo);
}
//接收方案编号(方案推送至阿里后,接收保存方案信息) //接收方案编号(方案推送至阿里后,接收保存方案信息)
async receiveProgrammeNo(pobj) { async receiveProgrammeNo(pobj) {
var ab = pobj.actionBody; var ab = pobj.actionBody;
......
...@@ -40,6 +40,9 @@ class BaseQcService { ...@@ -40,6 +40,9 @@ class BaseQcService {
107: "管局已受理" 107: "管局已受理"
}; };
this.icpApplicationStatusReference = { this.icpApplicationStatusReference = {
504: "创建交付订单",
505: "资料收集完成",
506: "资料加工完成",
507: "完成账户注册", 507: "完成账户注册",
508: "服务商完成提交资料到⼯信部", 508: "服务商完成提交资料到⼯信部",
509: "⼯信部已受理", 509: "⼯信部已受理",
...@@ -231,12 +234,28 @@ class BaseQcService { ...@@ -231,12 +234,28 @@ class BaseQcService {
if (!solution) { if (!solution) {
return system.getResultFail(-103, "方案交付信息有误"); return system.getResultFail(-103, "方案交付信息有误");
} }
if (needinfo.channelTypeCode == "7") {//edi //判断属于百度还是易名
ab.solutionContent.solution.IcpType = 2; if(needinfo.uapp_id == 44){
} else if (needinfo.channelTypeCode == "5") {//icp if (needinfo.channelTypeCode == "7") {//edi
ab.solutionContent.solution.IcpType = 1; ab.solutionContent.solution.IcpType = 2;
} else { } else if (needinfo.channelTypeCode == "5") {//icp
return system.getResultFail(-208, "需求业务类型有误"); ab.solutionContent.solution.IcpType = 1;
} else {
return system.getResultFail(-208, "需求业务类型有误");
}
}
if(needinfo.uapp_id == 52){
if (needinfo.channelTypeCode == "7") {//edi
ab.solutionContent.solution.IcpType = 2;
} else if (needinfo.channelTypeCode == "5") {//icp
ab.solutionContent.solution.IcpType = 1;
} else if (needinfo.channelTypeCode == "icpnb") {//icpnb
ab.solutionContent.solution.IcpType = 4;
} else if (needinfo.channelTypeCode == "edinb") {//edinb
ab.solutionContent.solution.IcpType = 3;
} else {
return system.getResultFail(-208, "需求业务类型有误");
}
} }
if (!solution.CompanyName) { if (!solution.CompanyName) {
return system.getResultFail(-105, "公司名不能为空"); return system.getResultFail(-105, "公司名不能为空");
...@@ -529,6 +548,16 @@ class BaseQcService { ...@@ -529,6 +548,16 @@ class BaseQcService {
if (ab.officialFileURL) { if (ab.officialFileURL) {
ab["OfficialFileURL"] = ab.officialFileURL; ab["OfficialFileURL"] = ab.officialFileURL;
} }
//2021-3-18 addNew
if (ab.officialFileURL) {
ab["CertificateNumber"] = ab.certificateNumber;
}
if (ab.officialFileURL) {
ab["CertificateStartTime"] = ab.certificateStartTime;
}
if (ab.officialFileURL) {
ab["CertificateEndTime"] = ab.certificateEndTime;
}
var ns = await this.needsolutionDao.model.findOne({ var ns = await this.needsolutionDao.model.findOne({
where: { orderNo: ab.orderNo }, raw: true where: { orderNo: ab.orderNo }, raw: true
...@@ -694,7 +723,11 @@ class BaseQcService { ...@@ -694,7 +723,11 @@ class BaseQcService {
"OfficialFileURL": ab.OfficialFileURL || "", "OfficialFileURL": ab.OfficialFileURL || "",
"ApplicationStatus": ab.ApplicationStatus, "ApplicationStatus": ab.ApplicationStatus,
"ApplicationStatusName": this.icpApplicationStatusReference[ab.ApplicationStatus], "ApplicationStatusName": this.icpApplicationStatusReference[ab.ApplicationStatus],
"created_at": new Date() "created_at": new Date(),
//2021-3-18 addNew
"CertificateNumber":ab.CertificateNumber || "",//证书编号
"CertificateStartTime":ab.CertificateStartTime || "",//证书有效期 开始时间
"CertificateEndTime":ab.CertificateEndTime || ""//证书有效期 结束时间
}; };
applicationStatusList.push(statusObj); applicationStatusList.push(statusObj);
solutionContent.applicationStatusList = applicationStatusList; solutionContent.applicationStatusList = applicationStatusList;
......
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