ed_api.py 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. import traceback
  2. import flask
  3. import time
  4. import datetime
  5. from flask import Blueprint
  6. from flask_cors import CORS
  7. from dateutil.relativedelta import relativedelta
  8. from logs.getlogs import *
  9. from spiders.edian.guishu.ed_config import *
  10. from spiders.edian.baojia.ed_bfjs import ed_calculation
  11. from spiders.edian.guishu.ed_feichexian import get_feichexian
  12. edian=Blueprint('ed',__name__)
  13. CORS(edian, supports_credentials=True)
  14. @edian.route('/ed/login',methods=['post'])
  15. def ed_login():
  16. userinfo=flask.request.json
  17. ret=set_userinfo(userinfo)
  18. return ret,200, {'Content-Type': 'application/json'}
  19. @edian.route('/ed/bfjs',methods=['post'])
  20. def ed_bfjs():
  21. log_starttime = time.time()
  22. #车辆人员信息
  23. username=flask.request.json.get('username')
  24. modelCName = flask.request.json.get('carInfo').get('modelcname')
  25. engineNo = flask.request.json.get('carInfo').get('engineNo')
  26. vin = flask.request.json.get('carInfo').get('vinNo')
  27. licenseNo = flask.request.json.get('carInfo').get('licenseNo')
  28. seatCount = flask.request.json.get('carInfo').get('seatCount')
  29. vehicleUse=flask.request.json.get('carInfo').get('vehicleUse')
  30. #核定载质量
  31. limitLoad=flask.request.json.get('carInfo').get('limitLoad')
  32. cartype=flask.request.json.get('carInfo').get('cartype')
  33. #商业折扣系数
  34. discount=flask.request.json.get('discount')
  35. #订单号
  36. plyappno=flask.request.json.get('plyappno')
  37. purchasePrice = flask.request.json.get('carInfo').get('purchasePrice')
  38. identifyNumber=flask.request.json.get('ownerInfo').get('identifyNumber')
  39. uname = flask.request.json.get('ownerInfo').get('name')
  40. address = flask.request.json.get('ownerInfo').get('addr')
  41. phone_number = flask.request.json.get('ownerInfo').get('mobile')
  42. tb_identifyNumber = flask.request.json.get('policyHolderInfo').get('identifyNumber')
  43. tb_uname = flask.request.json.get('policyHolderInfo').get('name')
  44. tb_address = flask.request.json.get('policyHolderInfo').get('addr')
  45. tb_phone_number = flask.request.json.get('policyHolderInfo').get('mobile')
  46. bb_identifyNumber = flask.request.json.get('insuredPersonInfo').get('identifyNumber')
  47. bb_uname = flask.request.json.get('insuredPersonInfo').get('name')
  48. bb_address = flask.request.json.get('insuredPersonInfo').get('addr')
  49. bb_phone_number = flask.request.json.get('insuredPersonInfo').get('mobile')
  50. registerDate=flask.request.json.get('carInfo').get('registerDate')
  51. issueDate=flask.request.json.get('carInfo').get('issueDate')
  52. isTransfer=flask.request.json.get('carInfo').get('transferFlag')
  53. secondhandcarflag=flask.request.json.get('carInfo').get('usedCar')
  54. #非车险参数
  55. accidentalDrivingVo=flask.request.json.get('accidentalDriving')
  56. #交强险、商业险是否选择。起始、结束时间默认参数
  57. jiaoqiang_chooseFlag = 'False'
  58. chesun_chooseFlag = 'False'
  59. shangye_chooseFlag='False'
  60. jiaoqiang_startDate = str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
  61. jiaoqiang_endDate = str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
  62. chesun_startDate= str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
  63. chesun_endDate= str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
  64. # 交强险、商业险是否选择。起始、结束时间传入参数
  65. riskList = flask.request.json.get('riskList')
  66. for i in riskList:
  67. if i.get('riskCode') == '0507':
  68. jiaoqiang_chooseFlag = 'on'
  69. jiaoqiang_startDate = i.get('startDate')
  70. jiaoqiang_startDate = jiaoqiang_startDate
  71. jiaoqiang_endDate = i.get('endDate')
  72. jiaoqiang_endDate = "".join(jiaoqiang_endDate)
  73. elif i.get('riskCode') == '0510':
  74. shangye_chooseFlag='on'
  75. chesun_startDate = i.get('startDate')
  76. chesun_startDate = "".join(chesun_startDate)
  77. chesun_endDate = i.get('endDate')
  78. chesun_endDate = "".join(chesun_endDate)
  79. #附加险默认参数
  80. sanzhe_chooseFlag='False'
  81. sanzhe_amount='10'
  82. sjzeren_chooseFlag='False'
  83. sjzeren_amount='30000'
  84. ckzeren_chooseFlag='False'
  85. ckzeren_amount='30000'
  86. huahen_chooseFlag='False'
  87. huahen_amount='2000'
  88. fujiachesun_chooseFlag='False'
  89. fujiachesun_amount='0.05'
  90. fujiasanzhe_chooseFlag = 'False'
  91. fujiasanzhe_amount = '0.05'
  92. fujiasiji_chooseFlag = 'False'
  93. fujiasiji_amount = '0.05'
  94. fujiachengke_chooseFlag = 'False'
  95. fujiachengke_amount = '0.05'
  96. fujia_jiejiari_chooseFlag = 'False'
  97. fujia_jiejiari_amount = '2000000'
  98. ybw_sanzhe_chooseFlag='False'
  99. ybw_sanzhe_amount='0'
  100. ybw_siji_chooseFlag='False'
  101. ybw_siji_amount='0'
  102. ybw_ck_chooseFlag='False'
  103. ybw_ck_amount='0'
  104. #附件险传入参数
  105. kindList = flask.request.json.get('kindList')
  106. for ii in kindList:
  107. if ii.get('kindCode')=='B':
  108. sanzhe_chooseFlag='on'
  109. sanzhe_amount=str(int(ii.get('amount')))
  110. elif ii.get('kindCode')=='A':
  111. chesun_chooseFlag = 'on'
  112. elif ii.get('kindCode')=='D3':
  113. sjzeren_chooseFlag = 'on'
  114. sjzeren_amount = ii.get('amount')
  115. elif ii.get('kindCode')=='D4':
  116. ckzeren_chooseFlag = 'on'
  117. ckzeren_amount = ii.get('unitAmount')
  118. elif ii.get('kindCode')=='L':
  119. huahen_chooseFlag = 'on'
  120. huahen_amount = ii.get('amount')
  121. elif ii.get('kindCode')=='MJ1':
  122. fujiachesun_chooseFlag = 'on'
  123. fujiachesun_amount = ii.get('deductibleRate')
  124. elif ii.get('kindCode')=='MJ2':
  125. fujiasanzhe_chooseFlag = 'on'
  126. fujiasanzhe_amount = ii.get('deductibleRate')
  127. elif ii.get('kindCode')=='MJ3':
  128. fujiasiji_chooseFlag = 'on'
  129. fujiasiji_amount = ii.get('deductibleRate')
  130. elif ii.get('kindCode')=='MJ4':
  131. fujiachengke_chooseFlag = 'on'
  132. fujiachengke_amount = ii.get('deductibleRate')
  133. elif ii.get('kindCode')=='BD':
  134. fujia_jiejiari_chooseFlag= 'on'
  135. fujia_jiejiari_amount = ii.get('amount')
  136. elif ii.get('kindCode') == 'SY_FJ_YBW1':
  137. ybw_sanzhe_chooseFlag = 'on'
  138. ybw_sanzhe_amount = ii.get('amount')
  139. elif ii.get('kindCode') == 'SY_FJ_YBW3':
  140. ybw_siji_chooseFlag = 'on'
  141. ybw_siji_amount = ii.get('amount')
  142. elif ii.get('kindCode') == 'SY_FJ_YBW2':
  143. ybw_ck_chooseFlag = 'on'
  144. ybw_ck_amount = ii.get('unitAmount')
  145. carinfo = ed_calculation(#token、车辆、人员信息
  146. username,modelCName,engineNo,vin,licenseNo,seatCount,purchasePrice,vehicleUse,limitLoad,cartype,
  147. identifyNumber, uname, address,phone_number,
  148. tb_identifyNumber, tb_uname, tb_address, tb_phone_number,
  149. bb_identifyNumber, bb_uname, bb_address, bb_phone_number,
  150. registerDate,issueDate,isTransfer,
  151. #交强险、商业险是否选择,起止日期信息
  152. jiaoqiang_chooseFlag,chesun_chooseFlag,jiaoqiang_startDate,jiaoqiang_endDate,chesun_startDate,
  153. chesun_endDate,shangye_chooseFlag,
  154. #三者责任险、价格,司机、乘客责任险、价格,划痕险、价格
  155. sanzhe_chooseFlag,sanzhe_amount,sjzeren_chooseFlag,sjzeren_amount,ckzeren_chooseFlag,ckzeren_amount,huahen_chooseFlag,huahen_amount,
  156. #附加险信息
  157. fujiachesun_chooseFlag,fujiachesun_amount ,fujiasanzhe_chooseFlag ,fujiasanzhe_amount ,
  158. fujiasiji_chooseFlag,fujiasiji_amount ,fujiachengke_chooseFlag ,fujiachengke_amount ,
  159. fujia_jiejiari_chooseFlag ,fujia_jiejiari_amount,
  160. ybw_sanzhe_chooseFlag, ybw_sanzhe_amount, ybw_siji_chooseFlag, ybw_siji_amount, ybw_ck_chooseFlag, ybw_ck_amount,
  161. #非车险参数
  162. accidentalDrivingVo,secondhandcarflag,discount,plyappno
  163. )
  164. try:
  165. ret = carinfo.main()
  166. log_endtime = time.time()
  167. get_bfjslogger(ed_bj_log, log_endtime, log_starttime, 'E店')
  168. return ret, 200, {'Content-Type': 'application/json'}
  169. except Exception as err:
  170. log_endtime = time.time()
  171. get_bfjslogger(ed_bj_log, log_endtime, log_starttime, 'E店')
  172. get_errlogger(ed_bj_log, err, traceback.format_exc() + '-------------- \n')
  173. print(err)
  174. if 'city' in str(err) or 'area' in str(err) or 'province' in str(err) :
  175. return {'code': 400, 'message': '人员地区获取失败'}, 200, {'Content-Type': 'application/json'}
  176. return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
  177. @edian.route('/ed/fcx',methods=['post'])
  178. def ed_get_fcx():
  179. username = flask.request.json.get('username')
  180. ret=get_feichexian(username)
  181. return ret, 200, {'Content-Type': 'application/json'}