Commit b1de9727 authored by 高诸锋's avatar 高诸锋

fix

parent 3837d238
Pipeline #5722 passed with stage
in 16 seconds
...@@ -24,7 +24,8 @@ class OrderController extends Controller { ...@@ -24,7 +24,8 @@ class OrderController extends Controller {
type: 'object', required: true, type: 'object', required: true,
rule: { rule: {
token: { type: 'string', required: true }, token: { type: 'string', required: true },
orderId: { type: 'string', required: true }, orderId: { type: 'string', required: false },
orderSn: { type: 'string', required: false }, // 老H5
appKey: { type: 'string', required: true }, appKey: { type: 'string', required: true },
timestamp: { type: 'string', required: true }, timestamp: { type: 'string', required: true },
}, },
...@@ -46,11 +47,9 @@ class OrderController extends Controller { ...@@ -46,11 +47,9 @@ class OrderController extends Controller {
async create() { async create() {
const { ctx, service } = this; const { ctx, service } = this;
ctx.validate(this.createRule); ctx.validate(this.createRule);
// const { appKey } = ctx.request.body.params;
const { appKey, userId, notifyUrl, backUrl } = ctx.request.body; const { appKey, userId, notifyUrl, backUrl } = ctx.request.body;
let { orderId } = ctx.request.body; let { orderId } = ctx.request.body;
// const orderId = await service.signature.createOrderId(ctx.request.body); // const orderId = await service.signature.createOrderId(ctx.request.body);
orderId = orderId || ctx.helper.getUuid();
const toDbObj = { const toDbObj = {
orderId, orderId,
taskId: '', taskId: '',
...@@ -60,35 +59,56 @@ class OrderController extends Controller { ...@@ -60,35 +59,56 @@ class OrderController extends Controller {
status: 'init', status: 'init',
notifyUrl: notifyUrl || (ctx.app.notifyMap.get(appKey) && ctx.app.notifyMap.get(appKey).notifyUrl) || '', notifyUrl: notifyUrl || (ctx.app.notifyMap.get(appKey) && ctx.app.notifyMap.get(appKey).notifyUrl) || '',
backUrl, backUrl,
type: 'h5',
}; };
if (orderId) { // 老的H5 if (orderId) { // 老的H5
await service.order.update(toDbObj); await service.order.update(toDbObj);
} else { } else {
orderId = ctx.helper.getUuid();
toDbObj.orderId = orderId;
await service.order.create(toDbObj); await service.order.create(toDbObj);
} }
ctx.success({ orderId }); ctx.success({ orderId });
} }
// 只根据订单号获取数据 // 合作方获取订单数据
// async show() { async partnerShow() {
// const { ctx, service } = this; const { ctx, service } = this;
// ctx.validate(this.showRule); try {
// const { orderId, appKey } = ctx.params; ctx.validate(this.showRule);
// await service.signature.signatureCheck(ctx.request.body); let { appKey, orderId, orderSn } = ctx.request.body.params;
// const data = await service.order.getOneByOrderId(orderId); orderId = orderId || orderSn;
// if (data) { const appKeyInfo = await service.partner.fetchInfo(appKey);
// if (data.status === 'success') { if (!(appKeyInfo && appKeyInfo.valid === true && appKeyInfo.enableHfData === true)) {
// const result = await service.storage.read(orderId, appKey); return ctx.fail('未开通此服务');
// ctx.success(result); }
// return; await service.signature.signatureCheck(ctx.request.body);
// } const data = await service.order.getOneByOrderId(orderId);
// ctx.success({ if (data) {
// status: data.status, if (data.status === 'success') {
// }); const result = await service.storage.read(orderId, appKey);
// return; ctx.body = {
// } code: 0,
// ctx.fail('无此订单号'); data: result,
// } };
return;
}
}
ctx.body = {
code: -1,
msg: '无此订单号',
};
} catch (err) {
ctx.logger.error('partnerShow', JSON.stringify(err));
ctx.status = 200;
if (err.code === 'invalid_param') {
ctx.body = { code: -1, msg: err.message || '' };
return;
}
ctx.body = { code: err.code || -1, msg: err.message || '' };
return;
}
}
async fetchOrderId() { async fetchOrderId() {
const { ctx, service } = this; const { ctx, service } = this;
...@@ -103,6 +123,7 @@ class OrderController extends Controller { ...@@ -103,6 +123,7 @@ class OrderController extends Controller {
notifyUrl: ctx.app.notifyMap.get(appKey) && ctx.app.notifyMap.get(appKey).notifyUrl || '', notifyUrl: ctx.app.notifyMap.get(appKey) && ctx.app.notifyMap.get(appKey).notifyUrl || '',
appKey, appKey,
status: 'init', status: 'init',
type: 'h5',
}); });
ctx.body = { ctx.body = {
code: 0, code: 0,
......
...@@ -47,36 +47,6 @@ class PartnerController extends Controller { ...@@ -47,36 +47,6 @@ class PartnerController extends Controller {
} }
} }
async partnerShow() {
const { ctx, service } = this;
ctx.status = 200;
try {
ctx.validate(this.showRule);
const { orderId, appKey } = ctx.request.body.params;
await service.signature.signatureCheck(ctx.request.body);
const data = await service.order.getOneByOrderId(orderId);
if (data && data.status === 'success') {
const result = await service.storage.read(orderId, appKey);
ctx.body = {
code: 0,
data: result,
};
return;
}
ctx.body = {
code: -1,
message: '无此订单号',
};
} catch (err) {
if (err.code === 'invalid_param') {
ctx.body = { code: -1, message: err.message || '' };
return;
}
ctx.body = { code: err.code || -1, message: err.message || '' };
return;
}
}
async fetchAgreements() { async fetchAgreements() {
const { ctx, service } = this; const { ctx, service } = this;
const { id } = ctx.params; const { id } = ctx.params;
......
...@@ -8,13 +8,15 @@ class ScriptController extends Controller { ...@@ -8,13 +8,15 @@ class ScriptController extends Controller {
const { appKey } = ctx.query; const { appKey } = ctx.query;
let limitScriptsList = false; let limitScriptsList = false;
if (appKey) { if (appKey) {
const ret = await service.partner.fetchScripts(appKey); const ret = await service.partner.fetchInfo(appKey);
limitScriptsList = ret.scripts; if (ret) {
limitScriptsList = ret.hfExcludeScripts;
}
} }
let data = await service.scripts.fetchScripts(); let data = await service.scripts.fetchScripts();
if (limitScriptsList) { if (limitScriptsList) {
data = data.filter(item => { data = data.filter(item => {
return limitScriptsList.includes(item.id); return !(limitScriptsList.includes(item.id));
}); });
} }
ctx.success(data); ctx.success(data);
......
...@@ -118,15 +118,15 @@ class TaskController extends Controller { ...@@ -118,15 +118,15 @@ class TaskController extends Controller {
if (!order) { if (!order) {
throw new Error(`【taskId】:${taskId} 任务已经结束.`); throw new Error(`【taskId】:${taskId} 任务已经结束.`);
} }
const { orderId, appkey } = order; const { orderId, appKey, notifyUrl, userId } = order;
insertData.orderId = orderId; insertData.orderId = orderId;
insertData.cityName = insertData.location; insertData.cityName = insertData.location;
// TODO insertData.cityId -> cityName // TODO insertData.cityId -> cityName
insertData.taskId = taskId; insertData.taskId = taskId;
insertData.appKey = appkey; insertData.appKey = appKey;
delete insertData.code; delete insertData.code;
await service.storage.write(insertData); await service.storage.write(insertData);
await service.partner.notify({ taskId, cb: order.notifyUrl, orderId: order.orderId, userId: order.userId, appKey: order.appKey }); await service.partner.notify({ taskId, notifyUrl, orderId, userId, appKey });
} catch (err) { } catch (err) {
ctx.logger.err(`【controller/task/handleCallback err】:${err}${JSON.stringify(result)}`); ctx.logger.err(`【controller/task/handleCallback err】:${err}${JSON.stringify(result)}`);
taskNote = { taskNote = {
......
...@@ -33,7 +33,7 @@ module.exports = app => { ...@@ -33,7 +33,7 @@ module.exports = app => {
sbRouter.get('/agreements/:id', controller.partner.fetchAgreements); // 查询协议 sbRouter.get('/agreements/:id', controller.partner.fetchAgreements); // 查询协议
sbRouter.post('/getToken', controller.partner.getToken); // 合作方获取token sbRouter.post('/getToken', controller.partner.getToken); // 合作方获取token
sbRouter.post('/getOrderSn', controller.order.fetchOrderId); // 合作方获取订单号(老版H5) sbRouter.post('/getOrderSn', controller.order.fetchOrderId); // 合作方获取订单号(老版H5)
sbRouter.post('/getData', controller.partner.partnerShow); // 合作方获取订单数据 sbRouter.post('/getData', controller.order.partnerShow); // 合作方获取订单数据
sbRouter.post('/getCityConfig', controller.task.fetchCityConfig); // 合作方获取城市配置 sbRouter.post('/getCityConfig', controller.task.fetchCityConfig); // 合作方获取城市配置
sbRouter.get('/orderData/:appKey/:orderId', controller.order.orderShow); // 获取展示页面数据 sbRouter.get('/orderData/:appKey/:orderId', controller.order.orderShow); // 获取展示页面数据
}; };
...@@ -7,8 +7,8 @@ class CacheService extends Service { ...@@ -7,8 +7,8 @@ class CacheService extends Service {
constructor(ctx) { constructor(ctx) {
super(ctx); super(ctx);
const { config } = this; const { config } = this;
const { taskPrefix } = config.lockKeys; const { redisTaskPrefix } = config.taskAPI;
this.taskPrefix = taskPrefix; this.taskPrefix = redisTaskPrefix;
} }
/** /**
......
...@@ -58,7 +58,7 @@ class PartnerService extends Service { ...@@ -58,7 +58,7 @@ class PartnerService extends Service {
}); });
ctx.logger.info(`【Partner】 fetchTheme ${url}`, ret.data); ctx.logger.info(`【Partner】 fetchTheme ${url}`, ret.data);
if (ret.status === 200 && ret.data && ret.data.id === appKey) { if (ret.status === 200 && ret.data && ret.data.id === appKey) {
await this.app.cache.set(redisScriptsPrefix + appKey, JSON.stringify(ret.data), 7200); await this.app.cache.set(redisScriptsPrefix + appKey, JSON.stringify(ret.data), 300);
} }
return ret.data; return ret.data;
} }
...@@ -66,7 +66,7 @@ class PartnerService extends Service { ...@@ -66,7 +66,7 @@ class PartnerService extends Service {
// 查询结束后回调通知合作方 // 查询结束后回调通知合作方
// 对于状态已经是成功的订单号不会在做通知 // 对于状态已经是成功的订单号不会在做通知
// orderId/userId/status // orderId/userId/status
async notify({ taskId, cb, orderId, userId, appKey }) { async notify({ taskId, cb, orderId, userId, appKey, status = 'success' }) {
const { ctx, service } = this; const { ctx, service } = this;
if (!cb) { if (!cb) {
if (ctx.app.notifyMap.has(appKey)) { if (ctx.app.notifyMap.has(appKey)) {
...@@ -86,7 +86,7 @@ class PartnerService extends Service { ...@@ -86,7 +86,7 @@ class PartnerService extends Service {
try { try {
await ctx.curl(cb, { await ctx.curl(cb, {
method: 'POST', method: 'POST',
data: { orderId, status: 'success', userId }, data: { orderSn: orderId, status, userId },
dataType: 'json', dataType: 'json',
contentType: 'json', contentType: 'json',
timeout: ['30s', '30s'], timeout: ['30s', '30s'],
...@@ -129,6 +129,36 @@ class PartnerService extends Service { ...@@ -129,6 +129,36 @@ class PartnerService extends Service {
} }
return ret.data; return ret.data;
} }
// 获取合作方appKey开通的服务
async fetchInfo(appKey) {
const { ctx, partnerAPI: { fetchInfo, host, redisInfoPrefix } } = this;
if (appKey) {
const data = await this.app.redis.get(redisInfoPrefix + appKey);
if (data) {
try {
return JSON.parse(data);
} catch (err) {
ctx.logger.error('【Scripts】fetchInfo', redisInfoPrefix + appKey, 'result:', data, err);
await this.app.redis.del(redisInfoPrefix + appKey);
}
}
}
const ret = await ctx.curl(`${host + fetchInfo}`, {
charset: 'utf-8',
timeout: ['30s', '30s'],
dataType: 'json',
method: 'GET',
data: {
appKey,
},
});
ctx.logger.info(`【Partner】 fetchTheme ${host + fetchInfo}?appKey=${appKey}`, ret.data);
if (ret.status === 200 && ret.data && ret.data.length > 0 && ret.data[0].appKey === appKey) {
await this.app.redis.set(redisInfoPrefix + appKey, JSON.stringify(ret.data[0]), 'EX', 300);
}
return ret.data[0];
}
} }
module.exports = PartnerService; module.exports = PartnerService;
...@@ -41,14 +41,27 @@ class ScriptsService extends Service { ...@@ -41,14 +41,27 @@ class ScriptsService extends Service {
return result.data; return result.data;
} }
async fetchOneScripts(scriptId) { async fetchOneScripts(scriptId) {
const { baseURL, fetchOneScriptUrl, ctx } = this; const { baseURL, fetchOneScriptUrl, redisScriptListKey, ctx } = this;
const data = await this.app.redis.get(redisScriptListKey + scriptId);
if (data) {
try {
return JSON.parse(data);
} catch (err) {
ctx.logger.error('【Scripts】fetchOneScriptsFromRedis', 'result:', data, err);
await this.app.redis.del(redisScriptListKey + scriptId);
}
}
const result = await ctx.curl(baseURL + fetchOneScriptUrl + '/' + scriptId, { const result = await ctx.curl(baseURL + fetchOneScriptUrl + '/' + scriptId, {
charset: 'utf-8', charset: 'utf-8',
timeout: ['30s', '30s'], timeout: ['30s', '30s'],
dataType: 'json', dataType: 'json',
contentType: 'json', contentType: 'json',
}); });
if (result.data && (String(result.data.id) === scriptId)) {
await this.app.redis.set(redisScriptListKey + scriptId, JSON.stringify(result.data), 'EX', 60);
}
return result.data; return result.data;
} }
...@@ -74,7 +87,7 @@ class ScriptsService extends Service { ...@@ -74,7 +87,7 @@ class ScriptsService extends Service {
}); });
ctx.logger.info(`【Scripts】fetchParams,${baseURL + fetchParamsInfoUrl}`, 'result:', result.data); ctx.logger.info(`【Scripts】fetchParams,${baseURL + fetchParamsInfoUrl}`, 'result:', result.data);
if (result.data && result.data.length > 0) { if (result.data && result.data.length > 0) {
await this.app.redis.set(redisParamsKey, JSON.stringify(result.data), 'EX', 3000); await this.app.redis.set(redisParamsKey, JSON.stringify(result.data), 'EX', 300);
} }
return result.data; return result.data;
} }
......
...@@ -8,6 +8,7 @@ class WashDataService extends Service { ...@@ -8,6 +8,7 @@ class WashDataService extends Service {
const { config } = this; const { config } = this;
this.washUrl = config.washAPI.host + config.washAPI.washUrl; this.washUrl = config.washAPI.host + config.washAPI.washUrl;
} }
async wash(data) { async wash(data) {
const { app, washUrl, ctx } = this; const { app, washUrl, ctx } = this;
const rawdata = this._switchData(data); const rawdata = this._switchData(data);
......
...@@ -5,6 +5,10 @@ module.exports = appInfo => { ...@@ -5,6 +5,10 @@ module.exports = appInfo => {
// use for cookie sign key, should change to your own and keep security // use for cookie sign key, should change to your own and keep security
config.keys = appInfo.name + '_1542452126322_5140'; config.keys = appInfo.name + '_1542452126322_5140';
config.logger = {
dir: '/jianbing/logs/shebao_h5_server',
};
config.projectRootPath = '/shebao_server'; config.projectRootPath = '/shebao_server';
// add your config here // add your config here
config.middleware = ['requestLog', 'errorHandler', 'verifyAppKey']; config.middleware = ['requestLog', 'errorHandler', 'verifyAppKey'];
......
...@@ -21,6 +21,8 @@ module.exports = () => { ...@@ -21,6 +21,8 @@ module.exports = () => {
redisScriptsPrefix: 'DATA_SERVER_SHEBAO.SCRIPTS', redisScriptsPrefix: 'DATA_SERVER_SHEBAO.SCRIPTS',
fetchAgreements: '', fetchAgreements: '',
redisAgreementsPrefix: 'DATA_SERVER_SHEBAO.AGREEMENTS', redisAgreementsPrefix: 'DATA_SERVER_SHEBAO.AGREEMENTS',
fetchInfo: '',
redisInfoPrefix: 'DATA_SERVER_SHEBAO.PARTNERINFO',
}; };
config.scriptsAPI = { config.scriptsAPI = {
...@@ -33,8 +35,9 @@ module.exports = () => { ...@@ -33,8 +35,9 @@ module.exports = () => {
fetchNoticeUrl: '/chaos/hf/notice', fetchNoticeUrl: '/chaos/hf/notice',
fetchHubSeriptsUrl: '/chaos/hf/hubs', fetchHubSeriptsUrl: '/chaos/hf/hubs',
fetchScriptByCityNameUrl: '/chaos/hf/city_scripts', fetchScriptByCityNameUrl: '/chaos/hf/city_scripts',
redisScriptsKey: 'URANUS.HF.SCRIPTS', redisScriptsKey: 'DATA_SERVER_SHEBAO.SCRIPTS',
redisParamsKey: 'URANUS.HF.PARAMS', redisParamsKey: 'DATA_SERVER_SHEBAO.PARAMS',
redisScriptListKey: 'DATA_SERVER_SHEBAO.SCRIPTLIST',
}; };
config.storageAPI = { config.storageAPI = {
......
...@@ -5,24 +5,25 @@ module.exports = () => { ...@@ -5,24 +5,25 @@ module.exports = () => {
config.debug = false; config.debug = false;
config.taskAPI = { config.taskAPI = {
host: process.env.TASKAPI_HOST || 'http://tm.51gjj.com:4831', host: process.env.TASKAPI_HOST,
fetchHubsUrl: '', fetchHubsUrl: '',
createTaskUrl: '/shebao/createSbTask', createTaskUrl: '/shebao/createSbTask',
fetchCodeUrl: '/shebao/getSbCode', fetchCodeUrl: '/shebao/getSbCode',
submitTaskUrl: '/shebao/loginSbWeb', submitTaskUrl: '/shebao/loginSbWeb',
fetchTaskUrl: '/shebao/getSbData', // 获取该task状态 fetchTaskUrl: '/shebao/getSbData', // 获取该task状态
redisTaskPrefix: 'DATA_SERVER_SHEBAO.TASK',
}; };
config.partnerAPI = { config.partnerAPI = {
host: process.env.PARTNERAPI_HOST || 'https://dev-nginx.jianbing.com/zeus-api/v1', host: process.env.PARTNERAPI_HOST,
fetchTheme: '/chaos/partners/theme', fetchTheme: '/chaos/partners/theme',
fetchScripts: '/chaos/partners/scripts', fetchScripts: '/chaos/partners/scripts',
redisThemePrefix: 'URANUS.HF.PARNTERS.THEME', redisThemePrefix: 'DATA_SERVER_SHEBAO.PARNTERS.THEME',
redisScriptsPrefix: 'URANUS.HF.PARNTERS.SCRIPTS', redisScriptsPrefix: 'DATA_SERVER_SHEBAO.PARNTERS.SCRIPTS',
}; };
config.scriptsAPI = { config.scriptsAPI = {
host: process.env.SCRIPTSAPI_HOST || 'https://dev-nginx.jianbing.com/zeus-api/v1', host: process.env.SCRIPTSAPI_HOST,
fetchScriptsUrl: '/chaos/hf/two_dimension_array/queries', fetchScriptsUrl: '/chaos/hf/two_dimension_array/queries',
fetchOneScriptUrl: '/chaos/hf/two_dimension_array/info', fetchOneScriptUrl: '/chaos/hf/two_dimension_array/info',
fetchParamsInfoUrl: '/chaos/hf/login_param_map', fetchParamsInfoUrl: '/chaos/hf/login_param_map',
...@@ -31,12 +32,12 @@ module.exports = () => { ...@@ -31,12 +32,12 @@ module.exports = () => {
fetchNoticeUrl: '/chaos/hf/notice', fetchNoticeUrl: '/chaos/hf/notice',
fetchHubSeriptsUrl: '/chaos/hf/hubs', fetchHubSeriptsUrl: '/chaos/hf/hubs',
fetchScriptByCityNameUrl: '/chaos/hf/city_scripts', fetchScriptByCityNameUrl: '/chaos/hf/city_scripts',
redisScriptsKey: 'URANUS.HF.SCRIPTS', redisScriptsKey: 'DATA_SERVER_SHEBAO.SCRIPTS',
redisParamsKey: 'URANUS.HF.PARAMS', redisParamsKey: 'DATA_SERVER_SHEBAO.PARAMS',
}; };
config.storageAPI = { config.storageAPI = {
host: process.env.STORAGEAPI_HOST || 'http://tv.51gjj.com:11252', host: process.env.STORAGEAPI_HOST,
writeUrl: '/data', writeUrl: '/data',
readUrl: '/shebao', readUrl: '/shebao',
writeType: 'shebao', writeType: 'shebao',
...@@ -44,12 +45,12 @@ module.exports = () => { ...@@ -44,12 +45,12 @@ module.exports = () => {
}; };
config.washAPI = { config.washAPI = {
host: process.env.WASHAPI_HOST || 'http://tt.51gjj.com:11101', host: process.env.WASHAPI_HOST,
washUrl: '/si/analyzeSI', washUrl: '/si/analyzeSI',
}; };
config.signatureAPI = { config.signatureAPI = {
host: process.env.SIGNATUREAPI_HOST || 'http://tj3.51gjj.com:5118', host: process.env.SIGNATUREAPI_HOST,
fetchTokenUrl: '/Access/GetToken', fetchTokenUrl: '/Access/GetToken',
fetchOrderIdUrl: '/Order/GetOrderSn', fetchOrderIdUrl: '/Order/GetOrderSn',
signatureUrl: '/Access/SignValidityCheck', signatureUrl: '/Access/SignValidityCheck',
...@@ -57,12 +58,11 @@ module.exports = () => { ...@@ -57,12 +58,11 @@ module.exports = () => {
signatureType: 'shebao', signatureType: 'shebao',
}; };
config.lockKeys = { config.redisKeys = {
fecthHub: 'NEWSB.HF.HUBS.LOCK', fecthHub: 'NEWSB.HF.HUBS.LOCK',
fecteToken: 'NEWSB.HF.TOKEN.LOCK', fecteToken: 'NEWSB.HF.TOKEN.LOCK',
token: 'NEWSB.HF.TOKEN', token: 'NEWSB.HF.TOKEN',
fecthParnters: 'NEWSB.PARNTERS.LOCK', fecthParnters: 'NEWSB.PARNTERS.LOCK',
taskPrefix: 'NEWSB.TASK',
}; };
config.sequelize = { config.sequelize = {
...@@ -72,30 +72,30 @@ module.exports = () => { ...@@ -72,30 +72,30 @@ module.exports = () => {
delegate: 'model', delegate: 'model',
baseDir: 'model', baseDir: 'model',
dialect: 'mysql', dialect: 'mysql',
host: process.env.MYSQL_PACHONG_HOST || 'rm-bp1272001633qc0x9.mysql.rds.aliyuncs.com', host: process.env.MYSQL_PACHONG_HOST,
database: process.env.MYSQL_DATA_SERVER_DB_NAME || 'data_service_dev', database: process.env.MYSQL_DATA_SERVER_DB_NAME,
username: process.env.MYSQL_USER || 'hexin', username: process.env.MYSQL_USER,
password: process.env.MYSQL_PWD || 'gYUHszn9#q', password: process.env.MYSQL_PWD,
port: process.env.MYSQL_PORT || 3306, port: process.env.MYSQL_PORT,
}, { }, {
// 东八时区 // 东八时区
timezone: '+08:00', timezone: '+08:00',
delegate: 'cusPro', delegate: 'cusPro',
baseDir: 'model', baseDir: 'model',
dialect: 'mysql', dialect: 'mysql',
host: process.env.MYSQL_PACHONG_HOST || 'rm-bp1272001633qc0x9.mysql.rds.aliyuncs.com', host: process.env.MYSQL_PACHONG_HOST,
database: process.env.MYSQL_JAVA_DB_NAME || 'java_open_platform', database: process.env.MYSQL_JAVA_DB_NAME,
username: process.env.MYSQL_USER || 'hexin', username: process.env.MYSQL_USER,
password: process.env.MYSQL_PWD || 'gYUHszn9#q', password: process.env.MYSQL_PWD,
port: process.env.MYSQL_PORT || 3306, port: process.env.MYSQL_PORT,
}], }],
}; };
config.redis = { config.redis = {
client: { client: {
port: 6379, port: 6379,
host: process.env.REDIS_HOST || '116.62.55.137', host: process.env.REDIS_HOST,
password: process.env.REDIS_PWD || 'DEV8redis', password: process.env.REDIS_PWD,
db: 0, db: 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