as_api.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  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.ansheng.baojia.as_bfjs import as_calculation
  10. from spiders.ansheng.hebao.as_hebao import AS_hebao
  11. from spiders.ansheng.yingxiang.as_phoupload import photo_up
  12. from spiders.ansheng.baodan.as_state import as_Check
  13. from spiders.ansheng.baodan.as_bddownload import get_baodan
  14. from spiders.ansheng.guishu.as_config import set_userinfo
  15. from spiders.ansheng.guishu.as_fcxdetails import AS_getfcxdetails
  16. from spiders.ansheng.guishu.as_config import set_appuserinfo
  17. from spiders.ansheng.guishu.as_feichexian import get_feichexian
  18. from spiders.ansheng.hebao.as_revocation import AS_revocation
  19. ansheng=Blueprint('as',__name__)
  20. CORS(ansheng, supports_credentials=True)
  21. @ansheng.route('/as/login',methods=['post'])
  22. def as_login():
  23. username = flask.request.json.get('username')
  24. pwd=flask.request.json.get('pwd')
  25. userinfo={
  26. "username":username,
  27. 'pwd':pwd
  28. }
  29. set_appuserinfo(userinfo)
  30. ret=set_userinfo(userinfo)
  31. return ret,200, {'Content-Type': 'application/json'}
  32. @ansheng.route('/as/bfjs',methods=['post'])
  33. def as_bfjs():
  34. log_starttime = time.time()
  35. #车辆人员信息
  36. username=flask.request.json.get('username')
  37. modelCName = flask.request.json.get('carInfo').get('modelcname')
  38. engineNo = flask.request.json.get('carInfo').get('engineNo')
  39. vin = flask.request.json.get('carInfo').get('vinNo')
  40. licenseNo = flask.request.json.get('carInfo').get('licenseNo')
  41. seatCount = flask.request.json.get('carInfo').get('seatCount')
  42. purchasePrice = flask.request.json.get('carInfo').get('purchasePrice')
  43. identifyNumber=flask.request.json.get('ownerInfo').get('identifyNumber')
  44. uname = flask.request.json.get('ownerInfo').get('name')
  45. address = flask.request.json.get('ownerInfo').get('addr')
  46. phone_number = flask.request.json.get('ownerInfo').get('mobile')
  47. tb_identifyNumber = flask.request.json.get('policyHolderInfo').get('identifyNumber')
  48. tb_uname = flask.request.json.get('policyHolderInfo').get('name')
  49. tb_address = flask.request.json.get('policyHolderInfo').get('addr')
  50. tb_phone_number = flask.request.json.get('policyHolderInfo').get('mobile')
  51. bb_identifyNumber = flask.request.json.get('insuredPersonInfo').get('identifyNumber')
  52. bb_uname = flask.request.json.get('insuredPersonInfo').get('name')
  53. bb_address = flask.request.json.get('insuredPersonInfo').get('addr')
  54. bb_phone_number = flask.request.json.get('insuredPersonInfo').get('mobile')
  55. registerDate=flask.request.json.get('carInfo').get('registerDate')
  56. issueDate=flask.request.json.get('carInfo').get('issueDate')
  57. isTransfer=flask.request.json.get('carInfo').get('transferFlag')
  58. isOutOfInsurance=flask.request.json.get('carInfo').get('outOfInsurance')
  59. accidentalDriving=flask.request.json.get('accidentalDriving')
  60. #能源种类
  61. energyType = flask.request.json.get('carInfo').get('energyType')
  62. #交强险、商业险是否选择。起始、结束时间默认参数
  63. jiaoqiang_chooseFlag = 'False'
  64. chesun_chooseFlag = 'False'
  65. shangye_chooseFlag='False'
  66. jiaoqiang_startDate=''
  67. chesun_startDate=''
  68. for date in flask.request.json.get('riskList'):
  69. if date.get('riskCode')=='0507':
  70. jiaoqiang_startDate=date.get('startDate')
  71. elif date.get('riskCode')=='0510':
  72. chesun_startDate=date.get('startDate')
  73. jiaoqiang_startDate = jiaoqiang_startDate if jiaoqiang_startDate else str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
  74. jiaoqiang_endDate = str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
  75. chesun_startDate=chesun_startDate if chesun_startDate else str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
  76. chesun_endDate= str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
  77. # 交强险、商业险是否选择。起始、结束时间传入参数
  78. riskList = flask.request.json.get('riskList')
  79. for i in riskList:
  80. if i.get('riskCode') == '0507':
  81. jiaoqiang_chooseFlag = 'on'
  82. jiaoqiang_startDate = i.get('startDate')
  83. jiaoqiang_startDate = jiaoqiang_startDate
  84. jiaoqiang_endDate = i.get('endDate')
  85. jiaoqiang_endDate = "".join(jiaoqiang_endDate)
  86. elif i.get('riskCode') == '0510':
  87. shangye_chooseFlag='on'
  88. chesun_startDate = i.get('startDate')
  89. chesun_startDate = "".join(chesun_startDate)
  90. chesun_endDate = i.get('endDate')
  91. chesun_endDate = "".join(chesun_endDate)
  92. #附加险默认参数
  93. sanzhe_chooseFlag='False'
  94. sanzhe_amount='10'
  95. sjzeren_chooseFlag='False'
  96. sjzeren_amount='30000'
  97. ckzeren_chooseFlag='False'
  98. ckzeren_amount='30000'
  99. huahen_chooseFlag='False'
  100. huahen_amount='2000'
  101. fujiachesun_chooseFlag='False'
  102. fujiachesun_amount='0.05'
  103. fujiasanzhe_chooseFlag = 'False'
  104. fujiasanzhe_amount = '0.05'
  105. fujiasiji_chooseFlag = 'False'
  106. fujiasiji_amount = '0.05'
  107. fujiachengke_chooseFlag = 'False'
  108. fujiachengke_amount = '0.05'
  109. fujia_jiejiari_chooseFlag = 'False'
  110. fujia_jiejiari_amount = '2000000'
  111. ybw_sanzhe_chooseFlag='False'
  112. ybw_sanzhe_amount='0'
  113. ybw_siji_chooseFlag='False'
  114. ybw_siji_amount='0'
  115. ybw_ck_chooseFlag='False'
  116. ybw_ck_amount='0'
  117. #附件险传入参数
  118. kindList = flask.request.json.get('kindList')
  119. for ii in kindList:
  120. if ii.get('kindCode')=='B':
  121. sanzhe_chooseFlag='on'
  122. sanzhe_amount=str(int(ii.get('amount')))
  123. elif ii.get('kindCode')=='A':
  124. chesun_chooseFlag = 'on'
  125. elif ii.get('kindCode')=='D3':
  126. sjzeren_chooseFlag = 'on'
  127. sjzeren_amount = ii.get('amount')
  128. elif ii.get('kindCode')=='D4':
  129. ckzeren_chooseFlag = 'on'
  130. ckzeren_amount = ii.get('unitAmount')
  131. elif ii.get('kindCode')=='L':
  132. huahen_chooseFlag = 'on'
  133. huahen_amount = ii.get('amount')
  134. elif ii.get('kindCode')=='MJ1':
  135. fujiachesun_chooseFlag = 'on'
  136. fujiachesun_amount = str(int(ii.get('deductibleRate'))/100)
  137. elif ii.get('kindCode')=='MJ2':
  138. fujiasanzhe_chooseFlag = 'on'
  139. fujiasanzhe_amount = str(int(ii.get('deductibleRate'))/100)
  140. elif ii.get('kindCode')=='MJ3':
  141. fujiasiji_chooseFlag = 'on'
  142. fujiasiji_amount = str(int(ii.get('deductibleRate'))/100)
  143. elif ii.get('kindCode')=='MJ4':
  144. fujiachengke_chooseFlag = 'on'
  145. fujiachengke_amount = str(int(ii.get('deductibleRate'))/100)
  146. elif ii.get('kindCode')=='BD':
  147. fujia_jiejiari_chooseFlag = 'on'
  148. fujia_jiejiari_amount = ii.get('amount')
  149. elif ii.get('kindCode') == 'SY_FJ_YBW1':
  150. ybw_sanzhe_chooseFlag = 'on'
  151. ybw_sanzhe_amount = ii.get('amount')
  152. elif ii.get('kindCode') == 'SY_FJ_YBW3':
  153. ybw_siji_chooseFlag = 'on'
  154. ybw_siji_amount = ii.get('amount')
  155. elif ii.get('kindCode') == 'SY_FJ_YBW2':
  156. ybw_ck_chooseFlag = 'on'
  157. ybw_ck_amount = ii.get('unitAmount')
  158. carinfo = as_calculation(#token、车辆、人员信息
  159. username,modelCName,engineNo,vin,licenseNo,seatCount,purchasePrice,energyType,
  160. identifyNumber, uname, address,phone_number,
  161. tb_identifyNumber, tb_uname, tb_address, tb_phone_number,
  162. bb_identifyNumber, bb_uname, bb_address, bb_phone_number,
  163. registerDate,issueDate,isTransfer,
  164. #交强险、商业险是否选择,起止日期信息
  165. jiaoqiang_chooseFlag,chesun_chooseFlag,jiaoqiang_startDate,jiaoqiang_endDate,chesun_startDate,
  166. chesun_endDate,shangye_chooseFlag,
  167. #三者责任险、价格,司机、乘客责任险、价格,划痕险、价格
  168. sanzhe_chooseFlag,sanzhe_amount,sjzeren_chooseFlag,sjzeren_amount,ckzeren_chooseFlag,ckzeren_amount,huahen_chooseFlag,huahen_amount,
  169. #附加险信息
  170. fujiachesun_chooseFlag,fujiachesun_amount ,fujiasanzhe_chooseFlag ,fujiasanzhe_amount ,
  171. fujiasiji_chooseFlag,fujiasiji_amount ,fujiachengke_chooseFlag ,fujiachengke_amount ,
  172. fujia_jiejiari_chooseFlag ,fujia_jiejiari_amount,
  173. ybw_sanzhe_chooseFlag, ybw_sanzhe_amount, ybw_siji_chooseFlag, ybw_siji_amount, ybw_ck_chooseFlag, ybw_ck_amount,
  174. isOutOfInsurance,accidentalDriving
  175. )
  176. try:
  177. ret = carinfo.main()
  178. log_endtime = time.time()
  179. get_bfjslogger(as_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. if str(err)=='decoding to str: need a bytes-like object, NoneType found':
  184. return {'code': 400, 'message': '暂无该账号信息,请联系管理员。'}
  185. else:
  186. get_bfjslogger(as_bj_log, log_endtime, log_starttime, '安盛')
  187. get_errlogger(as_bj_log, err, traceback.format_exc() + '-------------- \n')
  188. if 'city' in str(err) or 'area' in str(err) or 'province' in str(err) :
  189. return {'code': 400, 'message': '人员地区获取失败'}, 200, {'Content-Type': 'application/json'}
  190. return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
  191. @ansheng.route('/as/yxsc',methods=['post'])
  192. def as_yxsc():
  193. plyappno = flask.request.json.get('plyappno')
  194. photolist = flask.request.json.get('b64pho_list')
  195. ret=photo_up(plyappno,photolist)
  196. return ret, 200, {'Content-Type': 'application/json'}
  197. @ansheng.route('/as/jiaofei', methods=['post'])
  198. def as_jiaofei():
  199. log_starttime = time.time()
  200. plyappno = flask.request.json.get('plyappno')
  201. Hebao = AS_hebao(plyappno)
  202. try:
  203. ret = Hebao.main()
  204. log_endtime = time.time()
  205. get_hblogger(as_hb_log, log_endtime, log_starttime, '安盛')
  206. return ret, 200, {'Content-Type': 'application/json'}
  207. except Exception as err:
  208. log_endtime = time.time()
  209. get_bfjslogger(as_hb_log, log_endtime, log_starttime, '安盛')
  210. get_errlogger(as_hb_log, err, traceback.format_exc() + '-------------- \n')
  211. return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
  212. @ansheng.route('/as/check',methods=['post'])
  213. def as_check():
  214. plyappno = flask.request.json.get('plyappno')
  215. ret=as_Check(plyappno).main()
  216. return ret, 200, {'Content-Type': 'application/json'}
  217. @ansheng.route('/as/baodan',methods=['post'])
  218. def as_baodan():
  219. plyappno = flask.request.json.get('plyappno')
  220. ret=get_baodan(plyappno).main()
  221. return ret, 200, {'Content-Type': 'application/json'}
  222. @ansheng.route('/as/fcx',methods=['post'])
  223. def as_get_fcx():
  224. username = flask.request.json.get('username')
  225. ret=get_feichexian(username)
  226. return ret, 200, {'Content-Type': 'application/json'}
  227. @ansheng.route('/as/revocation',methods=['post'])
  228. def as_revocation():
  229. plyappno = flask.request.json.get('plyappno')
  230. ret = AS_revocation(plyappno).main()
  231. return ret, 200, {'Content-Type': 'application/json'}
  232. @ansheng.route('/as/fcxdetails',methods=['post'])
  233. def as_getfcxdetails():
  234. username = flask.request.json.get('username')
  235. productCode = flask.request.json.get('productCode')
  236. planCode = flask.request.json.get('planCode')
  237. ret = AS_getfcxdetails(username, productCode,planCode).main()
  238. return ret, 200, {'Content-Type': 'application/json'}