Commit 5197de48 by Sxy

feat: jd导单

parent f936d9d8
......@@ -304,6 +304,18 @@ class TmOrderAPI extends APIBase {
case "offlinePaymentOrder"://订单线下支付(上传支付凭证)
opResult = await this.orderSve.offlinePaymentOrder(action_body);
break;
case "updateOrderPayStatusJd":// 京东更新订单付款状态
// 查询 修改的判定付款状态为未支付才进行修改,否则不进行处理
opResult = await this.orderSve.checkOrderPayStatus(action_body, pobj, req)
if (opResult && opResult.status == 0) {
opResult = await this.orderSve.updateOrderPayStatus(action_body, pobj, req);
if (opResult.status == 0) {
pobj.actionBody["deliveryOrderNo"] = opResult.data.deliveryOrderNo;
var url = this.pushFqbossDataUrl + "api/channelaccessApi/updateChannelPayStatus";
this.pushData2(opResult, req, pobj, url);
}
}
break;
default:
opResult = system.getResult(null, "action_type参数错误");
break;
......
......@@ -107,6 +107,9 @@ class TmQueryAPI extends APIBase {
case "icheming"://商标智能分析 -----
opResult = await this.toolSve.icheming(action_body, req);
break;
case "pushJdPayOrder":// 京东
opResult = await this.tmquerySve.pushJdPayOrder(action_body, req);
break;
default:
opResult = system.getResult(null, "action_type参数错误");
break;
......
......@@ -215,6 +215,17 @@ class OrderService extends ServiceBase {
return system.getResultSuccess({ deliveryOrderNo: result.deliveryOrderNo });
});
}
async checkOrderPayStatus(action_body, pobj, req) {
var result = await this.ordertmproductDao.getItemByNeedNoOrderNo(action_body.needNoOrderNo, req.app.id);
if (!result) {
return system.getResult(null, "data is empty");
}
if (result.payStatus === "dfk") {
return system.getResultSuccess(result);
}
return system.getResult(null, "付款状态为未支付才进行修改");
}
async op1688ChannelPushOrder(action_body, pobj, req) {
try {
//var reqUrl = "https://inte-mcp.chanjet.com/gsb/getOrder?token=" + action_body.token; //测试环境
......@@ -903,45 +914,45 @@ class OrderService extends ServiceBase {
* @param {*} pobj
* @param {*} actionBody
*/
async getOrderDeliveryFlowInfo(pobj, actionBody, req) {
if (!actionBody.channelUserId) {
return system.getResult(null, "actionBody.channelUserId must not empty");
}
var token = "";
var tokenRes = await this.getCenterChannelToken(req.app);
if (tokenRes && tokenRes.status == 0 && tokenRes.data) {
token = tokenRes.data.token;
}
if (!token) {
return system.getResultFail(-88, "获取token失败");
}
//获取用户userpin
var userpin = "";
pobj.actionType = "getLoginByUserName";
pobj.actionBody.userName = actionBody.channelUserId;
pobj.actionBody.mobile = req.user.userMoblie;
var url = settings.centerChannelUrl() + "web/auth/accessAuth/springBoard";
var userpinResult = await this.execClient.execPushDataPost(pobj, url, token);
if (!userpinResult || !userpinResult.stdout) {
return system.getResult(null, userpinResult.msg);
}
var userpinResultTmp = JSON.parse(userpinResult.stdout);
if (userpinResultTmp.status != 0 && userpinResultTmp.status != 2060) {
return system.getResultFail(-99, "获取userpin失败");
}
userpin = userpinResultTmp.data.userpin;
if (!userpin) {
return system.getResultFail(-88, "获取userpin失败!!");
}
url = settings.centerChannelUrl() + "web/opaction/order/springBoard";
pobj.actionType = "getOrderDeliveryFlowInfo";
var rtn = await this.execClient.execDataPostByTokenUserPin(pobj, url, token, userpin);
if (!rtn || !rtn.stdout) {
return system.getResult(null, "execPost is empty");
}
var result = JSON.parse(rtn.stdout);
return result;
}
async getOrderDeliveryFlowInfo(pobj, actionBody, req) {
if (!actionBody.channelUserId) {
return system.getResult(null, "actionBody.channelUserId must not empty");
}
var token = "";
var tokenRes = await this.getCenterChannelToken(req.app);
if (tokenRes && tokenRes.status == 0 && tokenRes.data) {
token = tokenRes.data.token;
}
if (!token) {
return system.getResultFail(-88, "获取token失败");
}
//获取用户userpin
var userpin = "";
pobj.actionType = "getLoginByUserName";
pobj.actionBody.userName = actionBody.channelUserId;
pobj.actionBody.mobile = req.user.userMoblie;
var url = settings.centerChannelUrl() + "web/auth/accessAuth/springBoard";
var userpinResult = await this.execClient.execPushDataPost(pobj, url, token);
if (!userpinResult || !userpinResult.stdout) {
return system.getResult(null, userpinResult.msg);
}
var userpinResultTmp = JSON.parse(userpinResult.stdout);
if (userpinResultTmp.status != 0 && userpinResultTmp.status != 2060) {
return system.getResultFail(-99, "获取userpin失败");
}
userpin = userpinResultTmp.data.userpin;
if (!userpin) {
return system.getResultFail(-88, "获取userpin失败!!");
}
url = settings.centerChannelUrl() + "web/opaction/order/springBoard";
pobj.actionType = "getOrderDeliveryFlowInfo";
var rtn = await this.execClient.execDataPostByTokenUserPin(pobj, url, token, userpin);
if (!rtn || !rtn.stdout) {
return system.getResult(null, "execPost is empty");
}
var result = JSON.parse(rtn.stdout);
return result;
}
/**
* 获取启服务通订单列表信息
* @param {*} pobj
......
const system = require("../../../system");
var settings = require("../../../../config/settings");
const _ = require("lodash")
const md5 = require("MD5");
class TmqueryService {
constructor() {
this.channelApiUrl = settings.channelApiUrl();
this.zcApiUrl = settings.reqZcApi();
this.reqEsAddr = settings.reqEsAddr();
this.execClient = system.getObject("util.execClient");
}
/**
* 验证签名
* @param {*} params 要验证的参数
* @param {*} app_key 应用的校验key
* @param {*} isEmptySign params key 对应值为空是否参与签名
*/
createSign(params, app_key, isEmptySign) {
if (!params) {
return system.getResult(null, "请求参数为空");
}
var signArr = [];
var keys = Object.keys(params).sort();
if (keys.length == 0) {
return system.getResult(null, "请求参数信息为空");
}
for (let k = 0; k < keys.length; k++) {
const tKey = keys[k];
if (tKey != "sign") {
if (tKey != "token") {
if (tKey != "actionProcess") {
if (isEmptySign) {
signArr.push(tKey + "=" + params[tKey]);
} else {
if (params[tKey]) {
signArr.push(tKey + "=" + params[tKey]);
}
}
}
}
}
}
if (signArr.length == 0) {
return system.getResult(null, "请求参数组装签名参数信息为空");
}
var resultSignStr = signArr.join("&") + "&key=" + app_key;
var resultTmpSign = md5(resultSignStr).toUpperCase();
return system.getResultSuccess(resultTmpSign);
}
async findTrademarkNameAccurate(queryobj, req) {//通过商标名来进行精准查询
var url = this.zcApiUrl + "api/trademark/tmqueryApi/findTrademarkNameAccurate";
return await this.opReqResult(url, queryobj, req);
......@@ -80,5 +124,127 @@ class TmqueryService {
return data;
}
async pushJdPayOrder(queryobj, req) {
/**
* 请求es 拿出数据,组装
*/
let failOrders = [];
try {
const data = await this.execClient.execPost({
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field": "optitle",
"query": "\"###处理京东推送的订单信息参数\""
}
}
]
}
},
"from": 0,
"size": 2000,
"sort": [
{
"created_at": "desc"
}
]
}, `${this.reqEsAddr}bigdata_zc_op_log/_search`);
let result = data.stdout;
result = JSON.parse(result);
result = result.hits.hits;
result = _.uniqBy(result.map(item => {
return JSON.parse(item._source.content.replace(/pushData参数=/g, ""))
}).filter(item => {
return item.skuId
}), "orderNumber").filter(item => {
const signResult = this.createSign(item, "F6FBD101C7571ADE231670F080653874", true);
if (signResult.status != 0 || signResult.data != item.token.toUpperCase()) {
failOrders.push({
errMsg: "签名失败",
param: item
});
return false
} else {
return true;
}
});
var tokenInfo = await this.getToken();
if (tokenInfo.status != 0) {
return tokenInfo;
}
let buildResult = [];
for (let pushData of result) {
//自助注册产品---用updateOrderPayStatus,否则为addOrderAndDelivery
let param = {
actionProcess: pushData.actionProcess,
actionType: "",
actionBody: {
channelUserId: pushData.jdPin,
payStatus: "yfk",
channelItemCode: pushData.skuId,//------用此字段查询渠道产品是否存在
needNo: pushData.skuId + "_" + pushData.orderNumber,
needNoOrderNo: pushData.orderNumber,//---用此字段查找
buyerMoblie: pushData.mobile,
payCode: pushData.skuId,
email: pushData.email
},
isUser: "yes"
};
if (["FW_GOODS-582206-1", "FW_GOODS-582208-1", "FW_GOODS-582207-1"].indexOf(pushData.skuId) >= 0) {
param.actionType = pushData.skuId == "FW_GOODS-582206-1" ? "updateOrderPayStatusJd" : "addOrderAndDelivery";
}//商标的产品订单
else {
param.actionBody.channelItemCode = pushData.serviceCode;
param.actionType = "jdAddQifuOrder";
}//工商产品订单
let reqUrl = this.channelApiUrl + "/action/tmOrder/springBoard";
let rtn = await this.execClient.execPushDataPost(param, reqUrl, tokenInfo.data.token, req.headers["request-id"]);;
if (!rtn || !rtn.stdout) {
failOrders.push(
{
orderNumber: item.orderNumber,
errMsg: "this.execClient.execPushDataPost无返回"
}
)
}
let data = JSON.parse(rtn.stdout);
if (data.status === 0) {
buildResult.push({
...data,
param
})
} else {
failOrders.push(
{
param,
errMsg: data
}
)
}
}
return { successOrders: buildResult, failOrders };
} catch (error) {
console.log(error)
return system.getResultFail(-200, "操作error");
}
}
async getToken() {
var reqTokenUrl = this.channelApiUrl + "/auth/accessAuth/getToken";
var reqParam = {};
var rtn = await this.execClient.execPost({ appkey: "201911251551", secret: "56006077354d48858026c80c0e10bef6" }, reqTokenUrl);
if (!rtn.stdout) {
return system.getResult(null, "获取token失败");
}
var tokenResult = JSON.parse(rtn.stdout);
if (tokenResult.status == 0) {
tokenResult.data.secret = reqParam.secret;
}
return tokenResult;
}
}
module.exports = TmqueryService;
var settings={
redis:{
host: "43.247.184.32",
port: 8967,
password: "Gongsibao2018",
db:6,
var settings = {
redis: {
host: "39.107.234.14",
port: 6379,
password: "123123",
db: 6,
},
database:{
dbname : "hantang",
database: {
dbname: "hantang",
// dbname : "igirl_channel",
user: "write",
password: "write",
......@@ -14,22 +14,22 @@ var settings={
host: '43.247.184.35',
port: 8899,
dialect: 'mysql',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 90000000,
idle: 1000000
},
debug:false,
dialectOptions:{
requestTimeout: 999999,
// instanceName:'DEV'
} //设置MSSQL超时时间
}
},
reqEsDevUrl:"http://192.168.4.249:9200/",
reqHomePageDevUrl:"http://zcchannel.apps.com:4003/",
reqAuthUrl:"http://sj.app.com:4002/auth"
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 90000000,
idle: 1000000
},
debug: false,
dialectOptions: {
requestTimeout: 999999,
// instanceName:'DEV'
} //设置MSSQL超时时间
}
},
reqEsDevUrl: "http://192.168.4.249:9200/",
reqHomePageDevUrl: "http://zcchannel.apps.com:4003/",
reqAuthUrl: "http://sj.app.com:4002/auth"
};
module.exports = settings;
......@@ -36,7 +36,7 @@ var settings = {
},
centerChannelUrl: function () {
if (this.env == "dev") {
return "http://gsb.qifu.gongsibao.com:4012/";
return "http://gsbweb.qifu-dev.gongsibao.com:4012/";
} else {
return "http://center-channel-service/";
}
......@@ -63,6 +63,13 @@ var settings = {
return "http://zcapi-service/";//k8s服务名称
}
},
channelApiUrl: function () {
if (this.env == "dev") {
return "http://zcchannel.apps.com:4003";
} else {
return "http://zc-channel-service";
}
},
pushFqbossDataUrl: function () {
if (this.env == "dev") {
return "http://192.168.18.141:3000/";//localsettings.reqEsDevUrl;
......
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