tp_api.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. import traceback
  2. import flask
  3. import time
  4. import datetime
  5. import requests
  6. from flask import Blueprint
  7. from flask_cors import CORS
  8. from dateutil.relativedelta import relativedelta
  9. from logs.getlogs import *
  10. from spiders.taiping.baojia.tp_bfjs import tp_calculation
  11. from spiders.taiping.guishu.tp_config import *
  12. from spiders.taiping.guishu.tp_feichexian import get_feichexian
  13. from spiders.taiping.hebao.tp_hebao import TP_hebao
  14. from spiders.taiping.yingxiang.tp_phoupload import photo_up
  15. from spiders.taiping.baodan.tp_state import tp_Check
  16. from spiders.taiping.baodan.tp_bddownload import get_baodan
  17. from spiders.taiping.hebao.tp_revocation import TP_revocation
  18. taiping=Blueprint('tp',__name__)
  19. CORS(taiping, supports_credentials=True)
  20. @taiping.route('/tp/login',methods=['post'])
  21. def tp_login():
  22. userinfo= flask.request.json
  23. ret=set_userinfo(userinfo)
  24. return ret,200, {'Content-Type': 'application/json'}
  25. @taiping.route('/tp/bfjs',methods=['post'])
  26. def tp_bfjs():
  27. log_starttime = time.time()
  28. #车辆人员信息
  29. username=flask.request.json.get('username')
  30. modelCName = flask.request.json.get('carInfo').get('modelcname')
  31. engineNo = flask.request.json.get('carInfo').get('engineNo')
  32. vin = flask.request.json.get('carInfo').get('vinNo')
  33. licenseNo = flask.request.json.get('carInfo').get('licenseNo')
  34. seatCount = flask.request.json.get('carInfo').get('seatCount')
  35. #排量
  36. enginedesc=flask.request.json.get('carInfo').get('enginedesc')
  37. #核定载质量
  38. limitLoad=flask.request.json.get('carInfo').get('limitLoad')
  39. # 整备质量
  40. completeKerbMass = flask.request.json.get('carInfo').get('completeKerbMass')
  41. purchasePrice = flask.request.json.get('carInfo').get('purchasePrice')
  42. energyType = flask.request.json.get('carInfo').get('energyType')
  43. vehicleUse=flask.request.json.get('carInfo').get('vehicleUse')
  44. identifyNumber=flask.request.json.get('ownerInfo').get('identifyNumber')
  45. uname = flask.request.json.get('ownerInfo').get('name')
  46. address = flask.request.json.get('ownerInfo').get('addr')
  47. phone_number = flask.request.json.get('ownerInfo').get('mobile')
  48. tb_identifyNumber = flask.request.json.get('policyHolderInfo').get('identifyNumber')
  49. tb_uname = flask.request.json.get('policyHolderInfo').get('name')
  50. tb_address = flask.request.json.get('policyHolderInfo').get('addr')
  51. tb_phone_number = flask.request.json.get('policyHolderInfo').get('mobile')
  52. bb_identifyNumber = flask.request.json.get('insuredPersonInfo').get('identifyNumber')
  53. bb_uname = flask.request.json.get('insuredPersonInfo').get('name')
  54. bb_address = flask.request.json.get('insuredPersonInfo').get('addr')
  55. bb_phone_number = flask.request.json.get('insuredPersonInfo').get('mobile')
  56. registerDate=flask.request.json.get('carInfo').get('registerDate')
  57. issueDate=flask.request.json.get('carInfo').get('issueDate')
  58. #交强过户标志
  59. isTransfer=flask.request.json.get('carInfo').get('transferFlag')
  60. #商业过户标志
  61. isTransferbi = flask.request.json.get('carInfo').get('transferFlagBi')
  62. #脱保标识
  63. # isOutOfInsurance=flask.request.json.get('carInfo').get('outOfInsurance')
  64. #非车险信息
  65. accidentalDriving=flask.request.json.get('accidentalDriving')
  66. #交强险、商业险是否选择。起始、结束时间默认参数
  67. jiaoqiang_chooseFlag = 'False'
  68. chesun_chooseFlag = 'False'
  69. shangye_chooseFlag='False'
  70. jiaoqiang_startDate = str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
  71. jiaoqiang_endDate = str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
  72. chesun_startDate= str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
  73. chesun_endDate= str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
  74. # 交强险、商业险是否选择。起始、结束时间传入参数
  75. riskList = flask.request.json.get('riskList')
  76. for i in riskList:
  77. if i.get('riskCode') == '0507':
  78. jiaoqiang_chooseFlag = 'on'
  79. jiaoqiang_startDate = i.get('startDate')
  80. jiaoqiang_startDate = jiaoqiang_startDate
  81. jiaoqiang_endDate = i.get('endDate')
  82. jiaoqiang_endDate = "".join(jiaoqiang_endDate)
  83. elif i.get('riskCode') == '0510':
  84. shangye_chooseFlag='on'
  85. chesun_startDate = i.get('startDate')
  86. chesun_startDate = "".join(chesun_startDate)
  87. chesun_endDate = i.get('endDate')
  88. chesun_endDate = "".join(chesun_endDate)
  89. #附加险默认参数
  90. sanzhe_chooseFlag='False'
  91. sanzhe_amount='10'
  92. sjzeren_chooseFlag='False'
  93. sjzeren_amount='30000'
  94. ckzeren_chooseFlag='False'
  95. ckzeren_amount='30000'
  96. huahen_chooseFlag='False'
  97. huahen_amount='2000'
  98. fujiachesun_chooseFlag='False'
  99. fujiachesun_amount='0.05'
  100. fujiasanzhe_chooseFlag = 'False'
  101. fujiasanzhe_amount = '0.05'
  102. fujiasiji_chooseFlag = 'False'
  103. fujiasiji_amount = '0.05'
  104. fujiachengke_chooseFlag = 'False'
  105. fujiachengke_amount = '0.05'
  106. fujia_jiejiari_chooseFlag = 'False'
  107. fujia_jiejiari_amount = '2000000'
  108. ybw_sanzhe_chooseFlag='False'
  109. ybw_sanzhe_amount='0'
  110. ybw_siji_chooseFlag='False'
  111. ybw_siji_amount='0'
  112. ybw_ck_chooseFlag='False'
  113. ybw_ck_amount='0'
  114. #附件险传入参数
  115. kindList = flask.request.json.get('kindList')
  116. for ii in kindList:
  117. if ii.get('kindCode')=='B':
  118. sanzhe_chooseFlag='on'
  119. sanzhe_amount=str(int(ii.get('amount')))
  120. elif ii.get('kindCode')=='A':
  121. chesun_chooseFlag = 'on'
  122. elif ii.get('kindCode')=='D3':
  123. sjzeren_chooseFlag = 'on'
  124. sjzeren_amount = ii.get('amount')
  125. elif ii.get('kindCode')=='D4':
  126. ckzeren_chooseFlag = 'on'
  127. ckzeren_amount = ii.get('unitAmount')
  128. elif ii.get('kindCode')=='L':
  129. huahen_chooseFlag = 'on'
  130. huahen_amount = ii.get('amount')
  131. elif ii.get('kindCode')=='MJ1':
  132. fujiachesun_chooseFlag = 'on'
  133. fujiachesun_amount = str(int(ii.get('deductibleRate'))/100)
  134. elif ii.get('kindCode')=='MJ2':
  135. fujiasanzhe_chooseFlag = 'on'
  136. fujiasanzhe_amount = str(int(ii.get('deductibleRate'))/100)
  137. elif ii.get('kindCode')=='MJ3':
  138. fujiasiji_chooseFlag = 'on'
  139. fujiasiji_amount = str(int(ii.get('deductibleRate'))/100)
  140. elif ii.get('kindCode')=='MJ4':
  141. fujiachengke_chooseFlag = 'on'
  142. fujiachengke_amount = str(int(ii.get('deductibleRate'))/100)
  143. elif ii.get('kindCode')=='BD':
  144. fujia_jiejiari_chooseFlag = 'on'
  145. fujia_jiejiari_amount = ii.get('amount')
  146. elif ii.get('kindCode') == 'SY_FJ_YBW1':
  147. ybw_sanzhe_chooseFlag = 'on'
  148. ybw_sanzhe_amount = ii.get('amount')
  149. elif ii.get('kindCode') == 'SY_FJ_YBW3':
  150. ybw_siji_chooseFlag = 'on'
  151. ybw_siji_amount = ii.get('amount')
  152. elif ii.get('kindCode') == 'SY_FJ_YBW2':
  153. ybw_ck_chooseFlag = 'on'
  154. ybw_ck_amount = ii.get('unitAmount')
  155. carinfo = tp_calculation(#token、车辆、人员信息
  156. username,modelCName,engineNo,vin,licenseNo,seatCount,purchasePrice,vehicleUse,enginedesc,limitLoad,completeKerbMass,energyType,
  157. identifyNumber, uname, address,phone_number,
  158. tb_identifyNumber, tb_uname, tb_address, tb_phone_number,
  159. bb_identifyNumber, bb_uname, bb_address, bb_phone_number,
  160. registerDate,issueDate,isTransfer,isTransferbi,
  161. #交强险、商业险是否选择,起止日期信息
  162. jiaoqiang_chooseFlag,chesun_chooseFlag,jiaoqiang_startDate,jiaoqiang_endDate,chesun_startDate,
  163. chesun_endDate,shangye_chooseFlag,
  164. #三者责任险、价格,司机、乘客责任险、价格,划痕险、价格
  165. sanzhe_chooseFlag,sanzhe_amount,sjzeren_chooseFlag,sjzeren_amount,ckzeren_chooseFlag,ckzeren_amount,huahen_chooseFlag,huahen_amount,
  166. #附加险信息
  167. fujiachesun_chooseFlag,fujiachesun_amount ,fujiasanzhe_chooseFlag ,fujiasanzhe_amount ,
  168. fujiasiji_chooseFlag,fujiasiji_amount ,fujiachengke_chooseFlag ,fujiachengke_amount ,
  169. fujia_jiejiari_chooseFlag ,fujia_jiejiari_amount,
  170. ybw_sanzhe_chooseFlag, ybw_sanzhe_amount, ybw_siji_chooseFlag, ybw_siji_amount, ybw_ck_chooseFlag, ybw_ck_amount,
  171. #脱保车标识
  172. # isOutOfInsurance,
  173. #非车险信息
  174. accidentalDriving
  175. )
  176. try:
  177. ret = carinfo.main()
  178. log_endtime = time.time()
  179. get_bfjslogger(tp_bj_log, log_endtime, log_starttime, '太平')
  180. return ret, 200, {'Content-Type': 'application/json'}
  181. except Exception as err:
  182. log_endtime = time.time()
  183. get_bfjslogger(tp_bj_log, log_endtime, log_starttime, '太平')
  184. get_errlogger(tp_bj_log, err, traceback.format_exc() + '-------------- \n')
  185. return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
  186. @taiping.route('/tp/jiaofei', methods=['post'])
  187. def tp_jiaofei():
  188. log_starttime = time.time()
  189. plyappno = flask.request.json.get('plyappno')
  190. Hebao = TP_hebao(plyappno)
  191. try:
  192. ret = Hebao.main()
  193. log_endtime = time.time()
  194. get_hblogger(tp_hb_log, log_endtime, log_starttime, '太平')
  195. return ret, 200, {'Content-Type': 'application/json'}
  196. except Exception as err:
  197. log_endtime = time.time()
  198. get_bfjslogger(tp_hb_log, log_endtime, log_starttime, '太平')
  199. get_errlogger(tp_hb_log, err, traceback.format_exc() + '-------------- \n')
  200. return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
  201. @taiping.route('/tp/yxsc',methods=['post'])
  202. def tp_yxsc():
  203. plyappno = flask.request.json.get('plyappno')
  204. photolist = flask.request.json.get('b64pho_list')
  205. ret=photo_up(plyappno,photolist).main()
  206. return ret, 200, {'Content-Type': 'application/json'}
  207. @taiping.route('/tp/check',methods=['post'])
  208. def tp_check():
  209. plyappno = flask.request.json.get('plyappno')
  210. ret=tp_Check(plyappno).main()
  211. return ret, 200, {'Content-Type': 'application/json'}
  212. @taiping.route('/tp/baodan',methods=['post'])
  213. def tp_baodan():
  214. plyappno = flask.request.json.get('plyappno')
  215. ret=get_baodan(plyappno).main()
  216. return ret, 200, {'Content-Type': 'application/json'}
  217. @taiping.route('/tp/fcx',methods=['post'])
  218. def tp_get_fcx():
  219. ret=get_feichexian()
  220. return ret, 200, {'Content-Type': 'application/json'}
  221. @taiping.route('/tp/revocation',methods=['post'])
  222. def tp_revocation():
  223. plyappno = flask.request.json.get('plyappno')
  224. ret = TP_revocation(plyappno).main()
  225. return ret, 200, {'Content-Type': 'application/json'}