Commit fe53f03e authored by linfang.wang's avatar linfang.wang

提取业务数据OK

parent 80ece739
......@@ -2,7 +2,7 @@ import pandas as pd
from data.datasource.mysqldb import *
from data.samples import mysqlquery
'''
目的:提供业务数据,包括 order_no,loan_id,用户类型【直接使用risk_info】,渠道,申请时间,拒绝原因,首逾天数,最大逾期天数,放款期数
目的:提供业务数据,包括 order_no,loan_id,用户类型,支持策略用risk_info,渠道,申请时间,拒绝原因,首逾天数,最大逾期天数,放款期数
'''
......@@ -12,10 +12,11 @@ def query_risk_info(order_nos):
:param order_nos:
:return:order_no,user_loan_type-- 策略使用的用户类型,审核拒绝原因,是否黑名单拒绝或其他拒绝
'''
# audit_result :1: 通过,其他未通过
res = []
sql = '''
select biz_no as order_no,
ifnull(JSON_EXTRACT(audit_context_data, '$.user_loan_type_v3'),
ifnull(JSON_EXTRACT( audit_context_data, '$.user_loan_type_v3'),
JSON_EXTRACT(audit_context_data, '$.user_loan_type_v4')) as user_loan_type,
JSON_EXTRACT(audit_context_data, '$.filter_info_in_black') qg_black,
JSON_EXTRACT(audit_context_data, '$."third_data_source#xy_neg_code"') as xy_black,
......@@ -28,11 +29,11 @@ def query_risk_info(order_nos):
res.append(pd.read_sql(sql % str(tuple(order_nos[i:i + 1000])), engine_risk))
df= pd.concat(res)
df.drop_duplicates(['order_no'],inplace=True)
df['refuse']='其他'
df.loc[df.audit_result==1,'refuse']='审核通过'
df.loc[(df.audit_result!=1) & (df.qg_black> 0),'refuse']='命中QG黑名单'
df.loc[(df.audit_result != 1) & (df.xy_black=='0'), 'refuse'] = '命中新颜黑名单'
return df[['order_no','uesr_loan_type','refuse']]
df['reason']='未知'
df.loc[df.audit_result==1,'reason']='审核通过'
df.loc[(df.audit_result!=1) & (df.qg_black> 0),'reason']='命中QG黑名单'
df.loc[(df.audit_result != 1) & (df.xy_black=='0'), 'reason'] = '命中新颜黑名单'
return df[['order_no','uesr_loan_type','reason']]
def query_byloanid(loan_ids):
'''
......@@ -42,7 +43,7 @@ def query_byloanid(loan_ids):
'''
sql='''
select t1.loan_id,t1.user_id,t2.order_no,t2.contract_term,if(t2.term_no==1,t2.passdue_day,null) as passdue_day,
t1.applied_at,t1.applied_type,t1.applied_channel,if(t2.loan_id is not null,'已放款',if(t1.approval==1,'审核通过','审核未通过')) as reason,
t1.applied_at,t1.applied_type,t1.applied_channel,if(t2.loan_id is not null,'已放款',if(t1.approval==1,'审核通过','审核未通过')) as refuse,
max(t2.passdue_day) as max_passdue_day
from loan_application t1
left join loan_repay t2 on t1.loan_id=t2.loan_id and t2.repayment_status!=4
......@@ -68,7 +69,7 @@ def query_by_orderno(order_nos):
'''
sql = '''
select t1.loan_id,t1.user_id,t2.order_no,t2.contract_term,if(t2.term_no==1,t2.passdue_day,null) as passdue_day,
t1.applied_at,t1.applied_type,t1.applied_channel,if(t2.loan_id is not null,'已放款',if(t1.approval==1,'审核通过','审核未通过')) as reason,
t1.applied_at,t1.applied_type,t1.applied_channel,if(t2.loan_id is not null,'已放款',if(t1.approval==1,'审核通过','审核未通过')) as refuse,
max(t2.passdue_day) as max_passdue_day
from loan_application t1
left join loan_repay t2 on t1.loan_id=t2.loan_id and t2.repayment_status!=4
......@@ -97,7 +98,7 @@ def query_bydate(start_date,end_date,is_loan=True):
if is_loan:
sql='''
select t1.loan_id,t1.user_id,t2.order_no,t2.contract_term,if(t2.term_no==1,t2.passdue_day,null) as passdue_day,
t1.applied_at,t1.applied_type,t1.applied_channel,if(t2.loan_id is not null,'已放款',if(t1.approval==1,'审核通过','审核未通过')) as reason,
t1.applied_at,t1.applied_type,t1.applied_channel,if(t2.loan_id is not null,'已放款',if(t1.approval==1,'审核通过','审核未通过')) as refuse,
max(t2.passdue_day) as max_passdue_day
from loan_application t1
join loan_repay t2 on t1.loan_id=t2.loan_id and t2.repayment_status!=4
......@@ -108,7 +109,7 @@ def query_bydate(start_date,end_date,is_loan=True):
else:
sql='''
select t1.loan_id,t1.user_id,t2.order_no,t2.contract_term,if(t2.term_no==1,t2.passdue_day,null) as passdue_day,
t1.applied_at,t1.applied_type,t1.applied_channel,if(t2.loan_id is not null,'已放款',if(t1.approval==1,'审核通过','审核未通过')) as reason,
t1.applied_at,t1.applied_type,t1.applied_channel,if(t2.loan_id is not null,'已放款',if(t1.approval==1,'审核通过','审核未通过')) as refuse,
max(t2.passdue_day) as max_passdue_day
from loan_application t1
left join loan_repay t2 on t1.loan_id=t2.loan_id and t2.repayment_status!=4
......
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