Commit e7a260ca authored by 姜登's avatar 姜登

yys

parent 1ef51a0b
......@@ -87,26 +87,6 @@ class OrderController extends Controller {
ctx.success({ orderId: object.orderId });
}
async show() {
const { ctx, service } = this;
ctx.validate(this.showRule);
const { orderId } = ctx.params;
await service.signature.signatureCheck(ctx.request.body);
const data = await service.order.getOneByOrderId(orderId);
if (data) {
if (data.status === 'success') {
const result = await service.storage.read(orderId);
ctx.success(result);
return;
}
ctx.success({
status: data.status,
});
return;
}
ctx.fail('无此订单号');
}
async partnerShow() {
const { ctx, service } = this;
try {
......@@ -118,9 +98,8 @@ class OrderController extends Controller {
if (!(appKeyInfo && appKeyInfo.valid === true && appKeyInfo.enableHfData === true)) {
return ctx.fail('未开通此服务');
}
const data = await service.order.getOneByOrderId(orderId);
const data = await service.order.getOneByOrderId({ orderId, status: 'success' });
if (data) {
if (data.status === 'success') {
const result = await service.storage.read(orderId, appKey);
ctx.body = {
code: 0,
......@@ -128,7 +107,6 @@ class OrderController extends Controller {
};
return;
}
}
ctx.body = {
code: -1,
msg: '无此订单号',
......@@ -139,25 +117,6 @@ class OrderController extends Controller {
}
}
async orderShow() {
const { ctx, service } = this;
const { appKey, orderId } = ctx.params;
const appKeyInfo = await service.partner.fetchInfo(appKey);
if (!(appKeyInfo && appKeyInfo.valid === true && appKeyInfo.enableHfView === true)) {
return ctx.fail('未开通此服务');
}
const data = await service.order.getOneByOrderId(orderId);
if (data) {
if (data.status === 'success' && (data.appKey === appKey)) {
const result = await service.storage.read(orderId, appKey);
const ret = service.washData.dealData(result);
ctx.success(ret);
return;
}
}
ctx.fail('无此订单号');
}
async fetchOrderId() {
const { ctx, service } = this;
try {
......
......@@ -133,27 +133,20 @@ class TaskController extends Controller {
break;
case 0:
taskNote = {
status: 'success',
note: { message: 'task success' },
status: 'wash',
note: { message: 'wash' },
};
try {
const insertData = await service.washData.wash(result);
const order = await service.order.getOneByTaskId(taskId);
if (!order) {
throw new Error('任务已经结束了');
throw new Error('任务不存在');
}
const { orderId, appKey } = order;
insertData.orderId = orderId;
insertData.cityName = await service.scripts.fetchScriptName(insertData.cid);
insertData.taskId = taskId;
insertData.appKey = appKey;
delete insertData.code;
await service.storage.write(insertData);
const { orderId } = order;
await service.washData.wash(result, orderId);
await service.cache.set({
key: taskId,
value: taskNote,
});
await service.partner.notice(order);
return;
} catch (err) {
ctx.logger.error('handleCallback', JSON.stringify(err), JSON.stringify(result));
......@@ -173,6 +166,32 @@ class TaskController extends Controller {
});
}
async dataCallback() {
const { ctx, service } = this;
const { data } = ctx.request.body;
const { taskId, state } = data;
const order = await service.order.getOneByTaskId(taskId);
if (!order) {
throw new Error('任务不存在');
}
let taskNote = {
status: 'failure',
note: { message: '存储数据出错' },
};
if (state === 'success') {
taskNote = {
status: 'success',
note: { message: 'task success' },
};
}
await service.partner.notice(order, state);
await service.cache.set({
key: taskId,
value: taskNote,
});
ctx.success('ok');
}
}
module.exports = TaskController;
......@@ -6,39 +6,41 @@
module.exports = app => {
const { router, controller } = app;
const gjjRouter = router.namespace(app.config.projectRootPath);
gjjRouter.post('/tasks', controller.task.create); // 创建任务
gjjRouter.get('/tasks/:taskId', controller.task.show); // 获取任务状态
gjjRouter.post('/tasks/:taskId/submit', controller.task.submit); // 提交任务参数
gjjRouter.post('/tasks/:taskId/capture', controller.task.fetchCapture); // 获取验证码
const yysRouter = router.namespace(app.config.projectRootPath);
yysRouter.post('/tasks', controller.task.create); // 创建任务
yysRouter.get('/tasks/:taskId', controller.task.show); // 获取任务状态
yysRouter.post('/tasks/:taskId/submit', controller.task.submit); // 提交任务参数
yysRouter.post('/tasks/:taskId/capture', controller.task.fetchCapture); // 获取验证码
gjjRouter.post('/callback', controller.task.handleCallback); // 处理回调结果,不对外
yysRouter.post('/callback', controller.task.handleCallback); // 处理回调结果,不对外
// gjjRouter.get('/scripts', controller.script.fetchScripts); // 获取所有脚本信息
yysRouter.post('/dataCallback', controller.task.dataCallback);// 数据处理完成结果,不对外
// gjjRouter.get('/scripts/:phone');// 手机号获取脚本信息
// gjjRouter.get('/scripts/:scriptId', controller.script.fetchOneScripts); // 获取单一脚本信息
// yysRouter.get('/scripts', controller.script.fetchScripts); // 获取所有脚本信息
gjjRouter.get('/help/:scriptId', controller.script.fetchHelpInfo); // 获取帮助信息
gjjRouter.get('/notice/:scriptId', controller.script.fetchNoticeInfo);// 获取提示信息
gjjRouter.get('/query_button/:scriptId', controller.script.fetchQueryButtonInfo); // 获取查询按钮信息
// yysRouter.get('/scripts/:phone');// 手机号获取脚本信息
// yysRouter.get('/scripts/:scriptId', controller.script.fetchOneScripts); // 获取单一脚本信息
gjjRouter.get('/params', controller.script.fetchParamsInfo); // 获取登录参数字典
gjjRouter.post('/tokens', controller.token.create); // 创建token
gjjRouter.post('/orders', controller.order.create); // 创建订单号
yysRouter.get('/help/:scriptId', controller.script.fetchHelpInfo); // 获取帮助信息
yysRouter.get('/notice/:scriptId', controller.script.fetchNoticeInfo);// 获取提示信息
yysRouter.get('/query_button/:scriptId', controller.script.fetchQueryButtonInfo); // 获取查询按钮信息
gjjRouter.get('/hubs/:phone/scripts', controller.script.fetchHubSeripts);// 根据phone 获取脚本数据(数组)
yysRouter.get('/params', controller.script.fetchParamsInfo); // 获取登录参数字典
yysRouter.post('/tokens', controller.token.create); // 创建token
yysRouter.post('/orders', controller.order.create); // 创建订单号
gjjRouter.get('/theme/:appKey', controller.partner.show);// 根据appkey查询合作方主题
yysRouter.get('/hubs/:phone/scripts', controller.script.fetchHubSeripts);// 根据phone 获取脚本数据(数组)
gjjRouter.get('/agreements/:id', controller.partner.fetchAgreements);// 查询协议
yysRouter.get('/theme/:appKey', controller.partner.show);// 根据appkey查询合作方主题
gjjRouter.post('/getToken', controller.token.partnerCreate);// 合作方创建token
yysRouter.get('/agreements/:id', controller.partner.fetchAgreements);// 查询协议
gjjRouter.post('/getOrderSn', controller.order.fetchOrderId);// 合作方获取订单号
yysRouter.post('/getToken', controller.token.partnerCreate);// 合作方创建token
gjjRouter.post('/getThxdData', controller.order.partnerShow);// 合作方获取订单数据
yysRouter.post('/getOrderSn', controller.order.fetchOrderId);// 合作方获取订单号
// gjjRouter.get('/orderData/:appKey/:orderId', controller.order.orderShow);// 获取展示页面数据
yysRouter.post('/getThxdData', controller.order.partnerShow);// 合作方获取订单数据
// yysRouter.get('/orderData/:appKey/:orderId', controller.order.orderShow);// 获取展示页面数据
};
......@@ -3,10 +3,10 @@
const Service = require('egg').Service;
class OrderService extends Service {
async getOneByOrderId(orderId) {
async getOneByOrderId(params) {
const { ctx } = this;
const order = await ctx.model.TaskStatus.findOne({
where: { orderId },
where: params,
});
return order;
}
......
......@@ -120,10 +120,11 @@ class PartnerService extends Service {
return ret.data;
}
async notice(order) {
const { ctx } = this;
async notice(order, state) {
const { ctx, service } = this;
const { orderId, notifyUrl, userId, notice } = order;
if (notifyUrl && notice !== '1') {
const dbRes = await service.order.getOneByOrderId({ orderId, notice: 1 });
if (!dbRes && notifyUrl && notice !== '1') {
const ret = await ctx.curl(notifyUrl, {
charset: 'utf-8',
timeout: [30000, 30000],
......@@ -132,7 +133,7 @@ class PartnerService extends Service {
data: {
orderId,
userId,
status: 'success',
status: state,
},
}
);
......
......@@ -7,16 +7,20 @@ class WashDataService extends Service {
super(ctx);
const { config } = this;
this.washUrl = config.washAPI.host + config.washAPI.washUrl;
this.clearGjj = ['ID', 'phone', 'birthday', 'email', 'address', 'card', 'deposit_base', 'person_rate', 'company_rate', 'marriage', 'sex', 'company_id'];
this.clearLoan = ['name', 'ID', 'warning_rate', 'fund_date', 'bank', 'phone', 'address', 'past_due', 'past_principle', 'past_interest', 'past_period', 'history_past_period', 'history_past_amount', 'assure_style', 'house_type', 'debit_account', 'left_period'];
this.callbackUrl = config.dataCallbackUrl;
}
async wash(data) {
async wash(data, orderId) {
const { app, washUrl, ctx } = this;
const rawdata = this._switchData(data);
const rawdata = {
data,
callbackUrl: this.callbackUrl,
orderId,
netMark: 0,
};
const washData = await app.curl(washUrl,
{
charset: 'utf-8',
timeout: [30000, 30000],
timeout: [3000, 3000],
dataType: 'json',
data: rawdata,
method: 'post',
......@@ -26,14 +30,6 @@ class WashDataService extends Service {
ctx.logger.error(`【washData】url${washUrl} ,params`, rawdata, washData);
throw new Error('清洗数据出错');
}
if (washData.data.code !== 0) {
ctx.logger.error(`【washData】url${washUrl} ,params`, rawdata, washData.data);
throw new Error('清洗数据出错');
}
washData.data.data.general_analyzed_data.overdueClassify = {};
washData.data.data.general_analyzed_data.loanClassify = {};
washData.data.data.general_analyzed_data.blacklist = {};
return washData.data;
}
......@@ -47,25 +43,6 @@ class WashDataService extends Service {
bar.appKey = '';
return bar;
}
dealData(data, passID = false) {
const { clearGjj, clearLoan } = this;
delete data.data.general_analyzed_data;
for (const gjjItem of data.data.gjj_data) {
for (const text of clearGjj) {
if (!(passID && text === 'ID')) {
delete gjjItem.gjj_brief[text];
}
}
delete gjjItem.gjj_account_analyzed_data;
}
for (const loanItem of data.data.loan_data) {
for (const text of clearLoan) {
delete loanItem.loan_brief[text];
}
}
return data;
}
}
module.exports = WashDataService;
......@@ -101,6 +101,7 @@ module.exports = () => {
config.callbackUrl = 'https://dev-nginx.jianbing.com/yysh5/callback';
config.dataCallbackUrl = 'https://dev-nginx.jianbing.com/yysh5/dataCallback';
return config;
};
......@@ -103,6 +103,7 @@ module.exports = () => {
};
config.callbackUrl = process.env.CALLBACK_URL || 'https://dev-nginx.jianbing.com/yysh5/callback';
config.dataCallbackUrl = process.env.DATACALLBACK_URL || 'https://dev-nginx.jianbing.com/yysh5/dataCallback';
return config;
};
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