Commit 3df92378 by 兰国旗

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

parents c35cc259 7e3af1e1
...@@ -5,6 +5,7 @@ const sha256 = require('sha256'); ...@@ -5,6 +5,7 @@ const sha256 = require('sha256');
const md5 = require("MD5"); const md5 = require("MD5");
class APIBase { class APIBase {
constructor() { constructor() {
this.execClientNew = system.getObject("util.execClientNew");
this.restClient = system.getObject("util.restClient"); this.restClient = system.getObject("util.restClient");
this.redisClient = system.getObject("util.redisClient"); this.redisClient = system.getObject("util.redisClient");
this.cacheManager = system.getObject("db.common.cacheManager"); this.cacheManager = system.getObject("db.common.cacheManager");
...@@ -23,6 +24,7 @@ class APIBase { ...@@ -23,6 +24,7 @@ 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));
...@@ -31,26 +33,30 @@ class APIBase { ...@@ -31,26 +33,30 @@ class APIBase {
if (cacheRes) { if (cacheRes) {
return JSON.parse(cacheRes); return JSON.parse(cacheRes);
} }
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; if (this.cacheMethodList.indexOf(methodname) >= 0 && result.status && result.status == 0) {
if(this.cacheMethodList.indexOf(methodname)>=0 && rtn.status && rtn.status==0){
//保存缓存 //保存缓存
await this.redisClient.setWithEx(shaStr, JSON.stringify(rtn), 3600); await this.redisClient.setWithEx(shaStr, JSON.stringify(result), 3600);
} }
return rtn; var tmpResult = pobj.actionType && pobj.actionType.indexOf("List") < 0 ? result : { status: result.status, message: result.message, requestId: result.requestId };
this.execClientNew.execLogs("reqPath:" + req.path, pobj, "center-channel-doexecMethod", tmpResult, null);
return result;
} catch (e) { } catch (e) {
console.log(e.stack, "api调用出现异常,请联系管理员..........") console.log(e.stack, "api调用出现异常,请联系管理员..........");
this.logCtl.createDb({ this.logCtl.createDb({
appid: req.app.id, appid: req.app.id,
appkey: req.app.uappKey, appkey: req.app.uappKey,
...@@ -62,16 +68,17 @@ class APIBase { ...@@ -62,16 +68,17 @@ class APIBase {
agent: req.uagent, agent: req.uagent,
opTitle: "api调用出现异常,请联系管理员error,appKey:" + settings.appKey, opTitle: "api调用出现异常,请联系管理员error,appKey:" + settings.appKey,
}); });
this.logCtl.error({ // this.logCtl.error({
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: e.stack, // content: e.stack,
clientIp: pobj.clientIp, // clientIp: pobj.clientIp,
agent: req.uagent, // agent: req.uagent,
optitle: "api调用出现异常,请联系管理员", // optitle: "api调用出现异常,请联系管理员",
}); // });
this.execClientNew.execLogs("reqPath异常:" + req.path, pobj, "center-channel-doexecMethod", tmpResult, null);
var rtnerror = system.getResultFail(-200, "出现异常,error:" + e.stack); var rtnerror = system.getResultFail(-200, "出现异常,error:" + e.stack);
rtnerror.requestId = req.requestId; rtnerror.requestId = req.requestId;
return rtnerror; return rtnerror;
...@@ -83,10 +90,23 @@ class APIBase { ...@@ -83,10 +90,23 @@ class APIBase {
async restPostUrl(pobj, url) { async restPostUrl(pobj, url) {
var rtn = await this.restClient.execPost(pobj, url); var rtn = await this.restClient.execPost(pobj, url);
if (!rtn || !rtn.stdout) { if (!rtn || !rtn.stdout) {
return system.getResult(null, "restPost data is empty"); return system.getResult(null, "restPost data is empty");
} }
var result = JSON.parse(rtn.stdout); var result = JSON.parse(rtn.stdout);
return result; return result;
} }
/**
* 带超时时间的post请求
* @param {*} req 请求信息
* @param {*} params 请求数据-json格式
* @param {*} url 请求地址
* @param {*} ContentType 请求头类型,默认application/json
* @param {*} headData 请求头内容-json格式,如:请求头中传递token,格式:{token:"9098902q849q0434q09439"}
* @param {*} timeOut 超时时间
*/
async execPostByTimeOut(req, params, url, ContentType, headData, timeOut = 60) {
const result = await this.execClientNew.execPostTimeOutByBusiness('sve.base', params, url, ContentType, headData, timeOut, req);
return result;
}
} }
module.exports = APIBase; module.exports = APIBase;
...@@ -56,110 +56,110 @@ class IcpNotify extends APIBase { ...@@ -56,110 +56,110 @@ class IcpNotify extends APIBase {
if (pobj.area) { if (pobj.area) {
switch (pobj.area) { switch (pobj.area) {
case "1": case "1":
pobj.area = "北京"; pobj.area = "北京";
break; break;
case "2": case "2":
pobj.area = "上海"; pobj.area = "上海";
break; break;
case "3": case "3":
pobj.area = "福建"; pobj.area = "福建";
break; break;
case "4": case "4":
pobj.area = "广西"; pobj.area = "广西";
break; break;
case "5": case "5":
pobj.area = "广东"; pobj.area = "广东";
break; break;
case "6": case "6":
pobj.area = "安徽"; pobj.area = "安徽";
break; break;
case "7": case "7":
pobj.area = "河南"; pobj.area = "河南";
break; break;
case "8": case "8":
pobj.area = "湖北"; pobj.area = "湖北";
break; break;
case "9": case "9":
pobj.area = "浙江"; pobj.area = "浙江";
break; break;
case "10": case "10":
pobj.area = "江苏"; pobj.area = "江苏";
break; break;
case "11": case "11":
pobj.area = "山东"; pobj.area = "山东";
break; break;
case "12": case "12":
pobj.area = "陕西"; pobj.area = "陕西";
break; break;
case "13": case "13":
pobj.area = "宁夏"; pobj.area = "宁夏";
break; break;
case "14": case "14":
pobj.area = "甘肃"; pobj.area = "甘肃";
break; break;
case "15": case "15":
pobj.area = "新疆"; pobj.area = "新疆";
break; break;
case "16": case "16":
pobj.area = "青海"; pobj.area = "青海";
break; break;
case "17": case "17":
pobj.area = "天津"; pobj.area = "天津";
break; break;
case "18": case "18":
pobj.area = "重庆"; pobj.area = "重庆";
break; break;
case "19": case "19":
pobj.area = "河北"; pobj.area = "河北";
break; break;
case "20": case "20":
pobj.area = "山西"; pobj.area = "山西";
break; break;
case "21": case "21":
pobj.area = "辽宁"; pobj.area = "辽宁";
break; break;
case "22": case "22":
pobj.area = "吉林"; pobj.area = "吉林";
break; break;
case "23": case "23":
pobj.area = "黑龙江"; pobj.area = "黑龙江";
break; break;
case "24": case "24":
pobj.area = "江西"; pobj.area = "江西";
break; break;
case "25": case "25":
pobj.area = "湖南"; pobj.area = "湖南";
break; break;
case "26": case "26":
pobj.area = "四川"; pobj.area = "四川";
break; break;
case "27": case "27":
pobj.area = "贵州"; pobj.area = "贵州";
break; break;
case "28": case "28":
pobj.area = "云南"; pobj.area = "云南";
break; break;
case "29": case "29":
pobj.area = "内蒙古"; pobj.area = "内蒙古";
break; break;
case "30": case "30":
pobj.area = "西藏"; pobj.area = "西藏";
break; break;
case "31": case "31":
pobj.area = "含外资"; pobj.area = "含外资";
break; break;
case "32": case "32":
pobj.area = "全外资"; pobj.area = "全外资";
break; break;
case "33": case "33":
pobj.area = "香港"; pobj.area = "香港";
break; break;
case "34": case "34":
pobj.area = "海南"; pobj.area = "海南";
break; break;
default: default:
pobj.area = ""; pobj.area = "";
break; break;
} }
} }
if (!pobj.area) { if (!pobj.area) {
......
...@@ -23,7 +23,7 @@ class ProductAPI extends WEBBase { ...@@ -23,7 +23,7 @@ class ProductAPI extends WEBBase {
var opResult = null; var opResult = null;
switch (action_type) { switch (action_type) {
case "getIndustryInfo":// 获取行业信息 case "getIndustryInfo":// 获取行业信息
opResult = await this.utilsUcommuneSve.getUserInfo(pobj, pobj.actionBody); opResult = await this.utilsUcommuneSve.getUserInfo(req, pobj, pobj.actionBody);
break; break;
case "placeOrder":// 提交订单 case "placeOrder":// 提交订单
opResult = await this.utilsUcommuneSve.getOrderList(pobj, pobj.actionBody); opResult = await this.utilsUcommuneSve.getOrderList(pobj, pobj.actionBody);
......
...@@ -23,7 +23,7 @@ class ProductAPI extends WEBBase { ...@@ -23,7 +23,7 @@ class ProductAPI extends WEBBase {
var opResult = null; var opResult = null;
switch (action_type) { switch (action_type) {
case "getUserInfo":// 根据优客token获取用户信息,生成userPin返回前端 actionBody case "getUserInfo":// 根据优客token获取用户信息,生成userPin返回前端 actionBody
opResult = await this.utilsUcommuneSve.getUserInfo(pobj, pobj.actionBody); opResult = await this.utilsUcommuneSve.getUserInfo(req, pobj, pobj.actionBody);
break; break;
case "orderTotalSum":// addOrder后进入支付页面获取支付金额 case "orderTotalSum":// addOrder后进入支付页面获取支付金额
opResult = await this.utilsUcommuneSve.orderTotalSum(pobj, pobj.actionBody); opResult = await this.utilsUcommuneSve.orderTotalSum(pobj, pobj.actionBody);
......
...@@ -29,18 +29,17 @@ class AccessAuthAPI extends WEBBase { ...@@ -29,18 +29,17 @@ class AccessAuthAPI extends WEBBase {
switch (action_type) { switch (action_type) {
// sy // sy
case "test"://测试 case "test"://测试
var rpcParam = { // var rpcParam = {
accessKeyId: "LTAI4Fgz1uoUpfHpa79iq3XV", // accessKeyId: "LTAI4Fgz1uoUpfHpa79iq3XV",
accessKeySecret: "up8vlX0wzwCVtRAjKRXsCrFta6CHOY", // accessKeySecret: "up8vlX0wzwCVtRAjKRXsCrFta6CHOY",
endpoint: "https://trademark.aliyuncs.com", // endpoint: "https://trademark.aliyuncs.com",
apiVersion: "2019-09-02" // apiVersion: "2019-09-02"
}; // };
opResult = await this.utilsTmAliyunSve.getAliOssInfo(null, "ATTORNEY", rpcParam); // opResult = await this.utilsTmAliyunSve.getAliOssInfo(null, "ATTORNEY", rpcParam);
// opResult = system.getResultSuccess(null, "测试成功"); // opResult = system.getResultSuccess(null, "测试成功");
opResult = system.getResultSuccess(null, "测试成功"); opResult = system.getResultSuccess(null, "测试成功");
break; break;
case "getTokenInfo"://渠道通过账户进行登录,有则返回用户信息,没有则创建用户 case "getTokenInfo"://渠道通过账户进行登录,有则返回用户信息,没有则创建用户
opResult = system.getResultSuccess({ opResult = system.getResultSuccess({
app_code: pobj.appInfo.app_code, app_code: pobj.appInfo.app_code,
app_hosts: pobj.appInfo.app_hosts, app_hosts: pobj.appInfo.app_hosts,
...@@ -48,17 +47,11 @@ class AccessAuthAPI extends WEBBase { ...@@ -48,17 +47,11 @@ class AccessAuthAPI extends WEBBase {
uapp_key: pobj.appInfo.uapp_key, uapp_key: pobj.appInfo.uapp_key,
id: pobj.appInfo.id id: pobj.appInfo.id
}) })
break; break;
case "getNeedUserPinByChannelUserId"://渠道通过账户进行登录,有则返回用户信息,没有则创建用户 case "getNeedUserPinByChannelUserId"://渠道通过账户进行登录,有则返回用户信息,没有则创建用户
var tmpOpResult = await this.utilsAuthSve.getLoginByUserName(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getLoginByUserName(req, pobj, pobj.actionBody);
if (tmpOpResult.status != 0 && tmpOpResult.status != 2060) { if (opResult.status != 0) {
return tmpOpResult; return opResult;
}
opResult = system.getResultSuccess({ userpin: pobj.actionBody.userpin })
if (tmpOpResult.status == 2060) {
opResult.msg = tmpOpResult.msg;
opResult.data.userpin = tmpOpResult.data.userpin;
} }
//获取需求信息 //获取需求信息
pobj.actionType = "getItemByChannelNeedNo"; pobj.actionType = "getItemByChannelNeedNo";
...@@ -70,26 +63,18 @@ class AccessAuthAPI extends WEBBase { ...@@ -70,26 +63,18 @@ class AccessAuthAPI extends WEBBase {
opResult.data.typeCode = needResult.data.typeCode opResult.data.typeCode = needResult.data.typeCode
break; break;
case "getLoginByUserName"://渠道通过账户进行登录,有则返回用户信息,没有则创建用户 case "getLoginByUserName"://渠道通过账户进行登录,有则返回用户信息,没有则创建用户
var tmpOpResult = await this.utilsAuthSve.getLoginByUserName(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getLoginByUserName(req, pobj, pobj.actionBody);
if (tmpOpResult.status != 0 && tmpOpResult.status != 2060) {
return tmpOpResult;
}
opResult = system.getResultSuccess({ userpin: pobj.actionBody.userpin })
if (tmpOpResult.status == 2060) {
opResult.msg = tmpOpResult.msg;
opResult.data.userpin = tmpOpResult.data.userpin;
}
break; break;
case "getVerifyCode"://获取默认模板的手机验证码 case "getVerifyCode"://获取默认模板的手机验证码---已优化
opResult = await this.utilsAuthSve.getVerifyCodeByMoblie(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getVerifyCodeByMoblie(req, pobj, pobj.actionBody);
if (opResult.status == 0) { if (opResult.status == 0) {
return system.getResultSuccess() return system.getResultSuccess()
} }
break; break;
case "userPinByLgoin"://通过账户和密码登录 case "userPinByLgoin"://通过账户和密码登录---已优化
opResult = await this.utilsAuthSve.getReqUserPinByLgoin(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getReqUserPinByLgoin(req, pobj, pobj.actionBody);
if (opResult.status == 0) { if (opResult.status == 0) {
return system.getResultSuccess({ userpin: pobj.actionBody.userpin }) return opResult;
} }
break; break;
case "userTestLogin": // 假登陆 case "userTestLogin": // 假登陆
...@@ -98,30 +83,33 @@ class AccessAuthAPI extends WEBBase { ...@@ -98,30 +83,33 @@ class AccessAuthAPI extends WEBBase {
} else { } else {
return system.getResultFail(-1, '用户名或密码错误') return system.getResultFail(-1, '用户名或密码错误')
} }
case "userPinByLgoinVcode"://通过短信登录信息 case "userPinByLgoinVcode"://通过短信登录信息---已优化
pobj.actionBody.reqType = "login"; pobj.actionBody.reqType = "login";
opResult = await this.utilsAuthSve.getReqUserPinByLgoinVcode(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getReqUserPinByLgoinVcode(req, pobj, pobj.actionBody);
if (opResult.status == 0) { // if (opResult.status == 0) {
return system.getResultSuccess({ userpin: pobj.actionBody.userpin }) // return system.getResultSuccess({ userpin: pobj.actionBody.userpin })
} // }
break; break;
case "userPinByRegister"://通过短信注册信息 case "userPinByRegister"://通过短信注册信息---已优化
pobj.actionBody.reqType = "reg"; pobj.actionBody.reqType = "reg";
opResult = await this.utilsAuthSve.getReqUserPinByLgoinVcode(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getReqUserPinByLgoinVcode(req, pobj, pobj.actionBody);
if (opResult.status == 0) { // if (opResult.status == 0) {
return system.getResultSuccess({ userpin: pobj.actionBody.userpin }) // return system.getResultSuccess({ userpin: pobj.actionBody.userpin })
} // }
break; break;
case "putUserPwdByMobile"://通过手机验证码修改用户密码 case "putUserPwdByMobile"://通过手机验证码修改用户密码---已优化
opResult = await this.utilsAuthSve.putUserPwdByMobile(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.putUserPwdByMobile(pobj, pobj.actionBody);
break; break;
case "getLoginInfo"://通过userpin获取用户登录信息 case "putUserMobileByVcode"://通过手机验证码修改手机号,邮箱
opResult = await this.utilsAuthSve.putUserMobileByVcode(pobj, pobj.actionBody);
break;
case "getLoginInfo"://通过userpin获取用户登录信息--已经废弃,在路由中处理了
opResult = await this.utilsAuthSve.getLoginInfo(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getLoginInfo(pobj, pobj.actionBody);
break; break;
case "channelUserLogin": case "channelUserLogin":
opResult = await this.utilsAuthSve.channelUserLogin(pobj,pobj.actionBody,req); opResult = await this.utilsAuthSve.channelUserLogin(pobj, pobj.actionBody, req);
break; break;
case "logout"://用户退出 case "logout"://用户退出--已经废弃,前端自己进行移除userpin信息
opResult = await this.utilsAuthSve.userLogout(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.userLogout(pobj, pobj.actionBody);
break; break;
default: default:
...@@ -140,10 +128,7 @@ class AccessAuthAPI extends WEBBase { ...@@ -140,10 +128,7 @@ class AccessAuthAPI extends WEBBase {
var token = this.getUUID(); var token = this.getUUID();
pobj.actionBody.reqType = "hosts"; pobj.actionBody.reqType = "hosts";
var opResult = await this.utilsAuthSve.getReqTokenByHosts(pobj.actionBody, token); var opResult = await this.utilsAuthSve.getReqTokenByHosts(pobj.actionBody, token);
if (opResult.status != 0) { return opResult;
return opResult;
}
return system.getResultSuccess({ token: token })
} }
/** /**
* 接口跳转-POST请求 * 接口跳转-POST请求
...@@ -153,10 +138,7 @@ class AccessAuthAPI extends WEBBase { ...@@ -153,10 +138,7 @@ class AccessAuthAPI extends WEBBase {
var token = this.getUUID(); var token = this.getUUID();
pobj.actionBody.reqType = "appkey"; pobj.actionBody.reqType = "appkey";
var opResult = await this.utilsAuthSve.getReqTokenByHosts(pobj.actionBody, token); var opResult = await this.utilsAuthSve.getReqTokenByHosts(pobj.actionBody, token);
if (opResult.status != 0) { return opResult;
return opResult;
}
return system.getResultSuccess({ token: token })
} }
} }
module.exports = AccessAuthAPI; module.exports = AccessAuthAPI;
\ No newline at end of file
...@@ -42,15 +42,7 @@ class ChannelAccessAuthAPI extends WEBBase { ...@@ -42,15 +42,7 @@ class ChannelAccessAuthAPI extends WEBBase {
pobj.actionBody.channelUserId = aliUserResult.data.channelUserId; pobj.actionBody.channelUserId = aliUserResult.data.channelUserId;
pobj.actionBody.isAdmin = aliUserResult.data.isAdmin; pobj.actionBody.isAdmin = aliUserResult.data.isAdmin;
pobj.actionBody.isSuper = aliUserResult.data.isSuper; pobj.actionBody.isSuper = aliUserResult.data.isSuper;
var tmpOpResult = await this.utilsAuthSve.getLoginByUserName(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getLoginByUserName(req, pobj, pobj.actionBody);
if (tmpOpResult.status != 0 && tmpOpResult.status != 2060) {
return tmpOpResult;
}
opResult = system.getResultSuccess({ userpin: pobj.actionBody.userpin })
if (tmpOpResult.status == 2060) {
opResult.msg = tmpOpResult.msg;
opResult.data.userpin = tmpOpResult.data.userpin;
}
break; break;
case "getDingJsApiAuthInfo"://获取钉钉鉴权信息 case "getDingJsApiAuthInfo"://获取钉钉鉴权信息
opResult = await this.utilsChannelAuthSve.getDingJsApiAuthInfo(pobj, pobj.actionBody); opResult = await this.utilsChannelAuthSve.getDingJsApiAuthInfo(pobj, pobj.actionBody);
......
var APIBase = require("../../api.base");
var system = require("../../../system");
var settings = require("../../../../config/settings");
const uuidv4 = require('uuid/v4');
/**
* icp通知接口(百度icp接入)
* 庄冰 2020.10.22
*/
class Consultation extends APIBase {
constructor() {
super();
this.gatewaypushlogSve = system.getObject("service.common.gatewaypushlogSve");
}
getUUID() {
var uuid = uuidv4();
var u = uuid.replace(/\-/g, "");
return u;
}
getResultSuccess(requestId) {
return {
"requestId": requestId,
"success": true,
"errorMsg": "",
"errorCode": "ok"
}
}
getResultFail(errmsg) {
var self = this;
return {
"requestId": self.getUUID(),
"success": false,
"errorMsg": errmsg,
"errorCode": "ok"
};
}
//icp需求提交
async submit(pobj,obj,req) {
var self = this;
if(!pobj.appInfo || !pobj.appInfo.uapp_key || !pobj.appInfo.uapp_secret){
return self.getResultFail("未知应用或应用未启用");
}
if (!pobj.intentionBizId) {
return self.getResultFail("intentionBizId不能为空");
}
if (!pobj.phone) {
return self.getResultFail("mobile不能为空");
}
if (!pobj.consultType) {
return self.getResultFail("consultType不能为空");
}
pobj.type = pobj.consultType;
pobj.mobile = pobj.phone;
pobj.action_type = "submitIcpNeed";
if (pobj.area) {
switch (pobj.area) {
case "1":
pobj.area = "北京";
break;
case "2":
pobj.area = "上海";
break;
case "3":
pobj.area = "福建";
break;
case "4":
pobj.area = "广西";
break;
case "5":
pobj.area = "广东";
break;
case "6":
pobj.area = "安徽";
break;
case "7":
pobj.area = "河南";
break;
case "8":
pobj.area = "湖北";
break;
case "9":
pobj.area = "浙江";
break;
case "10":
pobj.area = "江苏";
break;
case "11":
pobj.area = "山东";
break;
case "12":
pobj.area = "陕西";
break;
case "13":
pobj.area = "宁夏";
break;
case "14":
pobj.area = "甘肃";
break;
case "15":
pobj.area = "新疆";
break;
case "16":
pobj.area = "青海";
break;
case "17":
pobj.area = "天津";
break;
case "18":
pobj.area = "重庆";
break;
case "19":
pobj.area = "河北";
break;
case "20":
pobj.area = "山西";
break;
case "21":
pobj.area = "辽宁";
break;
case "22":
pobj.area = "吉林";
break;
case "23":
pobj.area = "黑龙江";
break;
case "24":
pobj.area = "江西";
break;
case "25":
pobj.area = "湖南";
break;
case "26":
pobj.area = "四川";
break;
case "27":
pobj.area = "贵州";
break;
case "28":
pobj.area = "云南";
break;
case "29":
pobj.area = "内蒙古";
break;
case "30":
pobj.area = "西藏";
break;
case "31":
pobj.area = "含外资";
break;
case "32":
pobj.area = "全外资";
break;
case "33":
pobj.area = "香港";
break;
case "34":
pobj.area = "海南";
break;
default:
pobj.area = "";
break;
}
}
if (!pobj.area) {
return self.getResultFail("area参数错误");
}
var param = {
requestId: req.requestId || self.getUUID(),
requestUrl: "/icp/consultation/submit",
requestjson: JSON.stringify(pobj),//请求地址
pushUrl: "/action/intentionapi/springBoard",//调用地址
pushActionType: "submitIcpNeed",//调用参数
pushtimes: 0,//推送次数
pushStatus: "wts",//推送状态
}
await self.gatewaypushlogSve.create(param);
return self.getResultSuccess(param.requestId);
}
}
module.exports = Consultation;
\ No newline at end of file
var APIBase = require("../../api.base");
var system = require("../../../system");
var settings = require("../../../../config/settings");
const uuidv4 = require('uuid/v4');
/**
* icp通知接口(百度icp接入)
* 庄冰 2020.10.22
*/
class Feedback extends APIBase {
constructor() {
super();
this.gatewaypushlogSve = system.getObject("service.common.gatewaypushlogSve");
}
getUUID() {
var uuid = uuidv4();
var u = uuid.replace(/\-/g, "");
return u;
}
getResultSuccess(requestId) {
return {
"requestId": requestId,
"success": true,
"errorMsg": "",
"errorCode": "ok"
}
}
getResultFail(errmsg) {
var self = this;
return {
"requestId": self.getUUID(),
"success": false,
"errorMsg": errmsg,
"errorCode": "ok"
};
}
//icp需求反馈
async submit(pobj,obj,req) {
var self = this;
if(!pobj.appInfo || !pobj.appInfo.uapp_key || !pobj.appInfo.uapp_secret){
return self.getResultFail("未知应用或应用未启用");
}
if (!pobj.intentionBizId) {
return self.getResultFail("intentionBizId不能为空");
}
if (!pobj.description) {
return self.getResultFail("description不能为空");
}
if (!pobj.intentionStatus) {
return self.getResultFail("intentionStatus不能为空");
}
var param = {
requestId: req.requestId || self.getUUID(),
requestUrl: "/icp/feedback/submit",
requestjson: JSON.stringify(pobj),//请求地址
pushUrl: "/action/intentionapi/springBoard",//调用地址
pushActionType: "icpFeedbackSubmit",//调用参数
pushtimes: 0,//推送次数
pushStatus: "wts",//推送状态
}
await self.gatewaypushlogSve.create(param);
return self.getResultSuccess(param.requestId);
}
}
module.exports = Feedback;
\ No newline at end of file
var APIBase = require("../../api.base");
var system = require("../../../system");
var settings = require("../../../../config/settings");
const uuidv4 = require('uuid/v4');
/**
* icp通知接口(百度icp接入)
* 庄冰 2020.10.22
*/
class Order extends APIBase {
constructor() {
super();
this.gatewaypushlogSve = system.getObject("service.common.gatewaypushlogSve");
}
getUUID() {
var uuid = uuidv4();
var u = uuid.replace(/\-/g, "");
return u;
}
getResultSuccess(requestId) {
return {
"requestId": requestId,
"success": true,
"errorMsg": "",
"errorCode": "ok"
}
}
getResultFail(errmsg) {
var self = this;
return {
"requestId": self.getUUID(),
"success": false,
"errorMsg": errmsg,
"errorCode": "ok"
};
}
//icp状态变更
async notify(pobj,obj,req) {
var self = this;
if(!pobj.appInfo || !pobj.appInfo.uapp_key || !pobj.appInfo.uapp_secret){
return self.getResultFail("未知应用或应用未启用");
}
if (!pobj.orderNo) {
return self.getResultFail("orderNo不能为空");
}
if(!pobj.isDirectBuy || pobj.isDirectBuy=="0"){
pobj.isDirectBuy=0;
}
pobj.status = 1;
if (pobj.isDirectBuy==0 && !pobj.bizId) {
return self.getResultFail("非直接下单bizId不能为空");
}
if (pobj.isDirectBuy==1 && !pobj.phone) {
return self.getResultFail("直接下单phone不能为空");
}
if (pobj.isDirectBuy==1 && !pobj.consultType) {
return self.getResultFail("直接下单consultType不能为空");
}
pobj.action_type = "icpOrderStatus";
var param = {
requestId: req.requestId || self.getUUID(),
requestUrl: "/icp/order/notify",
requestjson: JSON.stringify(pobj),//请求地址
pushUrl: "/action/intentionapi/springBoard",//调用地址
pushActionType: "icpNotifyNew",//调用参数
pushtimes: 0,//推送次数
pushStatus: "wts",//推送状态
}
await self.gatewaypushlogSve.create(param);
return self.getResultSuccess(param.requestId);
}
}
module.exports = Order;
\ No newline at end of file
var WEBBase = require("../../web.base"); var WEBBase = require("../../web.base");
var system = require("../../../system"); var system = require("../../../system");
var settings = require("../../../../config/settings"); var settings = require("../../../../config/settings");
class NameAPI extends WEBBase{ class NameAPI extends WEBBase {
constructor() { constructor() {
super(); super();
this.redisClient = system.getObject("util.redisClient"); this.redisClient = system.getObject("util.redisClient");
...@@ -29,17 +29,17 @@ class NameAPI extends WEBBase{ ...@@ -29,17 +29,17 @@ class NameAPI extends WEBBase{
opResult = await this.getCache(); opResult = await this.getCache();
break; break;
case "getPreference"://偏好 case "getPreference"://偏好
opResult=await this.getPreference(); opResult = await this.getPreference();
break; break;
case "createName"://起名 case "createName"://起名
opResult =await this.addOrderDelivery(pobj,pobj.actionBody); opResult = await this.addOrderDelivery(pobj, pobj.actionBody);
break; break;
case "getNameDetail"://详情 case "getNameDetail"://详情
opResult = await this.getNameDetail(pobj); opResult = await this.getNameDetail(pobj);
break; break;
case "getNames"://详情 case "getNames"://详情
opResult = await this.getNames(pobj,pobj.actionBody); opResult = await this.getNames(req, pobj.actionBody);
break; break;
default: default:
opResult = system.getResult(null, "action_type参数错误"); opResult = system.getResult(null, "action_type参数错误");
break; break;
...@@ -51,7 +51,7 @@ class NameAPI extends WEBBase{ ...@@ -51,7 +51,7 @@ class NameAPI extends WEBBase{
* 获取行业类别数据 後期可提出為一個service文件 * 获取行业类别数据 後期可提出為一個service文件
* @returns {Promise<{}>} * @returns {Promise<{}>}
*/ */
async getCache(){ async getCache() {
let cacheResult = {}; let cacheResult = {};
cacheResult.cache = cacheJson cacheResult.cache = cacheJson
return system.getResult(cacheResult); return system.getResult(cacheResult);
...@@ -61,17 +61,17 @@ class NameAPI extends WEBBase{ ...@@ -61,17 +61,17 @@ class NameAPI extends WEBBase{
* 获取偏好信息 後期可提出為一個service文件 * 获取偏好信息 後期可提出為一個service文件
* @returns {Promise<{}>} * @returns {Promise<{}>}
*/ */
async getPreference(){ async getPreference() {
let preResult = {}; let preResult = {};
const key = 'qmbpreference'; const key = 'qmbpreference';
let result = await this.redisClient.get(key) let result = await this.redisClient.get(key)
if(result){ if (result) {
preResult.preference = JSON.parse(result); preResult.preference = JSON.parse(result);
return system.getResult(preResult); return system.getResult(preResult);
}else{ } else {
const data = await this.restPostUrl({},this.centerCacheUrl+"preference_select"); const data = await this.restPostUrl({}, this.centerCacheUrl + "preference_select");
if(data.code == 200){ if (data.code == 200) {
await this.redisClient.set(key,JSON.stringify(data.data),2*3600) await this.redisClient.set(key, JSON.stringify(data.data), 2 * 3600)
preResult.preference = data.data preResult.preference = data.data
return system.getResult(preResult); return system.getResult(preResult);
} }
...@@ -84,7 +84,7 @@ class NameAPI extends WEBBase{ ...@@ -84,7 +84,7 @@ class NameAPI extends WEBBase{
* @param actionBody * @param actionBody
* @returns {Promise<{msg: string, data: (*|null), bizmsg: *, status: number}|{msg: *, data: *, status: *}|{msg: *, data: (*|null), status: number}>} * @returns {Promise<{msg: string, data: (*|null), bizmsg: *, status: number}|{msg: *, data: *, status: *}|{msg: *, data: (*|null), status: number}>}
*/ */
async addOrderDelivery(pobj,actionBody){ async addOrderDelivery(pobj, actionBody) {
if (!actionBody.orderId) { if (!actionBody.orderId) {
return system.getResult(null, "orderId参数不能为空"); return system.getResult(null, "orderId参数不能为空");
} }
...@@ -106,46 +106,43 @@ class NameAPI extends WEBBase{ ...@@ -106,46 +106,43 @@ class NameAPI extends WEBBase{
if (!actionBody.preference) { if (!actionBody.preference) {
return system.getResult(null, "preference参数不能为空"); return system.getResult(null, "preference参数不能为空");
} }
await this.redisClient.set("ch"+JSON.stringify(actionBody.orderId),JSON.stringify(actionBody)); await this.redisClient.set("ch" + JSON.stringify(actionBody.orderId), JSON.stringify(actionBody));
return system.getResultSuccess(); return system.getResultSuccess();
} }
//获取取名结果,并保存到数据库 //获取取名结果,并保存到数据库
async getNameDetail(pobj){ async getNameDetail(pobj) {
pobj.actionType = 'getOrderDeliveryInfo'; pobj.actionType = 'getOrderDeliveryInfo';
const opResult = await this.utilsOrderSve.getOrderDeliveryInfo(pobj, pobj.actionBody); const opResult = await this.utilsOrderSve.getOrderDeliveryInfo(pobj, pobj.actionBody);
if(opResult.status != 0){ if (opResult.status != 0) {
return system.getResult(null,opResult.msg); return system.getResult(null, opResult.msg);
} }
if(opResult.data.hasOwnProperty('result_name')){ if (opResult.data.hasOwnProperty('result_name')) {
return system.getResult(opResult.data,'操作成功'); return system.getResult(opResult.data, '操作成功');
} }
let actionBody =await this.redisClient.get('ch'+ JSON.stringify(pobj.actionBody.orderNo)); let actionBody = await this.redisClient.get('ch' + JSON.stringify(pobj.actionBody.orderNo));
if(!actionBody){ if (!actionBody) {
return system.getResult(null) return system.getResult(null)
} }
let nameResult = await this.restPostUrl(JSON.parse(actionBody),this.centerCacheUrl+"treasure_name"); let nameResult = await this.restPostUrl(JSON.parse(actionBody), this.centerCacheUrl + "treasure_name");
if(nameResult.code == 200){ if (nameResult.code == 200) {
pobj.actionType = 'addOrderDelivery'; pobj.actionType = 'addOrderDelivery';
pobj.actionBody = nameResult.data; pobj.actionBody = nameResult.data;
//取名结果存储 //取名结果存储
let result = await this.restPostUrl(pobj,this.centerOrderUrl + "action/nameOrder/springBoard"); let result = await this.restPostUrl(pobj, this.centerOrderUrl + "action/nameOrder/springBoard");
return system.getResult(nameResult.data,"操作成功"); return system.getResult(nameResult.data, "操作成功");
} }
return system.getResult(null,'try again'); return system.getResult(null, 'try again');
} }
async getNames(pobj,actionBody){ async getNames(req, actionBody) {
let rtn = await this.restClient.execPost(actionBody,this.aliGetNamesjavaUrl); const result = await this.execPostByTimeOut(req, actionBody, this.aliGetNamesjavaUrl);
if (!rtn.stdout) { if (result.status != 0) {
return system.getResultFail(); return result;
} }
var result = JSON.parse(rtn.stdout); const tmpData = result.data ? result.data.companyName : [];
if(result) { return system.getResultSuccess(tmpData);
return system.getResultSuccess(result);
}
return system.getResultFail(result);
} }
} }
...@@ -153,7 +150,7 @@ const cacheJson = { ...@@ -153,7 +150,7 @@ const cacheJson = {
"科技类": ["网络科技", "电子商务", "信息技术", "游戏", "电子", "软件", "新材料", "生物科技", "教育科技", "环保科技", "信息科技"], "科技类": ["网络科技", "电子商务", "信息技术", "游戏", "电子", "软件", "新材料", "生物科技", "教育科技", "环保科技", "信息科技"],
"许可类": ["投资管理", "金融", "资产", "商业保理", "融资租赁", "医疗器械", "人力资源", "食品", "劳务派遣"], "许可类": ["投资管理", "金融", "资产", "商业保理", "融资租赁", "医疗器械", "人力资源", "食品", "劳务派遣"],
"服务类": ["广告", "文化传媒", "建筑装潢", "设计", "美容美发", "房地产中介", "物业管理", "商务咨询", "企业管理"], "服务类": ["广告", "文化传媒", "建筑装潢", "设计", "美容美发", "房地产中介", "物业管理", "商务咨询", "企业管理"],
"其他": ["贸易","实业","制造","服饰","化妆品","工程","农业","餐饮管理","物流"], "其他": ["贸易", "实业", "制造", "服饰", "化妆品", "工程", "农业", "餐饮管理", "物流"],
} }
......
...@@ -26,7 +26,7 @@ class ProductAPI extends WEBBase { ...@@ -26,7 +26,7 @@ class ProductAPI extends WEBBase {
pobj.requestId = req.requestId; pobj.requestId = req.requestId;
var opResult = null; var opResult = null;
switch (action_type) { switch (action_type) {
case "getParamsFor360"://创建订单 case "getParamsFor360":
opResult = await this.utils360Sve.getParamsFor360(pobj, pobj.actionBody); opResult = await this.utils360Sve.getParamsFor360(pobj, pobj.actionBody);
break; break;
default: default:
......
...@@ -32,41 +32,33 @@ class AccessAuthAPI extends APIBase { ...@@ -32,41 +32,33 @@ class AccessAuthAPI extends APIBase {
opResult = system.getResultSuccess(null, "测试成功"); opResult = system.getResultSuccess(null, "测试成功");
break; break;
case "getLoginByUserName"://渠道通过账户进行登录,有则返回用户信息,没有则创建用户 case "getLoginByUserName"://渠道通过账户进行登录,有则返回用户信息,没有则创建用户
var tmpOpResult = await this.utilsAuthSve.getLoginByUserName(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getLoginByUserName(req, pobj, pobj.actionBody);
if (tmpOpResult.status != 0 && tmpOpResult.status != 2060) {
return tmpOpResult;
}
opResult = system.getResultSuccess({ userpin: pobj.actionBody.userpin })
if (tmpOpResult.status == 2060) {
opResult.msg = tmpOpResult.msg;
opResult.data.userpin = tmpOpResult.data.userpin;
}
break; break;
case "getVerifyCode"://获取默认模板的手机验证码 case "getVerifyCode"://获取默认模板的手机验证码
opResult = await this.utilsAuthSve.getVerifyCodeByMoblie(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getVerifyCodeByMoblie(req, pobj, pobj.actionBody);
if (opResult.status == 0) { if (opResult.status == 0) {
return system.getResultSuccess() return system.getResultSuccess()
} }
break; break;
case "userPinByLgoin"://通过账户和密码登录 case "userPinByLgoin"://通过账户和密码登录
opResult = await this.utilsAuthSve.getReqUserPinByLgoin(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getReqUserPinByLgoin(req, pobj, pobj.actionBody);
if (opResult.status == 0) { if (opResult.status == 0) {
return system.getResultSuccess({ userpin: pobj.actionBody.userpin }) return opResult;
} }
break; break;
case "userPinByLgoinVcode"://通过短信登录信息 case "userPinByLgoinVcode"://通过短信登录信息
pobj.actionBody.reqType = "login"; pobj.actionBody.reqType = "login";
opResult = await this.utilsAuthSve.getReqUserPinByLgoinVcode(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getReqUserPinByLgoinVcode(req, pobj, pobj.actionBody);
if (opResult.status == 0) { // if (opResult.status == 0) {
return system.getResultSuccess({ userpin: pobj.actionBody.userpin }) // return system.getResultSuccess({ userpin: pobj.actionBody.userpin })
} // }
break; break;
case "userPinByRegister"://通过短信注册信息 case "userPinByRegister"://通过短信注册信息
pobj.actionBody.reqType = "reg"; pobj.actionBody.reqType = "reg";
opResult = await this.utilsAuthSve.getReqUserPinByLgoinVcode(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.getReqUserPinByLgoinVcode(req, pobj, pobj.actionBody);
if (opResult.status == 0) { // if (opResult.status == 0) {
return system.getResultSuccess({ userpin: pobj.actionBody.userpin }) // return system.getResultSuccess({ userpin: pobj.actionBody.userpin })
} // }
break; break;
case "putUserPwdByMobile"://通过手机验证码修改用户密码 case "putUserPwdByMobile"://通过手机验证码修改用户密码
opResult = await this.utilsAuthSve.putUserPwdByMobile(pobj, pobj.actionBody); opResult = await this.utilsAuthSve.putUserPwdByMobile(pobj, pobj.actionBody);
...@@ -92,11 +84,8 @@ class AccessAuthAPI extends APIBase { ...@@ -92,11 +84,8 @@ class AccessAuthAPI extends APIBase {
async getAppTokenByHosts(pobj, qobj, req) { async getAppTokenByHosts(pobj, qobj, req) {
var token = this.getUUID(); var token = this.getUUID();
pobj.actionBody.reqType = "hosts"; pobj.actionBody.reqType = "hosts";
var opResult = await this.utilsAuthSve.getReqTokenByHosts(pobj.actionBody, token); let opResult = await this.utilsAuthSve.getReqTokenByHosts(pobj.actionBody, token);
if (opResult.status != 0) { return opResult;
return opResult;
}
return system.getResultSuccess({ token: token })
} }
/** /**
* 接口跳转-POST请求 * 接口跳转-POST请求
...@@ -105,11 +94,8 @@ class AccessAuthAPI extends APIBase { ...@@ -105,11 +94,8 @@ class AccessAuthAPI extends APIBase {
async getAppTokenByAppKey(pobj, qobj, req) { async getAppTokenByAppKey(pobj, qobj, req) {
var token = this.getUUID(); var token = this.getUUID();
pobj.actionBody.reqType = "appkey"; pobj.actionBody.reqType = "appkey";
var opResult = await this.utilsAuthSve.getReqTokenByHosts(pobj.actionBody, token); let opResult = await this.utilsAuthSve.getReqTokenByHosts(pobj.actionBody, token);
if (opResult.status != 0) { return opResult;
return opResult;
}
return system.getResultSuccess({ token: token })
} }
} }
module.exports = AccessAuthAPI; module.exports = AccessAuthAPI;
\ No newline at end of file
...@@ -2,53 +2,53 @@ var APIBase = require("../../api.base"); ...@@ -2,53 +2,53 @@ var APIBase = require("../../api.base");
var system = require("../../../system"); var system = require("../../../system");
var settings = require("../../../../config/settings"); var settings = require("../../../../config/settings");
class edi extends APIBase { class edi extends APIBase {
constructor() { constructor() {
super(); super();
this.centerorderSve = system.getObject("service.common.centerorderSve"); this.centerorderSve = system.getObject("service.common.centerorderSve");
this.utilsOrderSve = system.getObject("service.utilsSve.utilsOrderSve"); this.utilsOrderSve = system.getObject("service.utilsSve.utilsOrderSve");
this.utilsNeedSve = system.getObject("service.utilsSve.utilsNeedSve"); this.utilsNeedSve = system.getObject("service.utilsSve.utilsNeedSve");
} }
/** /**
* 接口跳转-POST请求 * 接口跳转-POST请求
* action_process 执行的流程 * action_process 执行的流程
* action_type 执行的类型 * action_type 执行的类型
* action_body 执行的参数 * action_body 执行的参数
*/ */
async springBoard(pobj, qobj, req) { async springBoard(pobj, qobj, req) {
if (!pobj.actionType) { if (!pobj.actionType) {
return system.getResult(null, "actionType参数不能为空"); return system.getResult(null, "actionType参数不能为空");
}
var result = await this.opActionProcess(pobj, pobj.actionType, pobj.actionBody, req);
return result;
} }
async opActionProcess(pobj, action_type, action_body, req) { var result = await this.opActionProcess(pobj, pobj.actionType, pobj.actionBody, req);
var opResult = null; return result;
switch (action_type) { }
case "submitNeedAliEsp": async opActionProcess(pobj, action_type, action_body, req) {
opResult = await this.utilsNeedSve.submitNeedAliEsp(pobj,pobj.actionBody); var opResult = null;
break; switch (action_type) {
case "needCloseAliEsp": case "submitNeedAliEsp":
opResult = await this.utilsNeedSve.needCloseAliEsp(pobj,pobj.actionBody); opResult = await this.utilsNeedSve.submitNeedAliEsp(pobj, pobj.actionBody);
break; break;
case "produceNoticeAliEsp": case "needCloseAliEsp":
opResult = await this.utilsNeedSve.ediNotify(pobj, pobj.actionBody); opResult = await this.utilsNeedSve.needCloseAliEsp(pobj, pobj.actionBody);
if (opResult.status == 0) { break;
opResult = await this.utilsNeedSve.produceNoticeAliEsp(pobj,pobj.actionBody); case "produceNoticeAliEsp":
} opResult = await this.utilsNeedSve.ediNotify(pobj, pobj.actionBody);
break; if (opResult.status == 0) {
case "soulutionFeebackAliEsp": opResult = await this.utilsNeedSve.produceNoticeAliEsp(req, pobj, pobj.actionBody);
// opResult = await this.utilsNeedSve.ediNotify(pobj, pobj.actionBody);
// opResult = await this.utilsNeedSve.soulutionFeebackAliEsp(pobj,pobj.actionBody);
pobj.actionType = "receiveFeedback"
opResult = await this.centerorderSve.reqCenterOrderApi(pobj);
break;
default:
opResult = system.getResult(null, "action_type参数错误");
break;
} }
return opResult; break;
case "soulutionFeebackAliEsp":
// opResult = await this.utilsNeedSve.ediNotify(pobj, pobj.actionBody);
// opResult = await this.utilsNeedSve.soulutionFeebackAliEsp(pobj,pobj.actionBody);
pobj.actionType = "receiveFeedback"
opResult = await this.centerorderSve.reqCenterOrderApi(pobj);
break;
default:
opResult = system.getResult(null, "action_type参数错误");
break;
} }
return opResult;
}
} }
module.exports = edi; module.exports = edi;
\ No newline at end of file
...@@ -5,6 +5,7 @@ const md5 = require("MD5"); ...@@ -5,6 +5,7 @@ const md5 = require("MD5");
class WEBBase { class WEBBase {
constructor() { constructor() {
this.restClient = system.getObject("util.restClient"); this.restClient = system.getObject("util.restClient");
this.execClientNew = system.getObject("util.execClientNew");
this.cacheManager = system.getObject("db.common.cacheManager"); this.cacheManager = system.getObject("db.common.cacheManager");
this.logCtl = system.getObject("service.common.oplogSve"); this.logCtl = system.getObject("service.common.oplogSve");
this.toolSve = system.getObject("service.trademark.toolSve"); this.toolSve = system.getObject("service.trademark.toolSve");
...@@ -68,10 +69,23 @@ class WEBBase { ...@@ -68,10 +69,23 @@ class WEBBase {
async restPostUrl(pobj, url) { async restPostUrl(pobj, url) {
var rtn = await this.restClient.execPost(pobj, url); var rtn = await this.restClient.execPost(pobj, url);
if (!rtn || !rtn.stdout) { if (!rtn || !rtn.stdout) {
return system.getResult(null, "restPost data is empty"); return system.getResult(null, "restPost data is empty");
} }
var result = JSON.parse(rtn.stdout); var result = JSON.parse(rtn.stdout);
return result; return result;
} }
/**
* 带超时时间的post请求
* @param {*} req 请求信息
* @param {*} params 请求数据-json格式
* @param {*} url 请求地址
* @param {*} ContentType 请求头类型,默认application/json
* @param {*} headData 请求头内容-json格式,如:请求头中传递token,格式:{token:"9098902q849q0434q09439"}
* @param {*} timeOut 超时时间
*/
async execPostByTimeOut(req, params, url, ContentType, headData, timeOut = 60) {
const result = await this.execClientNew.execPostTimeOutByBusiness('sve.base', params, url, ContentType, headData, timeOut, req);
return result;
}
} }
module.exports = WEBBase; module.exports = WEBBase;
const CacheBase = require("../cache.base"); const CacheBase = require("../cache.base");
const system = require("../../system"); const system = require("../../system");
const settings = require("../../../config/settings"); const settings = require("../../../config/settings");
class AppTokenByHostsCache extends CacheBase { class AppTokenByHostsCache extends CacheBase {//----废弃--sy-2020-10-21
constructor() { constructor() {
super(); super();
this.restClient = system.getObject("util.restClient"); this.restClient = system.getObject("util.restClient");
...@@ -16,7 +16,7 @@ class AppTokenByHostsCache extends CacheBase { ...@@ -16,7 +16,7 @@ class AppTokenByHostsCache extends CacheBase {
var actionBody = val; var actionBody = val;
var acckapp = await this.restClient.execPost(actionBody, settings.centerAppUrl() + "auth/accessAuth/getTokenByHosts"); var acckapp = await this.restClient.execPost(actionBody, settings.centerAppUrl() + "auth/accessAuth/getTokenByHosts");
var result = acckapp.stdout; var result = acckapp.stdout;
console.log(acckapp.stdout, "AppTokenByHostsCache............. acckapp.stdout.........."); // console.log(acckapp.stdout, "AppTokenByHostsCache............. acckapp.stdout..........");
if (result) { if (result) {
var tmp = JSON.parse(result); var tmp = JSON.parse(result);
return tmp; return tmp;
......
...@@ -3,10 +3,13 @@ const moment = require('moment') ...@@ -3,10 +3,13 @@ const moment = require('moment')
const settings = require("../../config/settings"); const settings = require("../../config/settings");
const md5 = require("MD5"); const md5 = require("MD5");
const uuidv4 = require('uuid/v4'); const uuidv4 = require('uuid/v4');
const cryptoJS = require('crypto-js');
class AppServiceBase { class AppServiceBase {
constructor() { constructor() {
this.restClient = system.getObject("util.restClient"); this.restClient = system.getObject("util.restClient");
this.execClient = system.getObject("util.execClient"); this.execClientNew = system.getObject("util.execClientNew");
this.execClient = system.getObject('util.execClient');
this.cacheManager = system.getObject("db.common.cacheManager"); this.cacheManager = system.getObject("db.common.cacheManager");
this.pushlogSve = system.getObject("service.common.pushlogSve"); this.pushlogSve = system.getObject("service.common.pushlogSve");
this.pushlogFailType = { OLDRPC: 1, NEWRPC: 2, FAILLOG: 3, FQ: 4 }; this.pushlogFailType = { OLDRPC: 1, NEWRPC: 2, FAILLOG: 3, FQ: 4 };
...@@ -365,7 +368,7 @@ class AppServiceBase { ...@@ -365,7 +368,7 @@ class AppServiceBase {
返回20位业务订单号 返回20位业务订单号
prefix:业务前缀 prefix:业务前缀
*/ */
async getBusUid(prefix) { async getBusUid(prefix) {
prefix = (prefix || ""); prefix = (prefix || "");
if (prefix) { if (prefix) {
prefix = prefix.toUpperCase(); prefix = prefix.toUpperCase();
...@@ -383,7 +386,7 @@ class AppServiceBase { ...@@ -383,7 +386,7 @@ class AppServiceBase {
len:返回长度 len:返回长度
radix:参与计算的长度,最大为62 radix:参与计算的长度,最大为62
*/ */
async getUidInfo(len, radix) { async getUidInfo(len, radix) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');//长度62,到yz长度为长36 var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');//长度62,到yz长度为长36
var uuid = [], i; var uuid = [], i;
radix = radix || chars.length; radix = radix || chars.length;
...@@ -407,5 +410,95 @@ class AppServiceBase { ...@@ -407,5 +410,95 @@ class AppServiceBase {
var u = uuid.replace(/\-/g, ""); var u = uuid.replace(/\-/g, "");
return u; return u;
} }
/**
* 加密信息
* @param {*} encrypt_key
* @param {*} encrypt_secret
* @param {*} opStr
*/
async encryptStr(encrypt_key, encrypt_secret, opStr) {
if (!opStr) {
return system.getResult(null, "opStr is empty");
}
let keyHex = cryptoJS.enc.Utf8.parse(encrypt_key);
let ivHex = cryptoJS.enc.Utf8.parse(encrypt_secret.substring(0, 8));
var cipherStr = cryptoJS.TripleDES.encrypt(opStr, keyHex, { iv: ivHex }).toString();
return cipherStr;
}
/**
* 解密信息
* @param {*} encrypt_key
* @param {*} encrypt_secret
* @param {*} opStr
*/
async decryptStr(encrypt_key, encrypt_secret, opStr) {
if (!opStr) {
return system.getResult(null, "opStr is empty");
}
try {
let keyHex = cryptoJS.enc.Utf8.parse(encrypt_key);
let ivHex = cryptoJS.enc.Utf8.parse(encrypt_secret.substring(0, 8));
var bytes = cryptoJS.TripleDES.decrypt(opStr, keyHex, {
iv: ivHex
});
var plaintext = bytes.toString(cryptoJS.enc.Utf8);
if (!plaintext) {
return system.getResult(null, "解密失败" + opStr);
}
return system.getResultSuccess(plaintext);
} catch (error) {
return system.getResultFail(-200, "解密异常:" + opStr);
}
}
/**
* 带超时时间的post请求
* @param {*} req 请求信息
* @param {*} params 请求数据-json格式
* @param {*} url 请求地址
* @param {*} ContentType 请求头类型,默认application/json
* @param {*} headData 请求头内容-json格式,如:请求头中传递token,格式:{token:"9098902q849q0434q09439"}
* @param {*} timeOut 超时时间
*/
async execPostByTimeOut(req, params, url, ContentType, headData, timeOut = 60) {
const result = await this.execClientNew.execPostTimeOutByBusiness('sve.base', params, url, ContentType, headData, timeOut, req);
return result;
}
/**
* 验证签名
* @param {*} params 要验证的参数
* @param {*} app_secret 应用的校验key
*/
async verifySign(params, app_secret) {
if (!params) {
return system.getResult(null, "请求参数为空");
}
if (!params.sign) {
return system.getResult(null, "请求参数sign为空");
}
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" && params[tKey]) {
let tmpKeyValue = params[tKey];
if (tmpKeyValue instanceof Array || tmpKeyValue instanceof Object) {
tmpKeyValue = JSON.stringify(tmpKeyValue);
}
signArr.push(tKey + "=" + tmpKeyValue);
}
}
if (signArr.length == 0) {
return system.getResult(null, "请求参数组装签名参数信息为空");
}
var resultSignStr = signArr.join("&") + "&key=" + app_secret;
var resultTmpSign = md5(resultSignStr).toUpperCase();
if (params.sign != resultTmpSign) {
return system.getResult(null, "返回值签名验证失败");
}
return system.getResultSuccess();
}
} }
module.exports = AppServiceBase; module.exports = AppServiceBase;
...@@ -541,7 +541,7 @@ class CenterorderService extends AppServiceBase { ...@@ -541,7 +541,7 @@ class CenterorderService extends AppServiceBase {
//-----------接入百度ICP------start-------zhuangbing--2020.10.22------------------------- //-----------接入百度ICP------start-------zhuangbing--2020.10.22-------------------------
async icppaysuccessNew(pobj) { async icppaysuccessNew(pobj) {
var sobj = { var sobj = {
actionType: "getaliicpProduce", actionType: "getIcpProduce",
// actionBody: { typeCode: itemResult.data.channelTypeCode, province: itemResult.data.province }, // actionBody: { typeCode: itemResult.data.channelTypeCode, province: itemResult.data.province },
actionBody: { typeCode: pobj.actionBody.channelTypeCode, province: pobj.actionBody.province }, actionBody: { typeCode: pobj.actionBody.channelTypeCode, province: pobj.actionBody.province },
appInfo: pobj.appInfo, appInfo: pobj.appInfo,
...@@ -605,8 +605,7 @@ class CenterorderService extends AppServiceBase { ...@@ -605,8 +605,7 @@ class CenterorderService extends AppServiceBase {
var fqobj = { var fqobj = {
actionBody: { actionBody: {
area: pobj.actionBody.province, area: pobj.actionBody.province,
city: pobj.actionBody.province, idempotentSource: pobj.actionBody.regType,
regType: pobj.actionBody.regType,
orderNo: pobj.actionBody.channelOrder.channelOrderNo, orderNo: pobj.actionBody.channelOrder.channelOrderNo,
orderPrice: Number(pobj.actionBody.orderPrice / 100), orderPrice: Number(pobj.actionBody.orderPrice / 100),
phone: pobj.actionBody.publishMobile, phone: pobj.actionBody.publishMobile,
...@@ -629,8 +628,8 @@ class CenterorderService extends AppServiceBase { ...@@ -629,8 +628,8 @@ class CenterorderService extends AppServiceBase {
}, },
appInfo: pobj.appInfo appInfo: pobj.appInfo
} }
this.utilsPushSve.aliBusiness2Fq(fqobj, "pushOrderICPBusiness"); this.utilsPushSve.baiduBusiness2Fq(fqobj, "pushOrderICPBusinessNew");
this.utilsPushSve.aliBusiness2Delivery(deliveryObj, "pushDeliveryOrder"); this.utilsPushSve.baiduBusiness2Delivery(deliveryObj, "pushDeliveryOrder");
return system.getResultSuccess(); return system.getResultSuccess();
} }
} }
......
...@@ -60,7 +60,7 @@ class QcCenterOrderService extends AppServiceBase { ...@@ -60,7 +60,7 @@ class QcCenterOrderService extends AppServiceBase {
IntentionBizId: needinfo.channelNeedNo, IntentionBizId: needinfo.channelNeedNo,
CompanyName: solution.CompanyName, IcpType: solution.IcpType, CompanyAddress: solution.CompanyAddress, CompanyName: solution.CompanyName, IcpType: solution.IcpType, CompanyAddress: solution.CompanyAddress,
Area: solution.Area, Note: solution.Note, Area: solution.Area, Note: solution.Note,
ActionType:solution.ActionType, ActionType:solution.actionType,
Source:"官网" Source:"官网"
}; };
if (needsolution.channelSolutionNo) { if (needsolution.channelSolutionNo) {
...@@ -205,14 +205,31 @@ class QcCenterOrderService extends AppServiceBase { ...@@ -205,14 +205,31 @@ class QcCenterOrderService extends AppServiceBase {
async serviceProviderNotification(pobj) { async serviceProviderNotification(pobj) {
var res = await this.reqCenterOrderApi(pobj, "action/qcapi/springBoard"); var res = await this.reqCenterOrderApi(pobj, "action/qcapi/springBoard");
if (res && res.status == 0 && res.data) { if (res && res.status == 0 && res.data) {
pobj.actionType = "getOrderByOrderNo";
let orderUrl = settings.centerOrderUrl() + "action/order/springBoard";
let orderResult = await this.restPostUrl(pobj, orderUrl);
if(orderResult.status !=0){
return system.getResultFail(-1,'查询订单失败')
}
let uapp_id = orderResult.data.uapp_id;
pobj.appInfo = {uapp_id : uapp_id};
pobj.actionType = "getAppInterface";
var reqUrl = settings.centerAppUrl() + "action/opProduct/springBoard";
var productItemInterfaceResult = await this.restPostUrl(pobj, reqUrl);
if(productItemInterfaceResult.status != 0){
system.getResultFail(-1,'获取接口参数失败')
}
pobj.interface_info = productItemInterfaceResult.data;
pobj.pushObj = res.data;
this.utilsPushSve.pushBusInfo(pobj,'pushStatus',1);
//推送数据至阿里 //推送数据至阿里
var pushObj = { // var pushObj = {
BizId: res.data.BizId, // BizId: res.data.BizId,
OfficialFileURL: res.data.OfficialFileURL, // OfficialFileURL: res.data.OfficialFileURL,
ApplicationStatus: res.data.ApplicationStatus // ApplicationStatus: res.data.ApplicationStatus
}; // };
//推送状态变更 // //推送状态变更
this.aliclient.reqbyget({ action: "AcceptPartnerNotification", reqbody: pushObj, apiVersion: "2019-05-08" }); // this.aliclient.reqbyget({ action: "AcceptPartnerNotification", reqbody: pushObj, apiVersion: "2019-05-08" });
return system.getResultSuccess(); return system.getResultSuccess();
} }
return res; return res;
...@@ -635,5 +652,55 @@ async foodRecordLogList(pobj) { ...@@ -635,5 +652,55 @@ async foodRecordLogList(pobj) {
return system.getResultSuccess(res); return system.getResultSuccess(res);
} }
//推送订单状态
async pushOrderStatus(pobj){
if (!pobj.interface_params) {
return system.getResult(null, "interface_params can not be empty,100400");
}
let interface_params_info = JSON.parse(pobj.interface_params);
if (!interface_params_info || !interface_params_info.pushUrl || !interface_params_info.action || interface_params_info.apiVersion) {
return system.getResult(null, "interface_params(pushUrl、action、apiVersion) can not be empty,100430");
}
let pushObj = {
BizId: pobj.pushObj.BizId,
OfficialFileURL: pobj.pushObj.OfficialFileURL,
ApplicationStatus: pobj.pushObj.ApplicationStatus
};
let obj = {
action:interface_params_info.action,
reqbody:pushObj,
apiVersion:interface_params_info.apiVersion
}
let result = await this.aliclient.reqbyget(obj);
return result;
}
// //推送ICP方案
// async pushIcpSolution1(pushObj, solutionNo, appInfo, self) {
// //推送方案确认信息
// var confirmRes = await this.aliclient.reqbyget({ action: "ConfirmIntention", reqbody: { BizId: pushObj.IntentionBizId }, apiVersion: "2019-05-08" });
// console.log("confirmRes",confirmRes)
// // if (confirmRes && confirmRes.status == 0 && confirmRes.data) {
// // var confirmResData = confirmRes.data;
// // if (confirmResData.ConfirmUrl) {
// // var reqObj3 = {
// // actionType: "receiveIcpConfirmUrl",
// // appInfo: appInfo,
// // actionBody: {
// // solutionNo: solutionNo,
// // confirmUrl: confirmResData.ConfirmUrl
// // }
// // };
// // var a = await self.reqCenterOrderApi(reqObj3);//保存用户确认方案url
// // }
// // }
// // return confirmRes;
// }
} }
module.exports = QcCenterOrderService; module.exports = QcCenterOrderService;
\ No newline at end of file
// var a = new QcCenterOrderService();
// a.pushIcpSolution1({
// IntentionBizId:"20201016103819000001",
// })
const system = require("../../../system")
const settings = require("../../../../config/settings")
const md5 = require("MD5");
class SignService{
constructor() {
this.centerAppUrl = settings.centerAppUrl();
this.restClient = system.getObject("util.restClient");
}
async restPostUrl(pobj, url) {
try {
var rtn = await this.restClient.execPost(pobj, url);
if (!rtn || !rtn.stdout) {
return system.getResult(null, "restPost data is empty");
}
var result = JSON.parse(rtn.stdout);
return result;
} catch (e) {
var errorMsg = "error:" + e.stack;
return system.getResult(null, errorMsg);
}
}
async getAppInfoByAppKey(appkey){
let url = this.centerAppUrl + 'payment/paymentApi/getAppInfoByAppKey';
let appInfoRt = await this.restPostUrl({ appKey: appkey }, url);
return appInfoRt;
}
/**
* 验证签名
* @param {*} params 要验证的参数
* @param {*} app_secret 应用的校验key
*/
async verifySign(params, app_secret) {
if (!params) {
return system.getResult(null, "请求参数为空");
}
if (!params.sign) {
return system.getResult(null, "请求参数sign为空");
}
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" && params[tKey]) {
let tmpKeyValue = params[tKey];
if (tmpKeyValue instanceof Array || tmpKeyValue instanceof Object) {
tmpKeyValue = JSON.stringify(tmpKeyValue);
}
signArr.push(tKey + "=" + tmpKeyValue);
}
}
if (signArr.length == 0) {
return system.getResult(null, "请求参数组装签名参数信息为空");
}
var resultSignStr = signArr.join("&") + "&key=" + app_secret;
var resultTmpSign = md5(resultSignStr).toUpperCase();
if (params.sign != resultTmpSign) {
return system.getResult(null, "返回值签名验证失败");
}
return system.getResultSuccess();
}
async createSign(params, app_key) {
if (!params) {
return system.getResultFail(-310, "请求参数为空");
}
var signArr = [];
var keys = Object.keys(params).sort();
if (keys.length == 0) {
return system.getResultFail(-330, "请求参数信息为空");
}
for (let k = 0; k < keys.length; k++) {
const tKey = keys[k];
if (tKey != "sign" && params[tKey] && !(params[tKey] instanceof Array)) {
signArr.push(tKey + "=" + params[tKey]);
}
}
if (signArr.length == 0) {
return system.getResultFail(-350, "请求参数组装签名参数信息为空");
}
var resultSignStr = signArr.join("&") + "&key=" + app_key;
var resultTmpSign = md5(resultSignStr).toUpperCase();
return system.getResultSuccess(resultTmpSign);
}
}
module.exports = SignService;
// var task = new SignService();
// var obj = {
// "intentionBizId": "zhuangbingceshi008",
// "phone": "13075556693",
// "userName": "庄冰",
// "description": "1111111111111222",
// "area": "1",
// "consultType": 5
// };
// task.createSign(obj,"7cbb892450174167b5c7e01we4716t51").then(d=>{
// console.log(d,"!!!!!!!!!!!!!!!!!!!!!!!!!!");
// });
...@@ -2,56 +2,146 @@ var system = require("../../../system"); ...@@ -2,56 +2,146 @@ var system = require("../../../system");
var settings = require("../../../../config/settings"); var settings = require("../../../../config/settings");
const AppServiceBase = require("../../app.base"); const AppServiceBase = require("../../app.base");
const md5 = require('md5') const md5 = require('md5')
const logCtl = system.getObject("service.common.oplogSve");
//阿里支付类 //阿里支付类
class utils360Sve extends AppServiceBase { class utils360Sve extends AppServiceBase {
constructor() { constructor() {
super(); super();
this.centerAppUrl = settings.centerAppUrl(); this.centerAppUrl = settings.centerAppUrl();
} this.utilsAuthSve = system.getObject("service.utilsSve.utilsAuthSve")
//-------------------------------------------钉钉h5支付-----------------开始 this.pushlogSve = system.getObject("service.common.pushlogSve");
}
async getParamsFor360(pobj, actionBody) { //组合参数,由前端传到360
if (!actionBody.orderNo) { async getParamsFor360(pobj, actionBody) {
return system.getResult(null, "actionBody.orderNo can not be empty,100110"); if (!actionBody.orderNo) {
} return system.getResult(null, "actionBody.orderNo can not be empty,100110");
pobj.actionType = "getPayOrderInfo"; }
var orderUrl = settings.centerOrderUrl() + "action/order/springBoard"; let seaUrl = this.centerOrderUrl + 'opaction/opPayOrder/getOrderListByOrderServiceNo';
var orderResult = await this.restPostUrl(pobj, orderUrl); let seaRet = await this.restPostUrl(pobj, seaUrl);
if (orderResult.status != 0) { if (seaRet.status != 0) {
return orderResult; return system.getResultFail(-1, '获取订单信息失败')
} }
pobj.actionType ="getOrderDeliveryInfo"; let totalSum = 0;
var deliveryResult = await this.restPostUrl(pobj,orderUrl); let sku_id = '';
if (deliveryResult.status != 0) { let amount = 0;
return deliveryResult; let consignee = "";
let mobile = "";
let email = "";
for (let i = 0; i < seaRet.data.length; i++) {
let item = seaRet.data[i];
if(!mobile){
pobj.actionType.orderNo = item.orderNo;
pobj.actionType = "getOrderDeliveryInfo";
let deliveryResult = await this.restPostUrl(pobj, orderUrl);
consignee = deliveryResult.data.orderContact.contactName;
mobile = deliveryResult.data.orderContact.mobile;
email = deliveryResult.data.orderContact.email
}
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 result = {
sku_id: sku_id,
price: price,
quantity: seaRet.data.length,
amount: amount,
order_id: order_id,
consignee: consignee,
mobile: mobile,
email: email,
sign: sign
}
return system.getResult(result);
} }
let sku_id = orderResult.data.orderProduct.itemCode;
let price = Number(orderResult.data.orderProduct.price)*100; //更新订单状态到360
let quantity = orderResult.data.orderProduct.quantity; async pushOrderStatus(pobj) {
let amount = Number(orderResult.data.receiptVoucher.totalSum)*100; try {
let order_id = orderResult.data.receiptVoucher.sourceOrderNo; var verifyResult = await this.verifyParam(pobj);
let consignee = deliveryResult.data.orderContact.contactName; if (verifyResult.status != 0) {
let mobile = deliveryResult.data.orderContact.mobile; return await this.disposePushResultFail(pobj, verifyResult, "status->pushOrderStatus->verifyResult", this.pushlogFailType.FAILLOG);
let email = deliveryResult.data.orderContact.email; }
let singStr = sku_id + price + order_id + pobj.appInfo.uapp_secret; var interface_params_info = verifyResult.data;
let sign = md5(singStr).toUpperCase(); let token = await this.utilsAuthSve.get360Token();
let result ={ let url = interface_params_info.opUrl + '?token=' + token.access_token;
sku_id, let order_id = pobj.actionBody.orderNo;
price, let ApplicationStatus = pobj.pushObj.ApplicationStatus;
quantity, let status = 0;
amount, if (Number(ApplicationStatus) < 508) {
order_id, status = 30
consignee, } else {
mobile, status = 40;
email, }
sign let pushObj = {
order_id, status
}
let result = await this.restPostUrl(pushObj, url);
if(result.code ==200){
this.pushlogSve.createDb({
op: "360-pushOrderStatus",
content: JSON.stringify(pushObj),//推送的参数信息
resultInfo: JSON.stringify(result),
returnType: '1',
logLevel: '1',
opTitle: "推送360信息返回成功"
});
}else{
this.logCtl.error({
appid: pobj.appInfo ? pobj.appInfo.uapp_id || "" : "",
appkey: pobj.appInfo ? pobj.appInfo.uapp_key || "" : "",
requestId: pobj.requestId || "",
op: "utilsSve/utils360Sve/pushOrderStatus",
content: "error:" + result.msg,
// clientIp: pobj.clientIp,
optitle: pobj.opType + "推送操作异常status->pushOrderStatus",
});
}
console.log(result,'-------------push360-----------------')
return result;
} catch (e) {
this.logCtl.error({
appid: pobj.appInfo ? pobj.appInfo.uapp_id || "" : "",
appkey: pobj.appInfo ? pobj.appInfo.uapp_key || "" : "",
requestId: pobj.requestId || "",
op: "utilsSve/utils360Sve/pushOrderStatus",
content: "error:" + e.stack,
// clientIp: pobj.clientIp,
optitle: pobj.opType + "推送操作异常status->pushOrderStatus",
});
}
} }
return system.getResult(result);
}
//-------------------------------------------钉钉h5支付-----------------结束 // 参数信息验证
async verifyParam(pobj) {
var verify = system.getResultSuccess();
if (!pobj.interface_params) {
verify = system.getResult(null, "interface_params can not be empty,100400");
}
var interface_params_info = JSON.parse(pobj.interface_params);
if (!interface_params_info || !interface_params_info.opUrl) {
verify = system.getResult(null, "interface_params(pushUrl) can not be empty,100430");
}
verify.data = interface_params_info;
return verify;
}
} }
module.exports = utils360Sve; module.exports = utils360Sve;
var system = require("../../../system"); const system = require("../../../system");
var settings = require("../../../../config/settings"); const settings = require("../../../../config/settings");
const AppServiceBase = require("../../app.base"); const AppServiceBase = require("../../app.base");
const logCtl = system.getObject("service.common.oplogSve"); const jwt = require('jsonwebtoken');
const { PDICT } = require("../../../../config/businessConfig");
//用户权限操作 //用户权限操作
class UtilsAuthService extends AppServiceBase { class UtilsAuthService extends AppServiceBase {
constructor() { constructor() {
...@@ -10,7 +11,15 @@ class UtilsAuthService extends AppServiceBase { ...@@ -10,7 +11,15 @@ class UtilsAuthService extends AppServiceBase {
} }
//---------------登录----------------------------------------------------- //---------------登录-----------------------------------------------------
async getReqTokenByHosts(actionBody, tokenValue) { //获取token /**
* 解密信息
* @param {*} encryptStr 加密字符串
*/
async decryptInfo(encryptStr) {
var result = await this.decryptStr(PDICT.encrypt_key, PDICT.encrypt_secret, encryptStr);
return result;
}
async getReqTokenByHosts(actionBody, req) { //获取token----改成jwt方式--sy-2020-10-21
if (["hosts", "appkey"].indexOf(actionBody.reqType) < 0) { if (["hosts", "appkey"].indexOf(actionBody.reqType) < 0) {
return system.getResult(null, "actionBody.reqType is error"); return system.getResult(null, "actionBody.reqType is error");
} }
...@@ -27,83 +36,151 @@ class UtilsAuthService extends AppServiceBase { ...@@ -27,83 +36,151 @@ class UtilsAuthService extends AppServiceBase {
return system.getResult(null, "actionBody.secret can not be empty"); return system.getResult(null, "actionBody.secret can not be empty");
} }
} }
var result = await this.cacheManager["AppTokenByHostsCache"].cache(tokenValue, actionBody, system.exTime); var tmpResult = await this.execPostByTimeOut(req, actionBody, settings.centerAppUrl() + "auth/accessAuth/getTokenByHosts");
return result; if (!tmpResult || tmpResult.status != 0) {
return system.getResult(null, "data is empty");
}
if (!tmpResult.data || tmpResult.data.status != 0) {
return system.getResult(null, "data is empty!");
}
let encrypt_info = await this.encryptStr(PDICT.encrypt_key, PDICT.encrypt_secret, JSON.stringify(tmpResult.data.data));
let bodyInfo = {
env: settings.env,
id: tmpResult.data.data.id,
uapp_id: tmpResult.data.data.uapp_id,
token_secret: encrypt_info
};
const tokenSecret = settings.env == "localhost" || settings.env == "dev" ? PDICT.token_secret_dev : PDICT.token_secret_prod;
//生成tokenid
const tokenid = jwt.sign(bodyInfo, tokenSecret, { // expiresIn:过期时间单位是秒
expiresIn: 60 * 60 * 4 //单位秒,4小时
});
return system.getResultSuccess({ token: tokenid });
} }
/** /**
* 渠道通过账户进行登录,有则返回用户信息,没有则创建用户 * 渠道通过账户进行登录,有则返回用户信息,没有则创建用户
* @param {*} pobj * @param {*} pobj
* @param {*} actionBody {channelUserId:XX} * @param {*} actionBody {channelUserId:XX}
*/ */
async getLoginByUserName(pobj, actionBody) {//渠道通过账户进行登录,有则返回用户信息,没有则创建用户---actionBody.channelUserId async getLoginByUserName(req, pobj, actionBody) {//渠道通过账户进行登录,有则返回用户信息,没有则创建用户---actionBody.channelUserId
if (!actionBody.channelUserId) { if (!actionBody.channelUserId) {
return system.getResult(null, "actionBody.channelUserId can not be empty"); return system.getResult(null, "actionBody.channelUserId can not be empty");
} }
var acckapp = await this.restClient.execPost(pobj, settings.centerAppUrl() + "auth/accessAuth/getLoginByUserName"); var tmpResult = await this.execPostByTimeOut(req, pobj, settings.centerAppUrl() + "auth/accessAuth/getLoginByUserName");
var result = acckapp.stdout; if (!tmpResult || tmpResult.status != 0) {
if (result) { return system.getResult(null, "data is empty");
var tmp = JSON.parse(result); }
return tmp; if (!tmpResult.data || tmpResult.data.status != 0) {
return system.getResult(null, "data is empty!");
} }
return system.getResult(null, "data is empty"); let encrypt_info = await this.encryptStr(PDICT.encrypt_key, PDICT.encrypt_secret, JSON.stringify(tmpResult.data.data));
let bodyInfo = {
env: settings.env,
user_id: tmpResult.data.data.id,
uapp_id: tmpResult.data.data.uapp_id,
userpin_secret: encrypt_info
};
const tokenSecret = settings.env == "localhost" || settings.env == "dev" ? PDICT.token_secret_dev : PDICT.token_secret_prod;
//生成tokenid
const tokenid = jwt.sign(bodyInfo, tokenSecret, { // expiresIn:过期时间单位是秒
expiresIn: 60 * 60 * 4 //单位秒,4小时
});
return system.getResultSuccess({ userpin: tokenid });
} }
/** /**
* 通过账户和密码登录 * 通过账户和密码登录
* @param {*} pobj * @param {*} req
* @param {*} pobj
* @param {*} actionBody {userName:XX,password:XXX} * @param {*} actionBody {userName:XX,password:XXX}
*/ */
async getReqUserPinByLgoin(pobj, actionBody) { async getReqUserPinByLgoin(req, pobj, actionBody) {
if (!actionBody.userName) { if (!actionBody.userName) {
return system.getResult(null, "actionBody.userName can not be empty"); return system.getResult(null, "用户名不能为空");
} }
if (!actionBody.password) { if (!actionBody.password) {
return system.getResult(null, "actionBody.password can not be empty"); return system.getResult(null, "密码不能为空");
}
var tmpResult = await this.execPostByTimeOut(req, pobj, settings.centerAppUrl() + "auth/accessAuth/login");
if (!tmpResult || tmpResult.status != 0) {
return system.getResult(null, "用户名或密码错误");
} }
var acckapp = await this.restClient.execPost(pobj, settings.centerAppUrl() + "auth/accessAuth/login"); if (!tmpResult.data || tmpResult.data.status != 0) {
var result = acckapp.stdout; return system.getResult(null, "用户名或密码错误!");
if (result) {
var tmp = JSON.parse(result);
return tmp;
} }
return system.getResult(null, "data is empty"); let encrypt_info = await this.encryptStr(PDICT.encrypt_key, PDICT.encrypt_secret, JSON.stringify(tmpResult.data.data));
let bodyInfo = {
env: settings.env,
user_id: tmpResult.data.data.id,
uapp_id: tmpResult.data.data.uapp_id,
userpin_secret: encrypt_info
};
const tokenSecret = settings.env == "localhost" || settings.env == "dev" ? PDICT.token_secret_dev : PDICT.token_secret_prod;
//生成tokenid
const tokenid = jwt.sign(bodyInfo, tokenSecret, { // expiresIn:过期时间单位是秒
expiresIn: 60 * 60 * 4 //单位秒,4小时
});
return system.getResultSuccess({ userpin: tokenid });
} }
/** /**
* 通过短信登录或注册信息 * 通过短信登录或注册信息
* @param {*} req
* @param {*} pobj * @param {*} pobj
* @param {*} actionBody {mobile:XXX,vcode:XXX,reqType:"reg",password:XXX-reqType为reg时有此值} * @param {*} actionBody {mobile:XXX,vcode:XXX,reqType:"reg",password:XXX-reqType为reg时有此值}
*/ */
async getReqUserPinByLgoinVcode(pobj, actionBody) { async getReqUserPinByLgoinVcode(req, pobj, actionBody) {
if (!actionBody.mobile) { if (!actionBody.mobile) {
return system.getResult(null, "actionBody.mobile can not be empty"); return system.getResult(null, "电话号码不能为空");
} }
if (!actionBody.vcode) { if (!actionBody.vcode) {
return system.getResult(null, "actionBody.vcode can not be empty"); return system.getResult(null, "验证码不能为空");
} }
if (actionBody.reqType == "reg") { if (actionBody.reqType == "reg") {
if (!actionBody.password) { if (!actionBody.password) {
return system.getResult(null, "actionBody.password can not be empty"); return system.getResult(null, "actionBody.password can not be empty");
} }
} }
var acckapp = await this.restClient.execPost(pobj, settings.centerAppUrl() + "auth/accessAuth/loginByVerifyCode"); const tmpResult = await this.execPostByTimeOut(req, pobj, this.centerAppUrl + "auth/accessAuth/loginByVerifyCode", null, null);
var result = acckapp.stdout; if (!tmpResult || tmpResult.status != 0) {
if (result) { return system.getResult(null, tmpResult.msg);
var tmp = JSON.parse(result); }
return tmp; if (!tmpResult.data || tmpResult.data.status != 0) {
return system.getResult(null, tmpResult.data.msg);
} }
return system.getResult(null, "data is empty"); let encrypt_info = await this.encryptStr(PDICT.encrypt_key, PDICT.encrypt_secret, JSON.stringify(tmpResult.data.data));
let bodyInfo = {
env: settings.env,
user_id: tmpResult.data.data.id || 0,//新建立的用户时user_id为0
uapp_id: tmpResult.data.data.uapp_id,
userpin_secret: encrypt_info
};
const tokenSecret = settings.env == "localhost" || settings.env == "dev" ? PDICT.token_secret_dev : PDICT.token_secret_prod;
//生成tokenid
const tokenid = jwt.sign(bodyInfo, tokenSecret, { // expiresIn:过期时间单位是秒
expiresIn: 60 * 60 * 4 //单位秒,4小时
});
return system.getResultSuccess({ userpin: tokenid });
} }
/** /**
* 获取默认模板的手机验证码 * 获取默认模板的手机验证码
* @param {*} pobj * @param {*} req
* @param {*} pobj
* @param {*} actionBody {mobile:XXX} * @param {*} actionBody {mobile:XXX}
*/ */
async getVerifyCodeByMoblie(pobj, actionBody) { async getVerifyCodeByMoblie(req, pobj, actionBody) {
if (!actionBody.mobile) { if (!actionBody.mobile) {
return system.getResult(null, "actionBody.mobile can not be empty !"); return system.getResult(null, "actionBody.mobile can not be empty !");
} }
return await this.restPostUrl(pobj, this.centerAppUrl + "auth/accessAuth/getVerifyCodeByMoblie"); const result = await this.execPostByTimeOut(req, pobj, this.centerAppUrl + "auth/accessAuth/getVerifyCodeByMoblie", null, null);
if (result.status === 0 && result.data.status != 0) {
return result.data;
}
return system.getResultSuccess();
} }
/** /**
...@@ -130,6 +207,25 @@ class UtilsAuthService extends AppServiceBase { ...@@ -130,6 +207,25 @@ class UtilsAuthService extends AppServiceBase {
} }
return result; return result;
} }
/**
* 通过手机验证码修改用户手机号,邮箱
* @param {*} pobj
* @param {*} actionBody {mobile:XX,vcode:XXX,newPwd:XXX,userpin:XXXXX}
*/
async putUserMobileByVcode(pobj, actionBody) {
if (!actionBody.vcode) {
return system.getResult(null, "pobj.vcode can not be empty !");
}
if (!pobj.appInfo) {
return system.getResult(null, "pobj.appInfo can not be empty !");
}
var result = await this.restPostUrl(pobj, this.centerAppUrl + "auth/accessAuth/putUserMobileByVcode");
if (result.status == 0) {
this.userLogout(pobj, actionBody);
}
return result;
}
/** /**
* 通过userpin获取用户登录信息 * 通过userpin获取用户登录信息
* @param {*} pobj * @param {*} pobj
...@@ -166,7 +262,7 @@ class UtilsAuthService extends AppServiceBase { ...@@ -166,7 +262,7 @@ class UtilsAuthService extends AppServiceBase {
* @param req * @param req
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
async channelUserLogin(pobj,actionBody,req){ async channelUserLogin(pobj, actionBody, req) {
let opResult = system.getResultSuccess() let opResult = system.getResultSuccess()
let pin = actionBody.pin; let pin = actionBody.pin;
let result = await this.get360Token(); let result = await this.get360Token();
...@@ -184,19 +280,11 @@ class UtilsAuthService extends AppServiceBase { ...@@ -184,19 +280,11 @@ class UtilsAuthService extends AppServiceBase {
// } // }
//---渠道用户登录,有则返回userpin ,没有则注册用户并返回userpin //---渠道用户登录,有则返回userpin ,没有则注册用户并返回userpin
actionBody.channelUserId = pin; actionBody.channelUserId = pin;
let loginRt = await this.getLoginByUserName(pobj,actionBody); opResult = await this.getLoginByUserName(pobj, actionBody);
if (loginRt.status != 0 && loginRt.status != 2060) {
return loginRt;
}
opResult.data={ userpin : pobj.actionBody.userpin }
if (loginRt.status == 2060) {
opResult.msg = loginRt.msg;
opResult.data.userpin = loginRt.data.userpin;
}
return opResult; return opResult;
} }
async get360Token(){ async get360Token() {
let rtn = await this.execClient.exec360GetToken(settings.tokenUrl360()) let rtn = await this.execClient.exec360GetToken(settings.tokenUrl360())
if (!rtn || !rtn.stdout) { if (!rtn || !rtn.stdout) {
return system.getResult(null, "restPost data is empty"); return system.getResult(null, "restPost data is empty");
......
...@@ -5,55 +5,55 @@ const uuidv4 = require('uuid/v4'); ...@@ -5,55 +5,55 @@ const uuidv4 = require('uuid/v4');
/** /**
* 飞书小程序相关接口 * 飞书小程序相关接口
*/ */
class UtilsFeishuService{ class UtilsFeishuService {
constructor() { constructor() {
this.execClient = system.getObject("util.execClient"); this.execClient = system.getObject("util.execClient");
this.cacheManager = system.getObject("db.common.cacheManager"); this.cacheManager = system.getObject("db.common.cacheManager");
this.utilsAuthSve = system.getObject("service.utilsSve.utilsAuthSve"); this.utilsAuthSve = system.getObject("service.utilsSve.utilsAuthSve");
this.appConfig={ this.appConfig = {
app_id:"cli_9e28dcb1d637100d", app_id: "cli_9e28dcb1d637100d",
app_secret:"zL1uRrWFzwhFbLWZrmSuCh72JGjJXQg0" app_secret: "zL1uRrWFzwhFbLWZrmSuCh72JGjJXQg0"
} }
}; };
//飞书事件消息通知解密 //飞书事件消息通知解密
// async notifyDecrypt(str){ // async notifyDecrypt(str){
// var pobj = {}; // var pobj = {};
// str = str.toString('utf8'); // str = str.toString('utf8');
// return pobj; // return pobj;
// } // }
//飞书通知 //飞书通知
async notify(pobj){ async notify(pobj) {
if(!pobj || !pobj.type){ if (!pobj || !pobj.type) {
return system.getResultFail("参数错误"); return system.getResultFail("参数错误");
} }
if(pobj.type=="url_verification"){//表示这是一个验证请求 if (pobj.type == "url_verification") {//表示这是一个验证请求
return this.subscribeVerification(pobj); return this.subscribeVerification(pobj);
} }
if(pobj.type=="event_callback"){//事件回调 if (pobj.type == "event_callback") {//事件回调
if(!pobj.event){ if (!pobj.event) {
return system.getResultFail("event参数错误"); return system.getResultFail("event参数错误");
} }
var event = pobj.event; var event = pobj.event;
if(event.type=="app_ticket"){//app_ticket 事件 if (event.type == "app_ticket") {//app_ticket 事件
return this.receiveAppTicket(pobj); return this.receiveAppTicket(pobj);
}else{ } else {
return system.getResultFail("未知事件"); return system.getResultFail("未知事件");
} }
} }
return system.getResultFail("未知事件"); return system.getResultFail("未知事件");
} }
//订阅验证 //订阅验证
async subscribeVerification(pobj){ async subscribeVerification(pobj) {
if(pobj && pobj.challenge){ if (pobj && pobj.challenge) {
return {"challenge":pobj.challenge}; return { "challenge": pobj.challenge };
}else{ } else {
return {}; return {};
} }
} }
//接收app_ticket //接收app_ticket
async receiveAppTicket(pobj){ async receiveAppTicket(pobj) {
if(pobj && pobj.event && pobj.event.app_ticket && pobj.event.type && pobj.event.type=="app_ticket"){ if (pobj && pobj.event && pobj.event.app_ticket && pobj.event.type && pobj.event.type == "app_ticket") {
//将app_ticket保存到缓存 //将app_ticket保存到缓存
await this.cacheManager["feishuAppTicketCache"].set(pobj.event.app_ticket); await this.cacheManager["feishuAppTicketCache"].set(pobj.event.app_ticket);
return system.getResultSuccess(); return system.getResultSuccess();
...@@ -61,47 +61,47 @@ class UtilsFeishuService{ ...@@ -61,47 +61,47 @@ class UtilsFeishuService{
return system.getResultFail(); return system.getResultFail();
} }
//重新推送app_ticket(主动触发) //重新推送app_ticket(主动触发)
async resendAppTicket(){ async resendAppTicket() {
var url = "https://open.feishu.cn/open-apis/auth/v3/app_ticket/resend"; var url = "https://open.feishu.cn/open-apis/auth/v3/app_ticket/resend";
var pobj = { var pobj = {
app_id:this.appConfig.app_id,//应用唯一标识,创建应用后获得 app_id: this.appConfig.app_id,//应用唯一标识,创建应用后获得
app_secret:this.appConfig.app_secret//应用秘钥,创建应用后获得 app_secret: this.appConfig.app_secret//应用秘钥,创建应用后获得
}; };
var rtn = await this.execClient.execPost(pobj, url); var rtn = await this.execClient.execPost(pobj, url);
if (!rtn || !rtn.stdout) { if (!rtn || !rtn.stdout) {
return system.getResult(null, "execPost data is empty"); return system.getResult(null, "execPost data is empty");
} }
var result = JSON.parse(rtn.stdout); var result = JSON.parse(rtn.stdout);
if(result.code==0){ if (result.code == 0) {
return system.getResultSuccess(); return system.getResultSuccess();
} }
return system.getResult(null, "execPost data is empty.错误码:"+result.code); return system.getResult(null, "execPost data is empty.错误码:" + result.code);
} }
//获取app_access_token(应用商店应用) //获取app_access_token(应用商店应用)
async getAppAccessToken(){ async getAppAccessToken() {
var appAccessToken = await this.cacheManager["feishuAppAccessTokenCache"].get(); var appAccessToken = await this.cacheManager["feishuAppAccessTokenCache"].get();
if(appAccessToken){ if (appAccessToken) {
return system.getResultSuccess(appAccessToken); return system.getResultSuccess(appAccessToken);
} }
var app_ticket = await this.cacheManager["feishuAppTicketCache"].get(); var app_ticket = await this.cacheManager["feishuAppTicketCache"].get();
if(!app_ticket){ if (!app_ticket) {
await this.resendAppTicket();//重新推送app_ticket await this.resendAppTicket();//重新推送app_ticket
return system.getResultFail("app_ticket不存在"); return system.getResultFail("app_ticket不存在");
} }
var url = "https://open.feishu.cn/open-apis/auth/v3/app_access_token"; var url = "https://open.feishu.cn/open-apis/auth/v3/app_access_token";
var obj = { var obj = {
app_id:this.appConfig.app_id,//应用唯一标识,创建应用后获得 app_id: this.appConfig.app_id,//应用唯一标识,创建应用后获得
app_secret:this.appConfig.app_secret,//应用秘钥,创建应用后获得 app_secret: this.appConfig.app_secret,//应用秘钥,创建应用后获得
app_ticket:app_ticket//平台定时推送给应用的临时凭证,通过事件监听机制获得,详见订阅事件 app_ticket: app_ticket//平台定时推送给应用的临时凭证,通过事件监听机制获得,详见订阅事件
}; };
var rtn = await this.execClient.execPost(obj, url); var rtn = await this.execClient.execPost(obj, url);
if (!rtn || !rtn.stdout) { if (!rtn || !rtn.stdout) {
return system.getResult(null, "execPost data is empty"); return system.getResult(null, "execPost data is empty");
} }
var result = JSON.parse(rtn.stdout); var result = JSON.parse(rtn.stdout);
if(result.code==0 && result.app_access_token){ if (result.code == 0 && result.app_access_token) {
//缓存AppAccessToken //缓存AppAccessToken
await this.cacheManager["feishuAppAccessTokenCache"].set(result.app_access_token,result.expire); await this.cacheManager["feishuAppAccessTokenCache"].set(result.app_access_token, result.expire);
return system.getResultSuccess(result.app_access_token); return system.getResultSuccess(result.app_access_token);
} }
return system.getResultFail("获取appAccessToken失败"); return system.getResultFail("获取appAccessToken失败");
...@@ -110,55 +110,55 @@ class UtilsFeishuService{ ...@@ -110,55 +110,55 @@ class UtilsFeishuService{
//------------------------飞书网页开发--------------------------------------------------------------- //------------------------飞书网页开发---------------------------------------------------------------
//获取登录用户身份 //获取登录用户身份
async getUserAccessToken(obj){ async getUserAccessToken(obj) {
var resData = {}; var resData = {};
if(obj.open_id){ if (obj.open_id) {
//缓存中获取登录用户身份 //缓存中获取登录用户身份
resData = await this.cacheManager["feishuUserAccessTokenCache"].get(obj.open_id); resData = await this.cacheManager["feishuUserAccessTokenCache"].get(obj.open_id);
} }
//缓存中存在 直接返回 //缓存中存在 直接返回
if(resData && resData.access_token){ if (resData && resData.access_token) {
return system.getResultSuccess(resData); return system.getResultSuccess(resData);
} }
if(!obj.code){ if (!obj.code) {
return system.getResultFail("code参数不能为空"); return system.getResultFail("code参数不能为空");
} }
if(!obj.app_access_token){ if (!obj.app_access_token) {
return system.getResultFail("app_access_token参数不能为空"); return system.getResultFail("app_access_token参数不能为空");
} }
var url = "https://open.feishu.cn/open-apis/authen/v1/access_token"; var url = "https://open.feishu.cn/open-apis/authen/v1/access_token";
var fsObj={ var fsObj = {
app_access_token:obj.app_access_token,//应用的 app_access_token,必须与请求身份验证中的应用保持一致 app_access_token: obj.app_access_token,//应用的 app_access_token,必须与请求身份验证中的应用保持一致
grant_type:"authorization_code",//在本流程中,此值为 authorization_code grant_type: "authorization_code",//在本流程中,此值为 authorization_code
code:obj.code //来自请求身份验证(新)流程,用户扫码登录后会自动302到redirect_uri并带上此参数 code: obj.code //来自请求身份验证(新)流程,用户扫码登录后会自动302到redirect_uri并带上此参数
}; };
var rtn = await this.execClient.execPost(fsObj, url); var rtn = await this.execClient.execPost(fsObj, url);
if (!rtn || !rtn.stdout) { if (!rtn || !rtn.stdout) {
return system.getResult(null, "execPost data is empty"); return system.getResult(null, "execPost data is empty");
} }
var result = JSON.parse(rtn.stdout); var result = JSON.parse(rtn.stdout);
if(result.code==0 && result.data){ if (result.code == 0 && result.data) {
//缓存AppAccessToken //缓存AppAccessToken
await this.cacheManager["feishuUserAccessTokenCache"].set(result.data,result.data.open_id); await this.cacheManager["feishuUserAccessTokenCache"].set(result.data, result.data.open_id);
return system.getResultSuccess(result.data); return system.getResultSuccess(result.data);
} }
return system.getResult(null, "获取飞书登录用户身份失败"); return system.getResult(null, "获取飞书登录用户身份失败");
} }
//获取用户信息 //获取用户信息
async getUserInfo(pobj){ async getUserInfo(pobj) {
if(!pobj.user_access_token){ if (!pobj.user_access_token) {
return system.getResultFail("user_access_token参数不能为空") return system.getResultFail("user_access_token参数不能为空")
} }
var url = "https://open.feishu.cn/open-apis/authen/v1/user_info"; var url = "https://open.feishu.cn/open-apis/authen/v1/user_info";
var obj = { var obj = {
user_access_token:pobj.user_access_token user_access_token: pobj.user_access_token
}; };
var rtn = await this.execClient.execFeishuGet(obj, url); var rtn = await this.execClient.execFeishuGet(obj, url);
if (!rtn || !rtn.stdout) { if (!rtn || !rtn.stdout) {
return system.getResult(null, "execPost data is empty"); return system.getResult(null, "execPost data is empty");
} }
var result = JSON.parse(rtn.stdout); var result = JSON.parse(rtn.stdout);
if(result.code==0 && result.data){ if (result.code == 0 && result.data) {
return system.getResultSuccess(result.data); return system.getResultSuccess(result.data);
} }
return system.getResult(null, "获取飞书用户信息失败"); return system.getResult(null, "获取飞书用户信息失败");
...@@ -166,35 +166,35 @@ class UtilsFeishuService{ ...@@ -166,35 +166,35 @@ class UtilsFeishuService{
//------------------------飞书网页开发-------结束-------------------------------------------------------- //------------------------飞书网页开发-------结束--------------------------------------------------------
//------------------------飞书小程序开发--------------------------------------------------------------- //------------------------飞书小程序开发---------------------------------------------------------------
//获取登录用户身份 session_key 和 openId //获取登录用户身份 session_key 和 openId
async tokenLoginValidate(obj){ async tokenLoginValidate(obj) {
var resData = {}; var resData = {};
if(obj.open_id){ if (obj.open_id) {
//缓存中获取登录用户身份 //缓存中获取登录用户身份
resData = await this.cacheManager["feishuUserAccessTokenCache"].get(obj.open_id); resData = await this.cacheManager["feishuUserAccessTokenCache"].get(obj.open_id);
} }
//缓存中存在 直接返回 //缓存中存在 直接返回
if(resData && resData.access_token){ if (resData && resData.access_token) {
return system.getResultSuccess(resData); return system.getResultSuccess(resData);
} }
if(!obj.code){ if (!obj.code) {
return system.getResultFail("code参数不能为空"); return system.getResultFail("code参数不能为空");
} }
if(!obj.app_access_token){ if (!obj.app_access_token) {
return system.getResultFail("app_access_token参数不能为空"); return system.getResultFail("app_access_token参数不能为空");
} }
var url = "https://open.feishu.cn/open-apis/mina/v2/tokenLoginValidate"; var url = "https://open.feishu.cn/open-apis/mina/v2/tokenLoginValidate";
var fsObj={ var fsObj = {
token:obj.app_access_token,//应用的 app_access_token,必须与请求身份验证中的应用保持一致 token: obj.app_access_token,//应用的 app_access_token,必须与请求身份验证中的应用保持一致
code:obj.code //来自请求身份验证(新)流程,用户扫码登录后会自动302到redirect_uri并带上此参数 code: obj.code //来自请求身份验证(新)流程,用户扫码登录后会自动302到redirect_uri并带上此参数
}; };
var rtn = await this.execClient.execFeishuPost(fsObj, url); var rtn = await this.execClient.execFeishuPost(fsObj, url);
if (!rtn || !rtn.stdout) { if (!rtn || !rtn.stdout) {
return system.getResult(null, "execPost data is empty"); return system.getResult(null, "execPost data is empty");
} }
var result = JSON.parse(rtn.stdout); var result = JSON.parse(rtn.stdout);
if(result.code==0 && result.data){ if (result.code == 0 && result.data) {
//缓存AppAccessToken //缓存AppAccessToken
await this.cacheManager["feishuUserAccessTokenCache"].set(result.data,result.data.open_id); await this.cacheManager["feishuUserAccessTokenCache"].set(result.data, result.data.open_id);
return system.getResultSuccess(result.data); return system.getResultSuccess(result.data);
} }
return system.getResult(null, "获取飞书登录用户身份失败"); return system.getResult(null, "获取飞书登录用户身份失败");
...@@ -207,56 +207,56 @@ class UtilsFeishuService{ ...@@ -207,56 +207,56 @@ class UtilsFeishuService{
return u; return u;
} }
//用户登录/获取userpin //用户登录/获取userpin
async checkAndLogin(pobj){ async checkAndLogin(req, pobj) {
// return system.getResultSuccess(null,"测试"); // return system.getResultSuccess(null,"测试");
try { try {
if(!pobj.code){ if (!pobj.code) {
return system.getResultFail(-100, "code参数不能为空"); return system.getResultFail(-100, "code参数不能为空");
} }
//获取 app_access_token(应用商店应用) //获取 app_access_token(应用商店应用)
var appAccessTokenRes = await this.getAppAccessToken(); var appAccessTokenRes = await this.getAppAccessToken();
if(appAccessTokenRes.status!=0){ if (appAccessTokenRes.status != 0) {
return appAccessTokenRes; return appAccessTokenRes;
} }
var app_access_token = appAccessTokenRes.data; var app_access_token = appAccessTokenRes.data;
//获取飞书登录用户身份 //获取飞书登录用户身份
var userAccessTokenParams = { var userAccessTokenParams = {
"code":pobj.code,"app_access_token":app_access_token,"open_id":pobj.open_id || "" "code": pobj.code, "app_access_token": app_access_token, "open_id": pobj.open_id || ""
}; };
// var userAccessTokenRes = await this.getUserAccessToken(userAccessTokenParams); // var userAccessTokenRes = await this.getUserAccessToken(userAccessTokenParams);
var userAccessTokenRes = await this.tokenLoginValidate(userAccessTokenParams); var userAccessTokenRes = await this.tokenLoginValidate(userAccessTokenParams);
if(userAccessTokenRes.status!=0){ if (userAccessTokenRes.status != 0) {
return userAccessTokenRes; return userAccessTokenRes;
} }
var userAccessTokenObj = userAccessTokenRes.data; var userAccessTokenObj = userAccessTokenRes.data;
//获取飞书用户信息 //获取飞书用户信息
var userInfoParams={ var userInfoParams = {
user_access_token:userAccessTokenObj.access_token user_access_token: userAccessTokenObj.access_token
}; };
var userInfoRes = await this.getUserInfo(userInfoParams); var userInfoRes = await this.getUserInfo(userInfoParams);
if(userInfoRes.status!=0){ if (userInfoRes.status != 0) {
return userInfoRes; return userInfoRes;
} }
var userInfoObj = userInfoRes.data; var userInfoObj = userInfoRes.data;
//帐号登录---若用户信息已存在 则返回userpin 不存在则返回空 //帐号登录---若用户信息已存在 则返回userpin 不存在则返回空
var loginByUserNameParams={ var loginByUserNameParams = {
"appInfo":pobj.appInfo, "appInfo": pobj.appInfo,
"actionType": "getLoginByUserName", "actionType": "getLoginByUserName",
"actionBody": { "actionBody": {
"openId":userAccessTokenObj.open_id, "openId": userAccessTokenObj.open_id,
"channelUserId":userAccessTokenObj.open_id,// Y 渠道用户ID "channelUserId": userAccessTokenObj.open_id,// Y 渠道用户ID
"channelUserName":userInfoObj.name,// N 渠道用户名 "channelUserName": userInfoObj.name,// N 渠道用户名
"nickName":userInfoObj.name, // N 用户昵称 "nickName": userInfoObj.name, // N 用户昵称
"head_url":userInfoObj.avatar_url //头像 "head_url": userInfoObj.avatar_url //头像
} }
}; };
var loginByUserNameRes = await this.getLoginByUserName(loginByUserNameParams); var loginByUserNameRes = await this.getLoginByUserName(req, loginByUserNameParams);
if(loginByUserNameRes && loginByUserNameRes.status==0){ if (loginByUserNameRes && loginByUserNameRes.status == 0) {
loginByUserNameRes.data.open_id = userAccessTokenObj.open_id; loginByUserNameRes.data.open_id = userAccessTokenObj.open_id;
// loginByUserNameRes.data.session_key = userAccessTokenObj.session_key; // loginByUserNameRes.data.session_key = userAccessTokenObj.session_key;
return loginByUserNameRes;//获取userpin直接返回 return loginByUserNameRes;//获取userpin直接返回
...@@ -270,25 +270,16 @@ class UtilsFeishuService{ ...@@ -270,25 +270,16 @@ class UtilsFeishuService{
// return userInfoRes; // return userInfoRes;
// } // }
// var userInfoObj = userInfoRes.data; // var userInfoObj = userInfoRes.data;
} catch (e) { } catch (e) {
return system.getResultFail(-200,e.stack); return system.getResultFail(-200, e.stack);
} }
return system.getResultFail(-100,"获取userpin失败"); return system.getResultFail(-100, "获取userpin失败");
} }
//渠道通过账户进行登录,有则返回用户信息,没有则创建用户------>供后端调用 //渠道通过账户进行登录,有则返回用户信息,没有则创建用户------>供后端调用
async getLoginByUserName(pobj){ async getLoginByUserName(req, pobj) {
pobj.actionBody.userpin = this.getUUID(); let opResult = await this.utilsAuthSve.getLoginByUserName(req, pobj, pobj.actionBody);
var tmpOpResult = await this.utilsAuthSve.getLoginByUserName(pobj, pobj.actionBody);
if (tmpOpResult.status != 0 && tmpOpResult.status != 2060) {
return tmpOpResult;
}
var opResult = system.getResultSuccess({ userpin: pobj.actionBody.userpin });
if (tmpOpResult.status == 2060) {
opResult.msg = tmpOpResult.msg;
opResult.data.userpin = tmpOpResult.data.userpin;
}
return opResult; return opResult;
} }
} }
......
...@@ -26,7 +26,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -26,7 +26,7 @@ class UtilsNeedService extends AppServiceBase {
* @param {*} actionBody * @param {*} actionBody
*/ */
async submitNeed(pobj, actionBody) { async submitNeed(pobj, actionBody) {
if(actionBody.type == "esp.wangwen" || actionBody.type == "esp.food") { if (actionBody.type == "esp.wangwen" || actionBody.type == "esp.food") {
actionBody.area = this.wangwenAreaChange(actionBody.area) actionBody.area = this.wangwenAreaChange(actionBody.area)
} }
if (!actionBody.intentionBizId) { if (!actionBody.intentionBizId) {
...@@ -70,7 +70,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -70,7 +70,7 @@ class UtilsNeedService extends AppServiceBase {
} }
} }
if(pobj.actionBody.phone=="17319425791"){ if (pobj.actionBody.phone == "17319425791") {
pobj.actionBody.level = "F"; pobj.actionBody.level = "F";
} }
...@@ -361,7 +361,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -361,7 +361,7 @@ class UtilsNeedService extends AppServiceBase {
} }
actionBody.newuserOtherList = newuserOtherList; actionBody.newuserOtherList = newuserOtherList;
} }
if (actionBody.isDirectBuy === "true"&&(actionBody.status == 1||actionBody.status == 0)) {//已支付直购不调用 if (actionBody.isDirectBuy === "true" && (actionBody.status == 1 || actionBody.status == 0)) {//已支付直购不调用
return system.getResultSuccess(); return system.getResultSuccess();
} }
pobj.actionType = "receiveIcpStatusNotify"; pobj.actionType = "receiveIcpStatusNotify";
...@@ -372,7 +372,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -372,7 +372,7 @@ class UtilsNeedService extends AppServiceBase {
actionBody: { actionBody: {
orderNo: rtn.data.orderNo,//pobj.actionBody.channelOrder.channelOrderNo, orderNo: rtn.data.orderNo,//pobj.actionBody.channelOrder.channelOrderNo,
needsolution: rtn.data.solutionContent, needsolution: rtn.data.solutionContent,
channelNeedNo: rtn.data.channelNeedNo||"", channelNeedNo: rtn.data.channelNeedNo || "",
channelSolutionNo: rtn.data.channelSolutionNo, channelSolutionNo: rtn.data.channelSolutionNo,
servicer: { servicer: {
code: 'gsb', code: 'gsb',
...@@ -490,7 +490,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -490,7 +490,7 @@ class UtilsNeedService extends AppServiceBase {
var reqUrl = this.centerOrderUrl + "action/need/springBoard"; var reqUrl = this.centerOrderUrl + "action/need/springBoard";
var result = await this.restPostUrl(pobj, reqUrl); var result = await this.restPostUrl(pobj, reqUrl);
var res = await self.aliclient.reqbyget({ action: "WriteCommunicationLog", reqbody: { BizId: pobj.actionBody.intentionBizId, Note: pobj.actionBody.note }, apiVersion: "2019-05-08" }); var res = await self.aliclient.reqbyget({ action: "WriteCommunicationLog", reqbody: { BizId: pobj.actionBody.intentionBizId, Note: pobj.actionBody.note }, apiVersion: "2019-05-08" });
console.log("res",res) console.log("res", res)
//推送交付系统 //推送交付系统
var reqParams = { var reqParams = {
actionBody: { actionBody: {
...@@ -624,15 +624,15 @@ class UtilsNeedService extends AppServiceBase { ...@@ -624,15 +624,15 @@ class UtilsNeedService extends AppServiceBase {
}; };
for (let item of result.data) { for (let item of result.data) {
if (item.Type == 1 && item.RegisterNumber) { if (item.Type == 1 && item.RegisterNumber) {
pobj.actionBody.intentionBizId = item.BizId; pobj.actionBody.intentionBizId = item.BizId;
pobj.actionBody.mobile = item.Mobile ? item.Mobile : ""; pobj.actionBody.mobile = item.Mobile ? item.Mobile : "";
//pobj.actionBody.Area = item.Area || "北京" //pobj.actionBody.Area = item.Area || "北京"
pobj.actionBody.area = '大陆地区 ' pobj.actionBody.area = '大陆地区 '
pobj.actionBody.userName = item.UserName ? item.UserName : ""; pobj.actionBody.userName = item.UserName ? item.UserName : "";
pobj.actionBody.description = item.RegisterNumber pobj.actionBody.description = item.RegisterNumber
pobj.notes = `${item.RegisterNumber ? "RegisterNumber:" + item.RegisterNumber : ""}${item.Classification ? "Classification:" + item.Classification : ""}`; pobj.notes = `${item.RegisterNumber ? "RegisterNumber:" + item.RegisterNumber : ""}${item.Classification ? "Classification:" + item.Classification : ""}`;
let res = await this.submitNeed(JSON.parse(JSON.stringify(pobj)), { intentionBizId: item.BizId }); let res = await this.submitNeed(JSON.parse(JSON.stringify(pobj)), { intentionBizId: item.BizId });
console.log(res) console.log(res)
} }
} }
return system.getResultSuccess(); return system.getResultSuccess();
...@@ -659,14 +659,14 @@ class UtilsNeedService extends AppServiceBase { ...@@ -659,14 +659,14 @@ class UtilsNeedService extends AppServiceBase {
} }
// 2020 0914 lin 新增 刷单一条龙服务 // 2020 0914 lin 新增 刷单一条龙服务
async needBatchUpload(pobj,actionBody) { async needBatchUpload(pobj, actionBody) {
var BizIds=""; var BizIds = "";
var demands = []; var demands = [];
// 声明两个数组 用来走后四步用 // 声明两个数组 用来走后四步用
var npobj = []; var npobj = [];
var spobj = []; var spobj = [];
// 遍历生成阿里需求 并把bizId 填充进数组 // 遍历生成阿里需求 并把bizId 填充进数组
for(var i = 0;i < actionBody.demands.length;i++) { for (var i = 0; i < actionBody.demands.length; i++) {
// 第一步 // 第一步
// 地区转换 // 地区转换
var area = this.areaChange(actionBody.demands[i].area) var area = this.areaChange(actionBody.demands[i].area)
...@@ -675,58 +675,58 @@ class UtilsNeedService extends AppServiceBase { ...@@ -675,58 +675,58 @@ class UtilsNeedService extends AppServiceBase {
// 声明调用4.1需要的参数 // 声明调用4.1需要的参数
var obj = { var obj = {
Mobile: actionBody.demands[i].contactMobile,// 手机号 Mobile: actionBody.demands[i].contactMobile,// 手机号
UserName:actionBody.demands[i].contactName,// 用户名 UserName: actionBody.demands[i].contactName,// 用户名
Description:actionBody.demands[i].description, Description: actionBody.demands[i].description,
Area:area, Area: area,
BizType:bizType, BizType: bizType,
Channel:"gsb", Channel: "gsb",
Token:"gsb", Token: "gsb",
} }
// 4.1 提交阿里需求 // 4.1 提交阿里需求
// 2020 0924 lin 修改 reqbyget 为 reqbyLTget // 2020 0924 lin 修改 reqbyget 为 reqbyLTget
var aliResult = await this.aliclient.reqbyLTget({ action: "SubmitIcpIntention", reqbody: obj, apiVersion: "2019-05-08" }); var aliResult = await this.aliclient.reqbyLTget({ action: "SubmitIcpIntention", reqbody: obj, apiVersion: "2019-05-08" });
console.log("needBatchUpload-aliResult",aliResult) console.log("needBatchUpload-aliResult", aliResult)
// 整合前端需要的数据1 // 整合前端需要的数据1
BizIds += aliResult.data.BizId + ","; BizIds += aliResult.data.BizId + ",";
npobj.push({ npobj.push({
"intentionBizId": aliResult.data.BizId, "intentionBizId": aliResult.data.BizId,
"type": this.bizTypeChange(actionBody.demands[i].type), "type": this.bizTypeChange(actionBody.demands[i].type),
"description":actionBody.demands[i].description, "description": actionBody.demands[i].description,
"mobile":actionBody.demands[i].contactMobile "mobile": actionBody.demands[i].contactMobile
}) })
spobj.push({ spobj.push({
"needNo": aliResult.data.BizId,//渠道需求号 "needNo": aliResult.data.BizId,//渠道需求号
"solutionContent":{ "solutionContent": {
// submitIcpProgramme需要的类型转换 ICP许可证 = icpsq/EDI许可证 = edisq // submitIcpProgramme需要的类型转换 ICP许可证 = icpsq/EDI许可证 = edisq
"bizType":actionBody.demands[i].type,//产品类型 icpsq edisq "bizType": actionBody.demands[i].type,//产品类型 icpsq edisq
"solution":{ "solution": {
// "IcpType":1,//方案类型 不传默认1 1:icp 2: edi 参数无效 // "IcpType":1,//方案类型 不传默认1 1:icp 2: edi 参数无效
"CompanyName":actionBody.demands[i].companyName, "CompanyName": actionBody.demands[i].companyName,
"CompanyAddress":actionBody.demands[i].companyAddress, "CompanyAddress": actionBody.demands[i].companyAddress,
"Area":actionBody.demands[i].area + "(渠道)", "Area": actionBody.demands[i].area + "(渠道)",
"Note":actionBody.demands[i].description "Note": actionBody.demands[i].description
} }
} }
}) })
if(aliResult.status != 0) { if (aliResult.status != 0) {
// 统计失败次数 // 统计失败次数
} }
} }
// 判断数据是否符合 执行后四步 的条件 // 判断数据是否符合 执行后四步 的条件
if(npobj.length != actionBody.demands.length || spobj.length != actionBody.demands.length) { if (npobj.length != actionBody.demands.length || spobj.length != actionBody.demands.length) {
return system.getResultFail(-5018,"提交阿里需求失败"); return system.getResultFail(-5018, "提交阿里需求失败");
} }
// 睡3秒 意义:等待阿里异步分配成功。如果不等待则提交方案会失败 无法生成支付链接,需求状态错误 // 睡3秒 意义:等待阿里异步分配成功。如果不等待则提交方案会失败 无法生成支付链接,需求状态错误
await this.sleep(3000) await this.sleep(3000)
// 遍历 执行后面步骤 创建企服需求单(提交方案需要)。提交方案。需求沟通提交 // 遍历 执行后面步骤 创建企服需求单(提交方案需要)。提交方案。需求沟通提交
for(var i = 0;i < actionBody.demands.length;i++) { for (var i = 0; i < actionBody.demands.length; i++) {
// 第二步 // 第二步
// 创建企服通需求单 // 创建企服通需求单
var objString1 = JSON.stringify(pobj); var objString1 = JSON.stringify(pobj);
var obj1 = JSON.parse(objString1); var obj1 = JSON.parse(objString1);
obj1.actionBody = npobj[i]; obj1.actionBody = npobj[i];
var opResult = await this.submitNeed(obj1, obj1.actionBody); var opResult = await this.submitNeed(obj1, obj1.actionBody);
console.log("needBatchUpload-opResult",opResult) console.log("needBatchUpload-opResult", opResult)
// 第三步 // 第三步
// 提交Icp注册方案 // 提交Icp注册方案
// 程序执行比异步分配需求快,所以写成两个循环 // 程序执行比异步分配需求快,所以写成两个循环
...@@ -736,15 +736,15 @@ class UtilsNeedService extends AppServiceBase { ...@@ -736,15 +736,15 @@ class UtilsNeedService extends AppServiceBase {
obj2.actionBody = spobj[i]; obj2.actionBody = spobj[i];
var subRes = await this.qcCenterOrderSve.submitIcpProgramme(obj2); var subRes = await this.qcCenterOrderSve.submitIcpProgramme(obj2);
console.log("----------------------------------start"); console.log("----------------------------------start");
console.log("needBatchUpload-res",subRes) console.log("needBatchUpload-res", subRes)
console.log("----------------------------------end"); console.log("----------------------------------end");
// 第四步 // 第四步
// 需求沟通记录接口 // 需求沟通记录接口
var writeRes = await this.writeCommunicationLog({actionBody:{intentionBizId:npobj[i].intentionBizId,note:"测试反馈"}}); var writeRes = await this.writeCommunicationLog({ actionBody: { intentionBizId: npobj[i].intentionBizId, note: "测试反馈" } });
console.log("needBatchUpload-writeRes",writeRes) console.log("needBatchUpload-writeRes", writeRes)
// 整合前端需要的数据2 // 整合前端需要的数据2
demands.push({ demands.push({
uniqueCode:actionBody.demands[i].uniqueCode, uniqueCode: actionBody.demands[i].uniqueCode,
demandCode: npobj[i].intentionBizId demandCode: npobj[i].intentionBizId
}) })
} }
...@@ -752,16 +752,16 @@ class UtilsNeedService extends AppServiceBase { ...@@ -752,16 +752,16 @@ class UtilsNeedService extends AppServiceBase {
// 首先切割掉BizId最后一位 是, // 首先切割掉BizId最后一位 是,
BizIds = BizIds.substr(0, BizIds.length - 1); BizIds = BizIds.substr(0, BizIds.length - 1);
// 2020 0924 lin 修改 reqbyget 为 reqbyLTget // 2020 0924 lin 修改 reqbyget 为 reqbyLTget
var aliConfirmResult = await this.aliclient.reqbyLTget({ action: "ConfirmIcpIntention", reqbody: {BizIds:BizIds}, apiVersion: "2019-05-08" }); var aliConfirmResult = await this.aliclient.reqbyLTget({ action: "ConfirmIcpIntention", reqbody: { BizIds: BizIds }, apiVersion: "2019-05-08" });
console.log("needBatchUpload-aliConfirmResult",aliConfirmResult) console.log("needBatchUpload-aliConfirmResult", aliConfirmResult)
// 获取链接失败 // 获取链接失败
if(aliConfirmResult.status != 0) { if (aliConfirmResult.status != 0) {
return system.getResultFail(-5018,"confirmIcpIntention fail"); return system.getResultFail(-5018, "confirmIcpIntention fail");
} }
var res = { var res = {
paymentLink:aliConfirmResult.data.ConfirmUrl, paymentLink: aliConfirmResult.data.ConfirmUrl,
batchNumber:actionBody.batchNumber, batchNumber: actionBody.batchNumber,
demands:demands demands: demands
} }
// 2020 0916 lin 新增返回格式 成功status为1 因为queue判断成功请求的条件为status1 // 2020 0916 lin 新增返回格式 成功status为1 因为queue判断成功请求的条件为status1
return system.getResultRedisQueueSuccess(res); return system.getResultRedisQueueSuccess(res);
...@@ -927,16 +927,16 @@ class UtilsNeedService extends AppServiceBase { ...@@ -927,16 +927,16 @@ class UtilsNeedService extends AppServiceBase {
} }
} }
bizTypeChange(bizType) { bizTypeChange(bizType) {
switch(bizType) { switch (bizType) {
case "ICP许可证": case "ICP许可证":
return "5" return "5"
case "EDI许可证": case "EDI许可证":
return "7" return "7"
} }
} }
needBizTypeChange(type) { needBizTypeChange(type) {
switch(type) { switch (type) {
case "ICP许可证": case "ICP许可证":
return "icpsq" return "icpsq"
case "EDI许可证": case "EDI许可证":
return "edisq" return "edisq"
...@@ -977,11 +977,11 @@ class UtilsNeedService extends AppServiceBase { ...@@ -977,11 +977,11 @@ class UtilsNeedService extends AppServiceBase {
var obj = { var obj = {
"intentionBizId": actionBody.intentionBizId, "intentionBizId": actionBody.intentionBizId,
"type": actionBody.type, "type": actionBody.type,
"description":actionBody.description, "description": actionBody.description,
"mobile":actionBody.mobile "mobile": actionBody.mobile
} }
var res = await this.submitNeed(pobj,obj); var res = await this.submitNeed(pobj, obj);
if(res.status == 0) { if (res.status == 0) {
return system.getResultSuccess(res.data); return system.getResultSuccess(res.data);
} }
return system.getResult(null, res) return system.getResult(null, res)
...@@ -995,11 +995,11 @@ class UtilsNeedService extends AppServiceBase { ...@@ -995,11 +995,11 @@ class UtilsNeedService extends AppServiceBase {
async needCloseAliEsp(pobj, actionBody) { async needCloseAliEsp(pobj, actionBody) {
var obj = { var obj = {
"intentionBizId": actionBody.intentionBizId, "intentionBizId": actionBody.intentionBizId,
"mobile":actionBody.mobile "mobile": actionBody.mobile
} }
pobj.actionType = "needClose"; pobj.actionType = "needClose";
var res = await this.needClose(pobj,obj); var res = await this.needClose(pobj, obj);
if(res.status == 0) { if (res.status == 0) {
return system.getResultSuccess(res.data); return system.getResultSuccess(res.data);
} }
return system.getResult(null, res) return system.getResult(null, res)
...@@ -1010,7 +1010,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1010,7 +1010,7 @@ class UtilsNeedService extends AppServiceBase {
* @param {*} pobj * @param {*} pobj
* @param {*} actionBody * @param {*} actionBody
*/ */
async produceNoticeAliEsp(pobj, actionBody) { async produceNoticeAliEsp(req, pobj, actionBody) {
// 如果状态为USER_UPLOAD_PRODUCE需要转换url // 如果状态为USER_UPLOAD_PRODUCE需要转换url
// if(actionBody.operationType == "USER_UPLOAD_PRODUCE" ) { // if(actionBody.operationType == "USER_UPLOAD_PRODUCE" ) {
// if(actionBody.extInfo) { // if(actionBody.extInfo) {
...@@ -1037,14 +1037,14 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1037,14 +1037,14 @@ class UtilsNeedService extends AppServiceBase {
// } // }
// } // }
switch (actionBody.operationType) { switch (actionBody.operationType) {
case "USER_PAY_PRODUCE": case "USER_PAY_PRODUCE":
// 修改需求,方案 订单状态 // 修改需求,方案 订单状态
// 第一步查处需求单 原因 询价/创建 需要商品数据 用户数据 // 第一步查处需求单 原因 询价/创建 需要商品数据 用户数据
pobj.actionBody.needNo = pobj.actionBody.intentionBizId pobj.actionBody.needNo = pobj.actionBody.intentionBizId
pobj.actionType = "getItemByChannelNeedNo"; pobj.actionType = "getItemByChannelNeedNo";
var url = this.centerOrderUrl + "action/need/springBoard"; var url = this.centerOrderUrl + "action/need/springBoard";
var needInfoResult = await this.restPostUrl(pobj, url); var needInfoResult = await this.restPostUrl(pobj, url);
if(needInfoResult.status != 0) { if (needInfoResult.status != 0) {
return system.getResult(null, "needInfo is empty"); return system.getResult(null, "needInfo is empty");
} }
// 第二部 询价 // 第二部 询价
...@@ -1075,7 +1075,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1075,7 +1075,7 @@ class UtilsNeedService extends AppServiceBase {
pobj.actionType = "getProductPrice"; pobj.actionType = "getProductPrice";
var url = settings.centerAppUrl() + "action/opProduct/springBoard"; var url = settings.centerAppUrl() + "action/opProduct/springBoard";
var productPriceResult = await this.restPostUrl(pobj, url); var productPriceResult = await this.restPostUrl(pobj, url);
if(productPriceResult.status != 0) { if (productPriceResult.status != 0) {
return system.getResult(null, "productPrice is empty"); return system.getResult(null, "productPrice is empty");
} }
// 获取userpin 为什么在这里获取?原因:getWay获取不到手机号 再去调用其他接口浪费资源 // 获取userpin 为什么在这里获取?原因:getWay获取不到手机号 再去调用其他接口浪费资源
...@@ -1083,9 +1083,16 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1083,9 +1083,16 @@ class UtilsNeedService extends AppServiceBase {
pobj.actionBody.channelUserId = needInfoResult.data.publishMobile; // 即:86_18512345678 pobj.actionBody.channelUserId = needInfoResult.data.publishMobile; // 即:86_18512345678
pobj.actionBody.userName = needInfoResult.data.publishMobile; pobj.actionBody.userName = needInfoResult.data.publishMobile;
pobj.actionBody.mobile = needInfoResult.data.publishMobile; pobj.actionBody.mobile = needInfoResult.data.publishMobile;
pobj.actionBody.userpin = pobj.actionBody.userpin || this.getUUID(); // pobj.actionBody.userpin = pobj.actionBody.userpin || this.getUUID();//采用jwt方式封装userpin
var tmpOpResult = await this.utilsAuthSve.getLoginByUserName(pobj, pobj.actionBody); var tmpOpResult = await this.utilsAuthSve.getLoginByUserName(req, pobj, pobj.actionBody);
pobj.userInfo = tmpOpResult.data if (tmpOpResult.status != 0) {
return system.getResult(null, "创建用户信息失败");
}
pobj.userInfo = {
channel_userid: needInfoResult.data.publishMobile,
channel_username: needInfoResult.data.publishMobile,
mobile: needInfoResult.data.publishMobile
}
// 第三步 走addOrder流程 // 第三步 走addOrder流程
// var pobjStr = JSON.stringify(pobj); // var pobjStr = JSON.stringify(pobj);
// var qobj = JSON.parse(pobjStr); // var qobj = JSON.parse(pobjStr);
...@@ -1124,9 +1131,9 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1124,9 +1131,9 @@ class UtilsNeedService extends AppServiceBase {
// var reqUrl = this.centerOrderUrl + "action/order/springBoard"; // var reqUrl = this.centerOrderUrl + "action/order/springBoard";
// qobj.actionBody.channelOrder.orderStatus = 2;// 2作为orderinfo的orderStatus的值。含义为已付款 // qobj.actionBody.channelOrder.orderStatus = 2;// 2作为orderinfo的orderStatus的值。含义为已付款
// var result = await this.restPostUrl(qobj, reqUrl); // var result = await this.restPostUrl(qobj, reqUrl);
pobj.actionBody.bizId = actionBody.bizId, pobj.actionBody.bizId = actionBody.bizId;
pobj.actionBody.userName = needInfoResult.data.publishName, pobj.actionBody.userName = needInfoResult.data.publishName;
pobj.actionBody.mobile = needInfoResult.data.publishMobile, pobj.actionBody.mobile = needInfoResult.data.publishMobile;
pobj.actionBody.orderNo = actionBody.bizId; pobj.actionBody.orderNo = actionBody.bizId;
pobj.actionBody.totalSum = productPriceResult.data.price; pobj.actionBody.totalSum = productPriceResult.data.price;
pobj.actionBody.orderPrice = productPriceResult.data.price; pobj.actionBody.orderPrice = productPriceResult.data.price;
...@@ -1177,7 +1184,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1177,7 +1184,7 @@ class UtilsNeedService extends AppServiceBase {
orderPrice: Number(pobj.actionBody.orderPrice / 100), orderPrice: Number(pobj.actionBody.orderPrice / 100),
phone: needInfoResult.data.publishMobile, phone: needInfoResult.data.publishMobile,
needId: solutiondata.data.channelNeedNo, needId: solutiondata.data.channelNeedNo,
companyName:solutiondata.data.solutionContent.solution.CompanyName || ''//1 companyName: solutiondata.data.solutionContent.solution.CompanyName || ''//1
}, },
appInfo: pobj.appInfo appInfo: pobj.appInfo
} }
...@@ -1200,13 +1207,13 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1200,13 +1207,13 @@ class UtilsNeedService extends AppServiceBase {
this.utilsPushSve.aliBusiness2Fq(fqobj, "pushOrderICPBusiness"); this.utilsPushSve.aliBusiness2Fq(fqobj, "pushOrderICPBusiness");
this.utilsPushSve.aliBusiness2Delivery(deliveryObj, "pushDeliveryOrder"); this.utilsPushSve.aliBusiness2Delivery(deliveryObj, "pushDeliveryOrder");
break; break;
case "USER_CONFIRM_PRODUCE": case "USER_CONFIRM_PRODUCE":
break; break;
case "USER_REFUSE_PRODUCE": case "USER_REFUSE_PRODUCE":
break; break;
case "ABC_CLOSE_PRODUCE": case "ABC_CLOSE_PRODUCE":
break; break;
case "USER_UPLOAD_PRODUCE": case "USER_UPLOAD_PRODUCE":
break; break;
default: default:
return system.getResult(null, "operationType参数错误"); return system.getResult(null, "operationType参数错误");
...@@ -1215,23 +1222,23 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1215,23 +1222,23 @@ class UtilsNeedService extends AppServiceBase {
} }
// 2020 0927 lin 新增 edi状态更新 // 2020 0927 lin 新增 edi状态更新
async ediNotify(pobj,actionBody) { async ediNotify(pobj, actionBody) {
if(actionBody.operationType == "USER_UPLOAD_PRODUCE" ) { if (actionBody.operationType == "USER_UPLOAD_PRODUCE") {
if(actionBody.extInfo) { if (actionBody.extInfo) {
// businessLicense:['business_license/12195411 61213057/1599115976393/p08xo9frgzj.png'] // businessLicense:['business_license/12195411 61213057/1599115976393/p08xo9frgzj.png']
// idCardList:[' ["card/1219541161213057/1599115980036/s1nn3sozulo.png"] '] // idCardList:[' ["card/1219541161213057/1599115980036/s1nn3sozulo.png"] ']
// 注意idCardList 是二维数组 需要再转换一下 不知道为什么 // 注意idCardList 是二维数组 需要再转换一下 不知道为什么
var extJson = JSON.parse(actionBody.extInfo); var extJson = JSON.parse(actionBody.extInfo);
var businessLicenseArr = []; var businessLicenseArr = [];
if(extJson.idCardList) { if (extJson.idCardList) {
// 抽出数组 // 抽出数组
var idCardListA = extJson.idCardList; var idCardListA = extJson.idCardList;
var idCardListArr = []; var idCardListArr = [];
for(var i = 0; i < idCardListA.length; i++) { for (var i = 0; i < idCardListA.length; i++) {
idCardListArr.push(await this.opDownFileInfo(idCardListA[i])); idCardListArr.push(await this.opDownFileInfo(idCardListA[i]));
} }
} }
for(var i = 0; i < extJson.businessLicense.length; i++) { for (var i = 0; i < extJson.businessLicense.length; i++) {
businessLicenseArr.push(await this.opDownFileInfo(extJson.businessLicense[i])); businessLicenseArr.push(await this.opDownFileInfo(extJson.businessLicense[i]));
} }
actionBody.extInfo = { actionBody.extInfo = {
...@@ -1249,7 +1256,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1249,7 +1256,7 @@ class UtilsNeedService extends AppServiceBase {
pobj.actionType = "receiveEdiStatusNotify"; pobj.actionType = "receiveEdiStatusNotify";
var url = settings.centerOrderUrl() + "action/ediApi/springBoard"; var url = settings.centerOrderUrl() + "action/ediApi/springBoard";
var rtn = await this.restPostUrl(pobj, url); var rtn = await this.restPostUrl(pobj, url);
if(rtn.status) { if (rtn.status) {
return rtn; return rtn;
} }
// 只有上传材料才在这里推送,produceNoticeAliEsp不做关于材料上传的推送 // 只有上传材料才在这里推送,produceNoticeAliEsp不做关于材料上传的推送
...@@ -1308,7 +1315,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1308,7 +1315,7 @@ class UtilsNeedService extends AppServiceBase {
// 待定 // 待定
// solutionBizId // solutionBizId
// note // note
if(actionBody.operateType == "INVALID") { if (actionBody.operateType == "INVALID") {
var url = settings.centerOrderUrl() + "action/ediApi/springBoard"; var url = settings.centerOrderUrl() + "action/ediApi/springBoard";
var rtn = await this.restPostUrl(pobj, url); var rtn = await this.restPostUrl(pobj, url);
} }
...@@ -1322,7 +1329,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1322,7 +1329,7 @@ class UtilsNeedService extends AppServiceBase {
* @param {*} actionBody * @param {*} actionBody
*/ */
async submitNeed2(pobj, actionBody) { async submitNeed2(pobj, actionBody) {
if(actionBody.type == "esp.wangwen" || actionBody.type == "esp.food") { if (actionBody.type == "esp.wangwen" || actionBody.type == "esp.food") {
actionBody.area = this.wangwenAreaChange(actionBody.area) actionBody.area = this.wangwenAreaChange(actionBody.area)
} }
if (!actionBody.intentionBizId) { if (!actionBody.intentionBizId) {
...@@ -1364,7 +1371,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1364,7 +1371,7 @@ class UtilsNeedService extends AppServiceBase {
} }
} }
if(pobj.actionBody.phone=="17319425791"){ if (pobj.actionBody.phone == "17319425791") {
pobj.actionBody.level = "F"; pobj.actionBody.level = "F";
} }
...@@ -1373,19 +1380,22 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1373,19 +1380,22 @@ class UtilsNeedService extends AppServiceBase {
var result = await this.restPostUrl(pobj, reqUrl); var result = await this.restPostUrl(pobj, reqUrl);
if (result.status == 0) { if (result.status == 0) {
if (pobj.actionBody.channel_type_code == "esp.companyreg") { if (pobj.actionBody.channel_type_code == "esp.companyreg") {
this.utilsPushSve.aliBusiness2Fq(pobj, "pushNeedBusiness"); // this.utilsPushSve.aliBusiness2Fq(pobj, "pushNeedBusiness");
} else { } else {
var reqParams = { var reqParams = {
actionBody: pobj.actionBody, actionBody: pobj.actionBody,
appInfo: pobj.appInfo appInfo: pobj.appInfo
} }
this.utilsPushSve.aliBusiness2Delivery(reqParams, "addChance"); // this.utilsPushSve.baiduBusiness2Delivery(reqParams, "addChance");
pobj.actionBody.description = pobj.actionBody.description + " 成交概率:" + pobj.actionBody.level pobj.actionBody.description = pobj.actionBody.description + " 成交概率:" + pobj.actionBody.level
if (pobj.actionBody.probability) { if (pobj.actionBody.probability) {
pobj.actionBody.description = pobj.actionBody.description + "(" + pobj.actionBody.probability + ") " pobj.actionBody.description = pobj.actionBody.description + "(" + pobj.actionBody.probability + ") "
} }
this.utilsPushSve.aliBusiness2Fq(pobj, "pushNeedICPBusiness"); pobj.actionBody.idempotentId = pobj.actionBody.intentionBizId;
pobj.actionBody.idempotentSource = pobj.actionBody.type;
pobj.actionBody.customerName = pobj.actionBody.userName;
this.utilsPushSve.baiduBusiness2Fq(pobj, "pushNeedICPBusinessNew");
} }
} }
return result; return result;
...@@ -1394,7 +1404,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1394,7 +1404,7 @@ class UtilsNeedService extends AppServiceBase {
async icpNotifyNew(pobj) { async icpNotifyNew(pobj) {
var actionBody = pobj.actionBody; var actionBody = pobj.actionBody;
var self = this; var self = this;
if(actionBody.isDirectBuy && actionBody.isDirectBuy==1){ if (actionBody.isDirectBuy && actionBody.isDirectBuy == 1) {
actionBody.bizId = actionBody.orderNo actionBody.bizId = actionBody.orderNo
} }
if (!actionBody.bizId) { if (!actionBody.bizId) {
...@@ -1421,7 +1431,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1421,7 +1431,7 @@ class UtilsNeedService extends AppServiceBase {
}, },
appInfo: pobj.appInfo appInfo: pobj.appInfo
} }
this.utilsPushSve.aliBusiness2Delivery(deliveryObj, "pushDeliveryOrder"); this.utilsPushSve.baiduBusiness2Delivery(deliveryObj, "pushDeliveryOrder");
} }
if (rtn.status == 0 && actionBody.status != 1 && actionBody.status != 2 && rtn.data) { if (rtn.status == 0 && actionBody.status != 1 && actionBody.status != 2 && rtn.data) {
var tmpObj = { var tmpObj = {
...@@ -1432,7 +1442,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1432,7 +1442,7 @@ class UtilsNeedService extends AppServiceBase {
}, },
appInfo: pobj.appInfo appInfo: pobj.appInfo
} }
this.utilsPushSve.aliBusiness2Delivery(tmpObj, "pushDeliveryStatusNotify"); this.utilsPushSve.baiduBusiness2Delivery(tmpObj, "pushDeliveryStatusNotify");
pobj.actionBody.orderNo = rtn.data.orderNo; pobj.actionBody.orderNo = rtn.data.orderNo;
if (actionBody.status == 11) { if (actionBody.status == 11) {
var orderrtn = await self.utilsOrderSve.delOrder(pobj, pobj.actionBody); var orderrtn = await self.utilsOrderSve.delOrder(pobj, pobj.actionBody);
...@@ -1440,7 +1450,7 @@ class UtilsNeedService extends AppServiceBase { ...@@ -1440,7 +1450,7 @@ class UtilsNeedService extends AppServiceBase {
return system.getResultFail(-5022, "订单关闭失败"); return system.getResultFail(-5022, "订单关闭失败");
} }
tmpObj.actionBody.orderNo = rtn.data.channelSolutionNo; tmpObj.actionBody.orderNo = rtn.data.channelSolutionNo;
self.utilsPushSve.aliBusiness2Fq(tmpObj, "pushOrderICPClose"); self.utilsPushSve.baiduBusiness2Fq(tmpObj, "pushOrderICPClose");
} }
}//通知更新状态 }//通知更新状态
return rtn; return rtn;
......
...@@ -963,7 +963,7 @@ class UtilsOrderService extends AppServiceBase { ...@@ -963,7 +963,7 @@ class UtilsOrderService extends AppServiceBase {
} }
async channelPayNotify360(params, client_ip) {//渠道订单支付通知 async channelOrdersPayNotify(params, client_ip) {//渠道订单支付通知
try { try {
this.logCtl.info({ this.logCtl.info({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "渠道订单支付回调参数信息", optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "渠道订单支付回调参数信息",
...@@ -1004,47 +1004,57 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1004,47 +1004,57 @@ class UtilsOrderService extends AppServiceBase {
params.appInfo = { uapp_id: appInfo.uapp_id }; params.appInfo = { uapp_id: appInfo.uapp_id };
params.pay_type = params.payType; params.pay_type = params.payType;
params.time_end = params.payTime; params.time_end = params.payTime;
//修改并返回订单支付状态,创建收款单 // 修改并返回订单支付状 态,创建收款单
// 这里修改了order_info的状态(status/paytime等) // 根据合同号获取所有订单 循环修改order_info 信息
var orderUrl = this.centerOrderUrl + "opaction/opPayOrder/receivePayCallBackNotifyByChannel"; let seaUrl = this.centerOrderUrl + 'opaction/opPayOrder/getOrderListByOrderServiceNo';
var opOrderResult = await this.restPostUrl(params, orderUrl); let seaRet = await this.restPostUrl(params,seaUrl);
if (opOrderResult.status != 0) { if(seaRet.status!=0){
opOrderResult.data = null; seaRet.data= null;
return opOrderResult; return seaRet;
} }
if(!opOrderResult.data){ let orderList = seaRet.data;
return opOrderResult; for(let i=0;i<orderList.length;i++){
} params.orderNo = orderList[i].orderNo;
opOrderResult.data.appInfo = { // 这里修改了order_info的状态(status/paytime等)
uapp_id: appInfo.uapp_id, var orderUrl = this.centerOrderUrl + "opaction/opPayOrder/receivePayCallBackNotifyByChannel";
uapp_key: appInfo.uapp_key, var opOrderResult = await this.restPostUrl(params, orderUrl);
app_code: appInfo.app_code, if (opOrderResult.status != 0) {
app_name: appInfo.app_name opOrderResult.data = null;
}; continue;
opOrderResult.data.userInfo = { }
channel_userid: opOrderResult.data.order_info.channelUserId, if(!opOrderResult.data){
channel_username: opOrderResult.data.order_info.channelUserId, // return opOrderResult;
channel_nickname: opOrderResult.data.order_info.channelUserId continue;
}; }
opOrderResult.data.orderNo = params.orderNo; opOrderResult.data.appInfo = {
opOrderResult.data.order_info.pay_flow_no = params.trade_no || "";// 2020 0704 lin 新增 推送fq必填字段 uapp_id: appInfo.uapp_id,
opOrderResult.data.order_info.pay_channel = params.payType ||"";//付款方式 uapp_key: appInfo.uapp_key,
opOrderResult.data.order_info.pay_time = params.payTime;//付款时间 app_code: appInfo.app_code,
opOrderResult.data.order_info.pay_payer_bank_no = params.buyer_email || "";//付款账号 app_name: appInfo.app_name
opOrderResult.data.order_contact = opOrderResult.data.delivery_content.orderContact; };
opOrderResult.data.userInfo = {
channel_userid: opOrderResult.data.order_info.channelUserId,
channel_username: opOrderResult.data.order_info.channelUserId,
channel_nickname: opOrderResult.data.order_info.channelUserId
};
opOrderResult.data.orderNo = params.orderNo;
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_time = params.payTime;//付款时间
opOrderResult.data.order_info.pay_payer_bank_no = params.buyer_email || "";//付款账号
opOrderResult.data.order_contact = opOrderResult.data.delivery_content.orderContact;
var pobj = { var pobj = {
appInfo: opOrderResult.data.appInfo, appInfo: opOrderResult.data.appInfo,
actionBody: opOrderResult.data actionBody: opOrderResult.data
} }
// 推送 // 推送
this.utilsPushSve.pushBusInfo(pobj, "pushOrder", 0); this.utilsPushSve.pushBusInfo(pobj, "pushOrder", 0);
if(['icpsq','edisq'].includes(opOrderResult.data.product_info.channel_item_code)){ // opOrderResult.data = null;
this.utilsPushSve.aliBusiness2Delivery(pobj, "pushDeliveryOrder"); // return opOrderResult;
} }
opOrderResult.data = null; return system.getResultSuccess();
return opOrderResult;
} catch (e) { } catch (e) {
// await this.cacheManager["TlPayLocker"].release(params.orderNo); // await this.cacheManager["TlPayLocker"].release(params.orderNo);
this.logCtl.error({ this.logCtl.error({
...@@ -1242,17 +1252,6 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1242,17 +1252,6 @@ class UtilsOrderService extends AppServiceBase {
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");
} }
pobj.actionType = "getProductDetail";
var url = settings.centerAppUrl() + "action/opProduct/springBoard";
var productItemResult = await this.restPostUrl(pobj, url);
if (productItemResult.status != 0) {
return productItemResult;
}
pobj.actionBody.product_info = productItemResult.data;
pobj.actionType = "getProductInterface";
pobj.actionBody.product_id = productItemResult.data.id;
var productItemInterfaceResult = await this.restPostUrl(pobj, url);
pobj.actionBody.product_info.interface_info = productItemInterfaceResult.data;
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 ++){
...@@ -1266,7 +1265,6 @@ class UtilsOrderService extends AppServiceBase { ...@@ -1266,7 +1265,6 @@ class UtilsOrderService extends AppServiceBase {
actionBody.totalSum = 0; actionBody.totalSum = 0;
actionBody.quantity = 1; actionBody.quantity = 1;
actionBody.deliveryData.nclones = [nclone] actionBody.deliveryData.nclones = [nclone]
var verifyResult = await this.isOrderVerify(pobj, pobj.actionBody);
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){
......
...@@ -125,5 +125,49 @@ class UtilsPushService extends AppServiceBase { ...@@ -125,5 +125,49 @@ class UtilsPushService extends AppServiceBase {
return await this.disposePushResultFail(pobj, errorResult, "数据推送异常-->reflexAction-->errorResult", this.pushlogFailType.FAILLOG); return await this.disposePushResultFail(pobj, errorResult, "数据推送异常-->reflexAction-->errorResult", this.pushlogFailType.FAILLOG);
} }
} }
//---------百度---zhuangbing--2020.10.28------start--------------------------------------------
async baiduBusiness2Fq(pobj, opType) {//供业务调用,在代码中调用,不在db中做配置进行调用
pobj.actionType = "getAppInterface";
var reqUrl = settings.centerAppUrl() + "action/opProduct/springBoard";
var productItemInterfaceResult = await this.restPostUrl(pobj, reqUrl);
pobj.interface_info = productItemInterfaceResult.data;
//日志记录
this.logCtl.info({
appid: pobj.appInfo ? pobj.appInfo.uapp_id || "" : "",
appkey: pobj.appInfo ? pobj.appInfo.uapp_key || "" : "",
requestId: pobj.requestId || "",
op: "service/impl/utilsSve/utilsPushSve.js/service/app.base.js/baiduBusiness2Fq",
content: JSON.stringify(pobj),
resultInfo: productItemInterfaceResult.data ? JSON.stringify(productItemInterfaceResult.data) : "接口数据为空",
optitle: pobj.opType + "推送蜂擎获取的接口信息->baiduBusiness2Fq",
});
if (pobj.interface_info) {
await this.pushBusInfo(pobj, opType, 1);
return system.getResultSuccess();
}
return system.getResult(null, "push Fail,interface_info data is empty");
}
async baiduBusiness2Delivery(pobj, opType) {//供业务调用,在代码中调用,不在db中做配置进行调用
pobj.actionType = "getAppInterface";
var reqUrl = settings.centerAppUrl() + "action/opProduct/springBoard";
var productItemInterfaceResult = await this.restPostUrl(pobj, reqUrl);
pobj.interface_info = productItemInterfaceResult.data;
//日志记录
this.logCtl.info({
appid: pobj.appInfo ? pobj.appInfo.uapp_id || "" : "",
appkey: pobj.appInfo ? pobj.appInfo.uapp_key || "" : "",
requestId: pobj.requestId || "",
op: "service/impl/utilsSve/utilsPushSve.js/service/app.base.js/baiduBusiness2Delivery",
content: JSON.stringify(pobj),
resultInfo: productItemInterfaceResult.data ? JSON.stringify(productItemInterfaceResult.data) : "接口数据为空",
optitle: opType + "推送蜂擎获取的接口信息->baiduBusiness2Delivery",
});
if (pobj.interface_info) {
await this.pushBusInfo(pobj, opType, 1);
return system.getResultSuccess();
}
return system.getResult(null, "push Fail,interface_info data is empty");
}
//---------百度---zhuangbing--2020.10.28------end--------------------------------------------
} }
module.exports = UtilsPushService; module.exports = UtilsPushService;
...@@ -22,10 +22,11 @@ class UtilsUcommuneService extends AppServiceBase { ...@@ -22,10 +22,11 @@ class UtilsUcommuneService extends AppServiceBase {
/** /**
* 根据优客token获取用户信息,生成userPin返回前端 * 根据优客token获取用户信息,生成userPin返回前端
* @param {*} req
* @param {*} pobj * @param {*} pobj
* @param {*} actionBody userToken 为优客工厂的userToken * @param {*} actionBody userToken 为优客工厂的userToken
*/ */
async getUserInfo(pobj, actionBody) { async getUserInfo(req, pobj, actionBody) {
this.logCtl.info({ this.logCtl.info({
optitle: "优客免登接口", optitle: "优客免登接口",
op: "center-app/app/base/service/impl/utilsSve/utilsUcommuneSve.js/getUserInfo", op: "center-app/app/base/service/impl/utilsSve/utilsUcommuneSve.js/getUserInfo",
...@@ -45,9 +46,9 @@ class UtilsUcommuneService extends AppServiceBase { ...@@ -45,9 +46,9 @@ class UtilsUcommuneService extends AppServiceBase {
pobj.actionBody.nickName = result.data.name; pobj.actionBody.nickName = result.data.name;
pobj.actionBody.mobile = result.data.mobile; pobj.actionBody.mobile = result.data.mobile;
pobj.actionBody.headUrl = result.data.headImg; pobj.actionBody.headUrl = result.data.headImg;
pobj.actionBody.userpin = pobj.actionBody.userpin || this.getUUID(); // pobj.actionBody.userpin = pobj.actionBody.userpin || this.getUUID();//采用jwt方式封装userpin
var tmpOpResult = await this.utilsAuthSve.getLoginByUserName(pobj, pobj.actionBody); var tmpOpResult = await this.utilsAuthSve.getLoginByUserName(req, pobj, pobj.actionBody);
if (tmpOpResult.status != 0 && tmpOpResult.status != 2060) { if (tmpOpResult.status != 0) {
return tmpOpResult; return tmpOpResult;
} }
this.logCtl.info({ this.logCtl.info({
......
const childproc = require('child_process');
const system = require("../system");
const util = require('util');
const exec = util.promisify(require('child_process').exec);
const settings = require("../../../app/config/settings");
const axios = require('axios');
const moment = require('moment');
const uuid = require('uuid');
class ExecClientNew {
constructor() {
this.cmdGetPattern = "curl -G -X GET '{url}'";
this.cmdPostPattern = "curl -k -H 'Content-type: application/json' -d '{data}' {url}";
// this.cmdPushDataPostPattern = "curl -k -H 'Content-type: application/json' -H 'token:{tk}' -H 'appkey:{appkey}' -d '{data}' {url}";
}
/**
* 带超时时间的post请求
* @param {*} execFile 执行文件
* @param {*} params 请求数据-json格式
* @param {*} url 请求地址
* @param {*} ContentType 请求头类型,默认application/json
* @param {*} headData 请求头内容-json格式,如:请求头中传递token,格式:{token:"9098902q849q0434q09439"}
* @param {*} timeOut 超时时间设置,单位秒
* @param {*} req 请求信息
*/
async execPostTimeOutByBusiness(execFile, params, url, ContentType, headData, timeOut = 60, req) {
var rtn = null;
var reqResult = null;
var requestId = null;
if (req && req.body && (req.body.RequestId || req.body.requestId)) {
requestId = req.body.RequestId || req.body.requestId;
} else {
if (req && req.query && (req.query.RequestId || req.query.requestId)) {
requestId = req.query.RequestId || req.query.requestId;
}
}
try {
if (settings.env === "localhost" || settings.env === "dev") {
var headers = {
'Content-type': 'application/json'
}
if (headData) {
var headDataKeys = Object.keys(headData);
if (headDataKeys.length > 0) {
for (let index = 0; index < headDataKeys.length; index++) {
const indexKey = headDataKeys[index];
var headValue = headData[indexKey];
if (indexKey && headValue) {
headers[indexKey] = headValue;
}
}
}
}
axios.default.timeout = timeOut;
let result = await axios({
// headers: {'Content-Type': 'application/x-www-form-urlencoded'},
headers: headers,
method: 'POST',
url: url,
data: JSON.stringify(params)
});
if (result.status == 200) {
reqResult = system.getResultSuccess(result.data);
} else {
reqResult = system.getResult(null, "执行execPostTimeOutByBusiness存在错误");
}
reqResult.requestId = requestId || uuid.v1();
if (result.headers) {
delete result["headers"];
}
if (result.request) {
delete result["request"];
}
if (result.config) {
delete result["config"];
}
params.reqUrl = url;
this.execLogs(execFile + "执行execPostTimeOutByBusiness,errorInfo信息为请求的返回结果", params, params.identifyCode, reqResult, result);
return reqResult;
}
//方式二
rtn = await this.execPostTimeOut(params, url, ContentType, headData, timeOut);
params.reqUrl = url;
if (!rtn || !rtn.stdout) {
this.execLogs(execFile + "执行execPostTimeOutByBusiness返回的数据为空", params, params.identifyCode, null, null);
reqResult = system.getResult(null, "execPostTimeOut data is empty");
} else {
var result = JSON.parse(rtn.stdout);
reqResult = system.getResultSuccess(result);
}
reqResult.requestId = requestId || uuid.v1();
this.execLogs(execFile + "执行execPostTimeOutByBusiness,errorInfo信息为请求的返回结果", params, params.identifyCode, reqResult, rtn);
return reqResult;
} catch (error) {
reqResult = system.getResultFail(-200, execFile + "执行execPostByTimeOut存在异常");
reqResult.requestId = requestId || uuid.v1();
this.execLogs(execFile + "执行execPostByTimeOut存在异常", params, params.identifyCode, reqResult, error.stack);
return reqResult;
}
}
/**
* 记录日志信息
* @param {*} opTitle 操作的标题
* @param {*} params 参数
* @param {*} identifyCode 业务标识
* @param {*} resultInfo 返回结果
* @param {*} errorInfo 错误信息
*/
async execLogs(opTitle, params, identifyCode, resultInfo, errorInfo) {
var reqUrl = settings.opNewLogUrl();
params = typeof params === 'object' ? JSON.stringify(params) : params || "";
resultInfo = typeof resultInfo === 'object' ? JSON.stringify(resultInfo) : resultInfo || "";
errorInfo = typeof errorInfo === 'object' ? JSON.stringify(errorInfo) : errorInfo || "";
var tmpParams = {
opTitle: opTitle || "",
identifyCode: identifyCode || "",
messageBody: params,
resultInfo: resultInfo || "",
errorInfo: errorInfo || "",
requestId: resultInfo ? resultInfo.requestId || "" : "",
created_at: moment().format("YYYY-MM-DD HH:mm:ss:SSS"),
timestamp: Date.now()
}
this.execPostTimeOut(tmpParams, reqUrl, 'application/json', null, 20);
}
/**
* get请求
* @param {*} params 提交的数据-格式JSON
* @param {*} url
* @param {*} headData 请求信息,JSON格式
*/
async execGet(params, url, headData) {
let cmd = this.FetchGetCmd(params, url, headData);
var result = await this.exec(cmd);
return result;
}
/**
*
* @param {*} params 提交的数据JSON格式
* @param {*} url
* @param {*} headData 请求信息,JSON格式
* @param {*} timeOut 超时时间
*/
async execGetTimeOut(params, url, headData, timeOut = 5000) {
//timeOut,单位是毫秒
let cmd = this.FetchGetCmd(params, url, headData);
var options = {
timeout: timeOut,
};
const { stdout, stderr } = await exec(cmd, options);
return { stdout, stderr };
}
/**
* 带超时时间的post请求
* @param {*} params 请求数据-json格式
* @param {*} url 请求地址
* @param {*} ContentType 请求头类型,默认application/json
* @param {*} headData 请求头内容-json格式,如:请求头中传递token,格式:{token:"9098902q849q0434q09439"}
*/
async execPost(params, url, ContentType, headData) {
if (!ContentType) {
ContentType = "application/json";
}
let cmd = this.FetchPostCmd(params, url, ContentType, headData);
var options = {
maxBuffer: 1024 * 1024 * 15
};
var result = await this.exec(cmd, options, headData);
return result;
}
/**
* 带超时时间的post请求
* @param {*} params 请求数据-json格式
* @param {*} url 请求地址
* @param {*} ContentType 请求头类型,默认application/json
* @param {*} headData 请求头内容-json格式,如:请求头中传递token,格式:{token:"9098902q849q0434q09439"}
* @param {*} timeOut 超时时间设置,单位秒
*/
async execPostTimeOut(params, url, ContentType, headData, timeOut = 5000) {
if (!ContentType) {
ContentType = "application/json";
}
let cmd = this.FetchPostCmd(params, url, ContentType, headData);
var options = {
timeout: timeOut,
maxBuffer: 1024 * 1024 * 15
};
var result = await this.exec(cmd, options);
return result;
}
//--------------------------------------------------辅助方法start-----------------
async exec(cmd) {
//await后面表达式返回的promise对象,是then的语法糖,await返回then函数的返回值
//异常需要try/catch自己捕获或外部catch捕获
const { stdout, stderr } = await exec(cmd);
return { stdout, stderr };
}
FetchGetCmd(params, url, headData) {
var cmd = this.cmdGetPattern.replace(
/\{data\}/g, params).replace(/\{url\}/g, url);
return cmd;
}
FetchPostCmd(params, url, ContentType, headData) {
if (!ContentType) {
ContentType = "application/json";
}
var data = null;
if (typeof params === 'object') {
// 声明cache变量,便于匹配是否有循环引用的情况
var cache = [];
data = JSON.stringify(params, function (key, value) {
if (typeof value === 'object' && value !== null) {
if (cache.indexOf(value) !== -1) {
// 移除
return;
}
// 收集所有的值
cache.push(value);
}
return value;
});
cache = null; // 清空变量,便于垃圾回收机制回收
} else {
data = params;
}
var cmdStr = "curl --user admines:adminGSBes. -k -H 'Content-type:" + ContentType + "'";
if (headData) {
var headDataKeys = Object.keys(headData);
if (headDataKeys.length > 0) {
for (let index = 0; index < headDataKeys.length; index++) {
const indexKey = headDataKeys[index];
var headValue = headData[indexKey];
if (indexKey && headValue) {
cmdStr = cmdStr + " -H '" + indexKey + ":" + headValue + "'";
}
}
}
}
cmdStr = cmdStr + " -d '" + data + "' " + url;
console.log(cmdStr, ":cmdStr.................");
return cmdStr;
}
/**
* 返回20位业务订单号
* @param {*} prefix 业务前缀
*/
async getBusUid(prefix) {
prefix = (prefix || "");
if (prefix) {
prefix = prefix.toUpperCase();
}
var prefixlength = prefix.length;
var subLen = 8 - prefixlength;
var uidStr = "";
if (subLen > 0) {
uidStr = await this.getUidInfo(subLen, 60);
}
var timStr = moment().format("YYYYMMDDHHmm");
return prefix + timStr + uidStr;
}
/**
* 返回指定长度的字符串
* @param {*} len 返回长度
* @param {*} radix 参与计算的长度,最大为62
*/
async getUidInfo(len, radix) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');//长度62,到yz长度为长36
var uuid = [], i;
radix = radix || chars.length;
if (len) {
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
} else {
var r;
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random() * 16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
}
//--------------------------------------------------辅助方法end-----------------
}
module.exports = ExecClientNew;
module.exports = {
PDICT: {
encrypt_key: "202006242013DDD90880",
encrypt_secret: "25455136E3BCA24335C3142C72D90990",
secret_prefix: "CENTERAPP",
token_secret_dev: "1E15FB63A004635A9BFB66BFA0637E99",//dev
token_secret_prod: "25455136E3BCA24335C3142C72D88990",//prod
webMustUserpinList: ["serviceProviderSubmitMaterial", "closeOrderDelivery", "serviceProviderNotification", "tmConfirm", "getNeedSolutionDetailByUser",
"getProgrammeInfoByChannelNeedNo", "submitIcpProgramme", "submitIcpMaterial", "acceptIcpPartnerNotification", "abolishIcpProgramme",
"addOrder", "getH5PayUrl", "getOrderQrCode", "queryOrderStatus", "getOrderInfo", "getOrderDeliveryInfo", "getOrderDetails",
"getOrderDeliveryFlowInfo", "getOrderDeliveryFlowList", "getOrderLogInfo", "updateContacts", "updateTmOrder", "delOrder", "submitProgramme",
"getProgrammeListByUser", "getProgrammeInfoByNeedNo", "abolishProgramme", "getAliPayInfo", "getPaidLogoListByUser", "getCollectibleLogoListByUser",
"collectLogo", "getLogoMaterial", "cancelCollectLogo", "icpNotify", "createName", "getNameDetail", "orderConfirm",
"orderTotalSum", "collect", "reg", "orderCheck", "getReOrderList", "getOfficalList", "addReviewList", "opSubmitNeed", "opNeedClose", "opNeedList",
"getItemByNeedNo", "opNeedDetailByChannelNo", "getNeedListUser", "manualEvaluation", "diagnosisInfo", "check", "enterpriseInfo", "diagnosisDetail",
"submitIcpIntention", "queryIntentionList", "confirmIcpIntention", "tmAccept", "tmStatus", "needBatchUpload",
"serviceSubmitOption", "submitWangwenSolution", "closeNeed", "recordLog", "recordLogList", "foodServiceSubmitOption", "submitFoodSolution",
"foodCloseNeed", "foodRecordLog", "foodRecordLogList", "getParamsFor360", "addOrderWeb", "getPayRecords", "getLoginInfo", "putUserMobileByVcode",
"putUserPwdByMobile", "icpNotifyNew"
],
apiMustUserpinList: ["submitNeed", "paySuccess", "icpNotify", "getLoginInfo", "icpNotifyNew"],
apiSecretPathList: ["/api/icp/consultation/submit","/api/icp/feedback/submit","/api/icp/order/notify"]
}
}
...@@ -3,7 +3,7 @@ var settings = { ...@@ -3,7 +3,7 @@ var settings = {
host: "121.36.3.35", host: "121.36.3.35",
port: 8967, port: 8967,
password: "Gongsibao2018", password: "Gongsibao2018",
db: 5, db: 4,
}, },
database: { database: {
dbname: "igirl_api", dbname: "igirl_api",
......
var url = require("url"); const system = require("../../base/system");
var system = require("../../base/system");
const utilsAuthSve = system.getObject("service.utilsSve.utilsAuthSve"); const utilsAuthSve = system.getObject("service.utilsSve.utilsAuthSve");
const logCtl = system.getObject("service.common.oplogSve"); const logCtl = system.getObject("service.common.oplogSve");
const utilsOrderSve = system.getObject("service.utilsSve.utilsOrderSve"); const utilsOrderSve = system.getObject("service.utilsSve.utilsOrderSve");
const utilsFeishuSve = system.getObject("service.utilsSve.utilsFeishuSve"); const utilsFeishuSve = system.getObject("service.utilsSve.utilsFeishuSve");
var md5 = require('md5'); const signSve = system.getObject("service.common.signSve");
var xml2js = require('xml2js'); const xml2js = require('xml2js');
const jwt = require('jsonwebtoken');
const { PDICT } = require("../../config/businessConfig");
const settings = require("../../config/settings");
module.exports = function (app) { module.exports = function (app) {
//-----------------------新的模式---------web---------开始 //-----------------------新的模式---------web---------开始
...@@ -120,7 +122,7 @@ module.exports = function (app) { ...@@ -120,7 +122,7 @@ module.exports = function (app) {
return; return;
} }
pobj.appInfo = result.data; pobj.appInfo = result.data;
result = await utilsFeishuSve.checkAndLogin(pobj); result = await utilsFeishuSve.checkAndLogin(req, pobj);
logCtl.info({ logCtl.info({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "飞书小程序记录回调处理结果,method=login", optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "飞书小程序记录回调处理结果,method=login",
op: "app/config/routes/api.js/feishu/notify", op: "app/config/routes/api.js/feishu/notify",
...@@ -202,7 +204,13 @@ module.exports = function (app) { ...@@ -202,7 +204,13 @@ module.exports = function (app) {
app.use('/orderNotify/channelPayNotify', async function (req, res) { app.use('/orderNotify/channelPayNotify', async function (req, res) {
try { try {
var client_ip = system.get_client_ip(req); var client_ip = system.get_client_ip(req);
var result = await utilsOrderSve.channelPayNotify(req.body, client_ip); 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);
}
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",
...@@ -224,6 +232,7 @@ module.exports = function (app) { ...@@ -224,6 +232,7 @@ module.exports = function (app) {
app.all("/web/*", async function (req, res, next) { app.all("/web/*", async function (req, res, next) {
const self = this;
var result = system.getResult(null, "req method must is post"); var 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));
...@@ -241,9 +250,9 @@ module.exports = function (app) { ...@@ -241,9 +250,9 @@ module.exports = function (app) {
return; return;
} }
if (req.originalUrl.indexOf("/action/tmQuery") >= 0 || req.originalUrl.indexOf("/action/tmTools") >= 0) { if (req.originalUrl.indexOf("/action/tmQuery") >= 0 || req.originalUrl.indexOf("/action/tmTools") >= 0) {
req.body.actionProcess="test-code"; req.body.actionProcess = "test-code";
req.body.actionBody.appHosts = req.host; req.body.actionBody.appHosts = req.host;
req.body.appInfo ={id:1} req.body.appInfo = { id: 1 }
next(); next();
return; return;
} }
...@@ -259,33 +268,34 @@ module.exports = function (app) { ...@@ -259,33 +268,34 @@ module.exports = function (app) {
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }
var cacheManager = system.getObject("db.common.cacheManager"); //校验jwt产生的token
var result = await cacheManager["AppTokenByHostsCache"].getCache(token, system.exTime); const tokenSecret = settings.env == "localhost" || settings.env == "dev" ? PDICT.token_secret_dev : PDICT.token_secret_prod;
if (result.status != 0) { let token_secret_str = null;
res.end(JSON.stringify(result)); jwt.verify(token, tokenSecret, function (err, decoded) { // decoded:指的是token解码后用户信息
return; if (err) { //如果token过期则会执行err的代码块
return res.send(system.getResultFail(-88, "Failed to authenticate token,error:" + err));
} else {
token_secret_str = decoded.token_secret;
}
});
let decryptResult = await utilsAuthSve.decryptInfo(token_secret_str);
if (decryptResult.status != 0) {
return res.send(system.getResultFail(-88, "Failed to authenticate token,fail:" + decryptResult.msg));
} }
req.body.appInfo = result.data; let tmpAppInfo = JSON.parse(decryptResult.data);
req.body.actionProcess = result.data.app_code; req.body.appInfo = tmpAppInfo;
var lst = ["serviceProviderSubmitMaterial", "closeOrderDelivery", "serviceProviderNotification", req.body.actionProcess = tmpAppInfo.app_code;
"tmConfirm", "getNeedSolutionDetailByUser", "getProgrammeInfoByChannelNeedNo",
"submitIcpProgramme", "submitIcpMaterial", "acceptIcpPartnerNotification", "abolishIcpProgramme",
"addOrder", "getH5PayUrl", "getOrderQrCode", "queryOrderStatus", "getOrderInfo", "getOrderDeliveryInfo", "getOrderDetails",
"getOrderDeliveryFlowInfo", "getOrderDeliveryFlowList", "getOrderLogInfo", "updateContacts", "updateTmOrder", "delOrder",
"submitProgramme", "getProgrammeListByUser", "getProgrammeInfoByNeedNo", "abolishProgramme", "getAliPayInfo",
"getPaidLogoListByUser", "getCollectibleLogoListByUser", "collectLogo", "getLogoMaterial", "cancelCollectLogo", "icpNotify", "createName", "getNameDetail", "orderConfirm",
"orderTotalSum", "collect", "reg", "orderCheck", "getReOrderList", "getOfficalList", "addReviewList", "opSubmitNeed", "opNeedClose", "opNeedList", "getItemByNeedNo", "opNeedDetailByChannelNo",
"getNeedListUser",
"manualEvaluation", "diagnosisInfo", "check", "enterpriseInfo", "diagnosisDetail",
"submitIcpIntention", "queryIntentionList", "confirmIcpIntention",
"tmAccept", "tmStatus",
"needBatchUpload",
"serviceSubmitOption","submitWangwenSolution","closeNeed","recordLog","recordLogList",
"foodServiceSubmitOption","submitFoodSolution","foodCloseNeed","foodRecordLog","foodRecordLogList",
"getParamsFor360","addOrderWeb","getPayRecords","icpNotifyNew",
]; //去除缓存,改用jwt模式
if (lst.indexOf(req.body.actionType) >= 0) { // var cacheManager = system.getObject("db.common.cacheManager");
// 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.webMustUserpinList.indexOf(req.body.actionType) >= 0) {
var userpin = req.headers["userpin"] || ""; var userpin = req.headers["userpin"] || "";
if (!userpin) { if (!userpin) {
result.status = system.noLogin; result.status = system.noLogin;
...@@ -293,23 +303,42 @@ module.exports = function (app) { ...@@ -293,23 +303,42 @@ module.exports = function (app) {
result.data = null; result.data = null;
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} else { }
var params = { let userpin_secret_str = null;
"appInfo": req.body.appInfo, jwt.verify(userpin, tokenSecret, function (err, decoded) { // decoded:指的是token解码后用户信息
"actionType": "getLoginInfo", if (err) { //如果token过期则会执行err的代码块
"actionBody": { return res.send(system.getResultFail(system.noLogin, "Failed to authenticate userpin,error:" + err));
"userpin": userpin } else {
} userpin_secret_str = decoded.userpin_secret;
}
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;
} }
req.body.userInfo = result.data; });
let userDecryptResult = await utilsAuthSve.decryptInfo(userpin_secret_str);
if (userDecryptResult.status != 0) {
return res.send(system.getResultFail(system.noLogin, "Failed to authenticate userpin,fail:" + userDecryptResult.msg));
} }
let tmpUserInfo = JSON.parse(userDecryptResult.data);
req.body.userInfo = tmpUserInfo;
if (req.body.actionType === "getLoginInfo") {
result = system.getResultSuccess(tmpUserInfo);
res.end(JSON.stringify(result));
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;
// }
// req.body.userInfo = result.data;
}//需要用户登录 }//需要用户登录
next(); next();
}); });
...@@ -377,6 +406,39 @@ module.exports = function (app) { ...@@ -377,6 +406,39 @@ module.exports = function (app) {
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }
if (PDICT.apiSecretPathList.indexOf(req.originalUrl) >= 0) {
//TODO:验证数据签名
var appkey = req.headers["appkey"] || "";
if (!appkey) {
result.msg = "req headers appkey can not be empty";
result.data = null;
res.end(JSON.stringify(result));
return;
}
//1.通过appkey 获取appInfo
var appRes = await signSve.getAppInfoByAppKey(appkey);
if(!appRes || appRes.status!=0){
result.msg = "获取应用信息失败";
result.data = null;
res.end(JSON.stringify(result));
return;
}
var appInfo = appRes.data;
//2.通过appsecret 验签
var signParams = req.body;
var verifyRes = await signSve.verifySign(req.body,appInfo.uapp_secret);
if(verifyRes && verifyRes.status==0){
req.body.appInfo = appInfo;
req.appInfo = appInfo;
req.actionProcess = appInfo.app_code;
next();
return;
}else{
res.end(JSON.stringify(verifyRes));
return;
}
}
if (["getAppTokenByHosts", "getAppTokenByAppKey", "getTmNclFilterSearch"].indexOf(req.body.actionType) >= 0) { if (["getAppTokenByHosts", "getAppTokenByAppKey", "getTmNclFilterSearch"].indexOf(req.body.actionType) >= 0) {
req.body.actionBody.appHosts = req.host; req.body.actionBody.appHosts = req.host;
next(); next();
...@@ -398,18 +460,32 @@ module.exports = function (app) { ...@@ -398,18 +460,32 @@ module.exports = function (app) {
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }
var cacheManager = system.getObject("db.common.cacheManager"); //校验jwt产生的token
var result = await cacheManager["AppTokenByHostsCache"].getCache(token, system.exTime); const tokenSecret = settings.env == "localhost" || settings.env == "dev" ? PDICT.token_secret_dev : PDICT.token_secret_prod;
if (result.status != 0) { let token_secret_str = null;
res.end(JSON.stringify(result)); jwt.verify(token, tokenSecret, function (err, decoded) { // decoded:指的是token解码后用户信息
return; if (err) { //如果token过期则会执行err的代码块
return res.send(system.getResultFail(-88, "Failed to authenticate token,error:" + err));
} else {
token_secret_str = decoded.token_secret;
}
});
let decryptResult = await utilsAuthSve.decryptInfo(token_secret_str);
if (decryptResult.status != 0) {
return res.send(system.getResultFail(-88, "Failed to authenticate token,fail:" + decryptResult.msg));
} }
req.body.appInfo = result.data; let tmpAppInfo = JSON.parse(decryptResult.data);
req.body.actionProcess = result.data.app_code; req.body.appInfo = tmpAppInfo;
var lst = [ req.body.actionProcess = tmpAppInfo.app_code;
"submitNeed", "paySuccess", "icpNotify","icpNotifyNew" // var cacheManager = system.getObject("db.common.cacheManager");
]; // var result = await cacheManager["AppTokenByHostsCache"].getCache(token, system.exTime);
if (lst.indexOf(req.body.actionType) >= 0) { // 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) {
var userpin = req.headers["userpin"] || ""; var userpin = req.headers["userpin"] || "";
if (!userpin) { if (!userpin) {
result.status = system.noLogin; result.status = system.noLogin;
...@@ -417,22 +493,39 @@ module.exports = function (app) { ...@@ -417,22 +493,39 @@ module.exports = function (app) {
result.data = null; result.data = null;
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} else { }
var params = { // var params = {
"appInfo": req.body.appInfo, // "appInfo": req.body.appInfo,
"actionType": "getLoginInfo", // "actionType": "getLoginInfo",
"actionBody": { // "actionBody": {
"userpin": userpin // "userpin": userpin
} // }
} // }
result = await utilsAuthSve.getLoginInfo(params, params.actionBody); // result = await utilsAuthSve.getLoginInfo(params, params.actionBody);
if (result.status != 0) { // if (result.status != 0) {
result.status = system.noLogin; // result.status = system.noLogin;
result.msg = "user login is invalidation"; // result.msg = "user login is invalidation";
res.end(JSON.stringify(result)); // res.end(JSON.stringify(result));
return; // return;
// }
let userpin_secret_str = null;
jwt.verify(userpin, tokenSecret, function (err, decoded) { // decoded:指的是token解码后用户信息
if (err) { //如果token过期则会执行err的代码块
return res.send(system.getResultFail(system.noLogin, "Failed to authenticate userpin,error:" + err));
} else {
userpin_secret_str = decoded.userpin_secret;
} }
req.body.userInfo = result.data; });
let userDecryptResult = await utilsAuthSve.decryptInfo(userpin_secret_str);
if (userDecryptResult.status != 0) {
return res.send(system.getResultFail(system.noLogin, "Failed to authenticate userpin,fail:" + userDecryptResult.msg));
}
let tmpUserInfo = JSON.parse(userDecryptResult.data);
req.body.userInfo = tmpUserInfo;
if (req.body.actionType === "getLoginInfo") {
result = system.getResultSuccess(tmpUserInfo);
res.end(JSON.stringify(result));
return;
} }
}//需要用户登录 }//需要用户登录
next(); next();
...@@ -499,6 +592,31 @@ module.exports = function (app) { ...@@ -499,6 +592,31 @@ module.exports = function (app) {
res.end(JSON.stringify(result)); res.end(JSON.stringify(result));
return; return;
} }
// var token = req.headers["token"] || "";
// if (!token) {
// var resfail = {
// "success": false,
// "errorMsg": "req headers token can not be empty",
// "errorCode": "ok"
// };
// res.end(JSON.stringify(resfail));
// return;
// }
// var cacheManager = system.getObject("db.common.cacheManager");
// var result = await cacheManager["AppTokenByHostsCache"].getCache(token, system.exTime);
// if (result.status != 0) {
// var resfail = {
// "success": false,
// "errorMsg": result.msg || "token error",
// "errorCode": "ok"
// };
// res.end(JSON.stringify(resfail));
// // res.end(JSON.stringify(result));
// return;
// }
// req.appInfo = result.data;
// req.body.appInfo = result.data;
// req.actionProcess = result.data.app_code;
var token = req.headers["token"] || ""; var token = req.headers["token"] || "";
if (!token) { if (!token) {
var resfail = { var resfail = {
...@@ -509,21 +627,24 @@ module.exports = function (app) { ...@@ -509,21 +627,24 @@ module.exports = function (app) {
res.end(JSON.stringify(resfail)); res.end(JSON.stringify(resfail));
return; return;
} }
var cacheManager = system.getObject("db.common.cacheManager"); //校验jwt产生的token
var result = await cacheManager["AppTokenByHostsCache"].getCache(token, system.exTime); const tokenSecret = settings.env == "localhost" || settings.env == "dev" ? PDICT.token_secret_dev : PDICT.token_secret_prod;
if (result.status != 0) { let token_secret_str = null;
var resfail = { jwt.verify(token, tokenSecret, function (err, decoded) { // decoded:指的是token解码后用户信息
"success": false, if (err) { //如果token过期则会执行err的代码块
"errorMsg": result.msg || "token error", return res.send(system.getResultFail(-88, "Failed to authenticate token,error:" + err));
"errorCode": "ok" } else {
}; token_secret_str = decoded.token_secret;
res.end(JSON.stringify(resfail)); }
// res.end(JSON.stringify(result)); });
return; let decryptResult = await utilsAuthSve.decryptInfo(token_secret_str);
if (decryptResult.status != 0) {
return res.send(system.getResultFail(-88, "Failed to authenticate token,fail:" + decryptResult.msg));
} }
req.appInfo = result.data; let tmpAppInfo = JSON.parse(decryptResult.data);
req.body.appInfo = result.data; req.body.appInfo = tmpAppInfo;
req.actionProcess = result.data.app_code; req.appInfo = tmpAppInfo;
req.actionProcess = tmpAppInfo.app_code;
next(); next();
}); });
//icp需求推送 //icp需求推送
......
...@@ -22,7 +22,14 @@ var settings = { ...@@ -22,7 +22,14 @@ var settings = {
cacheprefix: "centerChannel", cacheprefix: "centerChannel",
usertimeout: 3600,//单位秒 usertimeout: 3600,//单位秒
basepath: path.normalize(path.join(__dirname, '../..')), basepath: path.normalize(path.join(__dirname, '../..')),
port: process.env.NODE_PORT || 4012, port: process.env.NODE_PORT || 4012,
//记录日志地址
opNewLogUrl() {
if (this.env == 'dev') {
return "http://43.247.184.94:7200/center_channel_req_log/_doc?pretty";
}
return "http://43.247.184.94:7200/center_channel_req_log/_doc?pretty";
},
fbQueryUrl: function () { fbQueryUrl: function () {
if (this.env == 'dev' || this.env == 'test') { if (this.env == 'dev' || this.env == 'test') {
return 'http://43.247.184.92:15505' return 'http://43.247.184.92:15505'
...@@ -36,7 +43,7 @@ var settings = { ...@@ -36,7 +43,7 @@ var settings = {
} else { } else {
return "http://sytxpublic-msgq-service/api/queueAction/producer/springBoard"; return "http://sytxpublic-msgq-service/api/queueAction/producer/springBoard";
} }
}, },
entProfileUrl: function () { entProfileUrl: function () {
if (this.env == "dev") { if (this.env == "dev") {
return "https://entprofile.gongsibao.com/"; return "https://entprofile.gongsibao.com/";
...@@ -53,11 +60,11 @@ var settings = { ...@@ -53,11 +60,11 @@ var settings = {
}, },
aliGetNamesjavaUrl: function () { aliGetNamesjavaUrl: function () {
if (this.env == "dev") { if (this.env == "dev") {
return "192.168.210.240:80/getNames"; return "http://localhost:80/getNames";
} else { } else {
return "http://aliossjava-service/getNames"; return "http://aliossjava-service/getNames";
} }
}, },
tmtransactionUrl: function () { tmtransactionUrl: function () {
if (this.env == "dev") { if (this.env == "dev") {
...@@ -66,7 +73,7 @@ var settings = { ...@@ -66,7 +73,7 @@ var settings = {
return "http://center-tmtransaction-service"; return "http://center-tmtransaction-service";
} }
}, },
qifuPayAfterH5JumpUrl: function () { qifuPayAfterH5JumpUrl: function () {
if (this.env == "dev") { if (this.env == "dev") {
return "http://tm.qifu.gongsibao.com:4012/#/home/indent_list"; return "http://tm.qifu.gongsibao.com:4012/#/home/indent_list";
...@@ -80,22 +87,22 @@ var settings = { ...@@ -80,22 +87,22 @@ var settings = {
} else { } else {
return "http://tm.qifu.gongsibao.com/#/home/indent_list"; return "http://tm.qifu.gongsibao.com/#/home/indent_list";
} }
}, },
qifuH5PayNotifyUrl: function () { qifuH5PayNotifyUrl: function () {
if (this.env == "dev") { if (this.env == "dev") {
// return "http://gsb.qifu.gongsibao.com:4012/tlpay/notify"; // return "http://gsb.qifu.gongsibao.com:4012/tlpay/notify";
return "http://gsb.qifu-dev.gongsibao.com/tlpay/notify"// 2020 0804 lin 修改测试环境tl回调地址 return "http://gsb.qifu-dev.gongsibao.com/tlpay/notify"// 2020 0804 lin 修改测试环境tl回调地址
} else { } else {
return "http://gsb.qifu.gongsibao.com/tlpay/notify"; return "http://gsb.qifu.gongsibao.com/tlpay/notify";
} }
}, },
qifubaoUrl: function () {//企服宝(交付系统) qifubaoUrl: function () {//企服宝(交付系统)
if (this.env == "dev") { if (this.env == "dev") {
return "http://xxxx:xxxx/"; return "http://xxxx:xxxx/";
} else { } else {
return ""; return "";
} }
}, },
paasUrl: function () { paasUrl: function () {
if (this.env == "dev") { if (this.env == "dev") {
return "http://p.apps.com:4001/"; return "http://p.apps.com:4001/";
...@@ -142,12 +149,12 @@ var settings = { ...@@ -142,12 +149,12 @@ var settings = {
} }
}, },
centerChannelUrl: function () { centerChannelUrl: function () {
if (this.env == "dev") { if (this.env == "dev") {
return "http://60.205.209.94:4012/" return "http://60.205.209.94: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/"
} }
}, },
gatewayUrl: function () { gatewayUrl: function () {
if (this.env == "dev") { if (this.env == "dev") {
...@@ -163,24 +170,24 @@ var settings = { ...@@ -163,24 +170,24 @@ var settings = {
return "http://center-order-service/"; return "http://center-order-service/";
} }
}, },
igirlWeburl: function(){ igirlWeburl: function () {
if (this.env == "dev") { if (this.env == "dev") {
return "http://127.0.0.1:3000/"; return "http://127.0.0.1:3000/";
} else { } else {
return "http://igirl-service/"; return "http://igirl-service/";
} }
}, },
centerCacheUrl:function(){ centerCacheUrl: function () {
if(this.env=='dev'){ if (this.env == 'dev') {
return "http://123.57.217.203:30005/"; return "http://123.57.217.203:30005/";
}else{ } else {
return "http://specialprofile-service/" return "http://specialprofile-service/"
} }
}, },
fileDealUrl:function(){ fileDealUrl: function () {
if(this.env=='dev'){ if (this.env == 'dev') {
return "http://43.247.184.92:15503"; return "http://43.247.184.92:15503";
}else{ } else {
return "http://43.247.184.92:15503" return "http://43.247.184.92:15503"
} }
}, },
...@@ -199,7 +206,7 @@ var settings = { ...@@ -199,7 +206,7 @@ var settings = {
return "http://43.247.184.94:7200/"; return "http://43.247.184.94:7200/";
} }
}, },
certificationUrl:function () { certificationUrl: function () {
if (this.env == "dev") { if (this.env == "dev") {
return "http://43.247.184.92:15506/";// return "http://43.247.184.92:15506/";//
} else { } else {
...@@ -224,18 +231,18 @@ var settings = { ...@@ -224,18 +231,18 @@ var settings = {
if (this.env == "dev") { if (this.env == "dev") {
return "https://m-dev.ucommune.com/"// 优客测试环境 return "https://m-dev.ucommune.com/"// 优客测试环境
} else { } else {
// return "https://m.ucommune.com/"// 优客正式环境 // return "https://m.ucommune.com/"// 优客正式环境
return "https://m.ucommune.com/"// 6.29lin修改为测试环境。原因优客 目前还没有正式环境 return "https://m.ucommune.com/"// 6.29lin修改为测试环境。原因优客 目前还没有正式环境
} }
}, },
tokenUrl360:function(){ tokenUrl360: function () {
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 ""//
} }
}, },
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 {
...@@ -307,25 +314,25 @@ var settings = { ...@@ -307,25 +314,25 @@ var settings = {
}; };
} }
}, },
alipay: function() {// 没有在使用 确定不需要后会去掉 alipay: function () {// 没有在使用 确定不需要后会去掉
return new AlipaySdk({ return new AlipaySdk({
// appId: payConfig.ali.appId,
// privateKey: payConfig.ali.privateKey,
// alipayPublicKey: payConfig.ali.publicKey,
// appId: payConfig.ali.appId,
// privateKey: payConfig.ali.privateKey,
// alipayPublicKey: payConfig.ali.publicKey,
}); });
}, },
wxpay: function() {// 没有在使用 确定不需要后会去掉 wxpay: function () {// 没有在使用 确定不需要后会去掉
return WXPay({ return WXPay({
appid: 'wx6f3ebe44defe336a', appid: 'wx6f3ebe44defe336a',
mch_id: '1232813602', mch_id: '1232813602',
partner_key: 'sinotone2014sinotone2014sinotone', //微信商户平台API密钥 partner_key: 'sinotone2014sinotone2014sinotone', //微信商户平台API密钥
//pfx: fs.readFileSync('./wxpay_cert.p12'), //微信商户平台证书 //pfx: fs.readFileSync('./wxpay_cert.p12'), //微信商户平台证书
//pfx: "sinotone2014sinotone2014sinotone" //pfx: "sinotone2014sinotone2014sinotone"
}) })
// const config = { // const config = {
// appid: 'wx6f3ebe44defe336a', // appid: 'wx6f3ebe44defe336a',
// mchid: '1232813602', // mchid: '1232813602',
...@@ -333,15 +340,15 @@ var settings = { ...@@ -333,15 +340,15 @@ var settings = {
// }; // };
// return new tenpay(config); // return new tenpay(config);
}, },
paySecret: function() { paySecret: function () {
if (this.env == "dev") { if (this.env == "dev") {
// return "ab53dfb909e4c32a"; // return "ab53dfb909e4c32a";
return "34cdecaac35b1d8d"// 7.1之前测试环境的secret无法使用,测试/正式全部使用同一个secret return "34cdecaac35b1d8d"// 7.1之前测试环境的secret无法使用,测试/正式全部使用同一个secret
} else { } else {
return "34cdecaac35b1d8d";// 6.29lin新增 小黑给的secret return "34cdecaac35b1d8d";// 6.29lin新增 小黑给的secret
} }
}, },
ucommuneOperatorPhone: function() { ucommuneOperatorPhone: function () {
if (this.env == "dev") { if (this.env == "dev") {
return "13911391996"// 7.7修改测试环境优客 辅助/担保订单推送业务员手机号 return "13911391996"// 7.7修改测试环境优客 辅助/担保订单推送业务员手机号
} else { } else {
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
1. [验证码登录](#userPinByLgoinVcode) 1. [验证码登录](#userPinByLgoinVcode)
1. [用户注册](#userPinByRegister) 1. [用户注册](#userPinByRegister)
1. [按照手机号和验证码修改密码](#putUserPwdByMobile) 1. [按照手机号和验证码修改密码](#putUserPwdByMobile)
1. [按照验证码修改手机号、邮箱](#putUserMobileByVcode)
1. [获取用户登录信息](#getLoginInfo) 1. [获取用户登录信息](#getLoginInfo)
1. [退出](#logout) 1. [退出](#logout)
1. [飞书登录](#feishuLogin) 1. [飞书登录](#feishuLogin)
...@@ -161,6 +162,36 @@ ...@@ -161,6 +162,36 @@
``` ```
## **<a name="putUserMobileByVcode"> 根据验证码修改手机号、邮箱</a>**
[返回到目录](#menu)
##### URL
[/web/auth/accessAuth/springBoard]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
#### 请求头中需要增加userpin(用户登录后的凭证)的值
#### 渠道执行的类型 actionType:putUserMobileByVcode
``` javascript
{
"newMobile":"15010929366", // N 手机号
"vcode":"593555", // Y 验证码
"email":"123456" // Y 邮箱
}
```
#### 返回结果
```javascript
{
"status": 0,// 0为成功,2030为验证码错误,否则失败
"msg": "success",
"data": null,
"requestId": "1b12b0e9c190436da000386ddf693c8f"
}
```
## **<a name="logout"> 退出</a>** ## **<a name="logout"> 退出</a>**
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
"express": "^4.16.2", "express": "^4.16.2",
"express-session": "^1.15.6", "express-session": "^1.15.6",
"gm": "^1.23.1", "gm": "^1.23.1",
"jsonwebtoken": "^8.5.1",
"marked": "^0.7.0", "marked": "^0.7.0",
"method-override": "^2.3.10", "method-override": "^2.3.10",
"mongoose": "^5.7.1", "mongoose": "^5.7.1",
......
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