def __init__(self, env, serial_no, mongdb='skynet'): self.env = env self.mysql = MysqlUntil(env=self.env) self.mongo = MongoUntil(self.env) result = self.mongo.query_by_user_id(mongdb, "skynet_user_info", {"serial_no": serial_no}) if not result: return self.result = result[0] self.customer_id = self.result.get('customer_id') self.user_id = self.result.get('user_id') self.user_name = factor_decrypt_identity(self.result.get('encryption_user_name')) self.event_time = self.result.get('event_time') self.cert_id = factor_decrypt_identity(self.result.get('encryption_cert_id')) self.phone = factor_decrypt_identity(self.result.get('encryption_phone')) self.create_time = self.result.get('create_time') if self.result.get('event_time'): self.event_time_add8h = self.result.get('event_time') + timedelta(hours=8) self.product_code = self.result.get('product_code') self.scene_code = self.result.get('scene_code') if self.result.get('data',{}): self.old_user_id = self.result.get('data',{}).get('oldUserId') self.colleagueContact = self.result.get('data', {}).get('colleagueContact') self.relativeContact = self.result.get('data', {}).get('relativeContact') self.friendContact = self.result.get('data', {}).get('friendContact') self.homeAddress = self.result.get('data', {}).get('homeAddress') self.unitsName =self.result.get('data', {}).get('unitsName') self.unitsAddress=self.result.get('data',{}).get('unitsAddress')
def __init__(self, env, serial_no): """ :param env: 环境 :param serial_no: 序列号 """ self.mongo = MongoUntil(env) self.serial_no = serial_no
def __init__(self, env, serial_no): self.env = env self.serial_no = serial_no self.info = InfoHelper(env=self.env, serial_no=self.serial_no) self.mysql = MysqlUntil(env=self.env) self.mongo = MongoUntil(env=self.env) #TODO 立即贷产品编号为10002 #TODO 随心借产品编号为102 #TODO 卡带王产品编号为101 #TODO 即刻贷产品编号10002(老产品) #TODO 贷款王茶品编号很多,名单库使用100(老产品) #TODO 2345借款产品编号108 # TODO 畅借款产品编号109z self.ql_product_id = 109 self.ljd_product_id = 10002 self.sxj_product_id = 102 self.kdw_product_id = 101 self.rota_jkd_product_id = 10002 self.rota_dkw_product_id = 100 self.JK_product_id = 108 #TODO 立即贷产品code为vip_code #TODO 随心借产品code为sxj_code #TODO 卡带王产品code为kdw_code self.ljd_product_code = "vip_code" self.sxj_product_code = "sxj_code" self.kdw_product_code = "kdw_code" self.JK_product_code = 'jk_code' self.QL_product_code = 'ql_loan' #TODO -9999999:风控可接受的不可抗异常,比如:调用外部黑名单超时,设置因子为self.SET_DEFAULT_VALUE_INT_9999999,这样风控可以决定是过还是拒,而不是卡件; #TODO -9999998:分母为零的情况; #TODO -9999997:性能取舍,如:根据用户设备号获取同设备号用户的逾期情况时,同设备号匹配到的用户过多,无法在要求时间内计算出结果,评估影响后,当匹配到用户数大于999时,直接设置因子值为-9999997 #TODO -9999996:脏数据,如:1、用户的身份证号为空(而根据业务逻辑身份证号本不应该为空);2、外部数据调用时返回的分数字段为空(本不应该为空的) #TODO -9999995:客观上不满足因子计算条件,如:用户登录间隔,但是用户只登陆了一次; #TODO -8888888:程序无法处理的异常,未知异常等,发生这些异常卡件,如:数据库查询失败、远程接口调用失败; self.SET_DEFAULT_VALUE_INT_9999999 = -9999999 self.SET_DEFAULT_VALUE_INT_9999998 = -9999998 self.SET_DEFAULT_VALUE_INT_9999997 = -9999997 self.SET_DEFAULT_VALUE_INT_9999996 = -9999996 self.SET_DEFAULT_VALUE_INT_9999995 = -9999995 self.SET_DEFAULT_VALUE_INT_8888888 = -8888888 #TODO 针对异常值为小数时的数据 self.SET_DEFAULT_VALUE_FLOAT_9999998 = -9999998.0 self.SET_DEFAULT_VALUE_FLOAT_9999997 = -9999997.0 self.SET_DEFAULT_VALUE_FLOAT_9999996 = -9999996.0 self.SET_DEFAULT_VALUE_FLOAT_9999995 = -9999995.0 self.SET_DEFAULT_VALUE_FLOAT_9999999 = -9999999.0 self.SET_DEFAULT_VALUE_FLOAT_9999999 = -9999999.0 #TODO 针对时间的异常值(元年-8H) self.SET_DEFAULT_VALUE_STRING_DATETIME = "0000-12-29 16:00:00" #TODO 针对数据取0或分数取0.0,数据取1 self.SET_DEFAULT_VALUE_INT_0 = 0 self.SET_DEFAULT_VALUE_FLOAT_0 = 0.0 self.SET_DEFAULT_VALUE_INT_1 = 1
def decision_status_check(self): # pass # decision_result=MongoUntil(self.env).query_by_user_id(db='skynet', collection="skynet_decision_result",find={"serial_no": self.serial_no}) # if not decision_result: # print 'make decision Failure! please check door!' # sys.exit() # if decision_result[0].get('status')=='SUCCESS': # if decision_result[0].get('mock'): # print "make decision mock true! Please change mock value to false!" # sys.exit() # else: # print "make decision Failure or Waiting! Please check!" # sys.exit() decision_result=MongoUntil(self.env).query_by_user_id(db='skynet', collection="skynet_decision_result",find={"serial_no": self.serial_no}) if not decision_result: print 'make decision Failure! please check door!' sys.exit() if decision_result[0].get('status')=='SUCCESS': if decision_result[0].get('mock'): print "make decision mock true! Please change mock value to false!" sys.exit() else: print "make decision Failure or Waiting! Please check!" sys.exit() user_info_result = MongoUntil(self.env).query_by_user_id(db='skynet', collection="skynet_user_info",find={"serial_no": self.serial_no}) if user_info_result and user_info_result[0].get("scene_code")=="collection": return decision_result=MongoUntil(self.env).query_by_user_id(db='skynet', collection="skynet_decision_result",find={"serial_no": self.serial_no}) if not decision_result: print 'make decision Failure! please check door!' sys.exit() if decision_result[0].get('status') in ("SUCCESS","MA_WAITING"): if decision_result[0].get('mock'): print "make decision mock true! Please change mock value to false!" sys.exit() if decision_result[0].get('product_code')!='jk_loan' and decision_result[0].get("main_rules").get("freeze_list_rule").get("result")==1: print "make decision freezed ! Please remove cerd_id from rota_freeze and take care of redis!" sys.exit() else: print "make decision Failure or Waiting! Please check!" sys.exit()