Commit 8210eef2 authored by 高诸锋's avatar 高诸锋

fix

parent f381bd1b
Pipeline #3990 passed with stage
in 2 seconds
...@@ -120,13 +120,14 @@ class TaskController extends Controller { ...@@ -120,13 +120,14 @@ class TaskController extends Controller {
const { orderId, appkey } = order; const { orderId, appkey } = order;
insertData.orderId = orderId; insertData.orderId = orderId;
insertData.cityName = insertData.location; insertData.cityName = insertData.location;
// 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.callbackUrl, orderId: order.orderId, userId: order.userId }); await service.partner.notify({ taskId, cb: order.callbackUrl, orderId: order.orderId, userId: order.userId });
} catch (err) { } catch (err) {
ctx.logger.error('handleCallback', err, result); ctx.logger.err(`【controller/task/handleCallback err】:${err}${JSON.stringify(result)}`);
taskNote = { taskNote = {
status: 'failure', status: 'failure',
note: { message: err.message }, note: { message: err.message },
......
'use strict'; 'use strict';
const REDIS_CACHE = Symbol('Context#RedisCache');
const NODE_CACHE = Symbol('Context#NodeCache'); const NODE_CACHE = Symbol('Context#NodeCache');
const NodeCache = require('node-cache'); const NodeCache = require('node-cache');
const INCR_SCRIPT = 'return redis.call("INCR", ARGV[1])';
class Cache { class Cache {
constructor(app) { constructor(app) {
this.app = app; this.app = app;
this.name = 'unknown-cache'; this.name = 'unknown-cache';
this.app.redis.defineCommand('INCR', {
numberOfKeys: 0,
lua: INCR_SCRIPT,
});
} }
async val(key, next, ttl) { async val(key, next, ttl) {
...@@ -36,19 +42,39 @@ class Cache { ...@@ -36,19 +42,39 @@ class Cache {
jsonText = jsonText.substr(0, 125) + '...'; jsonText = jsonText.substr(0, 125) + '...';
} }
} }
this.app.logger.info(`【Cache Get:】(${+new Date() - startTime}ms) ${this.name}.${key}: ${jsonText}`); this.app.logger.info(`[cache](${+new Date() - startTime}ms) ${this.name}.${key}: ${jsonText}`);
return ret; return ret;
} }
async set(key, value, ttl = 60) { async set(key, value, ttl = 60) {
const startTime = +new Date(); return await this._set(key, value, ttl);
await this._set(key, value, ttl);
this.app.logger.info(`【Cache Set】(${+new Date() - startTime}ms) Key: ${key} value: ${JSON.stringify(value)}`);
return;
} }
}
async del(key) { class RedisCacheWrap extends Cache {
if (key) { constructor(app, redis) {
return await this._del(key); super(app);
this.redis = redis;
this.name = 'redis-cache';
}
async _get(key) {
const { redis } = this;
let value = await redis.get(key);
if (value === null) {
value = undefined;
}
if (value) {
value = JSON.parse(value);
}
return value;
}
async _set(key, value, ttl) {
const { redis } = this;
value = JSON.stringify(value);
if (ttl > 0) {
await redis.set(key, value, 'EX', ttl);
} else {
await redis.set(key, value);
} }
} }
} }
...@@ -63,7 +89,6 @@ class NodeCacheWrap extends Cache { ...@@ -63,7 +89,6 @@ class NodeCacheWrap extends Cache {
async _get(key) { async _get(key) {
return this.cache.get(key); return this.cache.get(key);
} }
async _set(key, value, ttl) { async _set(key, value, ttl) {
const { cache } = this; const { cache } = this;
value = JSON.parse(JSON.stringify(value)); value = JSON.parse(JSON.stringify(value));
...@@ -73,13 +98,15 @@ class NodeCacheWrap extends Cache { ...@@ -73,13 +98,15 @@ class NodeCacheWrap extends Cache {
cache.set(key, value); cache.set(key, value);
} }
} }
async _del(key) {
return this.cache.del(key);
}
} }
module.exports = { module.exports = {
get memcache() {
if (!this[REDIS_CACHE]) {
this[REDIS_CACHE] = new RedisCacheWrap(this, this.redis);
}
return this[REDIS_CACHE];
},
get cache() { get cache() {
if (!this[NODE_CACHE]) { if (!this[NODE_CACHE]) {
this[NODE_CACHE] = new NodeCacheWrap(this); this[NODE_CACHE] = new NodeCacheWrap(this);
......
...@@ -12,7 +12,7 @@ class CacheService extends Service { ...@@ -12,7 +12,7 @@ class CacheService extends Service {
} }
/** /**
* 将taskId状态缓存到cache和数据库 * 将taskId状态缓存到redis和数据库
* @param {Object} key taskId * @param {Object} key taskId
* - value: 状态 提示信息 status 、note={} * - value: 状态 提示信息 status 、note={}
* - exprie: 过期时间(单位/s) * - exprie: 过期时间(单位/s)
...@@ -20,9 +20,9 @@ class CacheService extends Service { ...@@ -20,9 +20,9 @@ class CacheService extends Service {
async set({ key, value = {}, expire = 300 }) { async set({ key, value = {}, expire = 300 }) {
const { ctx, app, taskPrefix } = this; const { ctx, app, taskPrefix } = this;
const data = await app.cache.get(taskPrefix + key); const data = await app.memcache.get(taskPrefix + key);
if (!data || (data && data.status !== 'success')) { if (!data || (data && data.status !== 'success')) {
await app.cache.set(taskPrefix + key, value, expire); await app.memcache.set(taskPrefix + key, value, expire);
} }
const order = await ctx.model.TaskStatus.findOne({ const order = await ctx.model.TaskStatus.findOne({
...@@ -42,9 +42,9 @@ class CacheService extends Service { ...@@ -42,9 +42,9 @@ class CacheService extends Service {
*/ */
async get({ key }) { async get({ key }) {
const { ctx, app, taskPrefix } = this; const { ctx, app, taskPrefix } = this;
const data = await app.cache.get(taskPrefix + key); const data = await app.memcache.get(taskPrefix + key);
if (data) { if (data) {
ctx.logger.info(`【Cache】get From node-cache ${key} data:`, data); ctx.logger.info(`【Cache】get From redis ${key} data:`, data);
return data; return data;
} }
const order = await ctx.model.TaskStatus.findOne({ const order = await ctx.model.TaskStatus.findOne({
......
...@@ -17,7 +17,7 @@ class PartnerService extends Service { ...@@ -17,7 +17,7 @@ class PartnerService extends Service {
try { try {
return JSON.parse(data); return JSON.parse(data);
} catch (err) { } catch (err) {
ctx.logger.error('【Scripts】fetchParams', redisThemePrefix + appKey, 'result:', data, err); ctx.logger.error('【Scripts】fetchParams', redisThemePrefix + appKey, 'result:', JSON.stringify(data), err);
await this.app.cache.del(redisThemePrefix + appKey); await this.app.cache.del(redisThemePrefix + appKey);
} }
} }
...@@ -44,7 +44,7 @@ class PartnerService extends Service { ...@@ -44,7 +44,7 @@ class PartnerService extends Service {
try { try {
return JSON.parse(data); return JSON.parse(data);
} catch (err) { } catch (err) {
ctx.logger.error('【Partner】 fetchScripts', redisScriptsPrefix + appKey, 'result:', data, err); ctx.logger.error('【Partner】 fetchScripts', redisScriptsPrefix + appKey, 'result:', JSON.stringify(data), err);
await this.app.cache.del(redisScriptsPrefix + appKey); await this.app.cache.del(redisScriptsPrefix + appKey);
} }
} }
......
...@@ -24,7 +24,7 @@ class ScriptsService extends Service { ...@@ -24,7 +24,7 @@ class ScriptsService extends Service {
try { try {
return JSON.parse(data); return JSON.parse(data);
} catch (err) { } catch (err) {
ctx.logger.error('【Scripts】fetchScriptsFromRedis', 'result:', data, err); ctx.logger.error('【Scripts】fetchScriptsFromRedis', 'result:', JSON.stringify(data), err);
await this.app.redis.del(redisScriptsKey); await this.app.redis.del(redisScriptsKey);
} }
} }
...@@ -34,7 +34,7 @@ class ScriptsService extends Service { ...@@ -34,7 +34,7 @@ class ScriptsService extends Service {
dataType: 'json', dataType: 'json',
contentType: 'json', contentType: 'json',
}); });
ctx.logger.info(`【Scripts】fetchScripts,${baseURL + fetchScriptsUrl}`, 'result:', result.data); ctx.logger.info(`【Scripts】fetchScripts,${baseURL + fetchScriptsUrl}`, 'result:', JSON.stringify(result.data));
if (result.data && result.data.length > 0) { if (result.data && result.data.length > 0) {
await this.app.redis.set(redisScriptsKey, JSON.stringify(result.data), 'EX', 300); await this.app.redis.set(redisScriptsKey, JSON.stringify(result.data), 'EX', 300);
} }
...@@ -60,7 +60,7 @@ class ScriptsService extends Service { ...@@ -60,7 +60,7 @@ class ScriptsService extends Service {
try { try {
return JSON.parse(data); return JSON.parse(data);
} catch (err) { } catch (err) {
ctx.logger.error('【Scripts】fetchParams', 'result:', data, err); ctx.logger.error('【Scripts】fetchParams', 'result:', JSON.stringify(data), err);
await this.app.redis.del(redisParamsKey); await this.app.redis.del(redisParamsKey);
} }
} }
...@@ -136,7 +136,7 @@ class ScriptsService extends Service { ...@@ -136,7 +136,7 @@ class ScriptsService extends Service {
if (result.data.status === 0) { if (result.data.status === 0) {
return result.data.content.address_detail.city; return result.data.content.address_detail.city;
} }
ctx.logger.error('fetchCityFormIp', url, result.data); ctx.logger.error('fetchCityFormIp', url, JSON.stringify(result.data));
return '北京市'; return '北京市';
} }
......
...@@ -51,7 +51,7 @@ class StorageService extends Service { ...@@ -51,7 +51,7 @@ class StorageService extends Service {
ctx.logger.info(`【Storage】read url:${readUrl}/${orderId}`); ctx.logger.info(`【Storage】read url:${readUrl}/${orderId}`);
if (result && result.data && result.data.code !== 0) { if (result && result.data && result.data.code !== 0) {
ctx.logger.error(`storageAPI read ${readUrl}/${orderId}`, result.data); ctx.logger.error(`storageAPI read ${readUrl}/${orderId}`, JSON.stringify(result.data));
ctx.throw(400, { message: result.data.msg }); ctx.throw(400, { message: result.data.msg });
} }
return result.data.data[readDataKey]; return result.data.data[readDataKey];
......
...@@ -21,11 +21,11 @@ class WashDataService extends Service { ...@@ -21,11 +21,11 @@ class WashDataService extends Service {
contentType: 'json', contentType: 'json',
}); });
if (washData.status !== 200) { if (washData.status !== 200) {
ctx.logger.error(`【washData】url${washUrl} ,params`, rawdata, washData); ctx.logger.error(`【washData】url${washUrl} ,params`, JSON.stringify(rawdata), JSON.stringify(washData));
throw new Error('清洗数据出错'); throw new Error('清洗数据出错');
} }
if (washData.data.code !== 0) { if (washData.data.code !== 0) {
ctx.logger.error(`【washData】url${washUrl} ,params`, rawdata, washData.data); ctx.logger.error(`【washData】url${washUrl} ,params`, JSON.stringify(rawdata), JSON.stringify(washData.data));
throw new Error('清洗数据出错'); throw new Error('清洗数据出错');
} }
......
...@@ -17,10 +17,10 @@ module.exports = () => { ...@@ -17,10 +17,10 @@ module.exports = () => {
host: 'https://dev-nginx.jianbing.com/zeus-api/v1', host: 'https://dev-nginx.jianbing.com/zeus-api/v1',
fetchTheme: '/chaos/partners/theme', fetchTheme: '/chaos/partners/theme',
fetchScripts: '/chaos/partners/scripts', fetchScripts: '/chaos/partners/scripts',
redisThemePrefix: 'PARNTERS.THEME', redisThemePrefix: 'DATA_SERVER_SHEBAO.THEME',
redisScriptsPrefix: 'PARNTERS.SCRIPTS', redisScriptsPrefix: 'DATA_SERVER_SHEBAO.SCRIPTS',
fetchAgreements: '', fetchAgreements: '',
redisAgreementsPrefix: 'PARNTERS.Agreements', redisAgreementsPrefix: 'DATA_SERVER_SHEBAO.AGREEMENTS',
}; };
config.scriptsAPI = { config.scriptsAPI = {
...@@ -67,6 +67,15 @@ module.exports = () => { ...@@ -67,6 +67,15 @@ module.exports = () => {
taskPrefix: 'NEWSB.TASK', taskPrefix: 'NEWSB.TASK',
}; };
config.redis = {
client: {
port: 6379,
host: '116.62.55.137',
password: 'DEV8redis',
db: 0,
},
};
config.sequelize = { config.sequelize = {
datasources: [{ datasources: [{
// 东八时区 // 东八时区
......
...@@ -5,7 +5,7 @@ module.exports = () => { ...@@ -5,7 +5,7 @@ module.exports = () => {
config.debug = false; config.debug = false;
config.taskAPI = { config.taskAPI = {
host: 'http://tm.51gjj.com:4831', host: process.env.TASKAPI_HOST || 'http://tm.51gjj.com:4831',
fetchHubsUrl: '', fetchHubsUrl: '',
createTaskUrl: '/shebao/createSbTask', createTaskUrl: '/shebao/createSbTask',
fetchCodeUrl: '/shebao/getSbCode', fetchCodeUrl: '/shebao/getSbCode',
...@@ -14,7 +14,7 @@ module.exports = () => { ...@@ -14,7 +14,7 @@ module.exports = () => {
}; };
config.partnerAPI = { config.partnerAPI = {
host: 'https://dev-nginx.jianbing.com/zeus-api/v1', host: process.env.PARTNERAPI_HOST || 'https://dev-nginx.jianbing.com/zeus-api/v1',
fetchTheme: '/chaos/partners/theme', fetchTheme: '/chaos/partners/theme',
fetchScripts: '/chaos/partners/scripts', fetchScripts: '/chaos/partners/scripts',
redisThemePrefix: 'URANUS.HF.PARNTERS.THEME', redisThemePrefix: 'URANUS.HF.PARNTERS.THEME',
...@@ -22,7 +22,7 @@ module.exports = () => { ...@@ -22,7 +22,7 @@ module.exports = () => {
}; };
config.scriptsAPI = { config.scriptsAPI = {
host: 'https://dev-nginx.jianbing.com/zeus-api/v1', host: process.env.SCRIPTSAPI_HOST || 'https://dev-nginx.jianbing.com/zeus-api/v1',
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',
...@@ -36,7 +36,7 @@ module.exports = () => { ...@@ -36,7 +36,7 @@ module.exports = () => {
}; };
config.storageAPI = { config.storageAPI = {
host: 'http://tv.51gjj.com:11252', host: process.env.STORAGEAPI_HOST || 'http://tv.51gjj.com:11252',
writeUrl: '/data', writeUrl: '/data',
readUrl: '/shebao', readUrl: '/shebao',
writeType: 'shebao', writeType: 'shebao',
...@@ -44,12 +44,12 @@ module.exports = () => { ...@@ -44,12 +44,12 @@ module.exports = () => {
}; };
config.washAPI = { config.washAPI = {
host: 'http://tt.51gjj.com:11101', host: process.env.WASHAPI_HOST || 'http://tt.51gjj.com:11101',
washUrl: '/si/analyzeSI', washUrl: '/si/analyzeSI',
}; };
config.signatureAPI = { config.signatureAPI = {
host: 'http://tj3.51gjj.com:5118', host: process.env.SIGNATUREAPI_HOST || 'http://tj3.51gjj.com:5118',
fetchTokenUrl: '/Access/GetToken', fetchTokenUrl: '/Access/GetToken',
fetchOrderIdUrl: '/Order/GetOrderSn', fetchOrderIdUrl: '/Order/GetOrderSn',
signatureUrl: '/Access/SignValidityCheck', signatureUrl: '/Access/SignValidityCheck',
...@@ -91,12 +91,21 @@ module.exports = () => { ...@@ -91,12 +91,21 @@ module.exports = () => {
}], }],
}; };
config.redis = {
client: {
port: 6379,
host: process.env.REDIS_HOST || '116.62.55.137',
password: process.env.REDIS_PWD || 'DEV8redis',
db: 0,
},
};
config.SB_OpenAPI = { config.SB_OpenAPI = {
appKey: '60670203E411FD62BA9E953CFB73F881', appKey: '60670203E411FD62BA9E953CFB73F881',
appSecret: '0BDD1ECC147503C477563E5C1438C366D70E4F80', appSecret: '0BDD1ECC147503C477563E5C1438C366D70E4F80',
}; };
config.callbackUrl = 'http://ti.51gjj.com:7001/shebao_server/callback'; config.callbackUrl = process.env.CALLBACK_URL || 'http://ti.51gjj.com:7001/shebao_server/callback';
return config; return config;
}; };
...@@ -14,7 +14,7 @@ exports.sequelize = { ...@@ -14,7 +14,7 @@ exports.sequelize = {
}; };
exports.redis = { exports.redis = {
enable: false, enable: true,
package: 'egg-redis', package: 'egg-redis',
}; };
......
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