Commit 3e7d9833 by 兰国旗

Merge branch 'center-channel' of gitlab.gongsibao.com:jiangyong/zhichan into center-channel

parents fd0f3869 85aee723
...@@ -19,19 +19,20 @@ class Consultation extends APIBase { ...@@ -19,19 +19,20 @@ class Consultation extends APIBase {
} }
getResultSuccess(requestId) { getResultSuccess(requestId) {
return { return {
"requestId": requestId, "status": 0,
"success": true, "msg": "success",
"errorMsg": "", "data":null,
"errorCode": "ok" "requestId": requestId
} };
} }
getResultFail(errmsg) { getResultFail(errmsg) {
var self = this; var self = this;
return { return {
"status":-1,
"msg": errmsg,
"requestId": self.getUUID(), "requestId": self.getUUID(),
"success": false, "data":null,
"errorMsg": errmsg, "bizmsg":"empty"
"errorCode": "ok"
}; };
} }
...@@ -50,6 +51,12 @@ class Consultation extends APIBase { ...@@ -50,6 +51,12 @@ class Consultation extends APIBase {
if (!pobj.consultType) { if (!pobj.consultType) {
return self.getResultFail("consultType不能为空"); return self.getResultFail("consultType不能为空");
} }
if (pobj.consultType=="ICP") {
pobj.consultType="5";
}
if (pobj.consultType=="EDI") {
pobj.consultType="7";
}
pobj.type = pobj.consultType; pobj.type = pobj.consultType;
pobj.mobile = pobj.phone; pobj.mobile = pobj.phone;
pobj.action_type = "submitIcpNeed"; pobj.action_type = "submitIcpNeed";
...@@ -157,6 +164,108 @@ class Consultation extends APIBase { ...@@ -157,6 +164,108 @@ class Consultation extends APIBase {
case "34": case "34":
pobj.area = "海南"; pobj.area = "海南";
break; break;
case "BEIJING":
pobj.area = "北京";
break;
case "SHANGHAI":
pobj.area = "上海";
break;
case "FUJIAN":
pobj.area = "福建";
break;
case "GUANGXI":
pobj.area = "广西";
break;
case "GUANGDONG":
pobj.area = "广东";
break;
case "ANHUI":
pobj.area = "安徽";
break;
case "HENAN":
pobj.area = "河南";
break;
case "HUBEI":
pobj.area = "湖北";
break;
case "ZHEJIANG":
pobj.area = "浙江";
break;
case "JIANGSU":
pobj.area = "江苏";
break;
case "SHANDONG":
pobj.area = "山东";
break;
case "SHANGXI_SHAN":
pobj.area = "陕西";
break;
case "NINGXIA":
pobj.area = "宁夏";
break;
case "GANSU":
pobj.area = "甘肃";
break;
case "XINJIANG":
pobj.area = "新疆";
break;
case "QINGHAI":
pobj.area = "青海";
break;
case "TIANJIN":
pobj.area = "天津";
break;
case "CHONGQING":
pobj.area = "重庆";
break;
case "HEBEI":
pobj.area = "河北";
break;
case "SHANXI_JIN":
pobj.area = "山西";
break;
case "LIAONING":
pobj.area = "辽宁";
break;
case "JINLIN":
pobj.area = "吉林";
break;
case "HEILONGJIANG":
pobj.area = "黑龙江";
break;
case "JIANGXI":
pobj.area = "江西";
break;
case "HUNAN":
pobj.area = "湖南";
break;
case "SICHUAN":
pobj.area = "四川";
break;
case "GUIZHOU":
pobj.area = "贵州";
break;
case "YUNNAN":
pobj.area = "云南";
break;
case "NEIMENGGU":
pobj.area = "内蒙古";
break;
case "XIZANG":
pobj.area = "西藏";
break;
case "HANWAIZI":
pobj.area = "含外资";
break;
case "QUANWAIZI":
pobj.area = "全外资";
break;
case "XIANGGANG":
pobj.area = "香港";
break;
case "HAINAN":
pobj.area = "海南";
break;
default: default:
pobj.area = ""; pobj.area = "";
break; break;
......
...@@ -19,19 +19,20 @@ class Feedback extends APIBase { ...@@ -19,19 +19,20 @@ class Feedback extends APIBase {
} }
getResultSuccess(requestId) { getResultSuccess(requestId) {
return { return {
"requestId": requestId, "status": 0,
"success": true, "msg": "success",
"errorMsg": "", "data":null,
"errorCode": "ok" "requestId": requestId
} };
} }
getResultFail(errmsg) { getResultFail(errmsg) {
var self = this; var self = this;
return { return {
"status":-1,
"msg": errmsg,
"requestId": self.getUUID(), "requestId": self.getUUID(),
"success": false, "data":null,
"errorMsg": errmsg, "bizmsg":"empty"
"errorCode": "ok"
}; };
} }
......
...@@ -19,19 +19,20 @@ class Order extends APIBase { ...@@ -19,19 +19,20 @@ class Order extends APIBase {
} }
getResultSuccess(requestId) { getResultSuccess(requestId) {
return { return {
"requestId": requestId, "status": 0,
"success": true, "msg": "success",
"errorMsg": "", "data":null,
"errorCode": "ok" "requestId": requestId
} };
} }
getResultFail(errmsg) { getResultFail(errmsg) {
var self = this; var self = this;
return { return {
"status":-1,
"msg": errmsg,
"requestId": self.getUUID(), "requestId": self.getUUID(),
"success": false, "data":null,
"errorMsg": errmsg, "bizmsg":"empty"
"errorCode": "ok"
}; };
} }
...@@ -57,6 +58,13 @@ class Order extends APIBase { ...@@ -57,6 +58,13 @@ class Order extends APIBase {
} }
if (pobj.isDirectBuy==1 && !pobj.consultType) { if (pobj.isDirectBuy==1 && !pobj.consultType) {
return self.getResultFail("直接下单consultType不能为空"); return self.getResultFail("直接下单consultType不能为空");
}else{
if (pobj.consultType=="ICP") {
pobj.consultType="5";
}
if (pobj.consultType=="EDI") {
pobj.consultType="7";
}
} }
pobj.action_type = "icpOrderStatus"; pobj.action_type = "icpOrderStatus";
var param = { var param = {
......
...@@ -141,7 +141,7 @@ class NameAPI extends WEBBase { ...@@ -141,7 +141,7 @@ class NameAPI extends WEBBase {
if (result.status != 0) { if (result.status != 0) {
return result; return result;
} }
const tmpData = result.data ? result.data.companyName : []; const tmpData = result.data ? result.data.companyName ? result.data.companyName : result.data : [];
return system.getResultSuccess(tmpData); return system.getResultSuccess(tmpData);
} }
} }
......
...@@ -4,6 +4,7 @@ const uuidv4 = require('uuid/v4'); ...@@ -4,6 +4,7 @@ const uuidv4 = require('uuid/v4');
const md5 = require("MD5"); const md5 = require("MD5");
class WEBBase { class WEBBase {
constructor() { constructor() {
this.execClientNew = system.getObject("util.execClientNew");
this.restClient = system.getObject("util.restClient"); this.restClient = system.getObject("util.restClient");
this.execClientNew = system.getObject("util.execClientNew"); this.execClientNew = system.getObject("util.execClientNew");
this.cacheManager = system.getObject("db.common.cacheManager"); this.cacheManager = system.getObject("db.common.cacheManager");
...@@ -21,20 +22,24 @@ class WEBBase { ...@@ -21,20 +22,24 @@ class WEBBase {
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 rtn = await this[methodname](pobj, query, req); var result = await this[methodname](pobj, query, req);
if (!result.requestId) {
result.requestId = pobj.RequestId ? pobj.RequestId : pobj.requestId || req.requestId;
}
this.logCtl.createDb({ this.logCtl.createDb({
appid: req.app.id, appid: req.app.id,
appkey: req.app.uappKey, appkey: req.app.uappKey,
requestId: req.requestId, requestId: req.requestId,
op: req.classname + "/" + methodname, op: req.classname + "/" + methodname,
content: JSON.stringify(pobj), content: JSON.stringify(pobj),
resultInfo: JSON.stringify(rtn), resultInfo: JSON.stringify(result),
clientIp: req.clientIp, clientIp: req.clientIp,
agent: req.uagent, agent: req.uagent,
opTitle: "api服务提供方appKey:" + settings.appKey, opTitle: "api服务提供方appKey:" + settings.appKey,
}); });
rtn.requestId = req.requestId; var tmpResult = pobj.actionType && pobj.actionType.indexOf("List") < 0 ? result : { status: result.status, message: result.message, requestId: result.requestId };
return rtn; this.execClientNew.execLogs("reqPath:" + req.path, pobj, "center-channel-doexecMethod-web", tmpResult, null);
return result;
} catch (e) { } catch (e) {
console.log(e.stack, "api调用出现异常,请联系管理员..........") console.log(e.stack, "api调用出现异常,请联系管理员..........")
this.logCtl.createDb({ this.logCtl.createDb({
......
...@@ -5,6 +5,7 @@ class SignService{ ...@@ -5,6 +5,7 @@ class SignService{
constructor() { constructor() {
this.centerAppUrl = settings.centerAppUrl(); this.centerAppUrl = settings.centerAppUrl();
this.restClient = system.getObject("util.restClient"); this.restClient = system.getObject("util.restClient");
this.redisClient = system.getObject("util.redisClient");
} }
async restPostUrl(pobj, url) { async restPostUrl(pobj, url) {
try { try {
...@@ -20,9 +21,23 @@ class SignService{ ...@@ -20,9 +21,23 @@ class SignService{
} }
} }
async getAppInfoByAppKey(appkey){ async getAppInfoByAppKey(appkey){
try {
var shaStr = "getAppInfoByAppKey_"+appkey;
var cacheRes = await this.redisClient.get(shaStr);
if (cacheRes) {
return JSON.parse(cacheRes);
}
let url = this.centerAppUrl + 'payment/paymentApi/getAppInfoByAppKey'; let url = this.centerAppUrl + 'payment/paymentApi/getAppInfoByAppKey';
let appInfoRt = await this.restPostUrl({ appKey: appkey }, url); let appInfoRt = await this.restPostUrl({ appKey: appkey }, url);
if(appInfoRt && appInfoRt.status==0){
//保存缓存
await this.redisClient.setWithEx(shaStr, JSON.stringify(appInfoRt), 3600);
}
return appInfoRt; return appInfoRt;
} catch (error) {
var errres = system.getResultFail("获取应用信息失败!");
return errres;
}
} }
/** /**
* 验证签名 * 验证签名
...@@ -88,12 +103,12 @@ class SignService{ ...@@ -88,12 +103,12 @@ class SignService{
module.exports = SignService; module.exports = SignService;
// var task = new SignService(); // var task = new SignService();
// var obj = { // var obj = {
// "intentionBizId": "zhuangbingceshi008", // "intentionBizId": "TRE-nmnHtEoTjeEtest",
// "phone": "13075556693", // "phone": "13126673246",
// "userName": "庄冰", // "userName": "",
// "description": "1111111111111222", // "description": "111111",
// "area": "1", // "area": "BEIJING",
// "consultType": 5 // "consultType": "EDI"
// }; // };
// task.createSign(obj,"7cbb892450174167b5c7e01we4716t51").then(d=>{ // task.createSign(obj,"7cbb892450174167b5c7e01we4716t51").then(d=>{
// console.log(d,"!!!!!!!!!!!!!!!!!!!!!!!!!!"); // console.log(d,"!!!!!!!!!!!!!!!!!!!!!!!!!!");
......
...@@ -18,55 +18,37 @@ class utils360Sve extends AppServiceBase { ...@@ -18,55 +18,37 @@ class utils360Sve extends AppServiceBase {
if (!actionBody.orderNo) { if (!actionBody.orderNo) {
return system.getResult(null, "actionBody.orderNo can not be empty,100110"); return system.getResult(null, "actionBody.orderNo can not be empty,100110");
} }
let seaUrl = this.centerOrderUrl + 'opaction/opPayOrder/getOrderListByOrderServiceNo'; pobj.actionType = "getPayOrderInfo";
let seaRet = await this.restPostUrl(pobj, seaUrl); let orderUrl = settings.centerOrderUrl() + "action/order/springBoard";
if (seaRet.status != 0) { let orderResult = await this.restPostUrl(pobj, orderUrl);
return system.getResultFail(-1, '获取订单信息失败') if (orderResult.status != 0) {
} return orderResult;
let totalSum = 0; }
let sku_id = ''; pobj.actionType ="getOrderDeliveryInfo";
let amount = 0; var deliveryResult = await this.restPostUrl(pobj,orderUrl);
let consignee = ""; if (deliveryResult.status != 0) {
let mobile = ""; return deliveryResult;
let email = ""; }
for (let i = 0; i < seaRet.data.length; i++) { let sku_id = orderResult.data.orderProduct.itemCode;
let item = seaRet.data[i]; let price = Number(orderResult.data.orderProduct.price)*100;
if(!mobile){ let quantity = orderResult.data.orderProduct.quantity;
pobj.actionType.orderNo = item.orderNo; let amount = Number(orderResult.data.receiptVoucher.totalSum)*100;
pobj.actionType = "getOrderDeliveryInfo"; let order_id = orderResult.data.receiptVoucher.sourceOrderNo;
let deliveryResult = await this.restPostUrl(pobj, orderUrl); let consignee = deliveryResult.data.orderContact.contactName;
consignee = deliveryResult.data.orderContact.contactName; let mobile = deliveryResult.data.orderContact.mobile;
mobile = deliveryResult.data.orderContact.mobile; let email = deliveryResult.data.orderContact.email;
email = deliveryResult.data.orderContact.email let singStr = sku_id + quantity + price + amount + order_id + pobj.appInfo.uapp_secret;
}
sku_id = item.itemCode;
totalSum += Number(item.totalSum);
amount += Number(item.payTotalSum);
}
// let sku_id = orderResult.data.orderProduct.itemCode;
// let price = Number(orderResult.data.orderProduct.price)*100;
let price = totalSum * 100;
// let quantity = seaRet.data.length;
// let amount = Number(orderResult.data.receiptVoucher.totalSum)*100;
amount = amount * 100;
let order_id = pobj.actionBody.orderNo;
// let consignee = deliveryResult.data.orderContact.contactName;
// let mobile = deliveryResult.data.orderContact.mobile;
// let email = deliveryResult.data.orderContact.email;
let singStr = sku_id + price + order_id + pobj.appInfo.uapp_secret;
let sign = md5(singStr).toUpperCase(); let sign = md5(singStr).toUpperCase();
// 推送参数 let result ={
let result = { sku_id,
sku_id: sku_id, price,
price: price, quantity,
quantity: seaRet.data.length, amount,
amount: amount, order_id,
order_id: order_id, consignee,
consignee: consignee, mobile,
mobile: mobile, email,
email: email, sign
sign: sign
} }
return system.getResult(result); return system.getResult(result);
} }
...@@ -93,7 +75,7 @@ class utils360Sve extends AppServiceBase { ...@@ -93,7 +75,7 @@ class utils360Sve extends AppServiceBase {
order_id, status order_id, status
} }
let result = await this.restPostUrl(pushObj, url); let result = await this.restPostUrl(pushObj, url);
if(result.code ==200){ if (result.code == 200) {
this.pushlogSve.createDb({ this.pushlogSve.createDb({
op: "360-pushOrderStatus", op: "360-pushOrderStatus",
content: JSON.stringify(pushObj),//推送的参数信息 content: JSON.stringify(pushObj),//推送的参数信息
...@@ -102,7 +84,7 @@ class utils360Sve extends AppServiceBase { ...@@ -102,7 +84,7 @@ class utils360Sve extends AppServiceBase {
logLevel: '1', logLevel: '1',
opTitle: "推送360信息返回成功" opTitle: "推送360信息返回成功"
}); });
}else{ } else {
this.logCtl.error({ this.logCtl.error({
appid: pobj.appInfo ? pobj.appInfo.uapp_id || "" : "", appid: pobj.appInfo ? pobj.appInfo.uapp_id || "" : "",
appkey: pobj.appInfo ? pobj.appInfo.uapp_key || "" : "", appkey: pobj.appInfo ? pobj.appInfo.uapp_key || "" : "",
...@@ -113,7 +95,7 @@ class utils360Sve extends AppServiceBase { ...@@ -113,7 +95,7 @@ class utils360Sve extends AppServiceBase {
optitle: pobj.opType + "推送操作异常status->pushOrderStatus", optitle: pobj.opType + "推送操作异常status->pushOrderStatus",
}); });
} }
console.log(result,'-------------push360-----------------') console.log(result, '-------------push360-----------------')
return result; return result;
} catch (e) { } catch (e) {
this.logCtl.error({ this.logCtl.error({
......
...@@ -268,19 +268,19 @@ class UtilsAuthService extends AppServiceBase { ...@@ -268,19 +268,19 @@ class UtilsAuthService extends AppServiceBase {
let result = await this.get360Token(); let result = await this.get360Token();
let token = result.access_token; let token = result.access_token;
//360验证接口 //360验证接口
// let subData = "pin=" + pin + "&token=" + token; let subData = "pin=" + pin + "&token=" + token;
// let url = settings.requestUrl360() + 'api/v1/VerifyPin'; let url = settings.requestUrl360() + 'api/v1/VerifyPin';
// let rtn = await this.restClient.execGet(subData,url); let rtn = await this.restClient.execGet(subData,url);
// if (!rtn || !rtn.stdout) { if (!rtn || !rtn.stdout) {
// return system.getResult(null, "restGet data is empty"); return system.getResult(null, "restGet data is empty");
// } }
// let checkRet = JSON.parse(rtn.stdout); let checkRet = JSON.parse(rtn.stdout);
// if(checkRet.code != 200){ if(checkRet.code != 200){
// return system.getResultFail(-1,checkRet.msg) return system.getResultFail(-1,checkRet.msg)
// } }
//---渠道用户登录,有则返回userpin ,没有则注册用户并返回userpin //---渠道用户登录,有则返回userpin ,没有则注册用户并返回userpin
actionBody.channelUserId = pin; actionBody.channelUserId = pin;
opResult = await this.getLoginByUserName(pobj, actionBody); opResult = await this.getLoginByUserName(req,pobj, actionBody);
return opResult; return opResult;
} }
......
...@@ -19,6 +19,11 @@ class UtilsDeliverSystemService extends AppServiceBase { ...@@ -19,6 +19,11 @@ class UtilsDeliverSystemService extends AppServiceBase {
return await this.disposePushResultFail(pobj, verifyResult, "deliver->pushBusiness2DeliverSystem->verifyResult", this.pushlogFailType.FQ); return await this.disposePushResultFail(pobj, verifyResult, "deliver->pushBusiness2DeliverSystem->verifyResult", this.pushlogFailType.FQ);
} }
var interface_params_info = verifyResult.data; var interface_params_info = verifyResult.data;
if(interface_params_info.headData){
if(pobj && pobj.appInfo && pobj.appInfo.app_code){
interface_params_info.headData.appcode = pobj.appInfo.app_code;
}
}
var reqParams = { var reqParams = {
actionType: "produceData",// Y 功能名称 actionType: "produceData",// Y 功能名称
actionBody: { actionBody: {
......
...@@ -27,9 +27,11 @@ class UtilsFqAliyunService extends AppServiceBase { ...@@ -27,9 +27,11 @@ class UtilsFqAliyunService extends AppServiceBase {
if (!productInfo || !productInfo.service_business_code) { if (!productInfo || !productInfo.service_business_code) {
verifyResult = system.getResult(null, "orderInfo.productInfo.service_business_code can not be empty,100427"); verifyResult = system.getResult(null, "orderInfo.productInfo.service_business_code can not be empty,100427");
} }
if (!['360.icp','360.edi'].includes(productInfo.service_business_code)) {
if (!productInfo || !productInfo.price_item || !productInfo.price_item.service_code) { if (!productInfo || !productInfo.price_item || !productInfo.price_item.service_code) {
verifyResult = system.getResult(null, "orderInfo.productInfo.price_item.service_code can not be empty,100430"); verifyResult = system.getResult(null, "orderInfo.productInfo.price_item.service_code can not be empty,100430");
} }
}
if (verifyResult.status != 0) { if (verifyResult.status != 0) {
return await this.disposePushResultFail(pobj, verifyResult, "fq->pushOrderBusinessByProductCode2Fq->verifyResult", this.pushlogFailType.FQ); return await this.disposePushResultFail(pobj, verifyResult, "fq->pushOrderBusinessByProductCode2Fq->verifyResult", this.pushlogFailType.FQ);
} }
...@@ -41,7 +43,7 @@ class UtilsFqAliyunService extends AppServiceBase { ...@@ -41,7 +43,7 @@ class UtilsFqAliyunService extends AppServiceBase {
idempotentId: orderInfo.orderNo,// 是 业务 ID idempotentId: orderInfo.orderNo,// 是 业务 ID
idempotentSource: productInfo.service_business_code,// 是 业务来源(ic_jdyun、ic_ali) idempotentSource: productInfo.service_business_code,// 是 业务来源(ic_jdyun、ic_ali)
idempotentSourceName: productInfo.service_business_name || productInfo.service_business_code,// 是 京东云应用、阿里云应用 idempotentSourceName: productInfo.service_business_name || productInfo.service_business_code,// 是 京东云应用、阿里云应用
city: "",// 否 所属城市 area: productInfo.price_item.price_desc,// 否 所属城市
phone: orderContact.mobile,// 是 手机号 phone: orderContact.mobile,// 是 手机号
userId: orderInfo.channelUserId,// 否 用户 ID userId: orderInfo.channelUserId,// 否 用户 ID
companyName: "",// 否 公司名称 companyName: "",// 否 公司名称
......
...@@ -31,7 +31,6 @@ class UtilsOrderService extends AppServiceBase { ...@@ -31,7 +31,6 @@ class UtilsOrderService extends AppServiceBase {
return system.getResult(null, "支付价格payCode信息有误,100050"); return system.getResult(null, "支付价格payCode信息有误,100050");
} }
var totalSum = Number(price_list[productIndex].price) * Number(actionBody.quantity); var totalSum = Number(price_list[productIndex].price) * Number(actionBody.quantity);
var additions = null;
var additionsIndex = -1; var additionsIndex = -1;
if (actionBody.additions && actionBody.additions.payCode) { if (actionBody.additions && actionBody.additions.payCode) {
additionsIndex = price_list.findIndex(f => f.pay_code == actionBody.additions.payCode && f.is_show == 0); additionsIndex = price_list.findIndex(f => f.pay_code == actionBody.additions.payCode && f.is_show == 0);
...@@ -75,27 +74,36 @@ class UtilsOrderService extends AppServiceBase { ...@@ -75,27 +74,36 @@ class UtilsOrderService extends AppServiceBase {
} }
pobj.actionType = "getProductDetail"; pobj.actionType = "getProductDetail";
var url = settings.centerAppUrl() + "action/opProduct/springBoard"; var url = settings.centerAppUrl() + "action/opProduct/springBoard";
var productItemResult = await this.restPostUrl(pobj, url); var productItemResult = await this.execPostByTimeOut(null, pobj, url);
if (productItemResult.status != 0) { if (productItemResult.status != 0) {
return productItemResult; return productItemResult;
} }
pobj.actionBody.product_info = productItemResult.data; if (productItemResult.data.status != 0) {
return productItemResult.data;
}
pobj.actionBody.product_info = productItemResult.data.data;
var verifyResult = await this.isOrderVerify(pobj, pobj.actionBody); var verifyResult = await this.isOrderVerify(pobj, pobj.actionBody);
if (verifyResult.status != 0) { if (verifyResult.status != 0) {
return verifyResult; return verifyResult;
} }
pobj.actionType = "getProductInterface"; pobj.actionType = "getProductInterface";
pobj.actionBody.product_id = pobj.actionBody.product_info.id; pobj.actionBody.product_id = pobj.actionBody.product_info.id;
var productItemInterfaceResult = await this.restPostUrl(pobj, url); var productItemInterfaceResult = await this.execPostByTimeOut(null, pobj, url);
pobj.actionBody.product_info.interface_info = productItemInterfaceResult.data; pobj.actionBody.product_info.interface_info = productItemInterfaceResult.data.data;
pobj.actionType = "addOrder"; pobj.actionType = "addOrder";
var reqUrl = this.centerOrderUrl + "action/order/springBoard"; var reqUrl = this.centerOrderUrl + "action/order/springBoard";
// console.log(pobj); // console.log(pobj);
var result = await this.restPostUrl(pobj, reqUrl); var result = await this.execPostByTimeOut(null, pobj, reqUrl);
result.totalSum = actionBody.totalSum; if (result.status != 0) {
return result; return result;
} }
if (result.data.status != 0) {
return result.data;
}
result.data.totalSum = actionBody.totalSum;
return result.data;
}
async delOrder(pobj, actionBody) { async delOrder(pobj, actionBody) {
if (!actionBody.orderNo) { if (!actionBody.orderNo) {
return system.getResult(null, "actionBody.orderNo can not be empty,100025"); return system.getResult(null, "actionBody.orderNo can not be empty,100025");
...@@ -917,7 +925,7 @@ class UtilsOrderService extends AppServiceBase { ...@@ -917,7 +925,7 @@ class UtilsOrderService extends AppServiceBase {
opOrderResult.data = null; opOrderResult.data = null;
return opOrderResult; return opOrderResult;
} }
if(!opOrderResult.data){ if (!opOrderResult.data) {
return opOrderResult; return opOrderResult;
} }
opOrderResult.data.appInfo = { opOrderResult.data.appInfo = {
...@@ -933,7 +941,7 @@ class UtilsOrderService extends AppServiceBase { ...@@ -933,7 +941,7 @@ class UtilsOrderService extends AppServiceBase {
}; };
opOrderResult.data.orderNo = params.orderNo; opOrderResult.data.orderNo = params.orderNo;
opOrderResult.data.order_info.pay_flow_no = params.trade_no || "";// 2020 0704 lin 新增 推送fq必填字段 opOrderResult.data.order_info.pay_flow_no = params.trade_no || "";// 2020 0704 lin 新增 推送fq必填字段
opOrderResult.data.order_info.pay_channel = params.payType ||"";//付款方式 opOrderResult.data.order_info.pay_channel = params.payType || "";//付款方式
opOrderResult.data.order_info.pay_time = params.payTime;//付款时间 opOrderResult.data.order_info.pay_time = params.payTime;//付款时间
opOrderResult.data.order_info.pay_payer_bank_no = params.buyer_email || "";//付款账号 opOrderResult.data.order_info.pay_payer_bank_no = params.buyer_email || "";//付款账号
opOrderResult.data.order_contact = opOrderResult.data.delivery_content.orderContact; opOrderResult.data.order_contact = opOrderResult.data.delivery_content.orderContact;
...@@ -945,7 +953,7 @@ class UtilsOrderService extends AppServiceBase { ...@@ -945,7 +953,7 @@ class UtilsOrderService extends AppServiceBase {
// 推送 // 推送
this.utilsPushSve.pushBusInfo(pobj, "pushOrder", 0); this.utilsPushSve.pushBusInfo(pobj, "pushOrder", 0);
if(['icpsq','edisq'].includes(opOrderResult.data.product_info.channel_item_code)){ if (['icpsq', 'edisq'].includes(opOrderResult.data.product_info.channel_item_code)) {
this.utilsPushSve.aliBusiness2Delivery(pobj, "pushDeliveryOrder"); this.utilsPushSve.aliBusiness2Delivery(pobj, "pushDeliveryOrder");
} }
opOrderResult.data = null; opOrderResult.data = null;
...@@ -1007,13 +1015,13 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1007,13 +1015,13 @@ class UtilsOrderService extends AppServiceBase {
// 修改并返回订单支付状 态,创建收款单 // 修改并返回订单支付状 态,创建收款单
// 根据合同号获取所有订单 循环修改order_info 信息 // 根据合同号获取所有订单 循环修改order_info 信息
let seaUrl = this.centerOrderUrl + 'opaction/opPayOrder/getOrderListByOrderServiceNo'; let seaUrl = this.centerOrderUrl + 'opaction/opPayOrder/getOrderListByOrderServiceNo';
let seaRet = await this.restPostUrl(params,seaUrl); let seaRet = await this.restPostUrl(params, seaUrl);
if(seaRet.status!=0){ if (seaRet.status != 0) {
seaRet.data= null; seaRet.data = null;
return seaRet; return seaRet;
} }
let orderList = seaRet.data; let orderList = seaRet.data;
for(let i=0;i<orderList.length;i++){ for (let i = 0; i < orderList.length; i++) {
params.orderNo = orderList[i].orderNo; params.orderNo = orderList[i].orderNo;
// 这里修改了order_info的状态(status/paytime等) // 这里修改了order_info的状态(status/paytime等)
var orderUrl = this.centerOrderUrl + "opaction/opPayOrder/receivePayCallBackNotifyByChannel"; var orderUrl = this.centerOrderUrl + "opaction/opPayOrder/receivePayCallBackNotifyByChannel";
...@@ -1022,7 +1030,7 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1022,7 +1030,7 @@ class UtilsOrderService extends AppServiceBase {
opOrderResult.data = null; opOrderResult.data = null;
continue; continue;
} }
if(!opOrderResult.data){ if (!opOrderResult.data) {
// return opOrderResult; // return opOrderResult;
continue; continue;
} }
...@@ -1039,7 +1047,7 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1039,7 +1047,7 @@ class UtilsOrderService extends AppServiceBase {
}; };
opOrderResult.data.orderNo = params.orderNo; opOrderResult.data.orderNo = params.orderNo;
opOrderResult.data.order_info.pay_flow_no = params.trade_no || "";// 2020 0704 lin 新增 推送fq必填字段 opOrderResult.data.order_info.pay_flow_no = params.trade_no || "";// 2020 0704 lin 新增 推送fq必填字段
opOrderResult.data.order_info.pay_channel = params.payType ||"";//付款方式 opOrderResult.data.order_info.pay_channel = params.payType || "";//付款方式
opOrderResult.data.order_info.pay_time = params.payTime;//付款时间 opOrderResult.data.order_info.pay_time = params.payTime;//付款时间
opOrderResult.data.order_info.pay_payer_bank_no = params.buyer_email || "";//付款账号 opOrderResult.data.order_info.pay_payer_bank_no = params.buyer_email || "";//付款账号
opOrderResult.data.order_contact = opOrderResult.data.delivery_content.orderContact; opOrderResult.data.order_contact = opOrderResult.data.delivery_content.orderContact;
...@@ -1184,15 +1192,15 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1184,15 +1192,15 @@ class UtilsOrderService extends AppServiceBase {
} }
//增加常用联系人,常用申请人 //增加常用联系人,常用申请人
async addUsuallyContacts(pobj,actionBody){ async addUsuallyContacts(pobj, actionBody) {
if (!actionBody.channel_user_id) { if (!actionBody.channel_user_id) {
return system.getResultFail(-1, "渠道用户id不能为空"); return system.getResultFail(-1, "渠道用户id不能为空");
} }
if (!actionBody.contacts){ if (!actionBody.contacts) {
return system.getResultFail(-1,'用户信息不能为空') return system.getResultFail(-1, '用户信息不能为空')
} }
if(Object.keys(actionBody.contacts).length<0){ if (Object.keys(actionBody.contacts).length < 0) {
return system.getResultFail(-1,'用户信息不能为空') return system.getResultFail(-1, '用户信息不能为空')
} }
var reqUrl = this.centerOrderUrl + "action/tmOrder/springBoard"; var reqUrl = this.centerOrderUrl + "action/tmOrder/springBoard";
var result = await this.restPostUrl(pobj, reqUrl); var result = await this.restPostUrl(pobj, reqUrl);
...@@ -1200,9 +1208,9 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1200,9 +1208,9 @@ class UtilsOrderService extends AppServiceBase {
} }
//删除常用联系人,常用申请人 //删除常用联系人,常用申请人
async delUsuallyContacts(pobj,actionBody){ async delUsuallyContacts(pobj, actionBody) {
if(!actionBody.id){ if (!actionBody.id) {
return system.getResultFail(-1,'id不能为空') return system.getResultFail(-1, 'id不能为空')
} }
var reqUrl = this.centerOrderUrl + "action/tmOrder/springBoard"; var reqUrl = this.centerOrderUrl + "action/tmOrder/springBoard";
var result = await this.restPostUrl(pobj, reqUrl); var result = await this.restPostUrl(pobj, reqUrl);
...@@ -1210,15 +1218,15 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1210,15 +1218,15 @@ class UtilsOrderService extends AppServiceBase {
} }
//修改常用联系人,常用申请人 //修改常用联系人,常用申请人
async updateUsuallyContacts(pobj,actionBody){ async updateUsuallyContacts(pobj, actionBody) {
if(!actionBody.id){ if (!actionBody.id) {
return system.getResultFail(-1,'id 不能为空'); return system.getResultFail(-1, 'id 不能为空');
} }
if(!actionBody.channel_user_id){ if (!actionBody.channel_user_id) {
return system.getResultFail(-1,'id 不能为空'); return system.getResultFail(-1, 'id 不能为空');
} }
if(Object.keys(actionBody.contacts).length<0){ if (Object.keys(actionBody.contacts).length < 0) {
return system.getResultFail(-1,'信息不能为空'); return system.getResultFail(-1, '信息不能为空');
} }
var reqUrl = this.centerOrderUrl + "action/tmOrder/springBoard"; var reqUrl = this.centerOrderUrl + "action/tmOrder/springBoard";
var result = await this.restPostUrl(pobj, reqUrl); var result = await this.restPostUrl(pobj, reqUrl);
...@@ -1226,9 +1234,9 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1226,9 +1234,9 @@ class UtilsOrderService extends AppServiceBase {
} }
//查询常用联系人,常用申请人 //查询常用联系人,常用申请人
async getUsuallyContacts(pobj,actionBody){ async getUsuallyContacts(pobj, actionBody) {
if(!actionBody.channel_user_id){ if (!actionBody.channel_user_id) {
return system.getResultFail(-1,'用户id不能为空') return system.getResultFail(-1, '用户id不能为空')
} }
var reqUrl = this.centerOrderUrl + "action/tmOrder/springBoard"; var reqUrl = this.centerOrderUrl + "action/tmOrder/springBoard";
var result = await this.restPostUrl(pobj, reqUrl); var result = await this.restPostUrl(pobj, reqUrl);
...@@ -1236,55 +1244,55 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1236,55 +1244,55 @@ class UtilsOrderService extends AppServiceBase {
} }
//创建订单 官网 //创建订单 官网
async addOrderWeb(pobj,actionBody){ async addOrderWeb(pobj, actionBody) {
if (!actionBody.quantity || Number(actionBody.quantity) <= 0) { if (!actionBody.quantity || Number(actionBody.quantity) <= 0) {
return system.getResult(null, "订单数量为空或有误,100030"); return system.getResult(null, "订单数量为空或有误,100030");
} }
if(!actionBody.goodsId){ if (!actionBody.goodsId) {
return system.getResult(null, "官网产品id不能为空") return system.getResult(null, "官网产品id不能为空")
} }
if(!actionBody.customerId){ if (!actionBody.customerId) {
return system.getResult(null,'客户Id不能为空') return system.getResult(null, '客户Id不能为空')
} }
if(actionBody.deliveryData.nclones.length<=0){ if (actionBody.deliveryData.nclones.length <= 0) {
return system.getResult(null,'尼斯不能为空') return system.getResult(null, '尼斯不能为空')
} }
if (actionBody.quantity !=actionBody.deliveryData.nclones.length || Number(actionBody.quantity) !=actionBody.deliveryData.nclones.length) { if (actionBody.quantity != actionBody.deliveryData.nclones.length || Number(actionBody.quantity) != actionBody.deliveryData.nclones.length) {
return system.getResult(null, "订单数量有误,100030"); return system.getResult(null, "订单数量有误,100030");
} }
let nclones = actionBody.deliveryData.nclones;//大项集合 let nclones = actionBody.deliveryData.nclones;//大项集合
let product_item = [];//产品项 let product_item = [];//产品项
for(let i = 0;i < nclones.length ; i ++){ for (let i = 0; i < nclones.length; i++) {
let nclone = nclones[i]; let nclone = nclones[i];
if(nclone.nclThree.length >10){ if (nclone.nclThree.length > 10) {
actionBody.additions = { actionBody.additions = {
"payCode": "zzsbzc-2", // Y 支付价格code "payCode": "zzsbzc-2", // Y 支付价格code
"quantity":nclone.nclThree.length - 10// Y 购买数量 "quantity": nclone.nclThree.length - 10// Y 购买数量
} }
} }
actionBody.totalSum = 0; actionBody.totalSum = 0;
actionBody.quantity = 1; actionBody.quantity = 1;
actionBody.deliveryData.nclones = [nclone] actionBody.deliveryData.nclones = [nclone]
actionBody.payTotalSum = actionBody.totalSum; actionBody.payTotalSum = actionBody.totalSum;
let saveResult = await this.addOrder(pobj,actionBody); let saveResult = await this.addOrder(pobj, actionBody);
if(saveResult.status !=0){ if (saveResult.status != 0) {
return saveResult; return saveResult;
} }
let obj = { let obj = {
idempotentId:saveResult.data.orderNo,//商标注册订单id idempotentId: saveResult.data.orderNo,//商标注册订单id
nclCount:nclone.nclThree.length - 10 >0 ? nclone.nclThree.length - 10 :0//小项数量 nclCount: nclone.nclThree.length - 10 > 0 ? nclone.nclThree.length - 10 : 0//小项数量
} }
product_item.push(obj); product_item.push(obj);
} }
actionBody.product_item = product_item; actionBody.product_item = product_item;
//新增订单(商标自助注册) IC //新增订单(商标自助注册) IC
let icOrderResult = await this.utilsFqAliyunSve.pushOrder2IC(pobj, "pushOrder2IC"); let icOrderResult = await this.utilsFqAliyunSve.pushOrder2IC(pobj, "pushOrder2IC");
let orderUrl = settings.centerOrderUrl() +'action/order/springBoard'; let orderUrl = settings.centerOrderUrl() + 'action/order/springBoard';
if(icOrderResult.status !=0){ if (icOrderResult.status != 0) {
for(let i =0;i<product_item.length;i++){ for (let i = 0; i < product_item.length; i++) {
actionBody.orderNo = product_item[i].idempotentId; actionBody.orderNo = product_item[i].idempotentId;
pobj.actionType = 'delOrder'; pobj.actionType = 'delOrder';
let rt = await this.restPostUrl(pobj,orderUrl); let rt = await this.restPostUrl(pobj, orderUrl);
} }
return icOrderResult; return icOrderResult;
} }
...@@ -1293,7 +1301,7 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1293,7 +1301,7 @@ class UtilsOrderService extends AppServiceBase {
pobj.actionType = 'updateOrder'; pobj.actionType = 'updateOrder';
let orderNos = []; let orderNos = [];
let orderIds = []; let orderIds = [];
for(let i =0;i<ids.length;i++){ for (let i = 0; i < ids.length; i++) {
let orderNo = ids[i].idempotentId; let orderNo = ids[i].idempotentId;
let contractNo = ids[i].contractNo; let contractNo = ids[i].contractNo;
orderNos.push(ids[i].orderNo) orderNos.push(ids[i].orderNo)
...@@ -1302,9 +1310,9 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1302,9 +1310,9 @@ class UtilsOrderService extends AppServiceBase {
actionBody.channelServiceNo = contractNo; actionBody.channelServiceNo = contractNo;
actionBody.channelOrderNo = ids[i].orderNo; actionBody.channelOrderNo = ids[i].orderNo;
actionBody.orderServiceNo = orderServiceNo; actionBody.orderServiceNo = orderServiceNo;
let rest = await this.restPostUrl(pobj,orderUrl); let rest = await this.restPostUrl(pobj, orderUrl);
} }
let result ={ let result = {
orderNos, orderNos,
orderIds orderIds
} }
...@@ -1312,9 +1320,9 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1312,9 +1320,9 @@ class UtilsOrderService extends AppServiceBase {
} }
//获取支付记录 //获取支付记录
async getPayRecords(pobj,actionBody){ async getPayRecords(pobj, actionBody) {
let url = this.centerOrderUrl + 'opaction/opPayOrder/getPayRecords'; let url = this.centerOrderUrl + 'opaction/opPayOrder/getPayRecords';
let result = await this.restPostUrl(pobj,url); let result = await this.restPostUrl(pobj, url);
return result; return result;
} }
} }
......
...@@ -92,6 +92,7 @@ class ExecClientNew { ...@@ -92,6 +92,7 @@ class ExecClientNew {
this.execLogs(execFile + "执行execPostTimeOutByBusiness,errorInfo信息为请求的返回结果", params, params.identifyCode, reqResult, rtn); this.execLogs(execFile + "执行execPostTimeOutByBusiness,errorInfo信息为请求的返回结果", params, params.identifyCode, reqResult, rtn);
return reqResult; return reqResult;
} catch (error) { } catch (error) {
console.log("执行execPostByTimeOut存在异常", error.stack);
reqResult = system.getResultFail(-200, execFile + "执行execPostByTimeOut存在异常"); reqResult = system.getResultFail(-200, execFile + "执行execPostByTimeOut存在异常");
reqResult.requestId = requestId || uuid.v1(); reqResult.requestId = requestId || uuid.v1();
this.execLogs(execFile + "执行execPostByTimeOut存在异常", params, params.identifyCode, reqResult, error.stack); this.execLogs(execFile + "执行execPostByTimeOut存在异常", params, params.identifyCode, reqResult, error.stack);
......
...@@ -27,10 +27,10 @@ module.exports = function (app) { ...@@ -27,10 +27,10 @@ module.exports = function (app) {
app.all('*', function (req, res, next) { app.all('*', function (req, res, next) {
req.objs = system; req.objs = system;
res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild,Authorization,XAPPKEY,XFROMAPPKEY,XFROMCOMPANYKEY,XREGROLE,XBIZPATH,token'); res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild,Authorization,XAPPKEY,XFROMAPPKEY,XFROMCOMPANYKEY,XREGROLE,XBIZPATH,token,userpin');
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS'); res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
// res.header('Access-Control-Allow-Credentials', 'true'); // res.header('Access-Control-Allow-Credentials', 'true');
res.header('content-type', 'text/html;charset=UTF-8'); res.header('content-type', 'application/json;charset=UTF-8');
if (req.method == 'OPTIONS') { if (req.method == 'OPTIONS') {
res.send(200); //让options请求快速返回/ res.send(200); //让options请求快速返回/
} }
......
...@@ -205,12 +205,7 @@ module.exports = function (app) { ...@@ -205,12 +205,7 @@ module.exports = function (app) {
try { try {
var client_ip = system.get_client_ip(req); var client_ip = system.get_client_ip(req);
let result ={}; let result ={};
const orderNo = req.body.orderNo;
if(orderNo.indexOf('CN') ==0){
result = await utilsOrderSve.channelOrdersPayNotify(req.body,client_ip);
}else{
result = await utilsOrderSve.channelPayNotify(req.body, client_ip); result = await utilsOrderSve.channelPayNotify(req.body, client_ip);
}
logCtl.info({ logCtl.info({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "渠道支付订单通知 api层", optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "渠道支付订单通知 api层",
op: "center-channel/orderNotify/channelPayNotify", op: "center-channel/orderNotify/channelPayNotify",
...@@ -415,6 +410,13 @@ module.exports = function (app) { ...@@ -415,6 +410,13 @@ module.exports = function (app) {
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }
var sign = req.headers["sign"] || "";
if (!sign) {
result.msg = "req headers sign can not be empty";
result.data = null;
res.end(JSON.stringify(result));
return;
}
//1.通过appkey 获取appInfo //1.通过appkey 获取appInfo
var appRes = await signSve.getAppInfoByAppKey(appkey); var appRes = await signSve.getAppInfoByAppKey(appkey);
if(!appRes || appRes.status!=0){ if(!appRes || appRes.status!=0){
...@@ -425,6 +427,7 @@ module.exports = function (app) { ...@@ -425,6 +427,7 @@ module.exports = function (app) {
} }
var appInfo = appRes.data; var appInfo = appRes.data;
//2.通过appsecret 验签 //2.通过appsecret 验签
req.body.sign = sign;
var signParams = req.body; var signParams = req.body;
var 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){
......
...@@ -150,7 +150,7 @@ var settings = { ...@@ -150,7 +150,7 @@ var settings = {
}, },
centerChannelUrl: function () { centerChannelUrl: function () {
if (this.env == "dev") { if (this.env == "dev") {
return "http://60.205.209.94:4012/" return "http://localhost:4012/"
} else { } else {
// return "channel的正式环境" 6.30修改目前只用作生成alipay/wx的通知回调地址 // return "channel的正式环境" 6.30修改目前只用作生成alipay/wx的通知回调地址
return "http://youke.qifu.gongsibao.com/" return "http://youke.qifu.gongsibao.com/"
...@@ -239,14 +239,14 @@ var settings = { ...@@ -239,14 +239,14 @@ var settings = {
if (this.env == "dev") { if (this.env == "dev") {
return "https://oauth2.e.360.cn/site/token"// 360测试环境 return "https://oauth2.e.360.cn/site/token"// 360测试环境
} else { } else {
return ""// return "https://oauth2.e.360.cn/site/token"//
} }
}, },
requestUrl360: function () { requestUrl360: function () {
if (this.env == "dev") { if (this.env == "dev") {
return "http://180.163.239.98:38085/"// 360测试环境 return "http://180.163.239.98:38085/"// 360测试环境
} else { } else {
return ""// return "http://180.163.239.98:38085/"//
} }
}, },
aliUappId: function () { aliUappId: function () {
......
...@@ -68,3 +68,5 @@ ...@@ -68,3 +68,5 @@
## 21. 诊断运营端相关接口 ## 21. 诊断运营端相关接口
  1 [诊断运营端相关接口](doc/api/appDesc/diagnosisneedbusDesc.md)   1 [诊断运营端相关接口](doc/api/appDesc/diagnosisneedbusDesc.md)
## 22. 百度ICP对接相关接口
  1 [ICP订单接口](doc/api/platform/baiduIcp.md)
\ No newline at end of file
<a name="menu" href="/doc">返回主目录</a>
1. [接口调用说明](#interfaceDesc)
1. [同步需求给服务商](#consultationsubmit)
## **<a name="interfaceDesc"> 接口调用说明</a>**
[返回到目录](#menu)
##### 接口描述
统一的接口调用,调用其他接口参考此示例
#### sign签名规则
所有请求参数(去除sign参数)首字符进行ASCII正序排序,对排序后的参数值进行签名,如:area=1&consultType=5&description=需求测试_001&intentionBizIdI=20200320201737000001&phone=13800138000&userName=李四
其中参数值拼接后最后在加上key,key为获取的密钥信息,拼接后字符串:
area=1&consultType=5&description=需求测试_001&intentionBizIdI=20200320201737000001&phone=13800138000&userName=李四&key=7cbb892450174167b5c7e01we4716t51
之后对拼接的字符串进行md5加密就得到sign值
## **<a name="consultationsubmit"> 同步需求给服务商</a>**
[返回到目录](#menu)
##### 接⼝描述
合作方⽤户提交服务咨询后(需求订单),调⽤服务商接⼝提交服务咨询信息
##### URL
[/api/icp/consultation/submit]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
#### 请求头中需要增加appkey的值
#### 请求参数
#### 参数示例
``` javascript
{
"intentionBizId": "zhuangbingceshi008",
"phone": "13075556693",
"userName": "庄冰",
"description": "1111111111111222",
"area": "1",
"consultType": 5,
"sign": "2713C75F75B0713E525EEB39BB7D5BD3"
}
```
#### 返回结果
```javascript
{
"status": 0,// 0为成功,否则失败
"msg": "success",
"data":null,
"requestId": "a277fb799d9f4dda9053fb8830f9d252"
}
```
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