Commit 8b026556 authored by 张鹏程's avatar 张鹏程

提交 通讯地址

parent c06d668f
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -1211,7 +1211,7 @@ ...@@ -1211,7 +1211,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.6.6" "version": "3.4.4"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [
{
"data": {
"text/plain": [
"[(1, 'spades', 'aa'),\n",
" (1, 'spades', 'BB'),\n",
" (1, 'hearts', 'aa'),\n",
" (1, 'hearts', 'BB'),\n",
" (1, 'diamonds', 'aa'),\n",
" (1, 'diamonds', 'BB'),\n",
" (1, 'clubs', 'aa'),\n",
" (1, 'clubs', 'BB'),\n",
" (2, 'spades', 'aa'),\n",
" (2, 'spades', 'BB'),\n",
" (2, 'hearts', 'aa'),\n",
" (2, 'hearts', 'BB'),\n",
" (2, 'diamonds', 'aa'),\n",
" (2, 'diamonds', 'BB'),\n",
" (2, 'clubs', 'aa'),\n",
" (2, 'clubs', 'BB'),\n",
" (3, 'spades', 'aa'),\n",
" (3, 'spades', 'BB'),\n",
" (3, 'hearts', 'aa'),\n",
" (3, 'hearts', 'BB'),\n",
" (3, 'diamonds', 'aa'),\n",
" (3, 'diamonds', 'BB'),\n",
" (3, 'clubs', 'aa'),\n",
" (3, 'clubs', 'BB'),\n",
" (4, 'spades', 'aa'),\n",
" (4, 'spades', 'BB'),\n",
" (4, 'hearts', 'aa'),\n",
" (4, 'hearts', 'BB'),\n",
" (4, 'diamonds', 'aa'),\n",
" (4, 'diamonds', 'BB'),\n",
" (4, 'clubs', 'aa'),\n",
" (4, 'clubs', 'BB'),\n",
" (5, 'spades', 'aa'),\n",
" (5, 'spades', 'BB'),\n",
" (5, 'hearts', 'aa'),\n",
" (5, 'hearts', 'BB'),\n",
" (5, 'diamonds', 'aa'),\n",
" (5, 'diamonds', 'BB'),\n",
" (5, 'clubs', 'aa'),\n",
" (5, 'clubs', 'BB'),\n",
" (6, 'spades', 'aa'),\n",
" (6, 'spades', 'BB'),\n",
" (6, 'hearts', 'aa'),\n",
" (6, 'hearts', 'BB'),\n",
" (6, 'diamonds', 'aa'),\n",
" (6, 'diamonds', 'BB'),\n",
" (6, 'clubs', 'aa'),\n",
" (6, 'clubs', 'BB'),\n",
" (7, 'spades', 'aa'),\n",
" (7, 'spades', 'BB'),\n",
" (7, 'hearts', 'aa'),\n",
" (7, 'hearts', 'BB'),\n",
" (7, 'diamonds', 'aa'),\n",
" (7, 'diamonds', 'BB'),\n",
" (7, 'clubs', 'aa'),\n",
" (7, 'clubs', 'BB'),\n",
" (8, 'spades', 'aa'),\n",
" (8, 'spades', 'BB'),\n",
" (8, 'hearts', 'aa'),\n",
" (8, 'hearts', 'BB'),\n",
" (8, 'diamonds', 'aa'),\n",
" (8, 'diamonds', 'BB'),\n",
" (8, 'clubs', 'aa'),\n",
" (8, 'clubs', 'BB'),\n",
" (9, 'spades', 'aa'),\n",
" (9, 'spades', 'BB'),\n",
" (9, 'hearts', 'aa'),\n",
" (9, 'hearts', 'BB'),\n",
" (9, 'diamonds', 'aa'),\n",
" (9, 'diamonds', 'BB'),\n",
" (9, 'clubs', 'aa'),\n",
" (9, 'clubs', 'BB'),\n",
" (10, 'spades', 'aa'),\n",
" (10, 'spades', 'BB'),\n",
" (10, 'hearts', 'aa'),\n",
" (10, 'hearts', 'BB'),\n",
" (10, 'diamonds', 'aa'),\n",
" (10, 'diamonds', 'BB'),\n",
" (10, 'clubs', 'aa'),\n",
" (10, 'clubs', 'BB')]"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import itertools\n",
"I=[1,2,3,4,5,6,7,8,9,10]\n",
"J=['spades','hearts','diamonds','clubs']\n",
"K = ['aa',\"BB\"]\n",
"(list(itertools.product(I,J,K)))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"aa = [([1,2,3,4,5],70)]\n",
"bb= [([-9999],5),\n",
" ([-9998],5)]\n",
"cc= [([0],5),([5],5)]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"1.6"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"8/5"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"14"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"30-16"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"71.0 8.0 8.0 7 7.0\n"
]
}
],
"source": [
"print(round(101*0.7,0),round(101*0.08,0),round(101*0.08,0),round(101*0.07,),round(101*0.07,0))\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"([1, 2, 3, 4, 5], 80)\n"
]
}
],
"source": [
"for i ,(a,b,c) in enumerate(zip(aa,bb,cc)):\n",
" print(a)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"0.7+0.06+0.06+0.10+0.08"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"101 - (round(101*0.4,0)+round(101*0.5,0)+round(101*0.08,0)+round(101*0.01,0)+round(101*0.01)) "
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(10*0.01,0)"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"50.5"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"101*0.5"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
This diff is collapsed.
...@@ -2500,7 +2500,7 @@ ...@@ -2500,7 +2500,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.6.6" "version": "3.4.4"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
This diff is collapsed.
...@@ -45,7 +45,7 @@ con_comservice = create_engine('mysql+pymysql://rc-historical-fetch-user:s@tkZuE ...@@ -45,7 +45,7 @@ con_comservice = create_engine('mysql+pymysql://rc-historical-fetch-user:s@tkZuE
,echo=False) ,echo=False)
con_comservice_v3 = create_engine('mysql+pymysql://pengcheng_zhang:phBnseTGbmUd7cKI@fengkong-tidb.quantgroups.com:4010/rc_comservice_data_pool_v3?charset=utf8' con_comservice_v3 = create_engine('mysql+pymysql://pengcheng_zhang:phBnseTGbmUd7cKI@fengkong-tidb.quantgroups.com:4010/rc_comservice_data_pool_v3?charset=utf8'
,echo=False) ,echo=False)
con_lkbadmin = create_engine('mysql+pymysql://lkbadmin_feature_r:uij89knb762er4cgs67@172.30.220.16:33403/lkbadmin?charset=utf8' con_lkbadmin = create_engine('mysql+pymysql://lkbadmin_feature_r:uij89knb762er4cgs67@172.30.220.16:33403/lkbadmin?charset=utf8'
,echo=False) ,echo=False)
......
...@@ -226,7 +226,3 @@ class passdue_day_tiqian(): #没有提前还款的返回什么 ...@@ -226,7 +226,3 @@ class passdue_day_tiqian(): #没有提前还款的返回什么
self._result["passdue_day_tiqian"]["value"] = _passdue_day_tiqian self._result["passdue_day_tiqian"]["value"] = _passdue_day_tiqian
return self._result return self._result
# -*- coding:utf-8 -*-
from features.Base_Features import BaseFeatures as BF
from service import Sql_complexOrder,Sql_contactsOperator
from service.Sql_revealTheBottomChannel import *
import pandas as pd
import datetime
class __INIT__(BF):
"""通讯录地址特征"""
def __init__(self):
time_now = datetime.datetime.strptime(datetime.datetime.strftime(datetime.datetime.now(),'%Y-%m-%d %H:%M:%S'),'%Y-%m-%d %H:%M:%S')
BF._apply_at = time_now
self._df_apply = pd.DataFrame()
if self.orderId:
BF._df_apply = getSql_userApplyQuotaRecord_apply_from(str(tuple([self.user_id])).replace(',)',')'))
BF._df_apply_from = BF._df_apply.loc[BF._df_apply['order_no'] == self.orderId]
_apply_from = BF._df_apply_from['apply_from'].values[0]
BF._df_loan_apply = BF._df_apply.loc[BF._df_apply['apply_from'] == _apply_from]
if self._df_apply_from.empty == False:
BF._apply_at = datetime.datetime.strptime(BF._df_apply_from['apply_time'].astype(str).values[0],'%Y-%m-%d %H:%M:%S')
BF.df_loan_all = Sql_contactsOperator.getSql_loanAll(str(tuple([self.user_id])).replace(',)',')'))
BF.df_loan_rollBack = pd.DataFrame()
if BF.df_loan_all.empty == False:
BF.df_loan_rollBack = Sql_complexOrder.get_Loan_rollBack(BF.df_loan_all,BF._apply_at)
class 进件订单所在渠道的未结清订单总数():
def feature(self):
_进件订单所在渠道的未结清订单总数 = -9999999
if self._df_loan_apply.empty == False:
df_loan_apply = self._df_loan_apply
loan_id = df_loan_apply['loan_id'].tolist()
if self.df_loan_rollBack.empty == False:
df_loan = self.df_loan_rollBack.loc[self.df_loan_rollBack['loan_id'].isin(loan_id)]
if df_loan.empty == False:
df_loan_uncleared = df_loan.loc[df_loan['progress'] == 15]
_进件订单所在渠道的未结清订单总数 = len(set(df_loan_uncleared['loan_id']))
self._result['进件订单所在渠道的未结清订单总数']['value'] = _进件订单所在渠道的未结清订单总数
return self._result
class 进件订单在兜底渠道未结清订单总数():
def feature(self):
_进件订单在兜底渠道未结清订单总数 = -9999999
if self.df_loan_rollBack.empty == False:
df_loan = self.df_loan_rollBack.loc[self.df_loan_rollBack['business_type'] == 9]
if df_loan.empty == False:
df_loan_uncleared = df_loan.loc[(df_loan['progress'] == 15 )]
_进件订单在兜底渠道未结清订单总数 = len(set(df_loan_uncleared['loan_id']))
self._result['进件订单在兜底渠道未结清订单总数']['value'] = _进件订单在兜底渠道未结清订单总数
return self._result
This diff is collapsed.
...@@ -5,7 +5,7 @@ from service.Mapping import Mapping ...@@ -5,7 +5,7 @@ from service.Mapping import Mapping
from utils import JsonUtil from utils import JsonUtil
from service.Sql_server import * from service.Sql_server import *
from features.Base_Features import BaseFeatures from features.Base_Features import BaseFeatures
# from service.Sql_vcc import *
class BaseHandler(tornado.web.RequestHandler): class BaseHandler(tornado.web.RequestHandler):
# 初始化映射关系 # 初始化映射关系
mapping = Mapping() mapping = Mapping()
...@@ -30,9 +30,6 @@ class BaseHandler(tornado.web.RequestHandler): ...@@ -30,9 +30,6 @@ class BaseHandler(tornado.web.RequestHandler):
JsonUtil.Constants.Msg_Params_Error.format('user_uuid',self._uuid))) JsonUtil.Constants.Msg_Params_Error.format('user_uuid',self._uuid)))
else: else:
df_user_id = get_sql_user_id(self._uuid) df_user_id = get_sql_user_id(self._uuid)
# """验证vcc_uuid"""
# df_user_id = get_sql_vcc_id(self._uuid)
if df_user_id.empty: if df_user_id.empty:
self.write(JsonUtil.build_json(JsonUtil.Constants.Code_Params_Error, self.write(JsonUtil.build_json(JsonUtil.Constants.Code_Params_Error,
JsonUtil.Constants.Msg_Params_Error.format('user_uuid',self._uuid))) JsonUtil.Constants.Msg_Params_Error.format('user_uuid',self._uuid)))
......
requests==2.18.4
tornado==5.0.1
logging
redis
PyMysql==0.8.0
pandas==0.22.0
numpy==1.14.2
tornado==5.0.1
xlrd==1.1.0
scrapy==1.6.0
SQLAlchemy==1.2.5
jupyter
paramiko
cpca
lxml==3.8.0
\ No newline at end of file
import pandas as pd
from config.concat_sql import *
def getSql_userApplyQuotaRecord_apply_from(user_id):
"""通过用户ID 查询用户的历史提交申请次数,包括新的申请提交方式和老的申请提交方式 ,apply_status 1 拒绝,0 通过, 对渠道不做限制"""
_sql = """
SELECT
l.user_id,
l.id loan_id,
e.order_no,
if(ls.created_at is not null,
ls.created_at,
l.created_at) as apply_time,
if(l.progress in (6, 8, 19), 1, 0) apply_status,
l.created_from as apply_from
FROM loan_application_history l
LEFT JOIN loan_account_ext e ON e.loan_id = l.id
left join loan_submit_info ls on ls.loan_id = l.id
WHERE l.user_id in {0}
AND e.loan_id IS NULL
union
select
aqr.user_id ,
lae.loan_id,
aqr.order_no,
aqr.apply_time,
aqr.apply_status,
aqr.apply_from
from apply_quota_record as aqr
left join loan_account_ext as lae on lae.order_no = aqr.order_no
where aqr.user_id in {0}
""".format(user_id)
_df = pd.read_sql(_sql,con = con_tuomin_xyqb)
return _df
def getSql_RevealTheBottomChannel(user_id,apply_time):
"""获取用户所有兜底渠道订单"""
_sql = """
SELECT m.*
FROM loan_application_history l
JOIN loan_application_manifest_history m ON l.id = m.loan_application_history_id
WHERE l.user_id in {0}
AND l.progress IN (15,16,65)
AND l.business_type = 9
and m.loan_paid_at < '{1}'
order by m.loan_paid_at desc
""".format(user_id,apply_time)
_df = pd.read_sql(_sql,con = con_tuomin_xyqb)
return _df
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
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