Commit 267d85e0 by 刘泽奇

Merge branch 'igirl-channel-jdweb' of gitlab.gongsibao.com:jiangyong/zhichan…

Merge branch 'igirl-channel-jdweb' of gitlab.gongsibao.com:jiangyong/zhichan into igirl-channel-jdweb
parents 2ff2eb53 dc701be7
...@@ -10,6 +10,8 @@ class tmqueryCtl extends CtlBase { ...@@ -10,6 +10,8 @@ class tmqueryCtl extends CtlBase {
jd: { appkey: "201911251551", secret: "56006077354d48858026c80c0e10bef6" } jd: { appkey: "201911251551", secret: "56006077354d48858026c80c0e10bef6" }
}; };
this.execClient = system.getObject("util.execClient"); this.execClient = system.getObject("util.execClient");
this.logClient = system.getObject("util.logClient");
} }
async doPost(pobj, obj, req) { async doPost(pobj, obj, req) {
if (["subTmOrder", "getTmOrderList", "getTmOrderInfo", "getTmApplyInfo", "getTmNclList", if (["subTmOrder", "getTmOrderList", "getTmOrderInfo", "getTmApplyInfo", "getTmNclList",
...@@ -179,6 +181,33 @@ class tmqueryCtl extends CtlBase { ...@@ -179,6 +181,33 @@ class tmqueryCtl extends CtlBase {
var resultTmpSign = md5(resultSignStr).toUpperCase(); var resultTmpSign = md5(resultSignStr).toUpperCase();
return system.getResultSuccess(resultTmpSign); return system.getResultSuccess(resultTmpSign);
} }
async getUserIdEncryptStr(pobj, qobj, req) {
try {
var tokenInfo = await this.getToken(pobj.actionProcess);
if (tokenInfo.status != 0) {
return tokenInfo;
}
//有返回用户信息进行用户ID加密
var param = {
actionProcess: pobj.actionProcess,
actionType: "encryptStr",
actionBody: { channelUserId: pobj.channelUserId, opStr: pobj.channelUserId },
isUser: "yes"
};
var reqUrl = this.channelApiUrl + "/action/tmTools/springBoard";
var resultUser = await this.execClient.execPostTK(param, reqUrl, tokenInfo.data.token);
if (!resultUser) {
return system.getResult(null, "req encrypt userId is error");
}
if (resultUser.status != 0) {
return system.getResult(null, "encrypt userId is error");
}
return resultUser;
} catch (error) {
console.log(error.stack, "操作error...................");
return system.getResultFail(-200, "操作error");
}
}
async getUserInfoTest(pobj, qobj, req) { async getUserInfoTest(pobj, qobj, req) {
try { try {
var tokenInfo = await this.getToken(pobj.actionProcess); var tokenInfo = await this.getToken(pobj.actionProcess);
...@@ -206,9 +235,24 @@ class tmqueryCtl extends CtlBase { ...@@ -206,9 +235,24 @@ class tmqueryCtl extends CtlBase {
} }
async getUserInfo(pobj, qobj, req) { async getUserInfo(pobj, qobj, req) {
try { try {
this.logClient.info("jd", "getUserInfo----->req参数:" + JSON.stringify(pobj));
if (req.session.userPinInfo) { if (req.session.userPinInfo) {
this.logClient.info("jd", "req.session.userPinInfo true 参数:" + JSON.stringify(req.session.userPinInfo));
if (!req.session.userPinInfo.encryptChannelUserId) {
pobj.channelUserId = req.session.userPinInfo.channelUserId;
var userIdEncryptStrResult = await this.getUserIdEncryptStr(pobj);
this.logClient.info("jd", "req.session.userPinInfo userIdEncryptStrResult 结果1111111:" + JSON.stringify(userIdEncryptStrResult));
if (userIdEncryptStrResult && userIdEncryptStrResult.status == 0) {
req.session.userPinInfo.encryptChannelUserId = userIdEncryptStrResult.data;
}//重新加密成功
else {
return userIdEncryptStrResult;
}
}
return system.getResultSuccess({ encryptChannelUserId: req.session.userPinInfo.encryptChannelUserId }); return system.getResultSuccess({ encryptChannelUserId: req.session.userPinInfo.encryptChannelUserId });
} }
// console.log();
var authUrl = pobj.authUrl; var authUrl = pobj.authUrl;
var authToken = pobj.authToken; var authToken = pobj.authToken;
var actionProcess = pobj.actionProcess; var actionProcess = pobj.actionProcess;
...@@ -222,10 +266,12 @@ class tmqueryCtl extends CtlBase { ...@@ -222,10 +266,12 @@ class tmqueryCtl extends CtlBase {
return system.getResult(null, "actionProcess不能为空"); return system.getResult(null, "actionProcess不能为空");
} }
var result = await this.execClient.execPostJDTK("", authUrl, authToken); var result = await this.execClient.execPostJDTK("", authUrl, authToken);
this.logClient.info("jd", "getUserInfo----->execPostJDTK----authUrl--->result:" + JSON.stringify(result));
if (!result || !result.account) { if (!result || !result.account) {
return system.getResult(null, "处理用户请求失败,msg:" + result.error_description); return system.getResult(null, "处理用户请求失败,msg:" + result.error_description);
} }
var tokenInfo = await this.getToken(actionProcess); var tokenInfo = await this.getToken(actionProcess);
this.logClient.info("jd", "getUserInfo----->tokenInfo:" + JSON.stringify(tokenInfo));
if (tokenInfo.status != 0) { if (tokenInfo.status != 0) {
return tokenInfo; return tokenInfo;
} }
...@@ -238,16 +284,29 @@ class tmqueryCtl extends CtlBase { ...@@ -238,16 +284,29 @@ class tmqueryCtl extends CtlBase {
}; };
var reqUrl = this.channelApiUrl + "/action/tmTools/springBoard"; var reqUrl = this.channelApiUrl + "/action/tmTools/springBoard";
var resultUser = await this.execClient.execPostTK(param, reqUrl, tokenInfo.data.token); var resultUser = await this.execClient.execPostTK(param, reqUrl, tokenInfo.data.token);
this.logClient.info("jd", "getUserInfo----->resultUser:" + JSON.stringify(resultUser));
if (!resultUser) { if (!resultUser) {
return system.getResult(null, "处理请求失败"); return system.getResult(null, "处理请求失败");
} }
req.session.userPinInfo = resultUser.data; req.session.userPinInfo = resultUser.data;
if (!req.session.userPinInfo.encryptChannelUserId) {
pobj.channelUserId = req.session.userPinInfo.channelUserId;
var userIdEncryptStrResult = await this.getUserIdEncryptStr(pobj);
this.logClient.info("jd", "req.session.userPinInfo userIdEncryptStrResult 结果222222:" + JSON.stringify(userIdEncryptStrResult));
if (userIdEncryptStrResult && userIdEncryptStrResult.status == 0) {
req.session.userPinInfo.encryptChannelUserId = userIdEncryptStrResult.data;
}//重新加密成功
else {
return userIdEncryptStrResult;
}
}
return resultUser; return resultUser;
} catch (error) { } catch (error) {
console.log(error.stack, "操作error..................."); this.logClient.error("jd", "req---->getUserInfo---->error:" + error.stack);
return system.getResultFail(-200, "操作error"); return system.getResultFail(-200, "操作error");
} }
} }
async opPayPageInfo(pobj, orderResult, req) { async opPayPageInfo(pobj, orderResult, req) {
if (!pobj.actionBody.itemCode) { if (!pobj.actionBody.itemCode) {
return system.getResult(null, "itemCode param is not empty"); return system.getResult(null, "itemCode param is not empty");
......
...@@ -2,12 +2,15 @@ var childproc = require('child_process'); ...@@ -2,12 +2,15 @@ var childproc = require('child_process');
const util = require('util'); const util = require('util');
const exec = util.promisify(require('child_process').exec); const exec = util.promisify(require('child_process').exec);
const uuidv4 = require('uuid/v4'); const uuidv4 = require('uuid/v4');
// const system = require("../system");
class ExecClient { class ExecClient {
constructor() { constructor() {
this.cmdPostPattern = "curl -k -H 'Content-type: application/json' -d '{data}' {url}"; this.cmdPostPattern = "curl -k -H 'Content-type: application/json' -d '{data}' {url}";
this.cmdGetPattern = "curl -G -X GET '{url}'"; this.cmdGetPattern = "curl -G -X GET '{url}'";
this.cmdPostTK = "curl -k -H 'Content-type: application/json' -H 'token:{tk}' -H 'request-id:{requestId}' -d '{data}' {url}"; this.cmdPostTK = "curl -k -H 'Content-type: application/json' -H 'token:{tk}' -H 'request-id:{requestId}' -d '{data}' {url}";
this.cmdJDPostTK = "curl -k -H 'Content-type:text/plain;charset=UTF-8' -H 'metadata:true' -H 'Authorization:{tk}' -d '{data}' {url}"; this.cmdJDPostTK = "curl -k -H 'Content-type:text/plain;charset=UTF-8' -H 'metadata:true' -H 'Authorization:{tk}' -d '{data}' {url}";
// this.logClient = system.getObject("util.logClient");
} }
getUUID() { getUUID() {
var uuid = uuidv4(); var uuid = uuidv4();
...@@ -19,6 +22,8 @@ class ExecClient { ...@@ -19,6 +22,8 @@ class ExecClient {
var result = await this.exec(cmd, { var result = await this.exec(cmd, {
maxBuffer: 1024 * 1024 * 15 maxBuffer: 1024 * 1024 * 15
}); });
console.log("getUserInfo----->execPostJDTK----FetchPostJDTK----cmd--->result:" + result.stdout);
// this.logClient.info("jd", "getUserInfo----->execPostJDTK----FetchPostJDTK----cmd--->result:" + result.stdout);
var rtn = result.stdout; var rtn = result.stdout;
if (rtn) { if (rtn) {
return JSON.parse(rtn); return JSON.parse(rtn);
...@@ -31,7 +36,8 @@ class ExecClient { ...@@ -31,7 +36,8 @@ class ExecClient {
var requestId = this.getUUID(); var requestId = this.getUUID();
var cmd = this.cmdJDPostTK.replace(/\{data\}/g, var cmd = this.cmdJDPostTK.replace(/\{data\}/g,
data).replace(/\{url\}/g, url).replace(/\{tk\}/g, token); data).replace(/\{url\}/g, url).replace(/\{tk\}/g, token);
console.log(cmd); console.log("getUserInfo----->execPostJDTK----FetchPostJDTK----cmd--->" + cmd);
// this.logClient.info("jd", "getUserInfo----->execPostJDTK----FetchPostJDTK----cmd--->" + cmd);
return cmd; return cmd;
} }
async execPostTK(subData, url, token) { async execPostTK(subData, url, token) {
......
// var log4js = require('log4js'); var log4js = require('log4js');
var settings=require("../../config/settings"); var settings = require("../../config/settings");
class LogClient{ class LogClient {
constructor(){ constructor() {
// log4js.configure(settings.basepath+"/app/config/log4js.json"); log4js.configure(settings.basepath + "/app/config/log4js.json");
// this.logerApp=log4js.getLogger("app"); this.logerInfo = log4js.getLogger("info_file");
// this.logerHttp=log4js.getLogger("http"); // this.logerError = log4js.getLogger("error_file");
} // this.logerHttp=log4js.getLogger("http");
}
async info(channelCode, msg) {
this.logerInfo.info("_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________");
this.logerInfo.info("渠道:" + channelCode + "...info..." + msg);
}
async error(channelCode, msg) {
this.logerInfo.info("_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________");
this.logerInfo.error("渠道:" + channelCode + "...error..." + msg);
}
} }
module.exports=LogClient; module.exports = LogClient;
...@@ -4,6 +4,7 @@ var favicon = require('serve-favicon'); ...@@ -4,6 +4,7 @@ var favicon = require('serve-favicon');
var methodOverride = require('method-override'); var methodOverride = require('method-override');
var cookierParser = require('cookie-parser'); var cookierParser = require('cookie-parser');
var session = require('express-session'); var session = require('express-session');
var log4js = require('log4js');
var RedisStore = require('connect-redis')(session); var RedisStore = require('connect-redis')(session);
var bodyParser = require('body-parser'); var bodyParser = require('body-parser');
var multer = require('multer'); var multer = require('multer');
...@@ -11,76 +12,74 @@ var errorHandler = require('errorhandler'); ...@@ -11,76 +12,74 @@ var errorHandler = require('errorhandler');
var settings = require('./settings'); var settings = require('./settings');
var System = require('../base/system'); var System = require('../base/system');
var routes = require('./routes'); var routes = require('./routes');
const logCtl=System.getObject("web.common.oplogCtl"); const logCtl = System.getObject("web.common.oplogCtl");
const clientRedis= System.getObject("util.redisClient").client; const clientRedis = System.getObject("util.redisClient").client;
//const tm=System.getObject("db.taskManager"); //const tm=System.getObject("db.taskManager");
module.exports = function (app) { module.exports = function (app) {
app.set('port', settings.port); app.set('port', settings.port);
app.set('views', settings.basepath + '/app/front/entry'); app.set('views', settings.basepath + '/app/front/entry');
app.set('view engine', 'ejs'); app.set('view engine', 'ejs');
app.use(methodOverride()); app.use(methodOverride());
app.use(cookierParser()); app.use(cookierParser());
app.use(bodyParser.json({limit:'50mb'})); app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({limit:'50mb',extended:true})); app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
routes(app);//初始化路由 routes(app);//初始化路由
app.use(express.static(path.join(settings.basepath, '/app/front/entry/public'))); app.use(express.static(path.join(settings.basepath, '/app/front/entry/public')));
app.all('*',function (req, res, next) { app.all('*', function (req, res, next) {
req.objs=System; req.objs = System;
res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild'); res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS'); res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
// res.header('Access-Control-Allow-Credentials', 'true'); // res.header('Access-Control-Allow-Credentials', 'true');
if (req.method == 'OPTIONS') { if (req.method == 'OPTIONS') {
res.send(200); //让options请求快速返回/ res.send(200); //让options请求快速返回/
} }
else { else {
next(); next();
} }
 }); });
if(settings.env=="dev"){ if (settings.env == "dev") {
app.use(session( app.use(session(
{ {
name:'userPinInfo', name: 'userPinInfo',
cookie: {maxAge: 3600000}, cookie: { maxAge: 3600000 },
rolling:true, rolling: true,
resave: false, resave: false,
saveUninitialized: false, saveUninitialized: false,
secret: 'uwotm8', secret: 'uwotm8',
store: new RedisStore({ store: new RedisStore({
client:clientRedis, client: clientRedis,
}), }),
})); }));
}else{ } else {
app.use(session( app.use(session(
{ {
name:'userPinInfo', name: 'userPinInfo',
cookie: {maxAge: 3600000}, cookie: { maxAge: 3600000 },
rolling:true, rolling: true,
resave: false, resave: false,
saveUninitialized: false, saveUninitialized: false,
secret: 'uwotm8', secret: 'uwotm8',
store: new RedisStore({ store: new RedisStore({
client:clientRedis, client: clientRedis,
}), }),
})); }));
}
// development only
if ('development' == app.get('env')) {
app.use(errorHandler());
} else {
app.use(function (err, req, res) {
logCtl.error({
optitle: "environment 调用异常error:",
op: classPath + "/" + methodName,
content: e.toString(),
clientIp: System.get_client_ip(req),
agent: req.headers["user-agent"],
});
//logerApp.error("prod error handler",err);
res.send("link admin");
});
} }
// development only
if ('development' == app.get('env')) {
app.use(errorHandler());
}else{
app.use(function(err,req,res){
console.log("prod error handler................................>>>>>>>>>>>>>>>>>");
console.log(err);
logCtl.error({
optitle:"environment 调用异常error:",
op:classPath+"/"+methodName,
content:e.toString(),
clientIp:System.get_client_ip(req),
agent:req.headers["user-agent"],
});
//logerApp.error("prod error handler",err);
res.send("link admin");
});
}
}; };
{
"appenders": {
"access": {
"type": "dateFile",
"filename": "logs/access.log",
"pattern": "-yyyy-MM-dd",
"category": "http"
},
"info_file": {
"type": "file",
"filename": "logs/infoFile/info",
"encoding": "utf-8",
"maxLogSize": 10000000000,
"backups": 5,
"pattern": "-yyyy-MM-dd-hh.log",
"category": "info_file"
},
"error_file": {
"type": "file",
"filename": "logs/errorFile/error",
"encoding": "utf-8",
"maxLogSize": 10000000000,
"backups": 5,
"pattern": "-yyyy-MM-dd-hh.log",
"category": "error_file"
}
},
"categories": {
"default": {
"appenders": [
"info_file"
],
"level": "DEBUG"
},
"http": {
"appenders": [
"access"
],
"level": "DEBUG"
}
}
}
\ No newline at end of file
var url = require("url"); var url = require("url");
var System = require("../../base/system"); var system = require("../../base/system");
var metaCtl = System.getObject("web.common.metaCtl"); var metaCtl = system.getObject("web.common.metaCtl");
var tmqueryCtl = System.getObject("web.trademark.tmqueryCtl"); var tmqueryCtl = system.getObject("web.trademark.tmqueryCtl");
var logClient = system.getObject("util.logClient");
module.exports = function (app) { module.exports = function (app) {
app.get("/jdtm/getUser", async function (req, res) { app.get("/jdtm/getUser", async function (req, res) {
console.log(req.query, "/jdtm/getUser...................."); try {
var params = req.query; var params = req.query;
if (!params.state) { if (!params.state) {
res.redirect("/#/jd/jdtrademark"); res.redirect("/#/jd/jdtrademark");
return; return;
} }
var getUserparams = { var getUserparams = {
actionProcess: "jd", actionProcess: "jd",
authUrl: "https://oauth2.jdcloud.com/userinfo", authUrl: "https://oauth2.jdcloud.com/userinfo",
authToken: params.token_type + " " + params.access_token, authToken: params.token_type + " " + params.access_token,
tmpchannelUserId: params.tmpchannelUserId tmpchannelUserId: params.tmpchannelUserId
}; };
var userItemResult = await tmqueryCtl.getUserInfo(getUserparams, req.query, req); var userItemResult = await tmqueryCtl.getUserInfo(getUserparams, req.query, req);
if (userItemResult.status != 0) {
res.redirect("/#/jd/jdtrademark");
return;
}
if (!userItemResult.data.encryptChannelUserId || userItemResult.data.encryptChannelUserId == "undefined") {
userItemResult = await tmqueryCtl.getUserInfo(getUserparams, req.query, req);
if (userItemResult.status != 0) { if (userItemResult.status != 0) {
res.redirect("/#/jd/jdtrademark"); res.redirect("/#/jd/jdtrademark");
return; return;
} }
if (!userItemResult.data.encryptChannelUserId || userItemResult.data.encryptChannelUserId == "undefined") {
userItemResult = await tmqueryCtl.getUserInfo(getUserparams, req.query, req);
if (userItemResult.status != 0) {
res.redirect("/#/jd/jdtrademark");
return;
}
}
var skipUrl = "/#/jd/" + params.state + "?channelUserId=" + encodeURIComponent(userItemResult.data.encryptChannelUserId);
res.redirect(skipUrl);
} catch (error) {
logClient.error("jd", "req---->/jdtm/getUser---->error:" + error.stack);
} }
var skipUrl = "/#/jd/" + params.state + "?channelUserId=" + encodeURIComponent(userItemResult.data.encryptChannelUserId);
res.redirect(skipUrl);
}); });
app.get("/jdtm/getUserTest", async function (req, res) { app.get("/jdtm/getUserTest", async function (req, res) {
console.log(req.query, "/jdtm/getUser...................."); console.log(req.query, "/jdtm/getUser....................");
...@@ -114,7 +118,7 @@ module.exports = function (app) { ...@@ -114,7 +118,7 @@ module.exports = function (app) {
params.push(req.query); params.push(req.query);
params.push(req); params.push(req);
var p = null; var p = null;
var invokeObj = System.getObject("web." + classPath); var invokeObj = system.getObject("web." + classPath);
if (invokeObj["doexec"]) { if (invokeObj["doexec"]) {
p = invokeObj["doexec"].apply(invokeObj, params); p = invokeObj["doexec"].apply(invokeObj, params);
} }
...@@ -133,7 +137,7 @@ module.exports = function (app) { ...@@ -133,7 +137,7 @@ module.exports = function (app) {
var gname = req.params["gname"]; var gname = req.params["gname"];
var params = []; var params = [];
classPath = gname + "." + classPath; classPath = gname + "." + classPath;
var tClientIp = System.get_client_ip(req); var tClientIp = system.get_client_ip(req);
req.body.clientIp = tClientIp; req.body.clientIp = tClientIp;
req.body.agent = req.headers["user-agent"]; req.body.agent = req.headers["user-agent"];
req.body.classname = classPath; req.body.classname = classPath;
...@@ -143,7 +147,7 @@ module.exports = function (app) { ...@@ -143,7 +147,7 @@ module.exports = function (app) {
params.push(req.query); params.push(req.query);
params.push(req); params.push(req);
var p = null; var p = null;
var invokeObj = System.getObject("web." + classPath); var invokeObj = system.getObject("web." + classPath);
if (invokeObj["doexec"]) { if (invokeObj["doexec"]) {
p = invokeObj["doexec"].apply(invokeObj, params); p = invokeObj["doexec"].apply(invokeObj, params);
} }
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
"gulp-sass": "^4.0.2", "gulp-sass": "^4.0.2",
"http-proxy-middleware": "^0.20.0", "http-proxy-middleware": "^0.20.0",
"jdcloud-sdk-signer": "^2.0.1", "jdcloud-sdk-signer": "^2.0.1",
"log4js": "^6.1.0",
"method-override": "^2.3.10", "method-override": "^2.3.10",
"morgan": "^1.9.0", "morgan": "^1.9.0",
"multer": "^1.3.0", "multer": "^1.3.0",
......
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