Commit 89a56c70 authored by 李尚科's avatar 李尚科

fix

parent a3ca16a3
Pipeline #13813 passed with stage
in 8 seconds
...@@ -14,7 +14,7 @@ class CallriskController extends Controller { ...@@ -14,7 +14,7 @@ class CallriskController extends Controller {
if (!report_id) { if (!report_id) {
ctx.failed('error report id'); ctx.failed('error report id');
} }
let ret = await ctx.service.credit.callrisk.getReport(report_id); const ret = await ctx.service.credit.callrisk.getReport(report_id);
ctx.success(ret); ctx.success(ret);
} }
...@@ -24,7 +24,7 @@ class CallriskController extends Controller { ...@@ -24,7 +24,7 @@ class CallriskController extends Controller {
*/ */
async callriskInit() { async callriskInit() {
const { ctx } = this; const { ctx } = this;
let ret = await ctx.service.credit.apply.callriskInit(); const ret = await ctx.service.credit.apply.callriskInit();
ctx.success(ret); ctx.success(ret);
} }
...@@ -32,17 +32,30 @@ class CallriskController extends Controller { ...@@ -32,17 +32,30 @@ class CallriskController extends Controller {
* 获取数据报告信息 * 获取数据报告信息
*/ */
async applyCallriskReport() { async applyCallriskReport() {
const { ctx } = this; const { ctx } = this;
let inputParams = ctx.request.body; const input_params = ctx.request.body;
const rule = { const rule = {
name: { type: 'string', required: true }, name: { type: 'string', required: true },
phone: { type: 'string', required: true }, phone: { type: 'string', required: true },
id_card: { type: 'string', required: true }, id_card: { type: 'string', required: true },
code: { type: 'string', required: true } password: { type: 'string', required: true }
} }
ctx.validate(rule, inputParams); ctx.validate(rule, input_params);
let ret = await ctx.service.credit.apply.applyCallrisk(inputParams); await ctx.service.credit.callrisk.checkThreeElements(input_params);
const ret = await ctx.service.credit.apply.applyCallrisk(input_params);
ctx.success(ret); ctx.success(ret);
}
async confirmCaptcha() {
const { ctx } = this;
const code = ctx.request.body.code;
const result = await ctx.service.credit.callrisk.verifyCode(code);
// const result = true;
ctx.success({ result });
} }
......
...@@ -26,6 +26,7 @@ module.exports = app => { ...@@ -26,6 +26,7 @@ module.exports = app => {
router.get('/callrisk/report/:report_id', 'credit.callrisk.getReport');//获取报告信息 router.get('/callrisk/report/:report_id', 'credit.callrisk.getReport');//获取报告信息
router.post('/callrisk/report', 'credit.callrisk.applyCallriskReport');//查询个人通话信息 router.post('/callrisk/report', 'credit.callrisk.applyCallriskReport');//查询个人通话信息
router.get('/callrisk/init', 'credit.callrisk.callriskInit');//进入个人通话风险检测页面 router.get('/callrisk/init', 'credit.callrisk.callriskInit');//进入个人通话风险检测页面
router.post('/callrisk/confirm_captcha', 'credit.callrisk.confirmCaptcha');//获取短信验证码
}; };
...@@ -309,72 +309,123 @@ class ApplyService extends Service { ...@@ -309,72 +309,123 @@ class ApplyService extends Service {
} }
/** /**
* 从数据接口获取用户的黑名单报告信息 * 从数据接口获取用户的个人检测报告信息
* @param {*} inputParams * @param {*} inputParams
*/ */
async applyCallrisk(inputParams) { async applyCallrisk(input) {
const { ctx, app } = this; const { ctx, app } = this;
let ret = { const { name, phone, id_card } = input;
order_id: null, const user_id = ctx.userId;
report_id: null, const app_type_id = ctx.appTypeId;
first: false,//首次通过三要素验证后弹框提示:报告生成后,将无法查询其他人的报告 const app_user_id = ctx.appUserId;
second: false,//再次查询的是待支付中的订单 const app_id = ctx.appId;
} const type = TypeConfigp['callrisk'];//个人通话类型
//判断用户是否第一次三要素核验成功
let orderFilter = {
arrtibutes: ['id'],
where: {
user_id: ctx.userId,
type: 2,
valid: 1
}
}
let orderList = await ctx.prometheusModel.CreditOrder.findAll(orderFilter);
if (orderList === undefined || orderList.length === 0) {
ret.first = true;
}
//判断用户当前三要素是否是二次查询未支付订单 //判断用户当前三要素是否是二次查询未支付订单
let bePayOrder = await ctx.service.credit.order.getBePayOrderByThree('callrisk', inputParams); const check_second_ret = await this.checkSecond();
if (bePayOrder !== null) { if (!check_second_ret.order_id) {
ret.second = true; return check_second_ret;
ret.order_id = bePayOrder.id;
ret.report_id = bePayOrder.report_id;
return ret;
} }
//生成订单 //生成订单
let orderData = { const order_data = { type, name, phone, id_card };
type: 1, const order = await ctx.service.credit.order.createOrder(order_data);
name: inputParams.name, order_id = order.id;
phone: inputParams.phone,
id_card: inputParams.id_card
}
let order = await ctx.service.credit.order.createOrder(orderData);
ret.order_id = order.id;
//调用数据接口获取个人通话风险数据 TODO
//获取报告数据
// await this.createApply();
// const callrisk_info = result.data.data.callrisk;
// const report = await ctx.service.credit.blacklist.createReport({ name, phone, id_card }, callrisk_info);
// report_id = report.id;
//更新订单 //更新订单
//生成order_no //生成order_no
let orderNo = await ctx.service.credit.common.getOrdertNo(TypeConfigFlip[order.type], order.id); const order_no = await ctx.service.credit.common.getOrdertNo(TypeConfigFlip[type], order_id);
let updateOrderData = { const state_time = moment().format('YYYY-MM-DD HH:mm:ss');
order_no: orderNo, const update_order_data = {
order_no,
apply_id: apply.id, apply_id: apply.id,
report_id: report.id, report_id,
state: '待支付', state: '待支付',
state_time: moment().format('YYYY-MM-DD HH:mm:ss'), state_time,
valid: 1 valid: 1
} }
await ctx.prometheusModel.CreditOrder.update(updateOrderData, { where: { id: order.id } }); await ctx.prometheusModel.CreditOrder.update(update_order_data, { where: { id: order.id } });
let currentOrder = await ctx.prometheusModel.CreditOrder.findOne({ where: { id: order.id } }); const current_order = await ctx.prometheusModel.CreditOrder.findOne({ where: { id: order.id } });
await ctx.service.credit.order.logOrder(currentOrder); await ctx.service.credit.order.logOrder(current_order);
return ret; return ret;
} }
async createApply() {
const { ctx } = this;
const user_id = ctx.userId;
const app_type_id = ctx.appTypeId;
const app_user_id = ctx.appUserId;
const app_id = ctx.appId;
//获取签名
const timestamp = String(new Date().getTime());
const appKey = '';
const sign_params = { appKey, timestamp, };
const sign = await ctx.service.credit.common.sign(sign_params, this.config.BLACKLIST_APPLY_APPSECRET);
//调用数据接口获取个人通话风险数据 TODO
const params = { sign, phone, name, idcard, }
const url = '';
const result = await ctx.helper.send_request(url, params, { method: 'POST' });
const apply_data = {
type,
user_id,
app_user_id,
app_id,
app_type_id,
timestamp,
appkey: '',
sign,
r_code: result.data.code,
r_msg: result.data.msg,
r_order_id: result.data.data.order_id,
}
const apply = await ctx.prometheusModel.CreditApply.create(apply_data);
if (result.data.code !== 0) {
ctx.failed('数据获取异常');
}
return apply;
}
//判断用户当前三要素是否是二次查询未支付订单
async checkSecond(input) {
const { ctx } = this;
const { name, phone, id_card } = input;
const { user_id } = this;
const type = TypeConfigp['callrisk'];//个人通话类型
let first = false;//首次通过三要素验证后弹框提示:报告生成后,将无法查询其他人的报告
let second = false;//再次查询的是待支付中的订单
let order_id = null;
let report_id = null;
//判断用户是否第一次三要素核验成功
const order_filter = { arrtibutes: ['id'], where: { user_id, type, valid: 1 } }
const order_list = await ctx.prometheusModel.CreditOrder.findAll(order_filter);
if (order_list === undefined || order_list.length === 0) {
first = true;
}
//判断用户当前三要素是否是二次查询未支付订单
const be_pay_order = await ctx.service.credit.order.getBePayOrderByThree('callrisk', { name, phone, id_card });
if (be_pay_order !== null) {
second = true;
order_id = be_pay_order.id;
report_id = be_pay_order.report_id;
}
return { order_id, report_id, first, second };
}
......
...@@ -6,8 +6,42 @@ const moment = require('moment'); ...@@ -6,8 +6,42 @@ const moment = require('moment');
class CallriskService extends Service { class CallriskService extends Service {
async checkThreeElements() {
async verifyCode(code) {
const { ctx } = this;
const url = '';
const params = {
};
// const result = await ctx.helper.send_request(url, params, {});
// if (result.status !== 200) {
// ctx.failed('code error');
// }
return true;
}
async checkThreeElements(input) {
const { ctx } = this;
//姓名手机号和身份证校验
const { id_card, phone, name } = input;
let idVerify = ctx.helper.verify_id_card(id_card);
let phoneVerify = ctx.helper.isPhoneNumber(phone);
let nameVerify = ctx.helper.verify_real_name(name);
if (!idVerify) {
ctx.failed('身份证输入有误,请校验后输入');
}
if (!phoneVerify) {
ctx.failed('手机号输入有误,请校验后输入');
}
if (nameVerify !== 1) {
ctx.failed('姓名输入有误,请校验后输入');
}
//数盒魔方三要素校验
await ctx.service.credit.common.shuhemofangCheck('callrisk', { id_card, phone, name });
return true;
} }
async getCallriskDetailData(input) { async getCallriskDetailData(input) {
......
...@@ -85,8 +85,8 @@ class CommonService extends Service { ...@@ -85,8 +85,8 @@ class CommonService extends Service {
const trade_type = 'MWEB'; const trade_type = 'MWEB';
const nonce_str = ctx.helper.createNoncestr(); const nonce_str = ctx.helper.createNoncestr();
// const time_expire = expire_time ? expire_time : moment().add(1, 'days').format('YYYYMMDDHHmmss'); // const time_expire = expire_time ? expire_time : moment().add(1, 'days').format('YYYYMMDDHHmmss');
// const spbill_create_ip = ctx.helper.getClientIP(); const spbill_create_ip = ctx.helper.getClientIP();
const spbill_create_ip = '122.224.130.226'; // const spbill_create_ip = '122.224.130.226';
let json_data = { let json_data = {
appid, appid,
mch_id, mch_id,
......
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