Commit 846ee4e8 by 宋毅

新接口

parent ab84846f
...@@ -24,7 +24,6 @@ class APIBase { ...@@ -24,7 +24,6 @@ class APIBase {
//-----------------------新的模式------------------开始 //-----------------------新的模式------------------开始
async doexecMethod(gname, methodname, pobj, query, req) { async doexecMethod(gname, methodname, pobj, query, req) {
req.requestId = this.getUUID(); req.requestId = this.getUUID();
try { try {
var shaStr = await sha256(JSON.stringify(pobj)); var shaStr = await sha256(JSON.stringify(pobj));
......
var APIBase = require("../../api.base"); let APIBase = require("../../api.base");
var system = require("../../../system"); let system = require("../../../system");
var settings = require("../../../../config/settings"); let settings = require("../../../../config/settings");
const uuidv4 = require('uuid/v4');
/** /**
* icp通知接口(百度icp接入) * 增值服务订单服务
* 庄冰 2020.10.22
*/ */
class Order extends APIBase { class Order extends APIBase {
constructor() { constructor() {
...@@ -12,207 +11,75 @@ class Order extends APIBase { ...@@ -12,207 +11,75 @@ class Order extends APIBase {
this.gatewaypushlogSve = system.getObject("service.common.gatewaypushlogSve"); this.gatewaypushlogSve = system.getObject("service.common.gatewaypushlogSve");
} }
getUUID() {
var uuid = uuidv4();
var u = uuid.replace(/\-/g, "");
return u;
}
getResultSuccess(requestId) {
return {
"status": 0,
"msg": "success",
"data":null,
"requestId": requestId
};
}
getResultFail(errmsg) {
var self = this;
return {
"status":-1,
"msg": errmsg,
"requestId": self.getUUID(),
"data":null,
"bizmsg":"empty"
};
}
//icp状态变更 //icp状态变更
async notify(pobj,obj,req) { async notify(pobj, obj, req) {
var self = this; if (!pobj.appInfo || !pobj.appInfo.uapp_key || !pobj.appInfo.uapp_secret) {
if(!pobj.appInfo || !pobj.appInfo.uapp_key || !pobj.appInfo.uapp_secret){ return system.getResultFailByErrMsg("未知应用或应用未启用");
return self.getResultFail("未知应用或应用未启用");
} }
if (!pobj.orderNo) { if (!pobj.orderNo) {
return self.getResultFail("orderNo不能为空"); return system.getResultFailByErrMsg("orderNo不能为空");
}
if(!pobj.isDirectBuy || pobj.isDirectBuy=="0"){
pobj.isDirectBuy=0;
} }
pobj.isDirectBuy = pobj.isDirectBuy || 0;//1是直购,0是下单未付款,算订单未付款需求
pobj.status = 1; pobj.status = 1;
if (pobj.isDirectBuy==0 && !pobj.bizId) { if (pobj.isDirectBuy == 1 && !pobj.phone) {
return self.getResultFail("非直接下单bizId不能为空"); return system.getResultFailByErrMsg("直接下单phone不能为空");
}
if (pobj.isDirectBuy==1 && !pobj.phone) {
return self.getResultFail("直接下单phone不能为空");
} }
if (pobj.isDirectBuy==1 && !pobj.consultType) { if (pobj.isDirectBuy == 1 && !pobj.consultType) {
return self.getResultFail("直接下单consultType不能为空"); return system.getResultFailByErrMsg("直接下单consultType不能为空");
}else{ } else {
if (pobj.consultType=="ICP") { if (pobj.consultType == "ICP") {
pobj.consultType="5"; pobj.consultType = "5";
} }
if (pobj.consultType=="EDI") { if (pobj.consultType == "EDI") {
pobj.consultType="7"; pobj.consultType = "7";
}
}
pobj.action_type = "icpOrderStatus";
if (pobj.area) {
switch (pobj.area) {
case "BEIJING":
pobj.area = "1";
break;
case "SHANGHAI":
pobj.area = "2";
break;
case "FUJIAN":
pobj.area = "3";
break;
case "GUANGXI":
pobj.area = "4";
break;
case "GUANGDONG":
pobj.area = "5";
break;
case "ANHUI":
pobj.area = "6";
break;
case "HENAN":
pobj.area = "7";
break;
case "HUBEI":
pobj.area = "8";
break;
case "ZHEJIANG":
pobj.area = "9";
break;
case "JIANGSU":
pobj.area = "10";
break;
case "SHANDONG":
pobj.area = "11";
break;
case "SHANGXI_SHAN":
pobj.area = "12";
break;
case "NINGXIA":
pobj.area = "13";
break;
case "GANSU":
pobj.area = "14";
break;
case "XINJIANG":
pobj.area = "15";
break;
case "QINGHAI":
pobj.area = "16";
break;
case "TIANJIN":
pobj.area = "17";
break;
case "CHONGQING":
pobj.area = "18";
break;
case "HEBEI":
pobj.area = "19";
break;
case "SHANXI_JIN":
pobj.area = "20";
break;
case "LIAONING":
pobj.area = "21";
break;
case "JINLIN":
pobj.area = "22";
break;
case "HEILONGJIANG":
pobj.area = "23";
break;
case "JIANGXI":
pobj.area = "24";
break;
case "HUNAN":
pobj.area = "25";
break;
case "SICHUAN":
pobj.area = "26";
break;
case "GUIZHOU":
pobj.area = "27";
break;
case "YUNNAN":
pobj.area = "28";
break;
case "NEIMENGGU":
pobj.area = "29";
break;
case "XIZANG":
pobj.area = "30";
break;
case "HANWAIZI":
pobj.area = "31";
break;
case "QUANWAIZI":
pobj.area = "31";
break;
case "WAIZI":
pobj.area = "31";
break;
case "HAINAN":
pobj.area = "34";
break;
default:
break;
} }
} }
pobj.area = settings.areaConfig[pobj.area];
// pobj.action_type = "icpOrderStatus";
if (!pobj.area) { if (!pobj.area) {
return self.getResultFail("area参数错误"); return self.getResultFail("area参数错误");
} }
var param = { let param = {
requestId: req.requestId || self.getUUID(), requestId: req.requestId || self.getUUID(),
requestUrl: "/icp/order/notify", // requestUrl: "/icp/order/notify",
requestjson: JSON.stringify(pobj),//请求地址 requestjson: JSON.stringify(pobj),//请求地址
pushUrl: "/action/intentionapi/springBoard",//调用地址 // pushUrl: "/action/intentionapi/springBoard",//调用地址
pushActionType: "icpOrderStatus",//调用参数 // pushActionType: "icpOrderStatus",//调用参数
pushtimes: 0,//推送次数 pushtimes: 0,//推送次数
pushStatus: "wts",//推送状态 pushStatus: "wts",//推送状态
version: 1,
interface_path: "service.receiveSve.icpOrderSve",//接口路径
interface_method: "submitOrder",//接口方法
} }
await self.gatewaypushlogSve.create(param); await this.gatewaypushlogSve.create(param);
return self.getResultSuccess(param.requestId); return system.getResultSuccess(null);
} }
async close(pobj,obj,req){ async close(pobj, obj, req) {
var self = this; if (!pobj.appInfo || !pobj.appInfo.uapp_key || !pobj.appInfo.uapp_secret) {
if(!pobj.appInfo || !pobj.appInfo.uapp_key || !pobj.appInfo.uapp_secret){ return system.getResultFailByErrMsg("未知应用或应用未启用");
return self.getResultFail("未知应用或应用未启用");
} }
if (!pobj.orderNo) { if (!pobj.orderNo) {
return self.getResultFail("orderNo不能为空"); return system.getResultFailByErrMsg("orderNo不能为空");
} }
pobj.channelOrderNo = pobj.orderNo; pobj.channelOrderNo = pobj.orderNo;
pobj.action_type = "icpOrderClose"; // pobj.action_type = "icpOrderClose";
var param = { let param = {
requestId: req.requestId || self.getUUID(), requestId: req.requestId || self.getUUID(),
requestUrl: "/icp/order/close", // requestUrl: "/icp/order/close",
requestjson: JSON.stringify(pobj),//请求地址 requestjson: JSON.stringify(pobj),//请求地址
pushUrl: "/action/intentionapi/springBoard",//调用地址 // pushUrl: "/action/intentionapi/springBoard",//调用地址
pushActionType: "icpOrderClose",//调用参数 // pushActionType: "icpOrderClose",//调用参数
pushtimes: 0,//推送次数 pushtimes: 0,//推送次数
pushStatus: "wts",//推送状态 pushStatus: "wts",//推送状态
version: 1,
interface_path: "service.receiveSve.icpOrderSve",//接口路径
interface_method: "closeOrder",//接口方法
} }
await self.gatewaypushlogSve.create(param); await this.gatewaypushlogSve.create(param);
return self.getResultSuccess(param.requestId); return system.getResultSuccess(null);
} }
} }
module.exports = Order; module.exports = Order;
\ No newline at end of file
...@@ -16,12 +16,10 @@ module.exports = { ...@@ -16,12 +16,10 @@ module.exports = {
// }, // },
], ],
}, },
"bizs": { "bizs": {},
},
"pdict": { "pdict": {
"logLevel": { "debug": 0, "info": 1, "warn": 2, "error": 3, "fatal": 4 }, "logLevel": {"debug": 0, "info": 1, "warn": 2, "error": 3, "fatal": 4},
"push_return_type": { "0": "推送失败", "1": "推送成功" }, "push_return_type": {"0": "推送失败", "1": "推送成功"},
}, }
} }
} }
\ No newline at end of file
...@@ -2,58 +2,58 @@ const system = require("../../../system"); ...@@ -2,58 +2,58 @@ const system = require("../../../system");
const settings = require("../../../../config/settings"); const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey); const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => { module.exports = (db, DataTypes) => {
return db.define("gatewaypushlog", { return db.define("gatewaypushlog", {
requestId: DataTypes.STRING, requestId: DataTypes.STRING,
requestUrl: DataTypes.STRING, //请求地址 requestUrl: DataTypes.STRING, //请求地址
requestjson: DataTypes.STRING,//请求地址 requestjson: DataTypes.STRING,//请求地址
pushUrl: DataTypes.STRING,//调用地址 pushUrl: DataTypes.STRING,//调用地址
pushActionType: DataTypes.STRING,//调用参数 pushActionType: DataTypes.STRING,//调用参数
pushtimes:DataTypes.INTEGER,//推送次数 pushtimes: DataTypes.INTEGER,//推送次数
pushStatus:DataTypes.STRING,//推送状态 pushStatus: DataTypes.STRING,//推送状态
error:DataTypes.STRING(5000),//错误信息 error: DataTypes.STRING(5000),//错误信息
}, { interface_path: DataTypes.STRING(1024),//接口路径
paranoid: false,//假的删除 interface_method: DataTypes.STRING,//接口方法
underscored: true, }, {
version: true, paranoid: false,//假的删除
freezeTableName: true, underscored: true,
timestamps: true, version: true,
updatedAt: false, freezeTableName: true,
//freezeTableName: true, timestamps: true,
// define the table's name updatedAt: false,
tableName: 'gateway_pushlog', //freezeTableName: true,
validate: { // define the table's name
tableName: 'gateway_pushlog',
}, validate: {},
indexes: [ indexes: [
// Create a unique index on email // Create a unique index on email
// { // {
// unique: true, // unique: true,
// fields: ['email'] // fields: ['email']
// }, // },
// //
// // Creates a gin index on data with the jsonb_path_ops operator // // Creates a gin index on data with the jsonb_path_ops operator
// { // {
// fields: ['data'], // fields: ['data'],
// using: 'gin', // using: 'gin',
// operator: 'jsonb_path_ops' // operator: 'jsonb_path_ops'
// }, // },
// //
// // By default index name will be [table]_[fields] // // By default index name will be [table]_[fields]
// // Creates a multi column partial index // // Creates a multi column partial index
// { // {
// name: 'public_by_author', // name: 'public_by_author',
// fields: ['author', 'status'], // fields: ['author', 'status'],
// where: { // where: {
// status: 'public' // status: 'public'
// } // }
// }, // },
// //
// // A BTREE index with a ordered field // // A BTREE index with a ordered field
// { // {
// name: 'title_index', // name: 'title_index',
// method: 'BTREE', // method: 'BTREE',
// fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}] // fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}]
// } // }
] ]
}); });
} }
let system = require("../../../system");
let settings = require("../../../../config/settings");
const AppServiceBase = require("../../app.base");
class IcpNeedService extends AppServiceBase {
constructor() {
super();
this.utilsPushSve = system.getObject("service.utilsSve.utilsPushSve");
}
async submitNeed(pobj) {
if (!pobj.actionBody.intentionBizId) {
return system.getResult(null, "actionBody.intentionBizId can not be empty,6000001");
}
let sobj = pobj;
sobj.actionType = "getProductTypeInfo";
let url = settings.centerAppUrl() + "action/opProduct/springBoard";
let rtn = await this.execClient.execPost(sobj, url);
if (!rtn || !rtn.stdout) {
return system.getResultFail(-5015, "需求类型查询失败,6000002");
}
let data = JSON.parse(rtn.stdout);
if (data.status != 0) {
return system.getResultFail(-5015, "需求类型查询失败6000003");
}
pobj.actionBody.service_product_id = data.data.service_product_id;
pobj.actionBody.productId = data.data.service_product_id;
pobj.actionBody.appName = pobj.appInfo.app_name;
pobj.actionBody.type_code = data.data.type_code;
pobj.actionBody.type_name = data.data.type_name;
pobj.actionBody.channel_type_code = data.data.channel_type_code;
pobj.actionBody.channel_type_name = data.data.channel_type_name;
pobj.actionBody.type = pobj.actionBody.channel_type_code;
pobj.actionBody.idempotentId = pobj.actionBody.intentionBizId;
pobj.actionBody.idempotentSourceName = pobj.appInfo.app_name;
// pobj.actionBody.type = "baidu.icp";
// pobj.actionBody.idempotentSource = "baidu_icp";
//推送云服需要的type、idempotentSource两个参数确定,先去掉试一试
// if (pobj.actionBody.channel_type_code == 5) {
// pobj.actionBody.type = "baidu.icp";
// pobj.actionBody.idempotentSource = "baidu_icp";
// } else if (pobj.actionBody.channel_type_code == 7) {
// pobj.actionBody.type = "baidu.edi";
// pobj.actionBody.idempotentSource = "baidu_edi";
// } else if (pobj.actionBody.channel_type_code == "NC") {
// pobj.actionBody.type = "baidu.wangwen";
// pobj.actionBody.idempotentSource = "baidu_wangwen";
// } else if (pobj.actionBody.channel_type_code == "RT") {
// pobj.actionBody.type = "baidu.radiotv";
// pobj.actionBody.idempotentSource = "baidu_radiotv";
// }
// if (pobj.appInfo && pobj.appInfo.uapp_id && pobj.appInfo.uapp_id == "52") {
// if (pobj.actionBody.channel_type_code == 5) {
// pobj.actionBody.type = "yiming.icp";
// pobj.actionBody.idempotentSource = "yiming.icp";
// } else if (pobj.actionBody.channel_type_code == 7) {
// pobj.actionBody.type = "yiming.edi";
// pobj.actionBody.idempotentSource = "yiming.edi";
// } else if (pobj.actionBody.channel_type_code == "ICPNB") {
// pobj.actionBody.type = "yiming.icpnb";
// pobj.actionBody.idempotentSource = "yiming.icpnb";
// } else if (pobj.actionBody.channel_type_code == "EDINB") {
// pobj.actionBody.type = "yiming.edinb";
// pobj.actionBody.idempotentSource = "yiming.edinb";
// } else if (pobj.actionBody.channel_type_code == "ICPXQ") {
// pobj.actionBody.type = "yiming.icpxq";
// pobj.actionBody.idempotentSource = "yiming.icpxq";
// } else if (pobj.actionBody.channel_type_code == "EDIXQ") {
// pobj.actionBody.type = "yiming.edixq";
// pobj.actionBody.idempotentSource = "yiming.edixq";
// }
// //外资暂时产品库未上架
// else if (pobj.actionBody.channel_type_code == "ICPWZ") {
// pobj.actionBody.type = "yiming.icpwz";
// pobj.actionBody.idempotentSource = "yiming.icpwz";
// } else if (pobj.actionBody.channel_type_code == "EDIWZ") {
// pobj.actionBody.type = "yiming.ediwz";
// pobj.actionBody.idempotentSource = "yiming.ediwz";
// }
// }
pobj.actionBody.level = "A";
pobj.actionType = "submitNeed";
let reqUrl = settings.centerOrderUrl() + "action/need/springBoard";
let result = await this.restPostUrl(pobj, reqUrl);
if (result.status == 0) {
this.utilsPushSve.business2Channel(pobj, "pushNeedICPBusinessNew");
}
return result;
}
}
module.exports = IcpNeedService;
\ No newline at end of file
let system = require("../../../system");
let settings = require("../../../../config/settings");
const AppServiceBase = require("../../app.base");
class IcpOrderService extends AppServiceBase {
constructor() {
super();
this.utilsPushSve = system.getObject("service.utilsSve.utilsPushSve");
}
async submitOrder(pobj) {
pobj.province = pobj.area;
if (pobj.appInfo.uapp_id == "52") { // 易名渠道
if (pobj.consultType == "5" || pobj.consultType == "7") { // ICP 申请
pobj.province = pobj.area + '-申请';
}
}
let sobj = {
actionType: "getIcpProduce",
actionBody: {typeCode: pobj.actionBody.consultType, province: pobj.province},
appInfo: pobj.appInfo,
actionProcess: pobj.actionProcess
}
if (pobj.param1 || pobj.param2) {
sobj.additionsDesc = pobj.param1 + pobj.param2;
}//附加参数
let productUrl = settings.centerAppUrl() + "action/opProduct/springBoard";
let rtn = await this.execClient.execPost(sobj, productUrl);
if (!rtn || !rtn.stdout) {
return system.getResultFail(-5010, "产品查询失败,6100001");
}
let productItem = JSON.parse(rtn.stdout);
if (productItem.status != 0) {
return system.getResultFail(-5010, "产品查询失败,6100002");
}
pobj.actionBody.totalSum = productItem.data.price;
pobj.actionBody.orderPrice = productItem.data.price;
pobj.actionBody.payTotalSum = productItem.data.price;
pobj.actionBody.payCode = productItem.data.payCode;
pobj.actionBody.productPriceId = productItem.data.productPriceId;
pobj.actionBody.channelItemCode = productItem.data.channelItemCode;
pobj.actionBody.channelNeedNo = productItem.data.channelNeedNo;
pobj.actionBody.needNo = productItem.data.needNo;
pobj.actionBody.quantity = 1;
pobj.actionBody.channelOrder = {
channelServiceNo: pobj.actionBody.orderNo,
channelOrderNo: pobj.actionBody.orderNo,
orderStatus: 2
}
let orderItem = await this.utilsOrderSve.addOrder(pobj, pobj.actionBody);
if (orderItem.status != 0 && orderItem.status != -1) {
return system.getResultFail(-5010, "订单创建失败,6100003");
}
if (orderItem.data) {
pobj.actionBody.orderNo = pobj.actionBody.channelOrder.channelOrderNo;
}
pobj.actionBody.channelSolutionNo = pobj.actionBody.orderNo;
pobj.actionType = "receiveSolutionPayInfoNew";
let url = settings.centerOrderUrl() + "action/icapi/springBoard";
let solutionRes = await this.execClient.execPost(pobj, url);
if (!solutionRes || !solutionRes.stdout) {
return system.getResultFail(-5010, "方案创建失败,6100004");
}
let solutionItem = JSON.parse(solutionRes.stdout);
if (solutionItem.status != 0) {
return system.getResultFail(-5010, "方案创建失败,6100005");
}
// if (!solutiondata.data) {
// return system.getResultFail(-5012, "方案查询数据为空");
// }
// if (solutiondata.data && solutiondata.data.channelNeedNo) {
// pobj.actionBody.needId = solutiondata.data.channelNeedNo;
// }
// if (pobj.actionBody.channelItemCode == '5') {
// pobj.actionBody.regType = "baidu.icp";
// } else if (pobj.actionBody.channelItemCode == '7') {
// pobj.actionBody.regType = "baidu.edi";
// } else if (pobj.actionBody.channelItemCode == 'NC') {
// pobj.actionBody.regType = "baidu.wangwen";
// } else if (pobj.actionBody.channelItemCode == 'RT') {
// pobj.actionBody.regType = "baidu.radiotv";
// }
//
// if (pobj && pobj.appInfo && pobj.appInfo.uapp_id && pobj.appInfo.uapp_id == '52') {
// if (pobj.actionBody.channelItemCode == '5') {
// pobj.actionBody.regType = "yiming.icp";
// } else if (pobj.actionBody.channelItemCode == '7') {
// pobj.actionBody.regType = "yiming.edi";
// } else if (pobj.actionBody.channelItemCode == 'ICPXQ') {
// pobj.actionBody.regType = "yiming.icpxq";
// } else if (pobj.actionBody.channelItemCode == 'EDIXQ') {
// pobj.actionBody.regType = "yiming.edixq";
// } else if (pobj.actionBody.channelItemCode == 'ICPNB') {
// pobj.actionBody.regType = "yiming.icpnb";
// } else if (pobj.actionBody.channelItemCode == 'EDINB') {
// pobj.actionBody.regType = "yiming.edinb";
// } else if (pobj.actionBody.channelItemCode == 'ICPWZ') {
// pobj.actionBody.regType = "yiming.icpwz";
// } else if (pobj.actionBody.channelItemCode == 'EDIWZ') {
// pobj.actionBody.regType = "yiming.ediwz";
// }
// }
let yfObj = {
actionBody: {
area: pobj.actionBody.province,
idempotentSource: pobj.actionBody.regType,
orderNo: pobj.actionBody.channelOrder.channelOrderNo,
orderPrice: Number(pobj.actionBody.orderPrice / 100),
phone: pobj.actionBody.publishMobile,
needId: pobj.actionBody.channelOrder.channelOrderNo,
companyName: pobj.actionBody.CompanyName || '',
appName: pobj.appInfo.app_name || '',
sku: data.data.service_code || ''
},
appInfo: pobj.appInfo
}
let yunfuPushRes = await this.utilsPushSve.business2Channel(yfObj, "pushOrderICPBusinessNew");
if (pobj.actionBody.isDirectBuy && pobj.actionBody.isDirectBuy == 1) {//直接下单需执行添加订单业务员操作
if (yunfuPushRes && yunfuPushRes.status == 0) {
if (yunfuPushRes.data && yunfuPushRes.data.data) {
let deliveryObj = {
actionBody: {
orderNo: yunfuPushRes.data.orderNo,
needsolution: yunfuPushRes.data.solutionContent,
channelNeedNo: yunfuPushRes.data.channelNeedNo,
channelSolutionNo: yunfuPushRes.data.channelSolutionNo,
skuCode: data.data.payCode,
servicer: {
code: 'gsb',
name: '公司宝'
}
},
appInfo: pobj.appInfo
};
let resData = yunfuPushRes.data.data;
let salesmanInfo = {
salesmanName: resData.orderList && resData.orderList.length > 0 ? resData.orderList[0].operatorName : "",
salesmanChannelId: resData.orderList && resData.orderList.length > 0 ? resData.orderList[0].operator : "",
};
deliveryObj.actionBody.needsolution = {salesmanInfo: salesmanInfo, orderNo: orderrtn.data.orderNo}
this.utilsPushSve.business2Channel(deliveryObj, "pushDeliveryOrder");
}
}
}
return system.getResultSuccess(null);
}
async closeOrder(pobj) {
let actionBody = pobj.actionBody;
let url = settings.centerOrderUrl() + "action/qcapi/springBoard";
let rtn = await this.restPostUrl(pobj, url);
if (rtn.status == 0 && rtn.data) {
let channelOrderNo = pobj.actionBody.orderNo;
pobj.actionBody.orderNo = rtn.data.orderNo;
pobj.actionType = "delOrder";
let orderrtn = await this.utilsOrderSve.delOrder(pobj, actionBody);
if (orderrtn.status < 0) {
return system.getResultFail(-5022, "订单关闭失败");
}
let tmpObj = {
actionBody: {
orderNo: rtn.data.orderNo,
channelNeedNo: rtn.data.channelNeedNo,
needsolution: rtn.data.solutionContent
},
appInfo: pobj.appInfo
}
this.utilsPushSve.business2Channel(tmpObj, "pushDeliveryStatusNotify");
// tmpObj.actionBody.orderNo = channelOrderNo;
let tmpObj2 = {
actionBody: {
orderNo: channelOrderNo,
channelNeedNo: rtn.data.channelNeedNo || channelOrderNo,//做云服和企服通没有渠道需求号的兼容
needsolution: rtn.data.solutionContent
},
appInfo: pobj.appInfo
};
this.utilsPushSve.business2Channel(tmpObj2, "pushOrderICPClose");
}//通知更新状态
return rtn;
}
}
module.exports = IcpOrderService;
\ No newline at end of file
...@@ -218,6 +218,13 @@ class System { ...@@ -218,6 +218,13 @@ class System {
data: data, data: data,
}; };
} }
static getResultFailByErrMsg(errmsg = "fail") {
return {
status: -1,
msg: errmsg,
data: "",
};
}
/** /**
* 请求返回失败 * 请求返回失败
......
...@@ -6,7 +6,7 @@ const utilsFeishuSve = system.getObject("service.utilsSve.utilsFeishuSve"); ...@@ -6,7 +6,7 @@ const utilsFeishuSve = system.getObject("service.utilsSve.utilsFeishuSve");
const signSve = system.getObject("service.common.signSve"); const signSve = system.getObject("service.common.signSve");
const xml2js = require('xml2js'); const xml2js = require('xml2js');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const { PDICT } = require("../../config/businessConfig"); const {PDICT} = require("../../config/businessConfig");
const settings = require("../../config/settings"); const settings = require("../../config/settings");
module.exports = function (app) { module.exports = function (app) {
...@@ -243,7 +243,7 @@ module.exports = function (app) { ...@@ -243,7 +243,7 @@ module.exports = function (app) {
return; return;
} }
// 2020 0812 lin 只去掉了check,因为要记录智能诊断的返回值,其他接口暂时未去掉 // 2020 0812 lin 只去掉了check,因为要记录智能诊断的返回值,其他接口暂时未去掉
if (["getAppTokenByHosts", "getAppTokenByAppKey", "test", "getIndustries", "getSecondIndustries", "getQualificationByIndustry", "counselling", "queryTradeProduceList","getNeedComparisonList"].indexOf(req.body.actionType) >= 0) { if (["getAppTokenByHosts", "getAppTokenByAppKey", "test", "getIndustries", "getSecondIndustries", "getQualificationByIndustry", "counselling", "queryTradeProduceList", "getNeedComparisonList"].indexOf(req.body.actionType) >= 0) {
req.body.actionBody.appHosts = req.host; req.body.actionBody.appHosts = req.host;
next(); next();
return; return;
...@@ -394,32 +394,29 @@ module.exports = function (app) { ...@@ -394,32 +394,29 @@ module.exports = function (app) {
//-----------------------新的模式---------api---------开始 //-----------------------新的模式---------api---------开始
//百度手动获取签名sign方法 //百度手动获取签名sign方法
// app.post("/baidu/creatSign", async function (req, res, next) { app.post("/baidu/creatSign", async function (req, res, next) {
// if (!req.body.key) { if (!req.body.key) {
// res.end({ code: -200, message: "缺少加签秘钥key参数" }); res.end({code: -200, message: "缺少加签秘钥key参数"});
// return; return;
// } }
// if (!req.body.obj) { if (!req.body.obj) {
// res.end({ code: -200, message: "缺少obj参数" }); res.end({code: -200, message: "缺少obj参数"});
// return; return;
// } }
// let obj = req.body.obj; let obj = req.body.obj;
// let key = req.body.key; let key = req.body.key;
// let result = await signSve.createSign(obj, key); let result = await signSve.createSign(obj, key);
// res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
// return; return;
// }); });
app.all("/api/*", async function (req, res, next) { app.all("/api/*", async function (req, res, next) {
var result = system.getResult(null, "req method must is post"); let result = system.getResult(null, "req method must is post");
if (req.method != "POST") { if (req.method != "POST") {
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }
console.log(req.originalUrl, "sy-------------------------------00001---yy"); let appkey = req.headers["appkey"] || "";
if (PDICT.apiAliSendKeyPathList.indexOf(req.originalUrl) >= 0) { if (PDICT.apiAliSendKeyPathList.indexOf(req.originalUrl) >= 0) {
//验证数据key
var appkey = req.headers["appkey"] || "";
if (!appkey) { if (!appkey) {
result.msg = "req headers appkey can not be empty"; result.msg = "req headers appkey can not be empty";
result.data = null; result.data = null;
...@@ -434,18 +431,16 @@ module.exports = function (app) { ...@@ -434,18 +431,16 @@ module.exports = function (app) {
} }
next(); next();
return; return;
} }//规定的请求path、请求头中appkey验证是否等于201912031344的路由【符合放过】
if (PDICT.apiSecretPathList.indexOf(req.originalUrl) >= 0) { if (PDICT.apiSecretPathList.indexOf(req.originalUrl) >= 0) {
//验证数据签名
console.log("apiSecretPathList", req.headers)
var appkey = req.headers["appkey"] || "";
if (!appkey) { if (!appkey) {
result.msg = "req headers appkey can not be empty"; result.msg = "req headers appkey can not be empty";
result.data = null; result.data = null;
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }
var sign = req.headers["sign"] || ""; let sign = req.headers["sign"] || "";
if (!sign) { if (!sign) {
result.msg = "req headers sign can not be empty"; result.msg = "req headers sign can not be empty";
result.data = null; result.data = null;
...@@ -453,18 +448,17 @@ module.exports = function (app) { ...@@ -453,18 +448,17 @@ module.exports = function (app) {
return; return;
} }
//1.通过appkey 获取appInfo //1.通过appkey 获取appInfo
var appRes = await signSve.getAppInfoByAppKey(appkey); let appRes = await signSve.getAppInfoByAppKey(appkey);
if (!appRes || appRes.status != 0) { if (!appRes || appRes.status != 0) {
result.msg = "获取应用信息失败"; result.msg = "获取应用信息失败";
result.data = null; result.data = null;
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }
var appInfo = appRes.data; let appInfo = appRes.data;
//2.通过appsecret 验签 //2.通过appsecret 验签
req.body.sign = sign; req.body.sign = sign;
var signParams = req.body; let verifyRes = await signSve.verifySign(req.body, appInfo.uapp_secret);
var verifyRes = await signSve.verifySign(req.body, appInfo.uapp_secret);
if (verifyRes && verifyRes.status == 0) { if (verifyRes && verifyRes.status == 0) {
req.body.appInfo = appInfo; req.body.appInfo = appInfo;
req.appInfo = appInfo; req.appInfo = appInfo;
...@@ -476,22 +470,27 @@ module.exports = function (app) { ...@@ -476,22 +470,27 @@ module.exports = function (app) {
return; return;
} }
} }//规定的请求path、请求头中sign验证的路由【符合放过】
if (["getAppTokenByHosts", "getAppTokenByAppKey", "getTmNclFilterSearch", "feedback", "accountingInfo", "booksInfo"].indexOf(req.body.actionType) >= 0) { if (["getAppTokenByHosts", "getAppTokenByAppKey", "getTmNclFilterSearch", "feedback", "accountingInfo", "booksInfo"].indexOf(req.body.actionType) >= 0) {
req.body.actionBody.appHosts = req.host; req.body.actionBody.appHosts = req.host;
next(); next();
return; return;
} }//规定的actionType请求路由,有getAppTokenByAppKey获取请求头中token【符合放过】
if (req.path.indexOf("/taskapi/") >= 0) { if (req.path.indexOf("/taskapi/") >= 0) {
next(); next();
return; return;
} }//任务请求的路由【符合放过】
if (!req.body.actionType) { if (!req.body.actionType) {
result.msg = "actionType can not be empty"; result.msg = "actionType can not be empty";
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }//actionType不能为空
var token = req.headers["token"] || "";
//验证请求头中的token-------------------------------------------------开始
let token = req.headers["token"] || "";
if (!token) { if (!token) {
result.msg = "req headers token can not be empty"; result.msg = "req headers token can not be empty";
result.data = null; result.data = null;
...@@ -515,14 +514,8 @@ module.exports = function (app) { ...@@ -515,14 +514,8 @@ module.exports = function (app) {
let tmpAppInfo = JSON.parse(decryptResult.data); let tmpAppInfo = JSON.parse(decryptResult.data);
req.body.appInfo = tmpAppInfo; req.body.appInfo = tmpAppInfo;
req.body.actionProcess = tmpAppInfo.app_code; req.body.actionProcess = tmpAppInfo.app_code;
// var cacheManager = system.getObject("db.common.cacheManager"); //验证请求头中的token-------------------------------------------------结束
// var result = await cacheManager["AppTokenByHostsCache"].getCache(token, system.exTime);
// if (result.status != 0) {
// res.end(JSON.stringify(result));
// return;
// }
// req.body.appInfo = result.data;
// req.body.actionProcess = result.data.app_code;
if (PDICT.apiMustUserpinList.indexOf(req.body.actionType) >= 0) { if (PDICT.apiMustUserpinList.indexOf(req.body.actionType) >= 0) {
var userpin = req.headers["userpin"] || ""; var userpin = req.headers["userpin"] || "";
if (!userpin) { if (!userpin) {
...@@ -532,20 +525,6 @@ module.exports = function (app) { ...@@ -532,20 +525,6 @@ module.exports = function (app) {
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }
// var params = {
// "appInfo": req.body.appInfo,
// "actionType": "getLoginInfo",
// "actionBody": {
// "userpin": userpin
// }
// }
// result = await utilsAuthSve.getLoginInfo(params, params.actionBody);
// if (result.status != 0) {
// result.status = system.noLogin;
// result.msg = "user login is invalidation";
// res.end(JSON.stringify(result));
// return;
// }
let userpin_secret_str = null; let userpin_secret_str = null;
jwt.verify(userpin, tokenSecret, function (err, decoded) { // decoded:指的是token解码后用户信息 jwt.verify(userpin, tokenSecret, function (err, decoded) { // decoded:指的是token解码后用户信息
if (err) { //如果token过期则会执行err的代码块 if (err) { //如果token过期则会执行err的代码块
...@@ -565,7 +544,7 @@ module.exports = function (app) { ...@@ -565,7 +544,7 @@ module.exports = function (app) {
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }
}//需要用户登录 }//需要设置用户登录的actionType请求验证
next(); next();
}); });
...@@ -624,6 +603,8 @@ module.exports = function (app) { ...@@ -624,6 +603,8 @@ module.exports = function (app) {
}); });
//-----------------------新的模式---------api---------结束 //-----------------------新的模式---------api---------结束
//-----------------------新的模式---------ICP---------开始 //-----------------------新的模式---------ICP---------开始
app.all("/icp/*", async function (req, res, next) { app.all("/icp/*", async function (req, res, next) {
var result = system.getResult(null, "req method must is post"); var result = system.getResult(null, "req method must is post");
......
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