Commit 3ddbfb05 authored by 姜登's avatar 姜登

gjjapi

parent f69eb006
Pipeline #4523 passed with stage
in 9 minutes 9 seconds
...@@ -36,27 +36,27 @@ class OrderController extends Controller { ...@@ -36,27 +36,27 @@ class OrderController extends Controller {
token: 'string', token: 'string',
}, },
}, },
} },
}, },
cityId: 'string' cityId: 'string',
}; };
} }
//拉取数据接口 // 拉取数据接口
async partnerShow() { async partnerShow() {
const { ctx, service } = this; const { ctx, service } = this;
try { try {
ctx.validate(this.showRule); ctx.validate(this.showRule);
const { appKey, orderSn } = ctx.request.body.params; const { appKey, orderSn } = ctx.request.body.params;
// await service.signature.signatureCheck(ctx.request.body); await service.signature.signatureCheck(ctx.request.body);
let data = await service.cache.get({ key: orderSn }); const data = await service.cache.get({ key: orderSn });
let result = { code: 2, msg: '任务还在执行或未输入', data: {} }; let result = { code: 2, msg: '任务还在执行或未输入', data: {} };
if (data) { if (data) {
if (data.status === 'success') { if (data.status === 'success') {
const result = await service.storage.read(orderSn, appKey); const result = await service.storage.read(orderSn, appKey);
ctx.body = { ctx.body = {
code: 0, code: 0,
data: result data: result,
}; };
return; return;
} else if (data.note) { } else if (data.note) {
...@@ -68,14 +68,19 @@ class OrderController extends Controller { ...@@ -68,14 +68,19 @@ class OrderController extends Controller {
} catch (err) { } catch (err) {
ctx.logger.error('partnerShow', err); ctx.logger.error('partnerShow', err);
ctx.status = 200; ctx.status = 200;
if (err.code == 'invalid_param') { if (err.code === 'invalid_param') {
return ctx.body = { code: -1, msg: err.message || '' }; ctx.body = { code: -1, msg: '请求参数有误' };
return;
} }
return ctx.body = { code: err.code || -1, msg: err.message || '' }; if (/[a-zA-Z]+/.test(err.message)) {
ctx.body = { code: err.code || -1, msg: '系统错误, 请稍后再试' };
return;
}
ctx.body = { code: err.code || -1, msg: err.message || '' };
} }
} }
//创建订单号接口 // 创建订单号接口
async fetchOrderId() { async fetchOrderId() {
const { ctx, service } = this; const { ctx, service } = this;
try { try {
...@@ -88,28 +93,30 @@ class OrderController extends Controller { ...@@ -88,28 +93,30 @@ class OrderController extends Controller {
await service.order.create({ await service.order.create({
orderId, orderId,
taskId, taskId,
cityId: cityId, cityId,
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, appKey,
status: 'init', status: 'init',
}); });
ctx.body = { ctx.body = {
code: 0, code: 0,
data: { data: {
orderSn: orderId orderSn: orderId,
}, },
msg: '' msg: '',
} };
} catch (err) { } catch (err) {
ctx.logger.error('fetchOrderId', err); ctx.logger.error('fetchOrderId', err);
ctx.status = 200; ctx.status = 200;
if (err.code == 'invalid_param') { if (err.code === 'invalid_param') {
return ctx.body = { code: -1, msg: err.message || '' }; ctx.body = { code: -1, msg: '请求参数有误' };
return;
} }
if (/[a-zA-Z]+/.test(err.message)) { if (/[a-zA-Z]+/.test(err.message)) {
return ctx.body = { code: err.code || -1, msg: '系统错误, 请稍后再试' }; ctx.body = { code: err.code || -1, msg: '系统错误, 请稍后再试' };
return;
} }
return ctx.body = { code: err.code || -1, msg: err.message || '' }; ctx.body = { code: err.code || -1, msg: err.message || '' };
} }
} }
} }
......
...@@ -4,7 +4,7 @@ const Controller = require('egg').Controller; ...@@ -4,7 +4,7 @@ const Controller = require('egg').Controller;
class ScriptController extends Controller { class ScriptController extends Controller {
//获取城市配置 // 获取城市配置
async fetchCityConfig() { async fetchCityConfig() {
const { ctx, service } = this; const { ctx, service } = this;
try { try {
...@@ -15,7 +15,7 @@ class ScriptController extends Controller { ...@@ -15,7 +15,7 @@ class ScriptController extends Controller {
ctx.logger.error('fetchOrderId', err); ctx.logger.error('fetchOrderId', err);
ctx.status = 200; ctx.status = 200;
if (err.code === 'invalid_param') { if (err.code === 'invalid_param') {
ctx.body = { code: -1, msg: err.message || '' }; ctx.body = { code: -1, msg: '请求参数有误' };
return; return;
} }
if (/[a-zA-Z]+/.test(err.message)) { if (/[a-zA-Z]+/.test(err.message)) {
......
...@@ -22,7 +22,7 @@ class TaskController extends Controller { ...@@ -22,7 +22,7 @@ class TaskController extends Controller {
phone: { type: 'string', format: /^1\d{10}$/, required: false, message: '手机号格式错误' }, phone: { type: 'string', format: /^1\d{10}$/, required: false, message: '手机号格式错误' },
ID: { type: 'string', format: /^\d{14}(\d{3})?[\dXx]$/, required: false, message: '身份证格式错误' }, ID: { type: 'string', format: /^\d{14}(\d{3})?[\dXx]$/, required: false, message: '身份证格式错误' },
}, },
} },
}; };
this.fetchCaptureRule = { this.fetchCaptureRule = {
...@@ -51,7 +51,7 @@ class TaskController extends Controller { ...@@ -51,7 +51,7 @@ class TaskController extends Controller {
}; };
} }
//创建任务接口 // 创建任务接口
async create() { async create() {
const { ctx, service } = this; const { ctx, service } = this;
ctx.validate(this.createRule); ctx.validate(this.createRule);
...@@ -60,24 +60,25 @@ class TaskController extends Controller { ...@@ -60,24 +60,25 @@ class TaskController extends Controller {
ctx.success({ taskId }); ctx.success({ taskId });
} }
//提交任务接口 // 提交任务接口
async submit() { async submit() {
const { ctx, service, config } = this; const { ctx, service, config } = this;
try { try {
ctx.validate(this.submitRule); ctx.validate(this.submitRule);
const { orderSn } = ctx.request.body; const { orderSn } = ctx.request.body;
let order = await service.cache.get({ key: orderSn }); const order = await service.cache.get({ key: orderSn });
if (order.status == 'success' || order.status == 'failure') { if (order.status === 'success' || order.status === 'failure') {
return ctx.body = { ctx.body = {
code: -1, code: -1,
msg: '此任务已结束' msg: '此任务已结束',
} };
return;
} }
await service.cache.set({ await service.cache.set({
key: orderSn, value: { key: orderSn, value: {
status: 'submit', status: 'submit',
note: { code: 3, msg: '任务已提交', data: { data: null, loginParam: null, cityId: order.cityId, orderSn } }, note: { code: 3, msg: '任务已提交', data: { data: null, loginParam: null, cityId: order.cityId, orderSn } },
} },
}); });
await service.task.submit({ await service.task.submit({
taskId: order.taskId, taskId: order.taskId,
...@@ -89,34 +90,37 @@ class TaskController extends Controller { ...@@ -89,34 +90,37 @@ class TaskController extends Controller {
code: 0, code: 0,
data: { data: {
cityId: order.cityId, cityId: order.cityId,
orderSn orderSn,
} },
}; };
} catch (err) { } catch (err) {
ctx.logger.error('submit', err); ctx.logger.error('submit', err);
ctx.status = 200; ctx.status = 200;
if (err.code == 'invalid_param') { if (err.code === 'invalid_param') {
return ctx.body = { code: -1, msg: err.message || '' }; ctx.body = { code: -1, msg: '请求参数有误' };
return;
} }
if (/[a-zA-Z]+/.test(err.message)) { if (/[a-zA-Z]+/.test(err.message)) {
return ctx.body = { code: err.code || -1, msg: '系统错误, 请稍后再试' }; ctx.body = { code: err.code || -1, msg: '系统错误, 请稍后再试' };
return;
} }
return ctx.body = { code: err.code || -1, msg: err.message || '' }; ctx.body = { code: err.code || -1, msg: err.message || '' };
} }
} }
//获取验证码接口 // 获取验证码接口
async fetchCapture() { async fetchCapture() {
const { ctx, service } = this; const { ctx, service } = this;
try { try {
ctx.validate(this.fetchCaptureRule); ctx.validate(this.fetchCaptureRule);
const { type, orderSn } = ctx.request.body; const { type, orderSn } = ctx.request.body;
const order = await service.cache.get({ key: orderSn }); const order = await service.cache.get({ key: orderSn });
if (order.status == 'success' || order.status == 'failure') { if (order.status === 'success' || order.status === 'failure') {
return ctx.body = { ctx.body = {
code: -1, code: -1,
msg: '此任务已结束' msg: '此任务已结束',
} };
return;
} }
const result = await service.task.fetchCapture({ const result = await service.task.fetchCapture({
taskId: order.taskId, taskId: order.taskId,
...@@ -125,22 +129,24 @@ class TaskController extends Controller { ...@@ -125,22 +129,24 @@ class TaskController extends Controller {
delete result.taskId; delete result.taskId;
ctx.body = { ctx.body = {
code: 0, code: 0,
data: { ...result, orderSn } data: { ...result, orderSn },
}; };
} catch (err) { } catch (err) {
ctx.logger.error('submit', err); ctx.logger.error('submit', err);
ctx.status = 200; ctx.status = 200;
if (err.code == 'invalid_param') { if (err.code === 'invalid_param') {
return ctx.body = { code: -1, msg: err.message || '' }; ctx.body = { code: -1, msg: '请求参数有误' };
return;
} }
if (/[a-zA-Z]+/.test(err.message)) { if (/[a-zA-Z]+/.test(err.message)) {
return ctx.body = { code: err.code || -1, msg: '系统错误, 请稍后再试' }; ctx.body = { code: err.code || -1, msg: '系统错误, 请稍后再试' };
return;
} }
return ctx.body = { code: err.code || -1, msg: err.message || '' }; ctx.body = { code: err.code || -1, msg: err.message || '' };
} }
} }
//任务回调接口 // 任务回调接口
async handleCallback() { async handleCallback() {
const { ctx, service } = this; const { ctx, service } = this;
const { taskId } = ctx.request.body; const { taskId } = ctx.request.body;
...@@ -149,7 +155,7 @@ class TaskController extends Controller { ...@@ -149,7 +155,7 @@ class TaskController extends Controller {
const order = await service.order.getOneByTaskId(taskId); const order = await service.order.getOneByTaskId(taskId);
if (!order) { if (!order) {
ctx.logger.error('handleCallback', taskId, '未查询到此任务'); ctx.logger.error('handleCallback', taskId, '未查询到此任务');
return return;
} }
const { orderId, appKey, cityId } = order; const { orderId, appKey, cityId } = order;
let taskNote = { let taskNote = {
...@@ -157,66 +163,66 @@ class TaskController extends Controller { ...@@ -157,66 +163,66 @@ class TaskController extends Controller {
note: { code: 2, msg: '任务正在执行', data: { data: null, loginParam: null, cityId, orderSn: orderId } }, note: { code: 2, msg: '任务正在执行', data: { data: null, loginParam: null, cityId, orderSn: orderId } },
}; };
switch (result.code) { switch (result.code) {
case -1: case -1:
case 106: case 106:
case 102: case 102:
case 204: case 204:
taskNote = { taskNote = {
status: 'failure', status: 'failure',
note: { code: -1, msg: result.msg, data: { data: null, loginParam: null, cityId, orderSn: orderId } }, note: { code: -1, msg: result.msg, data: { data: null, loginParam: null, cityId, orderSn: orderId } },
}; };
await service.cache.set({ await service.cache.set({
key: orderId, key: orderId,
value: taskNote, value: taskNote,
}); });
await service.partner.notice(order); await service.partner.notice(order);
break; break;
case 1: case 1:
taskNote = { taskNote = {
status: 'next', status: 'next',
note: { code: 1, msg: null, data: { data: null, loginParam: result.loginParam, cityId, orderSn: orderId } }, note: { code: 1, msg: null, data: { data: null, loginParam: result.loginParam, cityId, orderSn: orderId } },
}; };
await service.cache.set({
key: orderId,
value: taskNote,
});
await service.partner.notice(order);
break;
case 110:
taskNote = {
status: 'query',
note: { code: 110, msg: '任务提交成功', data: { data: null, loginParam: null, cityId, orderSn: orderId } },
};
break;
case 0:
taskNote = {
status: 'success',
note: { code: 0, msg: '任务成功', data: { data: null, loginParam: null, cityId, orderSn: orderId } },
};
try {
const insertData = await service.washData.wash(result);
insertData.orderId = orderId;
insertData.cityName = await service.scripts.fetchScriptName(insertData.cid);
insertData.taskId = Number(taskId);
insertData.appKey = appKey;
delete insertData.code;
await service.storage.write(insertData);
await service.cache.set({ await service.cache.set({
key: orderId, key: orderId,
value: taskNote, value: taskNote,
}); });
await service.partner.notice(order); await service.partner.notice(order);
break; } catch (err) {
case 110: ctx.logger.error('handleCallback', err, JSON.stringify(result));
taskNote = { taskNote = {
status: 'query', status: 'failure',
note: { code: 110, msg: '任务提交成功', data: { data: null, loginParam: null, cityId, orderSn: orderId } }, note: { code: -1, msg: '系统错误', data: { data: null, loginParam: null, cityId: order.cityId, orderSn: order.orderId } },
};
break;
case 0:
taskNote = {
status: 'success',
note: { code: 0, msg: '任务成功', data: { data: null, loginParam: null, cityId, orderSn: orderId } },
}; };
try { }
const insertData = await service.washData.wash(result); break;
insertData.orderId = orderId; default:
insertData.cityName = await service.scripts.fetchScriptName(insertData.cid); ctx.logger.warn('handleCallback', JSON.stringify(result));
insertData.taskId = Number(taskId); break;
insertData.appKey = appKey;
delete insertData.code;
await service.storage.write(insertData);
await service.cache.set({
key: orderId,
value: taskNote,
});
await service.partner.notice(order);
} catch (err) {
ctx.logger.error('handleCallback', err, JSON.stringify(result));
taskNote = {
status: 'failure',
note: { code: -1, msg: '系统错误', data: { data: null, loginParam: null, cityId: order.cityId, orderSn: order.orderId } },
};
}
break;
default:
ctx.logger.warn('handleCallback', JSON.stringify(result));
break;
} }
} }
......
...@@ -17,24 +17,25 @@ class TokenController extends Controller { ...@@ -17,24 +17,25 @@ class TokenController extends Controller {
}; };
} }
//获取token // 获取token
async partnerCreate() { async partnerCreate() {
const { ctx, service } = this; const { ctx, service } = this;
try { try {
ctx.validate(this.createRule); ctx.validate(this.createRule);
const token = await service.signature.createToken(ctx.request.body); const token = await service.signature.createToken(ctx.request.body);
return ctx.body = { ctx.body = {
code: 0, code: 0,
data: { token }, data: { token },
msg: '' msg: '',
} };
} catch (err) { } catch (err) {
ctx.logger.error('partnerCreate', err); ctx.logger.error('partnerCreate', err);
ctx.status = 200; ctx.status = 200;
if (err.code == 'invalid_param') { if (err.code === 'invalid_param') {
return ctx.body = { code: -1, msg: err.message || '' }; ctx.body = { code: -1, msg: '请求参数有误' };
return;
} }
return ctx.body = { code: err.code || -1, msg: err.message || '' }; ctx.body = { code: err.code || -1, msg: err.message || '' };
} }
} }
} }
......
...@@ -42,8 +42,8 @@ class Cache { ...@@ -42,8 +42,8 @@ class Cache {
this.app.logger.info(`[cache] set (ms)${this.name}.${key}: ${value}`); this.app.logger.info(`[cache] set (ms)${this.name}.${key}: ${value}`);
return await this._set(key, value, ttl); return await this._set(key, value, ttl);
} }
async del(key){ async del(key) {
return await this._del(key) return await this._del(key);
} }
} }
...@@ -66,7 +66,7 @@ class NodeCacheWrap extends Cache { ...@@ -66,7 +66,7 @@ class NodeCacheWrap extends Cache {
cache.set(key, value); cache.set(key, value);
} }
} }
async _del(key){ async _del(key) {
const { cache } = this; const { cache } = this;
cache.del(key); cache.del(key);
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module.exports = (options, app) => { module.exports = (options, app) => {
return async function errorHandler(ctx, next) { return async function errorHandler(ctx, next) {
try { try {
if(ctx.request.method == 'POST'){ if (ctx.request.method === 'POST') {
app.logger.info(JSON.stringify(ctx.request.body)); app.logger.info(JSON.stringify(ctx.request.body));
} }
await next(); await next();
......
'use strict'; 'use strict';
module.exports = app => { module.exports = app => {
const { DataTypes } = app.Sequelize; const { DataTypes } = app.Sequelize;
const cusDatas = app.model.define('cusDatas', { const cusDatas = app.model.define('cusDatas', {
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
autoIncrement: true, autoIncrement: true,
primaryKey: true, primaryKey: true,
field: 'id', field: 'id',
},
orderId: {
type: DataTypes.STRING(255),
allowNull: false,
defaultValue: '',
primaryKey: true,
field: 'orderId',
},
appKey: {
type: DataTypes.STRING(255),
allowNull: false,
field: 'appKey',
},
type: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: '',
field: 'type',
},
date: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: app.Sequelize.literal('CURRENT_TIMESTAMP'),
field: 'date',
},
text1: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: '',
field: 'text1',
},
text2: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: '',
field: 'text2',
},
text3: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: '',
field: 'text3',
},
text4: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: '',
field: 'text4',
},
date1: {
type: DataTypes.DATE,
allowNull: true,
field: 'date1',
},
date2: {
type: DataTypes.DATE,
allowNull: true,
field: 'date2',
},
}, },
{ orderId: {
tableName: 'cus_data', type: DataTypes.STRING(255),
timestamps: false, allowNull: false,
}); defaultValue: '',
primaryKey: true,
field: 'orderId',
},
appKey: {
type: DataTypes.STRING(255),
allowNull: false,
field: 'appKey',
},
type: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: '',
field: 'type',
},
date: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: app.Sequelize.literal('CURRENT_TIMESTAMP'),
field: 'date',
},
text1: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: '',
field: 'text1',
},
text2: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: '',
field: 'text2',
},
text3: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: '',
field: 'text3',
},
text4: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: '',
field: 'text4',
},
date1: {
type: DataTypes.DATE,
allowNull: true,
field: 'date1',
},
date2: {
type: DataTypes.DATE,
allowNull: true,
field: 'date2',
},
},
{
tableName: 'cus_data',
timestamps: false,
});
return cusDatas; return cusDatas;
} };
\ No newline at end of file
...@@ -109,10 +109,10 @@ module.exports = app => { ...@@ -109,10 +109,10 @@ module.exports = app => {
field: 'notice', field: 'notice',
}, },
}, },
{ {
tableName: 'gjj_status', tableName: 'gjj_status',
timestamps: false, timestamps: false,
}); });
return taskStatsu; return taskStatsu;
}; };
'use strict'; 'use strict';
module.exports = { module.exports = {
schedule: { schedule: {
interval: '5m', // 5分钟间隔 interval: '5m', // 5分钟间隔
type: 'all', // 所有woker type: 'all', // 所有woker
immediate: true, immediate: true,
}, },
async task(ctx) { async task(ctx) {
try { try {
const { host, customerUrl } = ctx.app.config.signatureAPI; const { host, customerUrl } = ctx.app.config.signatureAPI;
const notifyMap = new Map(); const notifyMap = new Map();
const ret = await ctx.curl(host + customerUrl, { const ret = await ctx.curl(host + customerUrl, {
charset: 'utf-8', charset: 'utf-8',
timeout: ['30s', '30s'], timeout: ['30s', '30s'],
dataType: 'json', dataType: 'json',
contentType: 'json', contentType: 'json',
}); });
// ctx.logger.info(JSON.stringify(ret.data)); // ctx.logger.info(JSON.stringify(ret.data));
if (ret.data.code == '0') { if (ret.data.code == '0') {
ret.data.data.customerList.map(customer => { ret.data.data.customerList.map(customer => {
if ('callBackUrl' in customer) { if ('callBackUrl' in customer) {
notifyMap.set(customer.appKey, { notifyUrl: customer.callBackUrl }); notifyMap.set(customer.appKey, { notifyUrl: customer.callBackUrl });
} }
}); });
ctx.app.notifyMap = notifyMap; ctx.app.notifyMap = notifyMap;
} }
} catch (e) { } catch (e) {
ctx.logger.error('【schedule/notifyUrlTask】catch error:', JSON.stringify(e)); ctx.logger.error('【schedule/notifyUrlTask】catch error:', JSON.stringify(e));
}
} }
} },
\ No newline at end of file };
...@@ -19,12 +19,12 @@ class PartnerService extends Service { ...@@ -19,12 +19,12 @@ class PartnerService extends Service {
contentType: 'json', contentType: 'json',
method: 'POST', method: 'POST',
data: { data: {
orderSn: orderId orderSn: orderId,
}, },
} }
) );
ctx.logger.info(`【Partner】 notice ${notifyUrl}`, 'orderId:', orderId, 'result:', ret.status, JSON.stringify(ret.data)); ctx.logger.info(`【Partner】 notice ${notifyUrl}`, 'orderId:', orderId, 'result:', ret.status, JSON.stringify(ret.data));
if (ret.status == 200) { if (ret.status === 200) {
await order.update({ notice: '1' }); await order.update({ notice: '1' });
} }
} }
......
...@@ -57,8 +57,8 @@ class StorageService extends Service { ...@@ -57,8 +57,8 @@ class StorageService extends Service {
await ctx.model.Cusdata.create({ await ctx.model.Cusdata.create({
appKey, appKey,
orderId, orderId,
type: 'gjj' type: 'gjj',
}) });
return result.data.data[readDataKey]; return result.data.data[readDataKey];
} }
} }
......
...@@ -51,16 +51,16 @@ class WashDataService extends Service { ...@@ -51,16 +51,16 @@ class WashDataService extends Service {
dealData(data, passID = false) { dealData(data, passID = false) {
const { clearGjj, clearLoan } = this; const { clearGjj, clearLoan } = this;
delete data.data.general_analyzed_data; delete data.data.general_analyzed_data;
for (let gjjItem of data.data.gjj_data) { for (const gjjItem of data.data.gjj_data) {
for (let text of clearGjj) { for (const text of clearGjj) {
if (!(passID && text == 'ID')) { if (!(passID && text === 'ID')) {
delete gjjItem.gjj_brief[text]; delete gjjItem.gjj_brief[text];
} }
} }
delete gjjItem.gjj_account_analyzed_data; delete gjjItem.gjj_account_analyzed_data;
} }
for (let loanItem of data.data.loan_data) { for (const loanItem of data.data.loan_data) {
for (let text of clearLoan) { for (const text of clearLoan) {
delete loanItem.loan_brief[text]; delete loanItem.loan_brief[text];
} }
} }
......
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