Administrator 6 miesięcy temu
rodzic
commit
6014d8c230

+ 2 - 1
Flask_API.py

@@ -8,6 +8,7 @@ from blueprint.gs_api import guoshou
 from blueprint.get_resapi import getres
 from blueprint.tp_api import taiping
 from blueprint.hn_api import huanong
+# from blueprint.ed_api import edian
 
 from gevent import pywsgi
 
@@ -23,7 +24,7 @@ api.register_blueprint(guoshou)
 api.register_blueprint(taiping)
 api.register_blueprint(getres)
 api.register_blueprint(huanong)
-
+# api.register_blueprint(edian)
 #跨域
 CORS(api, supports_credentials=True)
 

+ 222 - 0
blueprint/ed_api.py

@@ -0,0 +1,222 @@
+import traceback
+import flask
+import time
+import datetime
+from flask import Blueprint
+from flask_cors import CORS
+from dateutil.relativedelta import relativedelta
+
+from logs.getlogs import *
+from spiders.edian.guishu.ed_config import *
+from spiders.edian.baojia.ed_bfjs import ed_calculation
+from spiders.edian.guishu.ed_feichexian import get_feichexian
+
+edian=Blueprint('ed',__name__)
+CORS(edian, supports_credentials=True)
+
+
+
+@edian.route('/ed/login',methods=['post'])
+def ed_login():
+    userinfo=flask.request.json
+    ret=set_userinfo(userinfo)
+    return  ret,200, {'Content-Type': 'application/json'}
+
+
+
+@edian.route('/ed/bfjs',methods=['post'])
+def ed_bfjs():
+    log_starttime = time.time()
+    #车辆人员信息
+    username=flask.request.json.get('username')
+    modelCName = flask.request.json.get('carInfo').get('modelcname')
+    engineNo = flask.request.json.get('carInfo').get('engineNo')
+    vin = flask.request.json.get('carInfo').get('vinNo')
+    licenseNo = flask.request.json.get('carInfo').get('licenseNo')
+    seatCount = flask.request.json.get('carInfo').get('seatCount')
+    vehicleUse=flask.request.json.get('carInfo').get('vehicleUse')
+    #核定载质量
+    limitLoad=flask.request.json.get('carInfo').get('limitLoad')
+    cartype=flask.request.json.get('carInfo').get('cartype')
+
+    #商业折扣系数
+    discount=flask.request.json.get('discount')
+    #订单号
+    plyappno=flask.request.json.get('plyappno')
+
+    purchasePrice = flask.request.json.get('carInfo').get('purchasePrice')
+    identifyNumber=flask.request.json.get('ownerInfo').get('identifyNumber')
+    uname = flask.request.json.get('ownerInfo').get('name')
+    address = flask.request.json.get('ownerInfo').get('addr')
+    phone_number = flask.request.json.get('ownerInfo').get('mobile')
+
+    tb_identifyNumber = flask.request.json.get('policyHolderInfo').get('identifyNumber')
+    tb_uname = flask.request.json.get('policyHolderInfo').get('name')
+    tb_address = flask.request.json.get('policyHolderInfo').get('addr')
+    tb_phone_number = flask.request.json.get('policyHolderInfo').get('mobile')
+
+    bb_identifyNumber = flask.request.json.get('insuredPersonInfo').get('identifyNumber')
+    bb_uname = flask.request.json.get('insuredPersonInfo').get('name')
+    bb_address = flask.request.json.get('insuredPersonInfo').get('addr')
+    bb_phone_number = flask.request.json.get('insuredPersonInfo').get('mobile')
+
+
+
+
+    registerDate=flask.request.json.get('carInfo').get('registerDate')
+    issueDate=flask.request.json.get('carInfo').get('issueDate')
+    isTransfer=flask.request.json.get('carInfo').get('transferFlag')
+    secondhandcarflag=flask.request.json.get('carInfo').get('usedCar')
+    #非车险参数
+    accidentalDrivingVo=flask.request.json.get('accidentalDriving')
+
+
+    #交强险、商业险是否选择。起始、结束时间默认参数
+    jiaoqiang_chooseFlag = 'False'
+    chesun_chooseFlag = 'False'
+    shangye_chooseFlag='False'
+    jiaoqiang_startDate = str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
+    jiaoqiang_endDate = str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
+    chesun_startDate= str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
+    chesun_endDate= str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
+    # 交强险、商业险是否选择。起始、结束时间传入参数
+    riskList = flask.request.json.get('riskList')
+    for i in riskList:
+        if i.get('riskCode') == '0507':
+            jiaoqiang_chooseFlag = 'on'
+            jiaoqiang_startDate = i.get('startDate')
+            jiaoqiang_startDate = jiaoqiang_startDate
+            jiaoqiang_endDate = i.get('endDate')
+            jiaoqiang_endDate = "".join(jiaoqiang_endDate)
+        elif i.get('riskCode') == '0510':
+            shangye_chooseFlag='on'
+            chesun_startDate = i.get('startDate')
+            chesun_startDate = "".join(chesun_startDate)
+            chesun_endDate = i.get('endDate')
+            chesun_endDate = "".join(chesun_endDate)
+
+    #附加险默认参数
+    sanzhe_chooseFlag='False'
+    sanzhe_amount='10'
+    sjzeren_chooseFlag='False'
+    sjzeren_amount='30000'
+    ckzeren_chooseFlag='False'
+    ckzeren_amount='30000'
+    huahen_chooseFlag='False'
+    huahen_amount='2000'
+    fujiachesun_chooseFlag='False'
+    fujiachesun_amount='0.05'
+    fujiasanzhe_chooseFlag = 'False'
+    fujiasanzhe_amount = '0.05'
+    fujiasiji_chooseFlag = 'False'
+    fujiasiji_amount = '0.05'
+    fujiachengke_chooseFlag = 'False'
+    fujiachengke_amount = '0.05'
+    fujia_jiejiari_chooseFlag = 'False'
+    fujia_jiejiari_amount = '2000000'
+    ybw_sanzhe_chooseFlag='False'
+    ybw_sanzhe_amount='0'
+    ybw_siji_chooseFlag='False'
+    ybw_siji_amount='0'
+    ybw_ck_chooseFlag='False'
+    ybw_ck_amount='0'
+    #附件险传入参数
+    kindList = flask.request.json.get('kindList')
+    for ii in kindList:
+
+        if ii.get('kindCode')=='B':
+            sanzhe_chooseFlag='on'
+            sanzhe_amount=str(int(ii.get('amount')))
+
+        elif ii.get('kindCode')=='A':
+            chesun_chooseFlag = 'on'
+
+        elif ii.get('kindCode')=='D3':
+            sjzeren_chooseFlag = 'on'
+            sjzeren_amount = ii.get('amount')
+        elif ii.get('kindCode')=='D4':
+            ckzeren_chooseFlag = 'on'
+            ckzeren_amount = ii.get('unitAmount')
+        elif ii.get('kindCode')=='L':
+            huahen_chooseFlag = 'on'
+            huahen_amount = ii.get('amount')
+
+        elif ii.get('kindCode')=='MJ1':
+            fujiachesun_chooseFlag = 'on'
+            fujiachesun_amount = ii.get('deductibleRate')
+
+        elif ii.get('kindCode')=='MJ2':
+            fujiasanzhe_chooseFlag = 'on'
+            fujiasanzhe_amount = ii.get('deductibleRate')
+
+
+        elif ii.get('kindCode')=='MJ3':
+            fujiasiji_chooseFlag = 'on'
+            fujiasiji_amount = ii.get('deductibleRate')
+
+        elif ii.get('kindCode')=='MJ4':
+            fujiachengke_chooseFlag = 'on'
+            fujiachengke_amount = ii.get('deductibleRate')
+
+        elif ii.get('kindCode')=='BD':
+            fujia_jiejiari_chooseFlag= 'on'
+            fujia_jiejiari_amount = ii.get('amount')
+
+
+        elif ii.get('kindCode') == 'SY_FJ_YBW1':
+            ybw_sanzhe_chooseFlag = 'on'
+            ybw_sanzhe_amount = ii.get('amount')
+
+        elif ii.get('kindCode') == 'SY_FJ_YBW3':
+            ybw_siji_chooseFlag = 'on'
+            ybw_siji_amount = ii.get('amount')
+
+        elif ii.get('kindCode') == 'SY_FJ_YBW2':
+            ybw_ck_chooseFlag = 'on'
+            ybw_ck_amount = ii.get('unitAmount')
+
+    carinfo = ed_calculation(#token、车辆、人员信息
+
+                username,modelCName,engineNo,vin,licenseNo,seatCount,purchasePrice,vehicleUse,limitLoad,cartype,
+                identifyNumber, uname, address,phone_number,
+                tb_identifyNumber, tb_uname, tb_address, tb_phone_number,
+                bb_identifyNumber, bb_uname, bb_address, bb_phone_number,
+                registerDate,issueDate,isTransfer,
+                #交强险、商业险是否选择,起止日期信息
+                 jiaoqiang_chooseFlag,chesun_chooseFlag,jiaoqiang_startDate,jiaoqiang_endDate,chesun_startDate,
+                 chesun_endDate,shangye_chooseFlag,
+                 #三者责任险、价格,司机、乘客责任险、价格,划痕险、价格
+                 sanzhe_chooseFlag,sanzhe_amount,sjzeren_chooseFlag,sjzeren_amount,ckzeren_chooseFlag,ckzeren_amount,huahen_chooseFlag,huahen_amount,
+                 #附加险信息
+                 fujiachesun_chooseFlag,fujiachesun_amount ,fujiasanzhe_chooseFlag ,fujiasanzhe_amount ,
+                fujiasiji_chooseFlag,fujiasiji_amount ,fujiachengke_chooseFlag ,fujiachengke_amount ,
+                fujia_jiejiari_chooseFlag ,fujia_jiejiari_amount,
+                ybw_sanzhe_chooseFlag, ybw_sanzhe_amount, ybw_siji_chooseFlag, ybw_siji_amount, ybw_ck_chooseFlag, ybw_ck_amount,
+                #非车险参数
+                accidentalDrivingVo,secondhandcarflag,discount,plyappno
+                )
+
+    try:
+        ret = carinfo.main()
+        log_endtime = time.time()
+        get_bfjslogger(ed_bj_log, log_endtime, log_starttime, 'E店')
+        return ret, 200, {'Content-Type': 'application/json'}
+    except Exception as err:
+        log_endtime = time.time()
+        get_bfjslogger(ed_bj_log, log_endtime, log_starttime, 'E店')
+        get_errlogger(ed_bj_log, err, traceback.format_exc() + '-------------- \n')
+        print(err)
+        if 'city' in str(err) or 'area' in str(err) or 'province' in str(err) :
+            return {'code': 400, 'message': '人员地区获取失败'}, 200, {'Content-Type': 'application/json'}
+        return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
+
+
+
+
+
+@edian.route('/ed/fcx',methods=['post'])
+def ed_get_fcx():
+    username = flask.request.json.get('username')
+    ret=get_feichexian(username)
+    return ret, 200, {'Content-Type': 'application/json'}
+

+ 445 - 204
blueprint/gs_api.py

@@ -7,6 +7,11 @@ from flask_cors import CORS
 from dateutil.relativedelta import relativedelta
 
 from logs.getlogs import *
+
+from spiders.edian.baojia.ed_bfjs import ed_calculation
+from spiders.edian.guishu.ed_config import set_userinfo as set_eduserinfo
+
+
 from spiders.guoshou.baojia.gs_bfjs import gs_calculation
 from spiders.guoshou.hebao.gs_hebao import GS_hebao
 from spiders.guoshou.yingxiang.gs_phoupload import photo_up
@@ -23,232 +28,461 @@ CORS(guoshou, supports_credentials=True)
 
 @guoshou.route('/gs/login',methods=['post'])
 def gs_login():
-    userinfo=flask.request.json
-    ret=set_userinfo(userinfo)
-    return  ret,200, {'Content-Type': 'application/json'}
-
+    if flask.request.json.get('other').get('type')=='0':
+        userinfo=flask.request.json
+        ret=set_userinfo(userinfo)
+        return  ret,200, {'Content-Type': 'application/json'}
+    elif flask.request.json.get('other').get('type')=='1':
+        userinfo = flask.request.json
+        ret = set_eduserinfo(userinfo)
+        return ret, 200, {'Content-Type': 'application/json'}
 
 
 @guoshou.route('/gs/bfjs',methods=['post'])
 def gs_bfjs():
-    log_starttime = time.time()
-    #车辆人员信息
     username=flask.request.json.get('username')
-    modelCName = flask.request.json.get('carInfo').get('modelcname')
-    engineNo = flask.request.json.get('carInfo').get('engineNo')
-    vin = flask.request.json.get('carInfo').get('vinNo')
-    licenseNo = flask.request.json.get('carInfo').get('licenseNo')
-    seatCount = flask.request.json.get('carInfo').get('seatCount')
-    vehicleUse=flask.request.json.get('carInfo').get('vehicleUse')
-    #核定载质量
-    limitLoad=flask.request.json.get('carInfo').get('limitLoad')
-    cartype=flask.request.json.get('carInfo').get('cartype')
-
-
-    purchasePrice = flask.request.json.get('carInfo').get('purchasePrice')
-    identifyNumber=flask.request.json.get('ownerInfo').get('identifyNumber')
-    uname = flask.request.json.get('ownerInfo').get('name')
-    address = flask.request.json.get('ownerInfo').get('addr')
-    phone_number = flask.request.json.get('ownerInfo').get('mobile')
-
-    tb_identifyNumber = flask.request.json.get('policyHolderInfo').get('identifyNumber')
-    tb_uname = flask.request.json.get('policyHolderInfo').get('name')
-    tb_address = flask.request.json.get('policyHolderInfo').get('addr')
-    tb_phone_number = flask.request.json.get('policyHolderInfo').get('mobile')
-
-    bb_identifyNumber = flask.request.json.get('insuredPersonInfo').get('identifyNumber')
-    bb_uname = flask.request.json.get('insuredPersonInfo').get('name')
-    bb_address = flask.request.json.get('insuredPersonInfo').get('addr')
-    bb_phone_number = flask.request.json.get('insuredPersonInfo').get('mobile')
-
-
-
-
-    registerDate=flask.request.json.get('carInfo').get('registerDate')
-    issueDate=flask.request.json.get('carInfo').get('issueDate')
-    isTransfer=flask.request.json.get('carInfo').get('transferFlag')
-    secondhandcarflag=flask.request.json.get('carInfo').get('usedCar')
-    #非车险参数
-    accidentalDrivingVo=flask.request.json.get('accidentalDriving')
-
-
-    #交强险、商业险是否选择。起始、结束时间默认参数
-    jiaoqiang_chooseFlag = 'False'
-    chesun_chooseFlag = 'False'
-    shangye_chooseFlag='False'
-    jiaoqiang_startDate = str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
-    jiaoqiang_endDate = str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
-    chesun_startDate= str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
-    chesun_endDate= str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
-    # 交强险、商业险是否选择。起始、结束时间传入参数
-    riskList = flask.request.json.get('riskList')
-    for i in riskList:
-        if i.get('riskCode') == '0507':
-            jiaoqiang_chooseFlag = 'on'
-            jiaoqiang_startDate = i.get('startDate')
-            jiaoqiang_startDate = jiaoqiang_startDate
-            jiaoqiang_endDate = i.get('endDate')
-            jiaoqiang_endDate = "".join(jiaoqiang_endDate)
-        elif i.get('riskCode') == '0510':
-            shangye_chooseFlag='on'
-            chesun_startDate = i.get('startDate')
-            chesun_startDate = "".join(chesun_startDate)
-            chesun_endDate = i.get('endDate')
-            chesun_endDate = "".join(chesun_endDate)
-
-    #附加险默认参数
-    sanzhe_chooseFlag='False'
-    sanzhe_amount='10'
-    sjzeren_chooseFlag='False'
-    sjzeren_amount='30000'
-    ckzeren_chooseFlag='False'
-    ckzeren_amount='30000'
-    huahen_chooseFlag='False'
-    huahen_amount='2000'
-    fujiachesun_chooseFlag='False'
-    fujiachesun_amount='0.05'
-    fujiasanzhe_chooseFlag = 'False'
-    fujiasanzhe_amount = '0.05'
-    fujiasiji_chooseFlag = 'False'
-    fujiasiji_amount = '0.05'
-    fujiachengke_chooseFlag = 'False'
-    fujiachengke_amount = '0.05'
-    fujia_jiejiari_chooseFlag = 'False'
-    fujia_jiejiari_amount = '2000000'
-    ybw_sanzhe_chooseFlag='False'
-    ybw_sanzhe_amount='0'
-    ybw_siji_chooseFlag='False'
-    ybw_siji_amount='0'
-    ybw_ck_chooseFlag='False'
-    ybw_ck_amount='0'
-    #附件险传入参数
-    kindList = flask.request.json.get('kindList')
-    for ii in kindList:
-
-        if ii.get('kindCode')=='B':
-            sanzhe_chooseFlag='on'
-            sanzhe_amount=str(int(ii.get('amount')))
-
-        elif ii.get('kindCode')=='A':
-            chesun_chooseFlag = 'on'
-
-        elif ii.get('kindCode')=='D3':
-            sjzeren_chooseFlag = 'on'
-            sjzeren_amount = ii.get('amount')
-        elif ii.get('kindCode')=='D4':
-            ckzeren_chooseFlag = 'on'
-            ckzeren_amount = ii.get('unitAmount')
-        elif ii.get('kindCode')=='L':
-            huahen_chooseFlag = 'on'
-            huahen_amount = ii.get('amount')
-
-        elif ii.get('kindCode')=='MJ1':
-            fujiachesun_chooseFlag = 'on'
-            fujiachesun_amount = ii.get('deductibleRate')
-
-        elif ii.get('kindCode')=='MJ2':
-            fujiasanzhe_chooseFlag = 'on'
-            fujiasanzhe_amount = ii.get('deductibleRate')
-
-
-        elif ii.get('kindCode')=='MJ3':
-            fujiasiji_chooseFlag = 'on'
-            fujiasiji_amount = ii.get('deductibleRate')
-
-        elif ii.get('kindCode')=='MJ4':
-            fujiachengke_chooseFlag = 'on'
-            fujiachengke_amount = ii.get('deductibleRate')
-
-        elif ii.get('kindCode')=='BD':
-            fujia_jiejiari_chooseFlag= 'on'
-            fujia_jiejiari_amount = ii.get('amount')
-
-
-        elif ii.get('kindCode') == 'SY_FJ_YBW1':
-            ybw_sanzhe_chooseFlag = 'on'
-            ybw_sanzhe_amount = ii.get('amount')
-
-        elif ii.get('kindCode') == 'SY_FJ_YBW3':
-            ybw_siji_chooseFlag = 'on'
-            ybw_siji_amount = ii.get('amount')
-
-        elif ii.get('kindCode') == 'SY_FJ_YBW2':
-            ybw_ck_chooseFlag = 'on'
-            ybw_ck_amount = ii.get('unitAmount')
-
-    carinfo = gs_calculation(#token、车辆、人员信息
-
-                username,modelCName,engineNo,vin,licenseNo,seatCount,purchasePrice,vehicleUse,limitLoad,cartype,
-                identifyNumber, uname, address,phone_number,
-                tb_identifyNumber, tb_uname, tb_address, tb_phone_number,
-                bb_identifyNumber, bb_uname, bb_address, bb_phone_number,
-                registerDate,issueDate,isTransfer,
-                #交强险、商业险是否选择,起止日期信息
-                 jiaoqiang_chooseFlag,chesun_chooseFlag,jiaoqiang_startDate,jiaoqiang_endDate,chesun_startDate,
-                 chesun_endDate,shangye_chooseFlag,
-                 #三者责任险、价格,司机、乘客责任险、价格,划痕险、价格
-                 sanzhe_chooseFlag,sanzhe_amount,sjzeren_chooseFlag,sjzeren_amount,ckzeren_chooseFlag,ckzeren_amount,huahen_chooseFlag,huahen_amount,
-                 #附加险信息
-                 fujiachesun_chooseFlag,fujiachesun_amount ,fujiasanzhe_chooseFlag ,fujiasanzhe_amount ,
-                fujiasiji_chooseFlag,fujiasiji_amount ,fujiachengke_chooseFlag ,fujiachengke_amount ,
-                fujia_jiejiari_chooseFlag ,fujia_jiejiari_amount,
-                ybw_sanzhe_chooseFlag, ybw_sanzhe_amount, ybw_siji_chooseFlag, ybw_siji_amount, ybw_ck_chooseFlag, ybw_ck_amount,
-                #非车险参数
-                accidentalDrivingVo,secondhandcarflag
-                )
-
-    try:
-        ret = carinfo.main()
-        log_endtime = time.time()
-        get_bfjslogger(gs_bj_log, log_endtime, log_starttime, '国寿')
-        return ret, 200, {'Content-Type': 'application/json'}
-    except Exception as err:
-        log_endtime = time.time()
-        get_bfjslogger(gs_bj_log, log_endtime, log_starttime, '国寿')
-        get_errlogger(gs_bj_log, err, traceback.format_exc() + '-------------- \n')
-        print(err)
-        if 'city' in str(err) or 'area' in str(err) or 'province' in str(err) :
-            return {'code': 400, 'message': '人员地区获取失败'}, 200, {'Content-Type': 'application/json'}
-        return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
+    if redis_conn.hget('guoshou_' + username, 'type'):
+        typee = str(redis_conn.hget('guoshou_' + username, 'type'), 'utf8')
+    elif redis_conn.hget('edian_' + username, 'type'):
+        typee = str(redis_conn.hget('edian_' + username, 'type'), 'utf8')
+
+    if typee == '0':
+        log_starttime = time.time()
+        #车辆人员信息
+        username=flask.request.json.get('username')
+        modelCName = flask.request.json.get('carInfo').get('modelcname')
+        engineNo = flask.request.json.get('carInfo').get('engineNo')
+        vin = flask.request.json.get('carInfo').get('vinNo')
+        licenseNo = flask.request.json.get('carInfo').get('licenseNo')
+        seatCount = flask.request.json.get('carInfo').get('seatCount')
+        vehicleUse=flask.request.json.get('carInfo').get('vehicleUse')
+        #核定载质量
+        limitLoad=flask.request.json.get('carInfo').get('limitLoad')
+        cartype=flask.request.json.get('carInfo').get('cartype')
+
+
+        purchasePrice = flask.request.json.get('carInfo').get('purchasePrice')
+        identifyNumber=flask.request.json.get('ownerInfo').get('identifyNumber')
+        uname = flask.request.json.get('ownerInfo').get('name')
+        address = flask.request.json.get('ownerInfo').get('addr')
+        phone_number = flask.request.json.get('ownerInfo').get('mobile')
+
+        tb_identifyNumber = flask.request.json.get('policyHolderInfo').get('identifyNumber')
+        tb_uname = flask.request.json.get('policyHolderInfo').get('name')
+        tb_address = flask.request.json.get('policyHolderInfo').get('addr')
+        tb_phone_number = flask.request.json.get('policyHolderInfo').get('mobile')
+
+        bb_identifyNumber = flask.request.json.get('insuredPersonInfo').get('identifyNumber')
+        bb_uname = flask.request.json.get('insuredPersonInfo').get('name')
+        bb_address = flask.request.json.get('insuredPersonInfo').get('addr')
+        bb_phone_number = flask.request.json.get('insuredPersonInfo').get('mobile')
+
+
+
+
+        registerDate=flask.request.json.get('carInfo').get('registerDate')
+        issueDate=flask.request.json.get('carInfo').get('issueDate')
+        isTransfer=flask.request.json.get('carInfo').get('transferFlag')
+        secondhandcarflag=flask.request.json.get('carInfo').get('usedCar')
+        #非车险参数
+        accidentalDrivingVo=flask.request.json.get('accidentalDriving')
+
+
+        #交强险、商业险是否选择。起始、结束时间默认参数
+        jiaoqiang_chooseFlag = 'False'
+        chesun_chooseFlag = 'False'
+        shangye_chooseFlag='False'
+        jiaoqiang_startDate = str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
+        jiaoqiang_endDate = str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
+        chesun_startDate= str(datetime.date.today() + relativedelta(days=1))+' 00:00:00'
+        chesun_endDate= str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1))+' 00:00:00'
+        # 交强险、商业险是否选择。起始、结束时间传入参数
+        riskList = flask.request.json.get('riskList')
+        for i in riskList:
+            if i.get('riskCode') == '0507':
+                jiaoqiang_chooseFlag = 'on'
+                jiaoqiang_startDate = i.get('startDate')
+                jiaoqiang_startDate = jiaoqiang_startDate
+                jiaoqiang_endDate = i.get('endDate')
+                jiaoqiang_endDate = "".join(jiaoqiang_endDate)
+            elif i.get('riskCode') == '0510':
+                shangye_chooseFlag='on'
+                chesun_startDate = i.get('startDate')
+                chesun_startDate = "".join(chesun_startDate)
+                chesun_endDate = i.get('endDate')
+                chesun_endDate = "".join(chesun_endDate)
+
+        #附加险默认参数
+        sanzhe_chooseFlag='False'
+        sanzhe_amount='10'
+        sjzeren_chooseFlag='False'
+        sjzeren_amount='30000'
+        ckzeren_chooseFlag='False'
+        ckzeren_amount='30000'
+        huahen_chooseFlag='False'
+        huahen_amount='2000'
+        fujiachesun_chooseFlag='False'
+        fujiachesun_amount='0.05'
+        fujiasanzhe_chooseFlag = 'False'
+        fujiasanzhe_amount = '0.05'
+        fujiasiji_chooseFlag = 'False'
+        fujiasiji_amount = '0.05'
+        fujiachengke_chooseFlag = 'False'
+        fujiachengke_amount = '0.05'
+        fujia_jiejiari_chooseFlag = 'False'
+        fujia_jiejiari_amount = '2000000'
+        ybw_sanzhe_chooseFlag='False'
+        ybw_sanzhe_amount='0'
+        ybw_siji_chooseFlag='False'
+        ybw_siji_amount='0'
+        ybw_ck_chooseFlag='False'
+        ybw_ck_amount='0'
+        #附件险传入参数
+        kindList = flask.request.json.get('kindList')
+        for ii in kindList:
+
+            if ii.get('kindCode')=='B':
+                sanzhe_chooseFlag='on'
+                sanzhe_amount=str(int(ii.get('amount')))
+
+            elif ii.get('kindCode')=='A':
+                chesun_chooseFlag = 'on'
+
+            elif ii.get('kindCode')=='D3':
+                sjzeren_chooseFlag = 'on'
+                sjzeren_amount = ii.get('amount')
+            elif ii.get('kindCode')=='D4':
+                ckzeren_chooseFlag = 'on'
+                ckzeren_amount = ii.get('unitAmount')
+            elif ii.get('kindCode')=='L':
+                huahen_chooseFlag = 'on'
+                huahen_amount = ii.get('amount')
+
+            elif ii.get('kindCode')=='MJ1':
+                fujiachesun_chooseFlag = 'on'
+                fujiachesun_amount = ii.get('deductibleRate')
+
+            elif ii.get('kindCode')=='MJ2':
+                fujiasanzhe_chooseFlag = 'on'
+                fujiasanzhe_amount = ii.get('deductibleRate')
+
+
+            elif ii.get('kindCode')=='MJ3':
+                fujiasiji_chooseFlag = 'on'
+                fujiasiji_amount = ii.get('deductibleRate')
+
+            elif ii.get('kindCode')=='MJ4':
+                fujiachengke_chooseFlag = 'on'
+                fujiachengke_amount = ii.get('deductibleRate')
+
+            elif ii.get('kindCode')=='BD':
+                fujia_jiejiari_chooseFlag= 'on'
+                fujia_jiejiari_amount = ii.get('amount')
+
+
+            elif ii.get('kindCode') == 'SY_FJ_YBW1':
+                ybw_sanzhe_chooseFlag = 'on'
+                ybw_sanzhe_amount = ii.get('amount')
+
+            elif ii.get('kindCode') == 'SY_FJ_YBW3':
+                ybw_siji_chooseFlag = 'on'
+                ybw_siji_amount = ii.get('amount')
+
+            elif ii.get('kindCode') == 'SY_FJ_YBW2':
+                ybw_ck_chooseFlag = 'on'
+                ybw_ck_amount = ii.get('unitAmount')
+
+        carinfo = gs_calculation(#token、车辆、人员信息
+
+                    username,modelCName,engineNo,vin,licenseNo,seatCount,purchasePrice,vehicleUse,limitLoad,cartype,
+                    identifyNumber, uname, address,phone_number,
+                    tb_identifyNumber, tb_uname, tb_address, tb_phone_number,
+                    bb_identifyNumber, bb_uname, bb_address, bb_phone_number,
+                    registerDate,issueDate,isTransfer,
+                    #交强险、商业险是否选择,起止日期信息
+                     jiaoqiang_chooseFlag,chesun_chooseFlag,jiaoqiang_startDate,jiaoqiang_endDate,chesun_startDate,
+                     chesun_endDate,shangye_chooseFlag,
+                     #三者责任险、价格,司机、乘客责任险、价格,划痕险、价格
+                     sanzhe_chooseFlag,sanzhe_amount,sjzeren_chooseFlag,sjzeren_amount,ckzeren_chooseFlag,ckzeren_amount,huahen_chooseFlag,huahen_amount,
+                     #附加险信息
+                     fujiachesun_chooseFlag,fujiachesun_amount ,fujiasanzhe_chooseFlag ,fujiasanzhe_amount ,
+                    fujiasiji_chooseFlag,fujiasiji_amount ,fujiachengke_chooseFlag ,fujiachengke_amount ,
+                    fujia_jiejiari_chooseFlag ,fujia_jiejiari_amount,
+                    ybw_sanzhe_chooseFlag, ybw_sanzhe_amount, ybw_siji_chooseFlag, ybw_siji_amount, ybw_ck_chooseFlag, ybw_ck_amount,
+                    #非车险参数
+                    accidentalDrivingVo,secondhandcarflag
+                    )
+
+        try:
+            ret = carinfo.main()
+            log_endtime = time.time()
+            get_bfjslogger(gs_bj_log, log_endtime, log_starttime, '国寿')
+            return ret, 200, {'Content-Type': 'application/json'}
+        except Exception as err:
+            log_endtime = time.time()
+            get_bfjslogger(gs_bj_log, log_endtime, log_starttime, '国寿')
+            get_errlogger(gs_bj_log, err, traceback.format_exc() + '-------------- \n')
+            print(err)
+            if 'city' in str(err) or 'area' in str(err) or 'province' in str(err) :
+                return {'code': 400, 'message': '人员地区获取失败'}, 200, {'Content-Type': 'application/json'}
+            return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
+    elif typee == '1':
+        log_starttime = time.time()
+        # 车辆人员信息
+        username = flask.request.json.get('username')
+        modelCName = flask.request.json.get('carInfo').get('modelcname')
+        engineNo = flask.request.json.get('carInfo').get('engineNo')
+        vin = flask.request.json.get('carInfo').get('vinNo')
+        licenseNo = flask.request.json.get('carInfo').get('licenseNo')
+        seatCount = flask.request.json.get('carInfo').get('seatCount')
+        vehicleUse = flask.request.json.get('carInfo').get('vehicleUse')
+        # 核定载质量
+        limitLoad = flask.request.json.get('carInfo').get('limitLoad')
+        cartype = flask.request.json.get('carInfo').get('cartype')
+
+        # 商业折扣系数
+        discount = flask.request.json.get('discount')
+        # 订单号
+        plyappno = flask.request.json.get('plyappno')
+
+        purchasePrice = flask.request.json.get('carInfo').get('purchasePrice')
+        identifyNumber = flask.request.json.get('ownerInfo').get('identifyNumber')
+        uname = flask.request.json.get('ownerInfo').get('name')
+        address = flask.request.json.get('ownerInfo').get('addr')
+        phone_number = flask.request.json.get('ownerInfo').get('mobile')
+
+        tb_identifyNumber = flask.request.json.get('policyHolderInfo').get('identifyNumber')
+        tb_uname = flask.request.json.get('policyHolderInfo').get('name')
+        tb_address = flask.request.json.get('policyHolderInfo').get('addr')
+        tb_phone_number = flask.request.json.get('policyHolderInfo').get('mobile')
+
+        bb_identifyNumber = flask.request.json.get('insuredPersonInfo').get('identifyNumber')
+        bb_uname = flask.request.json.get('insuredPersonInfo').get('name')
+        bb_address = flask.request.json.get('insuredPersonInfo').get('addr')
+        bb_phone_number = flask.request.json.get('insuredPersonInfo').get('mobile')
+
+        registerDate = flask.request.json.get('carInfo').get('registerDate')
+        issueDate = flask.request.json.get('carInfo').get('issueDate')
+        isTransfer = flask.request.json.get('carInfo').get('transferFlag')
+        secondhandcarflag = flask.request.json.get('carInfo').get('usedCar')
+        # 非车险参数
+        accidentalDrivingVo = flask.request.json.get('accidentalDriving')
+
+        # 交强险、商业险是否选择。起始、结束时间默认参数
+        jiaoqiang_chooseFlag = 'False'
+        chesun_chooseFlag = 'False'
+        shangye_chooseFlag = 'False'
+        jiaoqiang_startDate = str(datetime.date.today() + relativedelta(days=1)) + ' 00:00:00'
+        jiaoqiang_endDate = str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1)) + ' 00:00:00'
+        chesun_startDate = str(datetime.date.today() + relativedelta(days=1)) + ' 00:00:00'
+        chesun_endDate = str(datetime.date.today() + relativedelta(years=1) - relativedelta(days=1)) + ' 00:00:00'
+        # 交强险、商业险是否选择。起始、结束时间传入参数
+        riskList = flask.request.json.get('riskList')
+        for i in riskList:
+            if i.get('riskCode') == '0507':
+                jiaoqiang_chooseFlag = 'on'
+                jiaoqiang_startDate = i.get('startDate')
+                jiaoqiang_startDate = jiaoqiang_startDate
+                jiaoqiang_endDate = i.get('endDate')
+                jiaoqiang_endDate = "".join(jiaoqiang_endDate)
+            elif i.get('riskCode') == '0510':
+                shangye_chooseFlag = 'on'
+                chesun_startDate = i.get('startDate')
+                chesun_startDate = "".join(chesun_startDate)
+                chesun_endDate = i.get('endDate')
+                chesun_endDate = "".join(chesun_endDate)
+
+        # 附加险默认参数
+        sanzhe_chooseFlag = 'False'
+        sanzhe_amount = '10'
+        sjzeren_chooseFlag = 'False'
+        sjzeren_amount = '30000'
+        ckzeren_chooseFlag = 'False'
+        ckzeren_amount = '30000'
+        huahen_chooseFlag = 'False'
+        huahen_amount = '2000'
+        fujiachesun_chooseFlag = 'False'
+        fujiachesun_amount = '0.05'
+        fujiasanzhe_chooseFlag = 'False'
+        fujiasanzhe_amount = '0.05'
+        fujiasiji_chooseFlag = 'False'
+        fujiasiji_amount = '0.05'
+        fujiachengke_chooseFlag = 'False'
+        fujiachengke_amount = '0.05'
+        fujia_jiejiari_chooseFlag = 'False'
+        fujia_jiejiari_amount = '2000000'
+        ybw_sanzhe_chooseFlag = 'False'
+        ybw_sanzhe_amount = '0'
+        ybw_siji_chooseFlag = 'False'
+        ybw_siji_amount = '0'
+        ybw_ck_chooseFlag = 'False'
+        ybw_ck_amount = '0'
+        # 附件险传入参数
+        kindList = flask.request.json.get('kindList')
+        for ii in kindList:
+
+            if ii.get('kindCode') == 'B':
+                sanzhe_chooseFlag = 'on'
+                sanzhe_amount = str(int(ii.get('amount')))
+
+            elif ii.get('kindCode') == 'A':
+                chesun_chooseFlag = 'on'
+
+            elif ii.get('kindCode') == 'D3':
+                sjzeren_chooseFlag = 'on'
+                sjzeren_amount = ii.get('amount')
+            elif ii.get('kindCode') == 'D4':
+                ckzeren_chooseFlag = 'on'
+                ckzeren_amount = ii.get('unitAmount')
+            elif ii.get('kindCode') == 'L':
+                huahen_chooseFlag = 'on'
+                huahen_amount = ii.get('amount')
+
+            elif ii.get('kindCode') == 'MJ1':
+                fujiachesun_chooseFlag = 'on'
+                fujiachesun_amount = ii.get('deductibleRate')
+
+            elif ii.get('kindCode') == 'MJ2':
+                fujiasanzhe_chooseFlag = 'on'
+                fujiasanzhe_amount = ii.get('deductibleRate')
+
+
+            elif ii.get('kindCode') == 'MJ3':
+                fujiasiji_chooseFlag = 'on'
+                fujiasiji_amount = ii.get('deductibleRate')
+
+            elif ii.get('kindCode') == 'MJ4':
+                fujiachengke_chooseFlag = 'on'
+                fujiachengke_amount = ii.get('deductibleRate')
+
+            elif ii.get('kindCode') == 'BD':
+                fujia_jiejiari_chooseFlag = 'on'
+                fujia_jiejiari_amount = ii.get('amount')
+
+
+            elif ii.get('kindCode') == 'SY_FJ_YBW1':
+                ybw_sanzhe_chooseFlag = 'on'
+                ybw_sanzhe_amount = ii.get('amount')
+
+            elif ii.get('kindCode') == 'SY_FJ_YBW3':
+                ybw_siji_chooseFlag = 'on'
+                ybw_siji_amount = ii.get('amount')
+
+            elif ii.get('kindCode') == 'SY_FJ_YBW2':
+                ybw_ck_chooseFlag = 'on'
+                ybw_ck_amount = ii.get('unitAmount')
+
+        carinfo = ed_calculation(  # token、车辆、人员信息
+
+            username, modelCName, engineNo, vin, licenseNo, seatCount, purchasePrice, vehicleUse, limitLoad, cartype,
+            identifyNumber, uname, address, phone_number,
+            tb_identifyNumber, tb_uname, tb_address, tb_phone_number,
+            bb_identifyNumber, bb_uname, bb_address, bb_phone_number,
+            registerDate, issueDate, isTransfer,
+            # 交强险、商业险是否选择,起止日期信息
+            jiaoqiang_chooseFlag, chesun_chooseFlag, jiaoqiang_startDate, jiaoqiang_endDate, chesun_startDate,
+            chesun_endDate, shangye_chooseFlag,
+            # 三者责任险、价格,司机、乘客责任险、价格,划痕险、价格
+            sanzhe_chooseFlag, sanzhe_amount, sjzeren_chooseFlag, sjzeren_amount, ckzeren_chooseFlag, ckzeren_amount, huahen_chooseFlag, huahen_amount,
+            # 附加险信息
+            fujiachesun_chooseFlag, fujiachesun_amount, fujiasanzhe_chooseFlag, fujiasanzhe_amount,
+            fujiasiji_chooseFlag, fujiasiji_amount, fujiachengke_chooseFlag, fujiachengke_amount,
+            fujia_jiejiari_chooseFlag, fujia_jiejiari_amount,
+            ybw_sanzhe_chooseFlag, ybw_sanzhe_amount, ybw_siji_chooseFlag, ybw_siji_amount, ybw_ck_chooseFlag, ybw_ck_amount,
+            # 非车险参数
+            accidentalDrivingVo, secondhandcarflag, discount, plyappno
+        )
+
+        try:
+            ret = carinfo.main()
+            log_endtime = time.time()
+            get_bfjslogger(ed_bj_log, log_endtime, log_starttime, 'E店')
+            return ret, 200, {'Content-Type': 'application/json'}
+        except Exception as err:
+            log_endtime = time.time()
+            get_bfjslogger(ed_bj_log, log_endtime, log_starttime, 'E店')
+            get_errlogger(ed_bj_log, err, traceback.format_exc() + '-------------- \n')
+            print(err)
+            if 'city' in str(err) or 'area' in str(err) or 'province' in str(err):
+                return {'code': 400, 'message': '人员地区获取失败'}, 200, {'Content-Type': 'application/json'}
+            return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
+
 
 @guoshou.route('/gs/yxsc',methods=['post'])
 def gs_yxsc():
-    plyappno = flask.request.json.get('plyappno')
-    photolist = flask.request.json.get('b64pho_list')
-    ret=photo_up(plyappno,photolist).main()
-    return ret, 200, {'Content-Type': 'application/json'}
+    plyappno=flask.request.json.get('plyappno')
+    username = str(redis_conn.hget('guoshou_' + plyappno, 'username'), 'utf8')
+    if redis_conn.hget('guoshou_' + username, 'type'):
+        typee = str(redis_conn.hget('guoshou_' + username, 'type'), 'utf8')
+    elif redis_conn.hget('edian_' + username, 'type'):
+        typee = str(redis_conn.hget('edian_' + username, 'type'), 'utf8')
+
+
+    if typee == '0':
+        plyappno = flask.request.json.get('plyappno')
+        photolist = flask.request.json.get('b64pho_list')
+        ret=photo_up(plyappno,photolist).main()
+        return ret, 200, {'Content-Type': 'application/json'}
 
 @guoshou.route('/gs/jiaofei', methods=['post'])
 def gs_jiaofei():
-    log_starttime = time.time()
     plyappno = flask.request.json.get('plyappno')
-    Hebao = GS_hebao(plyappno)
-    try:
-        ret = Hebao.main()
-        log_endtime = time.time()
-        get_hblogger(gs_hb_log, log_endtime, log_starttime, '国寿')
-        return ret, 200, {'Content-Type': 'application/json'}
-    except Exception as err:
-        log_endtime = time.time()
-        get_bfjslogger(gs_hb_log, log_endtime, log_starttime, '国寿')
-        get_errlogger(gs_hb_log, err, traceback.format_exc() + '-------------- \n')
-        return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
+    username = str(redis_conn.hget('guoshou_' + plyappno, 'username'), 'utf8')
+    if redis_conn.hget('guoshou_' + username, 'type'):
+        typee = str(redis_conn.hget('guoshou_' + username, 'type'), 'utf8')
+    elif redis_conn.hget('edian_' + username, 'type'):
+        typee = str(redis_conn.hget('edian_' + username, 'type'), 'utf8')
+    if typee == '0':
+        log_starttime = time.time()
+        plyappno = flask.request.json.get('plyappno')
+        Hebao = GS_hebao(plyappno)
+        try:
+            ret = Hebao.main()
+            log_endtime = time.time()
+            get_hblogger(gs_hb_log, log_endtime, log_starttime, '国寿')
+            return ret, 200, {'Content-Type': 'application/json'}
+        except Exception as err:
+            log_endtime = time.time()
+            get_bfjslogger(gs_hb_log, log_endtime, log_starttime, '国寿')
+            get_errlogger(gs_hb_log, err, traceback.format_exc() + '-------------- \n')
+            return {'code': 400, 'message': '程序异常'}, 200, {'Content-Type': 'application/json'}
 
 
 @guoshou.route('/gs/check',methods=['post'])
 def gs_check():
     plyappno = flask.request.json.get('plyappno')
-    ret=gs_Check(plyappno).main()
-    return ret, 200, {'Content-Type': 'application/json'}
+    username = str(redis_conn.hget('guoshou_' + plyappno, 'username'), 'utf8')
+    if redis_conn.hget('guoshou_' + username, 'type'):
+        typee = str(redis_conn.hget('guoshou_' + username, 'type'), 'utf8')
+    elif redis_conn.hget('edian_' + username, 'type'):
+        typee = str(redis_conn.hget('edian_' + username, 'type'), 'utf8')
+    if typee == '0':
+        plyappno = flask.request.json.get('plyappno')
+        ret=gs_Check(plyappno).main()
+        return ret, 200, {'Content-Type': 'application/json'}
 
 @guoshou.route('/gs/baodan',methods=['post'])
 def gs_baodan():
     plyappno = flask.request.json.get('plyappno')
-    ret=get_baodan(plyappno).main()
-    return ret, 200, {'Content-Type': 'application/json'}
+    username = str(redis_conn.hget('guoshou_' + plyappno, 'username'), 'utf8')
+    if redis_conn.hget('guoshou_' + username, 'type'):
+        typee = str(redis_conn.hget('guoshou_' + username, 'type'), 'utf8')
+    elif redis_conn.hget('edian_' + username, 'type'):
+        typee = str(redis_conn.hget('edian_' + username, 'type'), 'utf8')
+    if typee== '0':
+        plyappno = flask.request.json.get('plyappno')
+        ret=get_baodan(plyappno).main()
+        return ret, 200, {'Content-Type': 'application/json'}
 
 @guoshou.route('/gs/fcx',methods=['post'])
 def gs_get_fcx():
+    # plyappno = flask.request.json.get('plyappno')
+    # username = str(redis_conn.hget('guoshou_' + plyappno, 'username'), 'utf8')
+    # if redis_conn.hget('guoshou_' + username, 'type'):
+    #     typee = str(redis_conn.hget('guoshou_' + username, 'type'), 'utf8')
+    # elif redis_conn.hget('edian_' + username, 'type'):
+    #     typee = str(redis_conn.hget('edian_' + username, 'type'), 'utf8')
+    # if typee == '0':
     username = flask.request.json.get('username')
     ret=get_feichexian(username)
     return ret, 200, {'Content-Type': 'application/json'}
@@ -256,5 +490,12 @@ def gs_get_fcx():
 @guoshou.route('/gs/revocation',methods=['post'])
 def hn_revocation():
     plyappno = flask.request.json.get('plyappno')
-    ret = GS_revocation(plyappno).main()
-    return ret, 200, {'Content-Type': 'application/json'}
+    username = str(redis_conn.hget('guoshou_' + plyappno, 'username'), 'utf8')
+    if redis_conn.hget('guoshou_' + username, 'type'):
+        typee = str(redis_conn.hget('guoshou_' + username, 'type'), 'utf8')
+    elif redis_conn.hget('edian_' + username, 'type'):
+        typee = str(redis_conn.hget('edian_' + username, 'type'), 'utf8')
+    if typee == '0':
+        plyappno = flask.request.json.get('plyappno')
+        ret = GS_revocation(plyappno).main()
+        return ret, 200, {'Content-Type': 'application/json'}

+ 174 - 0
logs/edian/E店报价.log

@@ -0,0 +1,174 @@
+2024-03-28 14:14:43,382 - getlogs.py - line:27 - INFO - E店保费计算共用时36.46s -8240
+2024-03-28 14:15:01,223 - getlogs.py - line:27 - INFO - E店保费计算共用时6.99s -8240
+2024-03-28 14:41:04,932 - getlogs.py - line:27 - INFO - E店保费计算共用时38.6s -8456
+2024-03-28 14:41:29,853 - getlogs.py - line:27 - INFO - E店保费计算共用时12.13s -8456
+2024-03-28 14:45:38,650 - getlogs.py - line:27 - INFO - E店保费计算共用时12.85s -5960
+2024-03-28 14:46:28,362 - getlogs.py - line:27 - INFO - E店保费计算共用时12.68s -2808
+2024-03-28 14:51:32,592 - getlogs.py - line:27 - INFO - E店保费计算共用时38.75s -13580
+2024-03-28 14:51:32,593 - getlogs.py - line:34 - ERROR - 'ed_calculation' object has no attribute 'structureId' -13580
+2024-03-28 14:51:32,594 - getlogs.py - line:35 - ERROR - Traceback (most recent call last):
+  File "E:\FlaskProject\blueprint\ed_api.py", line 207, in gs_bfjs
+    ret = carinfo.main()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2672, in main
+    return self.repeat(self.calculation())
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 1992, in repeat
+    return 	self.repeat(response)
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2016, in repeat
+    return 	self.repeat(response)
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2053, in repeat
+    self.creatorder()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2594, in creatorder
+    "structureId":self.structureId,
+AttributeError: 'ed_calculation' object has no attribute 'structureId'
+-------------- 
+ -13580
+2024-03-28 14:54:48,574 - getlogs.py - line:27 - INFO - E店保费计算共用时36.3s -1976
+2024-03-28 14:54:48,576 - getlogs.py - line:34 - ERROR - 'ed_calculation' object has no attribute 'businessOffice' -1976
+2024-03-28 14:54:48,576 - getlogs.py - line:35 - ERROR - Traceback (most recent call last):
+  File "E:\FlaskProject\blueprint\ed_api.py", line 207, in gs_bfjs
+    ret = carinfo.main()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2671, in main
+    return self.repeat(self.calculation())
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2016, in repeat
+    return 	self.repeat(response)
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 1992, in repeat
+    return 	self.repeat(response)
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2053, in repeat
+    self.creatorder()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2594, in creatorder
+    "businessOffice": self.businessOffice,
+AttributeError: 'ed_calculation' object has no attribute 'businessOffice'
+-------------- 
+ -1976
+2024-03-28 14:57:03,756 - getlogs.py - line:27 - INFO - E店保费计算共用时38.53s -14180
+2024-03-28 15:15:01,675 - getlogs.py - line:27 - INFO - E店保费计算共用时45.62s -14116
+2024-03-28 15:18:33,606 - getlogs.py - line:27 - INFO - E店保费计算共用时2.53s -13936
+2024-03-28 15:18:33,608 - getlogs.py - line:34 - ERROR - Expecting value: line 1 column 1 (char 0) -13936
+2024-03-28 15:18:33,608 - getlogs.py - line:35 - ERROR - Traceback (most recent call last):
+  File "E:\flaskProject\venv\lib\site-packages\requests\models.py", line 971, in json
+    return complexjson.loads(self.text, **kwargs)
+  File "E:\Python3.8\lib\json\__init__.py", line 357, in loads
+    return _default_decoder.decode(s)
+  File "E:\Python3.8\lib\json\decoder.py", line 337, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "E:\Python3.8\lib\json\decoder.py", line 355, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "E:\FlaskProject\blueprint\ed_api.py", line 207, in gs_bfjs
+    ret = carinfo.main()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2662, in main
+    ret=self.get_nextstep()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 1162, in get_nextstep
+    if response.json().get('status')=='500':
+  File "E:\flaskProject\venv\lib\site-packages\requests\models.py", line 975, in json
+    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
+requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+-------------- 
+ -13936
+2024-03-28 15:20:03,533 - getlogs.py - line:27 - INFO - E店保费计算共用时41.82s -14068
+2024-03-28 15:21:30,008 - getlogs.py - line:27 - INFO - E店保费计算共用时44.08s -11412
+2024-03-28 15:26:11,337 - getlogs.py - line:27 - INFO - E店保费计算共用时42.58s -14144
+2024-03-28 15:36:20,562 - getlogs.py - line:27 - INFO - E店保费计算共用时36.93s -7624
+2024-03-28 15:39:15,233 - getlogs.py - line:27 - INFO - E店保费计算共用时35.18s -1696
+2024-03-28 15:50:17,825 - getlogs.py - line:27 - INFO - E店保费计算共用时37.91s -7148
+2024-03-28 15:50:17,826 - getlogs.py - line:34 - ERROR - 'ed_calculation' object has no attribute 'syShow' -7148
+2024-03-28 15:50:17,826 - getlogs.py - line:35 - ERROR - Traceback (most recent call last):
+  File "E:\FlaskProject\blueprint\ed_api.py", line 207, in gs_bfjs
+    ret = carinfo.main()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2707, in main
+    return self.repeat(self.calculation())
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 1997, in repeat
+    return 	self.repeat(response)
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2021, in repeat
+    return 	self.repeat(response)
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2058, in repeat
+    self.creatorder()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2597, in creatorder
+    data['syShow'] = self.syShow
+AttributeError: 'ed_calculation' object has no attribute 'syShow'
+-------------- 
+ -7148
+2024-03-28 15:54:28,155 - getlogs.py - line:27 - INFO - E店保费计算共用时37.8s -13152
+2024-03-28 16:03:15,242 - getlogs.py - line:27 - INFO - E店保费计算共用时41.14s -8248
+2024-03-28 16:04:58,556 - getlogs.py - line:27 - INFO - E店保费计算共用时39.33s -14008
+2024-03-28 16:06:06,549 - getlogs.py - line:27 - INFO - E店保费计算共用时48.7s -12720
+2024-03-28 16:09:09,273 - getlogs.py - line:27 - INFO - E店保费计算共用时47.58s -14240
+2024-03-28 16:11:41,049 - getlogs.py - line:27 - INFO - E店保费计算共用时47.49s -14264
+2024-03-28 16:32:51,714 - getlogs.py - line:27 - INFO - E店保费计算共用时45.97s -13924
+2024-03-28 16:36:59,831 - getlogs.py - line:27 - INFO - E店保费计算共用时8.76s -13924
+2024-03-28 16:36:59,833 - getlogs.py - line:34 - ERROR - 'NoneType' object has no attribute 'get' -13924
+2024-03-28 16:36:59,833 - getlogs.py - line:35 - ERROR - Traceback (most recent call last):
+  File "E:\FlaskProject\blueprint\ed_api.py", line 207, in gs_bfjs
+    ret = carinfo.main()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2726, in main
+    return self.repeat(self.calculation())
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 1980, in repeat
+    self.tranNo = response.json().get('data').get('orderVo').get('transactionNo')
+AttributeError: 'NoneType' object has no attribute 'get'
+-------------- 
+ -13924
+2024-03-28 16:38:03,111 - getlogs.py - line:27 - INFO - E店保费计算共用时8.23s -12696
+2024-03-28 16:38:03,112 - getlogs.py - line:34 - ERROR - 'NoneType' object has no attribute 'get' -12696
+2024-03-28 16:38:03,112 - getlogs.py - line:35 - ERROR - Traceback (most recent call last):
+  File "E:\FlaskProject\blueprint\ed_api.py", line 207, in gs_bfjs
+    ret = carinfo.main()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2726, in main
+    return self.repeat(self.calculation())
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 1980, in repeat
+    self.tranNo = response.json().get('data').get('orderVo').get('transactionNo')
+AttributeError: 'NoneType' object has no attribute 'get'
+-------------- 
+ -12696
+2024-03-28 16:39:03,281 - getlogs.py - line:27 - INFO - E店保费计算共用时8.02s -12696
+2024-03-28 16:39:03,281 - getlogs.py - line:34 - ERROR - 'NoneType' object has no attribute 'get' -12696
+2024-03-28 16:39:03,282 - getlogs.py - line:35 - ERROR - Traceback (most recent call last):
+  File "E:\FlaskProject\blueprint\ed_api.py", line 207, in gs_bfjs
+    ret = carinfo.main()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2726, in main
+    else:
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 1980, in repeat
+    if response.json().get('status')=="200":
+AttributeError: 'NoneType' object has no attribute 'get'
+-------------- 
+ -12696
+2024-03-28 16:40:39,669 - getlogs.py - line:27 - INFO - E店保费计算共用时19.97s -12696
+2024-03-28 16:57:05,477 - getlogs.py - line:27 - INFO - E店保费计算共用时40.01s -13616
+2024-03-28 16:59:00,901 - getlogs.py - line:27 - INFO - E店保费计算共用时24.0s -13616
+2024-03-28 17:00:06,561 - getlogs.py - line:27 - INFO - E店保费计算共用时25.62s -8336
+2024-03-28 17:02:00,180 - getlogs.py - line:27 - INFO - E店保费计算共用时25.88s -10256
+2024-03-28 17:06:03,162 - getlogs.py - line:27 - INFO - E店保费计算共用时5.37s -10256
+2024-03-28 17:06:03,163 - getlogs.py - line:34 - ERROR - 'ed_calculation' object has no attribute 'structureId' -10256
+2024-03-28 17:06:03,163 - getlogs.py - line:35 - ERROR - Traceback (most recent call last):
+  File "E:\FlaskProject\blueprint\ed_api.py", line 207, in gs_bfjs
+    ret = carinfo.main()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2727, in main
+    else:
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2350, in get_discountprice
+    self.creatorder()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2630, in creatorder
+    "structureId":self.structureId,
+AttributeError: 'ed_calculation' object has no attribute 'structureId'
+-------------- 
+ -10256
+2024-03-28 17:07:27,954 - getlogs.py - line:27 - INFO - E店保费计算共用时16.07s -260
+2024-03-28 17:17:22,776 - getlogs.py - line:27 - INFO - E店保费计算共用时0.5s -12872
+2024-03-28 17:17:22,777 - getlogs.py - line:34 - ERROR - 'NoneType' object has no attribute 'get' -12872
+2024-03-28 17:17:22,777 - getlogs.py - line:35 - ERROR - Traceback (most recent call last):
+  File "E:\FlaskProject\blueprint\ed_api.py", line 207, in gs_bfjs
+    ret = carinfo.main()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2717, in main
+    return self.get_discountprice()
+  File "E:\FlaskProject\spiders\edian\baojia\ed_bfjs.py", line 2334, in get_discountprice
+    firstdata['businessCalcFeeVo']=response.json().get('data').get('businessCalcFeeVo')
+AttributeError: 'NoneType' object has no attribute 'get'
+-------------- 
+ -12872
+2024-03-28 17:18:03,795 - getlogs.py - line:27 - INFO - E店保费计算共用时26.0s -12872
+2024-03-28 17:18:34,111 - getlogs.py - line:27 - INFO - E店保费计算共用时15.72s -12872
+2024-03-28 17:19:02,234 - getlogs.py - line:27 - INFO - E店保费计算共用时14.59s -12872
+2024-03-28 17:19:29,284 - getlogs.py - line:27 - INFO - E店保费计算共用时15.41s -12872
+2024-03-28 17:20:00,783 - getlogs.py - line:27 - INFO - E店保费计算共用时17.05s -12872

+ 0 - 0
logs/edian/E店核保.log


+ 0 - 0
logs/edian/__init__.py


+ 4 - 1
logs/getlogs.py

@@ -61,4 +61,7 @@ tp_hb_log=Get_logs('太平核保','taiping','tp_hb').main()
 
 
 hn_bj_log=Get_logs('华农报价','huanong','hn_bfjs').main()
-hn_hb_log=Get_logs('华农核保','huanong','hn_hb').main()
+hn_hb_log=Get_logs('华农核保','huanong','hn_hb').main()
+
+ed_bj_log=Get_logs('E店报价','edian','ed_bfjs').main()
+ed_hb_log=Get_logs('E店核保','edian','ed_hb').main()

+ 0 - 0
spiders/edian/Login/__init__.py


+ 112 - 0
spiders/edian/Login/ed_login.py

@@ -0,0 +1,112 @@
+import json
+
+import requests
+import ddddocr
+from urllib import parse
+class ED_login(object):
+    def __init__(self,uname):
+        self.uname=uname
+
+
+
+    def login(self):
+        headers = {
+            "Accept": "application/json, text/plain, */*",
+            "Content-Type": "application/json",
+            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
+        }
+        url = "https://shuangyang.e-chinalife.com/ifbms-estore/gsjy/finance/client/collect"
+        data = {
+            "src": "eshop",
+            "protocol": "v1",
+            "planCode": "car",
+            "planName": "车险",
+            "msg": "0",
+            "agentNo": self.uname,
+            "bid": "140000",
+            "token": "",
+            "version": "",
+            "clientType": "1",
+            "name": "",
+            "idType": "",
+            "idTypeText": "",
+            "idNo": "",
+            "phone": "",
+            "birthday": "",
+            "carNo": ""
+        }
+        data = json.dumps(data, separators=(',', ':'))
+        response = requests.post(url, headers=headers, data=data)
+        if response.json().get('msg')=='采集成功':
+            nextUrl=response.json().get('data').get('nextUrl')
+            print(nextUrl)
+            thisId=nextUrl.split('=')[-1]
+            print(response.text)
+            #获取token
+            headers = {
+                "Accept": "application/json, text/plain, */*",
+                "Content-Type": "application/json;charset=UTF-8",
+                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
+            }
+            url = "https://hub.chinalife-p.com.cn/MesBaseUrl/getToken"
+            data = {
+                "userCode": self.uname,
+                "bid": "14000000"
+            }
+            data = json.dumps(data)
+            response = requests.post(url, headers=headers,  data=data)
+            token=response.json().get('data').get('token')
+
+            # 获取usercode
+            headers = {
+                "Accept": "application/json, text/plain, */*",
+                "Content-Type": "application/json;charset=UTF-8",
+                "OauthToken": token,
+                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
+            }
+            url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderPrefill/getPreFill"
+            data = {
+                "thisId": thisId
+            }
+            data = json.dumps(data, separators=(',', ':'))
+            response = requests.post(url, headers=headers, data=data)
+
+            userCode_str=response.json().get('data')
+            userCode=parse.unquote(parse.unquote(userCode_str).split('&')[0].split('=')[-1])
+
+
+
+
+
+
+            return {
+                'code':200,
+                'token':token,
+                'message':'登录成功',
+                'userCode':userCode,
+                'prefillCode':thisId,
+            }
+
+        else:
+            return {
+                'code':400,
+                'message':'登录失败'
+            }
+
+
+
+
+
+
+    def main(self):
+        return self.login()
+
+
+
+if __name__ == '__main__':
+    aaa = ED_login('140302199201141223')
+    # aaa = ED_login('140104197612200315')
+    cookies=aaa.main()
+    print(cookies)
+
+

+ 0 - 0
spiders/edian/__init__.py


+ 0 - 0
spiders/edian/baojia/__init__.py


+ 2896 - 0
spiders/edian/baojia/ed_bfjs.py

@@ -0,0 +1,2896 @@
+# *_* coding:utf-8 *_*
+import datetime
+import re
+
+import execjs
+import requests
+import json
+import time
+from config import *
+from spiders.edian.guishu.ed_config import *
+
+
+
+class ed_calculation(object):
+	def __init__(  # token、车辆、人员信息
+			self,username, modelCName, engineNo, vin, licenseNo,seatCount, purchasePrice,vehicleUse,limitLoad,cartype,
+			identifyNumber, uname, address, phone_number,
+			tb_identifyNumber, tb_uname, tb_address, tb_phone_number,
+			bb_identifyNumber, bb_uname, bb_address, bb_phone_number,
+			registerDate, issueDate, isTransfer,
+			# 交强险、商业险是否选择,起止日期信息
+			jiaoqiang_chooseFlag, chesun_chooseFlag, jiaoqiang_startDate, jiaoqiang_endDate, chesun_startDate,
+			chesun_endDate, shangye_chooseFlag,
+			# # 三者责任险、价格,司机、乘客责任险、价格,划痕险、价格
+			sanzhe_chooseFlag, sanzhe_amount, sjzeren_chooseFlag, sjzeren_amount, ckzeren_chooseFlag, ckzeren_amount,
+			huahen_chooseFlag, huahen_amount,
+			# # 附加险信息
+			fujiachesun_chooseFlag, fujiachesun_amount, fujiasanzhe_chooseFlag, fujiasanzhe_amount,
+			fujiasiji_chooseFlag, fujiasiji_amount, fujiachengke_chooseFlag, fujiachengke_amount,
+			fujia_jiejiari_chooseFlag, fujia_jiejiari_amount,
+			ybw_sanzhe_chooseFlag, ybw_sanzhe_amount,
+			ybw_siji_chooseFlag, ybw_siji_amount, ybw_ck_chooseFlag, ybw_ck_amount,
+			accidentalDrivingVo,secondhandcarflag,discount,plyappno
+	):
+
+		# 商业折扣系数
+		self.discount = discount
+		# 订单号
+		self.plyappno = plyappno
+
+		self.username=username
+		self.uname = uname
+		self.address = address
+		self.phone_number = phone_number
+		self.identifyNumber = str(identifyNumber)
+		self.seat=seatCount
+		self.tb_identifyNumber = str(tb_identifyNumber)
+		self.tb_uname = tb_uname
+		self.tb_address = tb_address
+		self.tb_phone_number = tb_phone_number
+
+		self.bb_identifyNumber = str(bb_identifyNumber)
+		self.bb_uname = bb_uname
+		self.bb_address = bb_address
+		self.bb_phone_number = bb_phone_number
+		self.modelCName = modelCName.replace('牌', '')
+		self.engineNo = engineNo
+		self.vin = vin
+		self.licenseNo = licenseNo
+		self.purchasePrice = purchasePrice
+
+		self.limitLoad = limitLoad
+		self.cartype = cartype
+		for i in car_type:
+			if str(i)==(self.cartype):
+				self.vehiclestyleName=car_type.get(i)
+		self.vehicleUse = vehicleUse
+
+		if self.vehicleUse == '08' or self.vehicleUse == '04':
+			self.carType = 'H0'
+			self.carTypeName = '货车'
+		else:
+			self.carType = 'A0'
+			self.carTypeName = '客车'
+
+
+		# carUserType使用性质编码
+		# carUserTypeName使用性质名称
+		if self.vehicleUse == '04':
+			self.carUserType = '9D'
+			self.carUserTypeName = '营业货运'
+		elif self.vehicleUse=='08':
+			self.carUserType = '8D'
+			self.carUserTypeName = '非营业个人'
+		else:
+			self.carUserType = '8A'
+			self.carUserTypeName = '家庭自用'
+
+
+		# 是否过户
+		self.isTransfer = isTransfer
+		self.registerDate = registerDate
+		self.issueDate = issueDate
+
+		# 保险起止日期
+		self.jiaoqiang_chooseFlag = jiaoqiang_chooseFlag
+		self.chesun_chooseFlag = chesun_chooseFlag
+		self.shangye_chooseFlag = shangye_chooseFlag
+		self.jiaoqiang_startDate = jiaoqiang_startDate
+		self.jiaoqiang_endDate = jiaoqiang_endDate
+		self.chesun_startDate = chesun_startDate
+		self.chesun_endDate = chesun_endDate
+
+		# 商业险选择信息
+		self.sanzhe_chooseFlag = sanzhe_chooseFlag
+		self.sanzhe_amount = sanzhe_amount
+		self.sjzeren_chooseFlag = sjzeren_chooseFlag
+		self.sjzeren_amount = sjzeren_amount
+		self.ckzeren_chooseFlag = ckzeren_chooseFlag
+		self.ckzeren_amount = ckzeren_amount
+		self.huahen_chooseFlag = huahen_chooseFlag
+		self.huahen_amount = str(int(huahen_amount))
+
+		# 附加险选择信息
+		self.fujiachesun_chooseFlag = fujiachesun_chooseFlag
+		self.fujiachesun_amount = fujiachesun_amount
+		self.fujiasanzhe_chooseFlag = fujiasanzhe_chooseFlag
+		self.fujiasanzhe_amount = fujiasanzhe_amount
+		self.fujiasiji_chooseFlag = fujiasiji_chooseFlag
+		self.fujiasiji_amount = fujiasiji_amount
+		self.fujiachengke_chooseFlag = fujiachengke_chooseFlag
+		self.fujiachengke_amount = fujiachengke_amount
+		self.fujia_jiejiari_chooseFlag = fujia_jiejiari_chooseFlag
+		self.fujia_jiejiari_amount = fujia_jiejiari_amount
+
+		self.ybw_sanzhe_chooseFlag = ybw_sanzhe_chooseFlag
+		self.ybw_sanzhe_amount = ybw_sanzhe_amount
+		self.ybw_siji_chooseFlag = ybw_siji_chooseFlag
+		self.ybw_siji_amount = ybw_siji_amount
+		self.ybw_ck_chooseFlag = ybw_ck_chooseFlag
+		self.ybw_ck_amount = ybw_ck_amount
+		self.secondhandcarflag=secondhandcarflag
+
+		#非车险参数
+		self.accidentalDrivingVo=accidentalDrivingVo
+
+		self.fcxres_message = None
+		# self.fcx_chooseflag = {
+		# 	'choose': '12',
+		# 	'productId': '77bcfb9bff014a93bfca0ed792c30258'
+		# }
+		self.mesOrderNcispList = []
+
+		self.headers = None
+		self.res_guishu=None
+
+
+		self.userCode=None
+		self.token=None
+		self.bid=None
+		self.orderId=None
+		self.tranNo=None
+
+		#get_carinfo参数
+		self.userID=None
+		self.encrypt=None
+		self.car_info=None
+		self.desensitizationJson=None
+
+		#险种价格
+		self.chesun_price=0
+		self.sanzhe_price=0
+		self.siji_price=0
+		self.chengke_price=0
+		self.huahen_price=0
+		self.mpv_csprice=0
+		self.mpv_szprice=0
+		self.mpv_sjprice = 0
+		self.mpv_ckprice = 0
+		self.jjr_price = 0
+		self.ybw_sanzheprice=0
+		self.ybw_ckprice=0
+		self.ybw_sjprice=0
+		self.fcx_price=0
+		self.sy_price=0
+		self.jq_price=0
+		self.chechuan_price=0
+		self.all_price=0
+
+
+		#归属信息
+		self.zhanghao_info=None
+		self.gs_name=None
+		self.gs_info=None
+
+		self.jq_repeatinfo=''
+		self.sy_repeatinfo=''
+
+		self.zhejiu_price=''
+		self.businessNatureCode=''
+
+		self.data=''
+
+
+
+
+	def get_sex(self, a):
+		if int(a[16]) % 2 == 0:
+			sex = '2'
+		else:
+			sex = '1'
+		return sex
+	def get_ProvinceCode(self, a):
+		area=''
+		city = ''
+		province = ''
+		a=a[0:13]
+		for ii in city_conde:
+			if ii[-1] in a:
+				if len(ii)==4:
+					ii.insert(3, ii[2].replace('市', ''))
+				area = str(ii[0])
+				city_name = ii[-2]
+				province_name = ii[2]
+		for iii in city_conde:
+			if city_name == iii[-1]:
+				city = str(iii[0])
+
+		for iii in city_conde:
+			if province_name == iii[-1]:
+				province = str(iii[0])
+
+		return [area, city, province]
+	def get_cityname(self,a):
+		a=a[0:16]
+		z=city_conde.copy()
+		z.reverse()
+		for ii in z:
+			if ii[-1] in a and len(ii) > 4:
+				return ii
+			elif ii[-1] in a and len(ii) == 4:
+				ii.insert(2,ii[2].replace('市',''))
+				return ii
+	def get_time(self):
+		timestamp = int(time.time())
+		timeArray = time.localtime(timestamp + 86400)
+		timeArray1 = time.localtime(timestamp + 31536000)
+		Time = time.strftime("%Y-%m-%d", timeArray) + ' 00:00:00'
+		Time2 = time.strftime("%Y-%m-%d", timeArray1) + ' 23:59:59'
+		return Time, Time2
+	def get_age(self, a):
+		age = int(self.get_time()[0][0:4]) - int(a[6:10])
+		return str(age)
+	def get_birthday(self,a):
+
+		birthday = a[6:10] + '-' + a[10:12] + '-' + a[12:14]
+		return birthday
+
+	def get_createDate(self):
+		return	time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
+	def get_year(self):
+		timestamp = int(time.time())+86400
+		timeArray = time.localtime(timestamp)
+		Time = time.strftime("%Y", timeArray)
+		return Time
+	def get_syendday(self,a):
+		a = a.split('-')
+		a[0] = str(int(a[0]) + 1)
+		a = "-".join(a)
+		try:
+			s_t = time.strptime(a, "%Y-%m-%d %H:%M:%S")
+
+		except Exception as err:
+			if str(err) == 'day is out of range for month':
+				x = a.split(' ')
+				x[0] = x[0].split('-')
+				x[0][-1] = str(int(x[0][-1]) - 1)
+				x[0] = "-".join(x[0])
+				x = " ".join(x)
+				s_t = time.strptime(x, '%Y-%m-%d %H:%M:%S')
+
+
+		mkt = int(time.mktime(s_t))
+
+		if str(a[11:13]) != '00':
+			s_l = time.localtime(mkt)
+			ts = time.strftime("%Y-%m-%d %H:%M:%S", s_l)
+			date = ts[0:10] + ' 00:00:00'
+		else:
+			s_l = time.localtime(mkt)
+			ts = time.strftime("%Y-%m-%d %H:%M:%S", s_l)
+			date = ts
+		return date
+	def get_jqendday(self,a):
+		year = str(int(a[0:4]) + 1)
+		a=a.replace(a[0:4],year)
+
+		try:
+			s_t = time.strptime(a, "%Y-%m-%d %H:%M:%S")
+			mkt = int(time.mktime(s_t))
+		except Exception as err:
+			if str(err) == 'day is out of range for month':
+				x = a.split(' ')
+				x[0] = x[0].split('-')
+				x[0][-1] = str(int(x[0][-1]) - 1)
+				x[0] = "-".join(x[0])
+				x = " ".join(x)
+				s_t = time.strptime(x, '%Y-%m-%d %H:%M:%S')
+				mkt = int(time.mktime(s_t))
+		time_local = time.localtime(mkt)
+		dt = time.strftime('%Y-%m-%d %H:%M:%S', time_local)
+
+		return dt
+
+
+	def RSA_encrypt(self):
+		js_code=open(js_path+'guoshou/RSA.js','r',encoding='utf-8').read()
+		self.encrypt=execjs.compile(js_code)
+
+	def check_login(self):
+		# redis取出token
+		self.token = str(redis_conn.hget('edian_' + self.username, 'token'), 'utf8')
+		self.userCode = str(redis_conn.hget('edian_' + self.username, 'userCode'), 'utf8')
+		self.gs_name = str(redis_conn.hget('edian_' + self.username, 'gs_name'), 'utf8')
+		self.prefillCode=str(redis_conn.hget('edian_' + self.username, 'prefillCode'), 'utf8')
+		if self.token == '':
+			self.token = '用户名、密码错误'
+
+		else:
+			headers = {
+				"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
+				"Content-Type": "application/json;charset=UTF-8",
+				"OauthToken": self.token,
+				"Accept": "application/json, text/plain, */*",
+			}
+			url = "https://mesbj.chinalife-p.com.cn/mesci/sales/SalesManager/getLoginInfo"
+			data = {
+				"userCode": self.userCode,
+				"bid": '14000000',
+				"systemSource": "ESHOP",
+				"salesGethdbyhpFlag": "1"
+			}
+			response = requests.post(url, headers=headers, data=json.dumps(data))
+
+			if response.json().get('status')!='200':
+				get_userinfo(self.username)
+				self.check_login()
+			else:
+				self.headers = {
+					"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
+					"Content-Type": "application/json;charset=UTF-8",
+					"OauthToken": self.token,
+					"Accept": "application/json, text/plain, */*",
+				}
+				self.zhanghao_info=response.json()
+
+
+
+				url = "https://mesbj.chinalife-p.com.cn/mesci/sales/SalesManagerBind/getBindInfo"
+				data = {
+					"userCode": response.json().get('data').get('userCode'),
+					"systemSource": "ESHOP"
+				}
+				response = requests.post(url, headers=headers, data=json.dumps(data))
+				for i in response.json().get('data'):
+					if self.gs_name==i.get('handlerName'):
+						self.gs_info=i
+						break
+
+
+
+
+	def get_orderId(self):
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/searchBylicensePlateNo"
+		data={
+			  # "businessOffice": "1401955003",
+			  "businessOffice": self.zhanghao_info.get('data').get('userDepartment'),
+			  # "businessOfficeName": "太原市中心支公司营业部重客条线三部",
+			"businessOfficeName":self.zhanghao_info.get('data').get('groupType'),
+			  # "structureId": "14019500",
+			"structureId": self.zhanghao_info.get('data').get('provincialCom'),
+			  # "saleBusinessSourceCode": "2",
+			"saleBusinessSourceCode": self.gs_info.get('userResourceCode'),
+			  # "saleBusinessSourceName": "专业代理",
+			"saleBusinessSourceName": self.gs_info.get('userResource'),
+			  # "saleAgreementCode": "91140100779576782A",
+			"saleAgreementCode": self.gs_info.get('userAgentCode'),
+			  # "saleAgreementName": "太原天勤保险代理有限公司",
+			"saleAgreementName": self.gs_info.get('userAgentName'),
+
+			  # "saleChnnelCode": "05",
+			"saleChnnelCode": self.gs_info.get('channelType'),
+
+			  # "saleChnnelName": "重客",
+			"saleChnnelName": self.gs_info.get('channelName'),
+
+			  "syProductCode": "0521" if len(self.licenseNo)==7 else '0531',
+
+			  # "userCode": "140104197306170867",
+			"userCode": self.gs_info.get('userCode'),
+
+			  # "licnesNo": "EAlkc+prv1FRFBxitHEMeTXnmWoDt/3E3By4aKvJTZOIljJkx5cta7yB+x5JlTne6eOVHkKdkZ/RvQ04ETopZYOy70uRU/Qdq3HKCcFY6xqKON7e8Vl3HATJoACR18ePiJRFU4eac8F1gJd2DjgdA7WkL1+tEOVEUIsIAuHILZs=",
+			# "licnesNo": self.encrypt.call('get_RSAencrypt', self.licenseNo),
+
+			"licnesNo":"",
+
+
+			  "licnesType": "02",
+			  "licnesTypeName": "小型汽车号牌",
+
+			  "positionCode": "",
+			  "positionName": "",
+
+			"loginUserCode":  self.gs_info.get('userCode'),
+
+
+			  "lifeInsuranceUserCode": None,
+			  "newCarFlag": "",
+			  # "bindId": "f8983bbed5c042039c85ae7d038cab9e",
+
+			"bindId": self.gs_info.get('id'),
+			  "reformFlag": "1",
+			  "agreementSerialNo": "",
+			  "agreementNo": "",
+			  "fixedCode": "",
+			  "officeid": self.zhanghao_info.get('data').get('officeid'),
+			  "practfno": "",
+			  "sellCode": None,
+			  "agreementCoinsFlag": None,
+			  "agreementName": "",
+			  "systemSource": "ESHOP",
+			  "initialSystemSource": "ESHOP",
+			  "oldPolicyFlag": "2",
+			  # "userName": "弓琢琦",
+			"userName": self.zhanghao_info.get('data').get('userName'),
+
+			  "handerCode": self.gs_info.get('handlerCode'),
+			  "handerName": self.gs_info.get('handlerName'),
+			  # "permitNo": "202930000000800",
+			"permitNo": self.gs_info.get('permitNo'),
+
+			  "qlfyctfNo": None,
+			  "teamType": self.zhanghao_info.get('data').get('userLevel'),
+			  "identificationCode": None,
+			  "saleschlcode": None,
+			  # "qfdepttype": "05",
+			"qfdepttype":self.gs_info.get('qfdepttype'),
+			  # "recommendGarageFlag": "0",
+			"recommendGarageFlag":self.gs_info.get('recommendGarageFlag'),
+			  "recommendGarageName": None,
+			  "recommendGarageCode": None,
+			  # "userLoginType": "1",
+			"userLoginType": self.zhanghao_info.get('data').get('userLoginType'),
+
+			  "extparams": "",
+			  "userid": "",
+			  "userinfo": "",
+			  "salesGethdbyhpFlag": "1",
+			"oriSysOperator": self.zhanghao_info.get('data').get('oriSysOperator'),
+			"oriSysOperatorKey": self.zhanghao_info.get('data').get('oriSysOperatorKey'),
+			"bpUserCode": None,
+			"prefillCode":self.prefillCode,
+			"collectionSourcesName": None,
+			  "collectionSourcesCode": None,
+			  "customerPhone": "",
+			  "groupCarCacheKey": "",
+			  "groupCarCode": "",
+			  "groupGrade": ""
+			}
+		response = requests.post(url, headers=self.headers, data=json.dumps(data))
+		self.orderId=response.json().get('data').get('orderNo')
+
+
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/salesFCBelongInfo"
+		data = {
+			"orderId": self.orderId,
+			"userLoginCode": self.gs_info.get('userCode')
+		}
+		headers = {
+			"Content-Type": "application/json;charset=UTF-8",
+			"OauthToken": self.token,
+			"Sec-Fetch-Site": "same-site",
+			"Accept": "application/json, text/plain, */*",
+			"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
+		}
+		data = json.dumps(data)
+		response = requests.post(url, headers=headers, data=data)
+		self.businessNatureCode = response.json().get('data').get('businessNatureCode')
+
+	def get_tranNo(self):
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/getInsuranceInformation"
+		data = {
+			"thisId": self.orderId,
+			"recordNo": ""
+		}
+		response = requests.post(url, headers=self.headers, data=json.dumps(data))
+		self.tranNo=response.json().get('data').get('mesOrderVo').get('transactionNo')
+		self.desensitizationJson = response.json().get('data').get('desensitizationJson')
+
+
+	def get_carinfo(self):
+		#vin搜索车辆信息
+		url = "https://mesbj.chinalife-p.com.cn/mesci/car/MesCarInfo/getVinModePage"
+		data = {
+			"businessNatureCode": self.businessNatureCode,
+			"businessOffice": self.zhanghao_info.get('data').get('userDepartment'),
+			"carKindCode": "A0",
+			"engineNumber": "",
+			"enrollDate": "",
+			"frameNo": self.encrypt.call('get_RSAencrypt',self.vin),
+			"orderId": self.orderId,
+			"productCode": "0521",
+			"structureId": self.zhanghao_info.get('data').get('provincialCom'),
+			"tranNo": self.tranNo,
+			"userCode": self.zhanghao_info.get('data').get('userCode'),
+			"systemSource": self.zhanghao_info.get('data').get('coreSystemSource'),
+			"oriSysOperator": self.zhanghao_info.get('data').get('oriSysOperator'),
+			"oriSysOperatorKey": self.zhanghao_info.get('data').get('oriSysOperatorKey'),
+			"desensitizationJson": self.desensitizationJson,
+		}
+		response = requests.post(url, headers=self.headers, data=json.dumps(data))
+		if response.json().get('status')=='302':
+			url = "https://mesbj.chinalife-p.com.cn/mesci/car/MesCarInfo/getJllxVinModePage"
+			data["newCarFlag"]="0"
+			data["licensePlateNo"] = self.encrypt.call('get_RSAencrypt',self.licenseNo)
+			dataa = data
+			response = requests.post(url, headers=self.headers, data=json.dumps(dataa))
+			car_list = response.json().get('data').get('vehicleModeList')
+			for i in car_list:
+				if int(i.get('marketDate')) <= int(self.registerDate.replace('-', '')[0:6]) and self.seat==i.get('seat'):
+					self.car_info = i
+					break
+
+		elif response.json().get('status')=='200':
+			car_list=response.json().get('data').get('data')
+			for i in car_list:
+				if i.get('marketDate'):
+
+					if  int(i.get('marketDate'))<= int(self.registerDate.replace('-','')[0:6]) and self.seat==i.get('seat'):
+						self.car_info=i
+						break
+			if self.car_info==None:
+				self.car_info=car_list[0]
+	def get_nextstep(self):
+		if self.isTransfer==False:
+			self.isTransfer='0'
+			transferdate=None
+		else:
+			self.isTransfer = '1'
+			transferdate=self.issueDate
+		vehicleQuality=''
+		if self.car_info.get('vehicleQuality'):
+			vehicleQuality=int(self.car_info.get('vehicleQuality'))
+
+		if self.secondhandcarflag==True:
+			self.secondhandcarflag='1'
+		else:
+			self.secondhandcarflag='0'
+		data={
+			  "carVoFront": {
+				"standardName": self.car_info.get('standardName'),
+				"brandCode": self.car_info.get('brandCode'),
+				"brandName": self.car_info.get('brandName'),
+				"rbCode": self.car_info.get('rbCode'),
+				"vehiclecode": self.car_info.get('standardName'),
+				"vehiclestyledesc": self.car_info.get('standardName'),
+				"exhaustscale":self.car_info.get('displacement'),
+				"passengersNumber": self.car_info.get('seat'),
+				"localpurchaseprice": self.car_info.get('purchasePrice'),
+				"fcVehicle": self.car_info.get('fcVehicle'),
+				"vehicleRemark":self.car_info.get('remark'),
+				"businessNatureCode": self.businessNatureCode,
+				"structureId": self.zhanghao_info.get('data').get('provincialCom'),
+				"businessOffice": self.zhanghao_info.get('data').get('userDepartment'),
+				"customerType": "1",
+				"mailAddress": "",
+				"homeAddress": self.encrypt.call('get_RSAencrypt',self.address),
+				"provinceCode": self.get_ProvinceCode(self.address)[-1],
+				"provinceName": self.get_cityname(self.address)[-3].replace('省',''),
+				"cityCode":  self.get_ProvinceCode(self.address)[1],
+				"cityName":  self.get_cityname(self.address)[-2],
+				"districtCode": self.get_ProvinceCode(self.address)[0],
+				"districtName": self.get_cityname(self.address)[-1],
+				"registAddCode": "",
+				"registAddName": "",
+				"registCityCode": "",
+				"registCityName": "",
+				"registDistrictCode": "",
+				"registDistrictName": "",
+				"registyAddress": "",
+				"regAddress": "",
+				"post": "",
+				"mailAddressPost": "",
+				"organizationType": "",
+				"organizationName": "",
+				"ratingType": "",
+				"ratingTypeNote": "",
+				"carOwner": self.encrypt.call('get_RSAencrypt',self.uname),
+				"carOwnerCardNo": self.encrypt.call('get_RSAencrypt',self.identifyNumber),
+				"carOwnerCardType": "01",
+				"carOwnerCardTypeName": "居民身份证",
+				"carType": self.carType,
+				"carTypeName": self.carTypeName,
+				"carUserType": self.carUserType,
+				"carUserCode": "",
+				"carUserTypeName": self.carUserTypeName,
+				"certificateDate":  self.issueDate,
+				"certificateNo": "",
+				"certificateType": "",
+				"chgownerflag":self.isTransfer,
+				"engineNo": self.encrypt.call('get_RSAencrypt',self.engineNo),
+				"enrollDate":self.registerDate,
+				"buyDate": self.registerDate,
+				"foreignCarFlag": "0",
+				"frameNo": self.encrypt.call('get_RSAencrypt',self.vin),
+				"licenseNo": self.encrypt.call('get_RSAencrypt',self.licenseNo),
+			  	"licenseType": "02",
+				"licenseTypeName": "小型汽车号牌",
+				"orderId": self.orderId,
+				"platModelCode": self.car_info.get('platModelCode'),
+				"platModelName": self.car_info.get('platModelName'),
+				"position": "",
+				"productCode": "0521" if len(self.licenseNo)==7 else '0531',
+				'energyTypesCode':'' if len(self.licenseNo)==7 else '1',
+				"startDate": "",
+				"startDateChangeFlag": "",
+				"tranNo": self.tranNo,
+				"transferdate": transferdate,
+				"updateFlag": "",
+				"userCode": self.gs_info.get('userCode'),
+				"vehiclestyle": self.cartype,
+				"vehiclestyleName": self.vehiclestyleName,
+				"newCarFlag": "0",
+				"secondhandcarflag": self.secondhandcarflag,
+				"fullWeightMax":self.car_info.get('fullWeightMax'),
+				"benefitName": "",
+				"importFlag": "1",
+				"carCertificateType": "",
+				"carCertificateTypeName": "",
+				"certificateDateBJ": "",
+				"age": self.get_age(self.identifyNumber),
+				"sex": self.get_sex(self.identifyNumber),
+				"mobile": self.encrypt.call('get_RSAencrypt',self.phone_number),
+				"carpriceType": "1" if len(self.licenseNo)==7 else '',
+				"carpriceTypeName": "实际价值" if len(self.licenseNo)==7 else '',
+				"fairMarketValue": "",
+				"licenseColorCode": None,
+				"licenseColorName": None,
+				"colorcode": self.car_info.get('colorcode'),
+				"colorname":  self.car_info.get('colorname'),
+				"vehicleQuality": vehicleQuality,
+				"vehicleTonnage":  self.car_info.get('vehicleTonnage'),
+				"energyTypesName": self.car_info.get('energyTypesName'),
+				"enginePower": self.car_info.get('enginePower'),
+				"speciesOriginCode": self.car_info.get('speciesOriginCode'),
+				"speciesOrigin": self.car_info.get('speciesOrigin'),
+				"newClassName": self.car_info.get('newClassName'),
+				"newClassCode": self.car_info.get('newClassCode'),
+				"marketDate":  self.car_info.get('marketDate'),
+				"tradeName": self.car_info.get('tradeName'),
+				"saleCompany": "",
+				"saleAreaCode": "",
+				"saleAreaName": "",
+				"saleAreaProvinceCode": "",
+				"saleAreaProvinceName": "",
+				"sale4SFlag": self.car_info.get('energyTypesCode'),
+				"deptName": self.car_info.get('familyName'),
+				"registModel": "",
+				"nationalityName": "",
+				"nationality": "",
+				"signDepartmentName": "",
+				"email": "",
+				"carOwnerStartDate": "",
+				"carOwnerEndDate": "",
+				"isLong": 0,
+				"birthDate": self.get_birthday(self.identifyNumber),
+				"occupationCodeName": "",
+				"occupationCode": "",
+				"workType": "",
+				"workTypeName": "",
+				"workTypeMidClass": "",
+				"workTypeMidClassName": "",
+				"workTypeSmallClass": "",
+				"workTypeSmallClassName": "",
+				"citizenshipName": "中国",
+				"citizenship": "CHN",
+				"car2": "0",
+				"agreementCarTypeNull": "",
+				"agreementUseTypeNull": "",
+				"familyID": self.car_info.get('familyID'),
+				"hfEndTime":self.car_info.get('hfEndTime') if self.car_info.get('hfEndTime') else '',
+				"hfStartTime": self.car_info.get('hfStartTime') if self.car_info.get('hfStartTime') else '',
+				"batteryClass": self.car_info.get('batteryClass') if self.car_info.get('batteryClass') else '',
+				"batteryCompany": self.car_info.get('batteryCompany') if self.car_info.get('batteryCompany') else '',
+				"drivingRange":self.car_info.get('drivingRange') if self.car_info.get('drivingRange') else '',
+				"batteryWarranty": self.car_info.get('batteryWarranty') if self.car_info.get('batteryWarranty') else '',
+				"electricClass": self.car_info.get('electricClass') if self.car_info.get('electricClass') else '',
+				"isbuyOrnot": "",
+				"isbuyOrnotDescribe": "",
+				"dataFrom": "",
+				"dataFromDescribe": "",
+				"modelSegmentation": "",
+				"elecBatteryType": "",
+				"elecBatteryTypeDescribe": "",
+				"isNewEnergy": "",
+				"isNewEnergyDescribe": "",
+				"modelEnergyType": "0" if len(self.licenseNo)==7 else '1' ,
+				"modelEnergyTypeName": self.car_info.get('modelEnergyTypeName'),
+				"vehicleCodeSh": "",
+			    "jqxClassId": self.car_info.get('jqxClassId') if len(self.licenseNo)==7 else '',
+			    "jqxClassName": self.car_info.get('jqxClassName') if len(self.licenseNo)==7 else '',
+			    "syxClassId": self.car_info.get('syxClassId') if len(self.licenseNo)==7 else '',
+			    "syxClassName": self.car_info.get('syxClassName') if len(self.licenseNo)==7 else '',
+				"prefillCarInfoCheck": {},
+				"carProvinceCode": "",
+				"carProvinceName": "",
+				"carCityCode": "",
+				"carCityName": "",
+				"carDistrictCode": "",
+				"carDistrictName": "",
+				"carPostalAddress": ""
+			  },
+			  "customerVo": {
+				"applicantIVo": {
+				  "customerName": self.encrypt.call('get_RSAencrypt',self.tb_uname),
+				  "identifyNumber":  self.encrypt.call('get_RSAencrypt',self.tb_identifyNumber),
+				  "identifyType": "01",
+				  "identifyTypeName": "居民身份证",
+				  "occupationCode": "3990000",
+				  "occupationCodeName": "其它办事人员和有关人员",
+				  "workType": "3",
+				  "workTypeName": "办事人员和有关人员",
+				  "workTypeMidClass": "399",
+				  "workTypeMidClassName": "其它办事人员和有关人员",
+				  "workTypeSmallClass": "39900",
+				  "workTypeSmallClassName": "其它办事人员及有关部门人员",
+				  "phone": self.encrypt.call('get_RSAencrypt',self.tb_phone_number),
+				  "relationOfCarCode": "",
+				  "relationOfCarName": "",
+				  "sex": self.get_sex(self.tb_identifyNumber),
+				  "endDate": "2030-07-26",
+				  "startDate": "2020-07-26",
+				  "isLong": 0,
+					"address": self.encrypt.call('get_RSAencrypt', self.tb_address),
+					"provinceCode": self.get_ProvinceCode(self.tb_address)[-1],
+					"provinceName": self.get_cityname(self.tb_address)[-3].replace('省',''),
+					"cityCode": self.get_ProvinceCode(self.tb_address)[1],
+					"cityName":self.get_cityname(self.tb_address)[-2],
+					"districtCode": self.get_ProvinceCode(self.tb_address)[0],
+					"districtName": self.get_cityname(self.tb_address)[-1],
+				  "email": "",
+				  "birthDate":self.get_birthday(self.tb_identifyNumber),
+				  "mobileOwnerIdType": "",
+				  "mobileOwnerIdName": "",
+				  "mobileOwnerIdNum": "",
+				  "mobileOwnerName": "",
+				  "age":  self.get_age(self.tb_identifyNumber),
+				  "nationalityName": "",
+				  "nationality": "",
+				  "signDepartmentName": "",
+				  "specialLabelSubTypeName": "",
+				  "specialLabelSubTypeCode": "",
+				  "specialLabelTypeName": "",
+				  "specialLabelTypeCode": "",
+				  "serviceLevelCode": "",
+				  "citizenship": "CHN",
+				  "citizenshipName": "中国",
+				  "post": "",
+				  "financialValue": '',
+				  "customerRiskGradeName": ""
+				},
+				"applicantOVo": {
+				  "busiLicense": "",
+				  "customerName": "",
+				  "endDate": "",
+				  "identifyNumber": "",
+				  "identifyType": "22",
+				  "identifyTypeName": "统一社会信用代码",
+				  "industryCategory": "",
+				  "industryCategoryName": "",
+				  "industrySCategory": "",
+				  "industrySCategoryName": "",
+				  "industryTCategory": "",
+				  "industryTCategoryName": "",
+				  "industryFCategory": "",
+				  "industryFCategoryName": "",
+				  "isLong": 0,
+				  "linkName": "",
+				  "linkPhone1": "",
+				  "linkPhone2": "",
+				  "mailAddressPost": "",
+				  "organizationName": "",
+				  "organizationType": "",
+				  "ratingType": "",
+				  "ratingTypeNote": "",
+				  "postAddress": "",
+				  "regAddress": "",
+				  "registAddCode": "",
+				  "registAddName": "",
+				  "registCityCode": "",
+				  "registCityName": "",
+				  "registDistrictCode": "",
+				  "registDistrictName": "",
+				  "regPlaceName": "中国",
+				  "regPlace": "CHN",
+				  "startDate": "",
+				  "taxRegistrationNo": "",
+				  "email": "",
+				  "mainBussiness": "",
+				  "managerName": "",
+				  "managerIdType": "",
+				  "managerIdTypeName": "",
+				  "managerIdNum": "",
+				  "managerType": "",
+				  "managerTypeName": "",
+				  "managerPhoneNum": "",
+				  "managerEmail": "",
+				  "mobileOwnerName": "",
+				  "mobileOwnerIdType": "",
+				  "mobileOwnerIdName": "",
+				  "mobileOwnerIdNum": "",
+				  "payAccountName": "",
+				  "financialValue": "",
+				  "customerRiskGradeName": "",
+				  "isOther": "0"
+				},
+				"applicantSameOwern": 0,
+				"applicantType": "1",
+				"orderNo": self.orderId,
+				"publicinsurantIVo": {
+				  "customerName": self.encrypt.call('get_RSAencrypt',self.bb_uname),
+				  "identifyNumber": self.encrypt.call('get_RSAencrypt',self.bb_identifyNumber),
+				  "identifyType": "01",
+				  "identifyTypeName": "居民身份证",
+				  "occupationCode": "3990000",
+				  "occupationCodeName": "其它办事人员和有关人员",
+				  "workType": "3",
+				  "workTypeName": "办事人员和有关人员",
+				  "workTypeMidClass": "399",
+				  "workTypeMidClassName": "其它办事人员和有关人员",
+				  "workTypeSmallClass": "39900",
+				  "workTypeSmallClassName": "其它办事人员及有关部门人员",
+				  "phone": self.encrypt.call('get_RSAencrypt',self.bb_phone_number),
+					"sex": self.get_sex(self.bb_identifyNumber),
+					"endDate": "2030-07-26",
+					"startDate": "2020-07-26",
+				  "isLong": 0,
+					"address": self.encrypt.call('get_RSAencrypt', self.bb_address),
+					"provinceCode": self.get_ProvinceCode(self.bb_address)[-1],
+					"provinceName": self.get_cityname(self.bb_address)[-3].replace('省', ''),
+					"cityCode": self.get_ProvinceCode(self.bb_address)[1],
+					"cityName": self.get_cityname(self.bb_address)[-2],
+					"districtCode": self.get_ProvinceCode(self.bb_address)[0],
+					"districtName": self.get_cityname(self.bb_address)[-1],
+					"relationOfCarCode": "1",
+				  "relationOfCarName": "所有",
+				  "email": "",
+				  "birthDate":  self.get_birthday(self.bb_identifyNumber),
+				  "mobileOwnerIdType": "",
+				  "mobileOwnerIdName": "",
+				  "mobileOwnerIdNum": "",
+				  "mobileOwnerName": "",
+				  "age":  self.get_age(self.bb_identifyNumber),
+				  "nationalityName": "",
+				  "nationality": "",
+				  "signDepartmentName": "",
+				  "specialLabelSubTypeName": "",
+				  "specialLabelSubTypeCode": "",
+				  "specialLabelTypeName": "",
+				  "specialLabelTypeCode": "",
+				  "serviceLevelCode": "",
+				  "citizenship": "CHN",
+				  "citizenshipName": "中国",
+				  "post": "",
+				  "financialValue": '',
+				  "customerRiskGradeName": ""
+				},
+				"publicinsurantOVo": {
+				  "busiLicense": "",
+				  "customerName": "",
+				  "endDate": "",
+				  "identifyNumber": "",
+				  "identifyType": "22",
+				  "identifyTypeName": "统一社会信用代码",
+				  "industryCategory": "",
+				  "industryCategoryName": "",
+				  "industrySCategory": "",
+				  "industrySCategoryName": "",
+				  "industryTCategory": "",
+				  "industryTCategoryName": "",
+				  "industryFCategory": "",
+				  "industryFCategoryName": "",
+				  "isLong": 0,
+				  "linkName": "",
+				  "linkPhone1": "",
+				  "linkPhone2": "",
+				  "mailAddressPost": "",
+				  "organizationName": "",
+				  "organizationType": "",
+				  "ratingType": "",
+				  "ratingTypeNote": "",
+				  "postAddress": "",
+				  "regAddress": "",
+				  "registAddCode": "",
+				  "registAddName": "",
+				  "registCityCode": "",
+				  "registCityName": "",
+				  "registDistrictCode": "",
+				  "registDistrictName": "",
+				  "regPlace": "CHN",
+				  "regPlaceName": "中国",
+				  "startDate": "",
+				  "taxRegistrationNo": "",
+				  "relationOfCarCode": "1",
+				  "relationOfCarName": "所有",
+				  "email": "",
+				  "mainBussiness": "",
+				  "financialValue": "",
+				  "customerRiskGradeName": "",
+				  "isOther": "0"
+				},
+				"publicinsurantSameOwern": 0,
+				"publicinsurantSame": 1,
+				"publicinsurantType": "1",
+				"samePerson": "",
+				"sysStatus": "0",
+				"readonlyApplicantIVo": {
+				},
+				"readonlyApplicantOVo": {
+				},
+				"readonlyPublicinsurantIVo": {
+				},
+				"readonlyPublicinsurantOVo": {
+				}
+			  },
+			  "deviceList": None,
+			  "chargerList": None,
+			  "mesOrderVo": {
+				"ifNewDevice": "0",
+				"ifNewCharge": "0",
+				"agricultureCode": "",
+				"agricultureFlag": "0",
+				"agricultureName": "非涉农",
+				"applicantInsuredRelationCode": "01",
+				"applicantInsuredRelationName": "本人",
+				"arbitboardCode": "",
+				"arbitboardName": "",
+				"argueSolution": "1",
+				"carAliases": self.car_info.get('standardName'),
+				"checkCarFlag": "0",
+				"checkCarPerson": "",
+				"cityCode": self.get_ProvinceCode(self.tb_address)[1],
+				"cityName": "",
+				"comTrafficFlag": "",
+				"doubtfulFlag": "",
+				"feeDiscountFlag": "",
+				"frameNo": self.encrypt.call('get_RSAencrypt', self.vin),
+				"groupPolicyFlag": "",
+				"jqEndDate": self.get_jqendday(self.jiaoqiang_startDate),
+				"jqPay": "",
+				"jqStartDate": self.jiaoqiang_startDate ,
+				"ktaxComCode": "",
+				"ktaxComName": "",
+				"ktaxEndDate": "",
+				"ktaxReductionDesc": "",
+				"ktaxReductionRate": "",
+				"ktaxStartDate": "",
+				  "licensePlateNo": self.encrypt.call('get_RSAencrypt', self.licenseNo),
+				"licenseType": "02",
+				"licenseTypeName": "小型汽车号牌",
+				"orderNo":  self.orderId,
+				"orderStatus": "0",
+				"orderType": "",
+				"paidFreeCertificate": "",
+				"placeNanme": "",
+				"placeNo": "",
+				"policyType": "1",
+				"prePayTax": "",
+				"provinceCode": self.get_ProvinceCode(self.tb_address)[-1],
+				"provinceName": "",
+				"realPay": "",
+				"realSxfPay": "",
+				"recommendGarageCode": "",
+				"recommendGarageFlag": "0",
+				"recommendGarageName": "",
+				"shareholderCode": "",
+				"shareholderFlag": "0",
+				"shareholderName": "",
+				"sxfDiscountRange": "",
+				"syAmount": "",
+				"syDiscount": "",
+				"syDiscountRange": "",
+				"syEndDate": self.get_syendday(self.chesun_startDate),
+				"syPay": "",
+				"syProductCode": "0521"  if len(self.licenseNo)==7 else '0531',
+				"syRealPayRate": "",
+				"syStartDate": self.chesun_startDate,
+				"taxAuthorityCode": "",
+				"taxAuthorityName": "",
+				"taxDocumentDate": "",
+				"taxPay": "",
+				"taxPayerAddress": "",
+				"taxPayerIdentifyNumber": "",
+				"taxPayerName": "",
+				"taxPayerTypeCode": "",
+				"taxPayerTypeName": "",
+				"taxRegistrationNo": "",
+				"taxTypeCode": "",
+				"thisPayTax": "",
+				"transactionNo": self.tranNo,
+				"insureMethodType": "1",
+				"policyElectricType": "1",
+				"jqPolicyElectricType": "1",
+				"otherRemarks": "",
+				"userCode":self.gs_info.get('userCode'),
+				"doubleRecordName": "",
+				"doubleRecordNumber": "",
+				"docSalesName": "",
+				"docSalePracticeNo": "",
+				"docSalesPhone": "",
+				"ifFalse": "2",
+				"customerName": None,
+				"identifyType": None,
+				"identifyName": None,
+				"identifyNumber": None,
+				"mailAddress": None,
+				"agreementNo": None,
+				"customerPhone": None,
+				"multiplexJqPolicy": None,
+				"multiplexJqStart": None,
+				"multiplexJqEnd": None,
+				"multiplexSyPolicy": None,
+				"multiplexSyStart": None,
+				"multiplexSyEnd": None,
+				"setMealNo": None,
+				"payTaxesFlag": None,
+				"agreeCustomerShareFlag": "",
+				"agreementFixedFlag": "0",
+				"agreementUseAgrRateFlag": None,
+				"vocationDocSaleSource": None,
+				"applicantToCarowner": "1",
+				"publicinsurantToApplicant": "1",
+				"createDate":self.get_createDate(),
+				"beijingToQuanguoOnoff": None,
+				"policeConfirmedFlag": "0",
+				"businessChannelCode": "0",
+				"recommendBusinessName": "",
+				"otherRecommendBusinessName": "",
+				"initialSystemSource": "ESHOP",
+				"userLoginType": "1",
+				"bailoutDiscountMsg": ""
+			  },
+			  "salesInfoVO": {
+				"addressname": "",
+				"businessOffice": self.zhanghao_info.get('data').get('userDepartment'),
+				"classcode": "0521"  if len(self.licenseNo)==7 else '0531',
+				"orderId": self.orderId,
+				"qfdepttype": self.gs_info.get('qfdepttype'),
+				"saleAgreementCode": self.gs_info.get('userAgentCode'),
+				"saleAgreementName": self.gs_info.get('userAgentName'),
+				"saleBusinessSourceCode": self.gs_info.get('userResourceCode'),
+				"saleBusinessSourceName": self.gs_info.get('userResource'),
+				"saleChnnelCode": self.gs_info.get('channelType'),
+				"saleChnnelName": self.gs_info.get('channelName'),
+				"userCode": self.gs_info.get('userCode'),
+				"userName": self.zhanghao_info.get('data').get('userName'),
+				 "handlerCode": self.gs_info.get('handlerCode'),
+			  "handlerName": self.gs_info.get('handlerName'),
+				"saleschlcode": "",
+				"provincialCom": self.zhanghao_info.get('data').get('provincialCom'),
+				"bindFlag": "0",
+				"bindId": self.gs_info.get('id'),
+				"businessOfficeName": "",
+				"identificationCode": "",
+				"ifFalse": "",
+				"lifeInsuranceUserCode": "",
+				"lifeInsuranceUserName": "",
+				"loginUserCode": "",
+				"permitNo": self.gs_info.get('permitNo'),
+				"qlfyctfNo": "",
+				"teamType": "",
+				"officeid": self.zhanghao_info.get('data').get('officeid'),
+				"practfno": "",
+				"oriSysOperator": self.zhanghao_info.get('data').get('oriSysOperator'),
+				"oriSysOperatorKey": self.zhanghao_info.get('data').get('oriSysOperatorKey'),
+				"coreSystemSource": self.zhanghao_info.get('data').get('coreSystemSource'),
+				"bid": "",
+				"bidName": "",
+				"tid": "",
+				"tidFlag": "",
+				"tidVersionNo": "",
+				"teamName": "",
+				"agentCode": "",
+				"agentName": "",
+				"recommendGarageCode": "",
+				"recommendGarageName": "",
+				"recommendGarageFlag": "0",
+				"sellCode": "",
+				"salesOrderInfoVo": {
+				  "teamName": None,
+				  "ifFalse": None,
+				  "orderId":self.orderId,
+				  "subBranchCode": None,
+				  "saleChnnelName": self.gs_info.get('channelName'),
+				  "sellCode": None,
+				  "agentCode": None,
+				  "businessOfficeName": None,
+				  "groupId": None,
+				  "saleAgreementName": self.gs_info.get('userAgentName'),
+					"handlerCode": self.gs_info.get('handlerCode'),
+					"handlerName": self.gs_info.get('handlerName'),
+				  "addressname": None,
+				  "bindId": self.gs_info.get('id'),
+				  "tid": None,
+				  "saleChnnelCode": self.gs_info.get('channelType'),
+				  "systemSource": None,
+				  "classcode": "0521"  if len(self.licenseNo)==7 else '0531',
+				  "showBank": "false",
+				  "lifeInsuranceUserCode": None,
+				  "agentRate": None,
+				  "salesOrderInfoVo": None,
+				  "provincialCom": self.zhanghao_info.get('data').get('provincialCom'),
+				  "subBranchName": None,
+				  "sellName": None,
+				  "qfdepttype": self.zhanghao_info.get('data').get('qfdepttype'),
+				  "loginUserCode": None,
+				  "agentName": None,
+				  "getGroupType": None,
+				  "oriSysOperatorKey": None,
+				  "permitNo": self.gs_info.get('permitNo'),
+				  "saleBusinessSourceName": self.gs_info.get('userResource'),
+				  "bindFlag": None,
+				  "saleAgreementCode": self.gs_info.get('userAgentCode'),
+				  "saleschlcode": None,
+				  "officeid":  self.zhanghao_info.get('data').get('officeid'),
+				  "oriSysOperator": None,
+				  "tidFlag": None,
+				  "teamType": None,
+				  "shareImgFlag": None,
+				  "businessOffice": self.zhanghao_info.get('data').get('userDepartment'),
+				  "identificationCode": None,
+				  "recommendGarageCode": None,
+				  "shareImgUserCode": None,
+				  "cgbBranchName": None,
+				  "userCode": self.gs_info.get('userCode'),
+				  "collectionSourcesCode": None,
+				  "comeFrom": None,
+				  "recommendGarageFlag": "0",
+				  "qlfyctfNo": None,
+				  "salesGethdbyhpFlag": None,
+				  "bidName": None,
+				  "tidVersionNo": None,
+				  "mobile": None,
+				  "versionFlag": None,
+				  "userName": None,
+				  "coreSystemSource": None,
+				  "practfno": None,
+				  "cgbBranchCode": None,
+				  "saleBusinessSourceCode": self.gs_info.get('userResourceCode'),
+				  "recommendGarageName": None,
+				  "collectionSourcesName": None,
+				  "lifeInsuranceUserName": None,
+				  "bid": None
+				},
+				"collectionSourcesCode": "",
+				"collectionSourcesName": ""
+			  },
+			  "desensitizationJson": self.desensitizationJson,
+			  "newVehicleRecordFlag": "0"
+		}
+		response = requests.post("https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/submitInsuranceInformation", headers=self.headers, data=json.dumps(data))
+		if response.json().get('status')=='500':
+			return response.json().get('msg')
+		else:
+			return '200'
+
+
+	def get_fcxdata(self):
+
+		if self.accidentalDrivingVo:
+
+			url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/login/encryptionConvert"
+			data = {
+				"convert": self.gs_info.get('userCode')
+			}
+			headers = {
+				"Accept": "application/json, text/plain, */*",
+				"Connection": "keep-alive",
+				"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
+				"OauthToken":self.token,
+				"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
+			}
+
+
+			response = requests.post(url, headers=headers, data=data)
+
+			encrypt_userCode=response.json().get('data')
+
+
+
+
+			url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/login/employeeLogin"
+			data = {
+				"userCode": encrypt_userCode,
+				"loginUserType": "1",
+				"isApp": "1"
+			}
+
+			headerss=self.headers
+			headerss['Content-Type']="application/x-www-form-urlencoded;charset=UTF-8"
+			response = requests.post(url, headers=self.headers, data=data)
+
+
+			managerId=response.json().get('data').get('id')
+			saleAgreementNo = response.json().get('data').get('saleAgreementNo')
+			userName = response.json().get('data').get('userName')
+			branchOfficeName= response.json().get('data').get('branchOfficeName')
+
+
+			#-----------------------------------------------------------------------------------------------
+			productId = self.accidentalDrivingVo.get('id')
+			url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/manageProducts/getProductInfoById"
+			data = {
+				"productId": productId,
+				"managerId": managerId,
+				"businessNatureCode": self.businessNatureCode,
+				"comCode": self.zhanghao_info.get('data').get('userDepartment')
+			}
+			response = requests.post(url, headers=headerss, data=data)
+			
+			# -----------------------------------------------------------------------------------------------
+			url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/carOrderInfo/getIndividualVo"
+			data = {
+				"thisId": self.orderId
+			}
+			response = requests.post(url, headers=headerss, data=data)
+			
+
+			# -----------------------------------------------------------------------------------------------
+			url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/manageProducts/fromCarModelCheck"
+			headers = {
+				"Content-Type": "application/json;charset=UTF-8",
+				"OauthToken": self.token,
+				"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
+				"bid": self.bid,
+				"Accept": "application/json, text/plain, */*",
+			}
+			data = {
+				"productId": productId,
+				"carUserNatureCode": "8A",
+				"passengersNumber": self.car_info.get('seat'),
+				"carKindCode": "A0"
+			}
+			response = requests.post(url, headers=headers, data=json.dumps(data))
+			
+			# -----------------------------------------------------------------------------------------------
+			url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/manageProducts/getUnderwritingById"
+			data = {
+				"productId": productId,
+				"managerId": managerId,
+				"businessNatureCode": self.businessNatureCode,
+				"systemSource": "fromCar",
+				"comCode": self.zhanghao_info.get('data').get('userDepartment')
+			}
+			response = requests.post(url, headers=self.headers, data=data)
+			
+			next_data=response.json().get('data')
+
+
+			# -----------------------------------------------------------------------------------------------
+			url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/order/underwritingPre"
+			next_data['carOrderId']=self.orderId
+			next_data['systemSource'] ='fromCar'
+			next_data['comCode'] = self.zhanghao_info.get('data').get('userDepartment')
+			data=json.dumps(next_data)
+			headers = {
+				"Content-Type": "application/json;charset=UTF-8",
+				"OauthToken": self.token,
+				"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
+				"bid": self.bid,
+				"Accept": "application/json, text/plain, */*",
+			}
+			response = requests.post(url, headers=headers, data=data)
+			
+			preId=response.json().get('data').get('preId')
+
+
+			#-----------------------------------------------------------------------------------------------
+			url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/salesFCBelongInfo"
+			data = {
+				"orderId": self.orderId,
+				"userLoginCode": self.gs_info.get('userCode')
+			}
+			headers = {
+				"Content-Type": "application/json;charset=UTF-8",
+				"OauthToken": self.token,
+				"Sec-Fetch-Site": "same-site",
+				"Accept": "application/json, text/plain, */*",
+				"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
+			}
+			data = json.dumps(data)
+			response = requests.post(url, headers=headers, data=data)
+			
+			salesman=response.json().get('data').get('salesman')
+			saleAgreementNo=response.json().get('data').get('saleAgreementNo')
+			businessNatureName=response.json().get('data').get('businessNatureName')
+			channelType=response.json().get('data').get('channelType')
+
+			# -----------------------------------------------------------------------------------------------
+			url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/manageProducts/FindAgentRate"
+			data = {
+				"productId": productId,
+				"managerId": managerId,
+				"businessNatureCode": self.businessNatureCode,
+				"salesman": salesman
+			}
+			response = requests.post(url, headers=self.headers, data=data)
+			
+			# -----------------------------------------------------------------------------------------------
+			url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/carOrderInfo/getIndividualVo"
+			data = {
+				"thisId": self.orderId
+			}
+			response = requests.post(url, headers=self.headers, data=data)
+			serial="".join(re.findall(r'"insuranceOrderNo":"(.*?)"',response.text,re.S))
+
+			# -----------------------------------------------------------------------------------------------
+			url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/manageProducts/getUnderwritingById"
+			data = {
+				"productId": productId,
+				"managerId": managerId,
+				"businessNatureCode": self.businessNatureCode,
+				"preId": preId,
+				"isPreUnderwriting": "1",
+				"systemSource": "fromCar",
+				"comCode":self.zhanghao_info.get('data').get('userDepartment')
+			}
+			response = requests.post(url, headers=self.headers, data=data)
+			
+			second_data=response.json().get('data')
+
+
+			# -----------------------------------------------------------------------------------------------
+			for modular in  second_data.get('modularList'):
+				if productId == 'fd2dc8abe5f94eacbc8efd3bf62a8581' or productId == '39f47efbd6004899b4fa7c80bfdba801' \
+						or productId == '71d3c2271fe5404d82c78fb07d116cf0' or productId == '77bcfb9bff014a93bfca0ed792c30258' :
+					if modular.get('sortNo')==0:
+						new_ncispUnderwritingInfoList=[]
+						ncispUnderwritingInfoList=modular.get('ncispUnderwritingInfoList')
+						for i in ncispUnderwritingInfoList:
+							if i.get('backEndTranslationNameYl')=='customerName':
+								if i['type'] == '1':
+									i['fieldType']='-1'
+									i['mustFill']='2'
+									i['display']='block'
+									i['fieldValue']=self.encrypt.call('get_RSAencrypt', self.tb_uname)
+									i['fieldValueName'] = self.encrypt.call('get_RSAencrypt', self.tb_uname)
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='mobile':
+								if i['type'] == '1':
+									i['fieldType'] = '-1'
+									i['mustFill'] = '2'
+									i['display'] = 'block'
+									i['fieldValue'] = self.encrypt.call('get_RSAencrypt', self.tb_phone_number)
+									i['fieldValueName'] = self.encrypt.call('get_RSAencrypt', self.tb_phone_number)
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='identifyType':
+								if i['type'] == '1':
+									i['readonly'] = '1'
+									i['fieldValue'] = 'idCard'
+									i['fieldValueName'] = '居民身份证'
+									i['mustFill'] = '2'
+									i['display'] = 'block'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='identifyNumber':
+								if i['type'] == '1':
+									i['fieldType'] = '-1'
+									i['mustFill'] = '2'
+									i['display'] = 'block'
+									i['fieldValue'] = self.encrypt.call('get_RSAencrypt', self.tb_identifyNumber)
+									i['fieldValueName'] = self.encrypt.call('get_RSAencrypt', self.tb_identifyNumber)
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='age':
+								if i['type'] == '1':
+									i['display'] = 'none'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='sex':
+								if i['type'] == '1':
+									if i.get('fieldValueName') == '2':
+										i['fieldValueName'] = '女'
+									else:
+										i['fieldValueName'] = '男'
+									i['fieldValue'] = '1'
+									i['display'] = 'none'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='identifyEffectiveStartDate':
+								if i['type'] == '1':
+									maxDate=str(datetime.date.today())
+									i['fieldType'] = '-1'
+									i['mustFill'] = '0'
+									i['display'] = 'block'
+									i['minDate'] = '1900-01-01'
+									i['maxDate'] = maxDate
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='identifyEffectiveTerm':
+								if i['type'] == '1':
+									i['fieldType'] = '-1'
+									i['fieldValue'] = '100'
+									i['mustFill'] = '0'
+									i['display'] = 'block'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='citizenship':
+								if i['type'] == '1':
+									i['display'] = 'block'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='provinceCode':
+								if i['type'] == '1':
+									i['readonly'] = '1'
+									i['fieldDescribe']	='省市地区'
+									i['fieldValue'] =self.get_ProvinceCode(self.tb_address)[-1]
+									i['fieldValueName'] =self.get_cityname(self.tb_address)[-3].replace('省','')
+									i['areaCodeList']=[self.get_ProvinceCode(self.tb_address)[-1],self.get_ProvinceCode(self.tb_address)[-2],self.get_ProvinceCode(self.tb_address)[0]]
+									i['remarks'] =self.get_cityname(self.tb_address)[-3].replace('省','')
+									i['display'] ='block'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='cityCode':
+								if i['type'] == '1':
+									i['readonly'] = '1'
+									i['fieldValue'] =self.get_ProvinceCode(self.tb_address)[-2]
+									i['fieldValueName'] =self.get_cityname(self.tb_address)[-2]
+									i['remarks'] =self.get_cityname(self.tb_address)[-2]
+									i['display'] ='none'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='districtCode':
+								if i['type'] == '1':
+									i['readonly'] = '1'
+									i['fieldValue'] =self.get_ProvinceCode(self.tb_address)[0]
+									i['fieldValueName'] =self.get_cityname(self.tb_address)[-1]
+									i['remarks'] =self.get_cityname(self.tb_address)[-1]
+									i['display'] ='none'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl')=='email':
+								if i['type'] == None:
+									i['display'] = 'block'
+									new_ncispUnderwritingInfoList.append(i)
+						modular['selected']=True
+						modular['ncispUnderwritingInfoList']=new_ncispUnderwritingInfoList
+
+					elif modular.get('sortNo')==100:
+						new_ncispUnderwritingInfoList = []
+						ncispUnderwritingInfoList = modular.get('ncispUnderwritingInfoList')
+						for i in ncispUnderwritingInfoList:
+							if i.get('backEndTranslationNameYl') == 'relationToApplicantCode':
+								if i['type'] == '1':
+									i['fieldValue'] = '1'
+									i['fieldValueName'] = '本人'
+									i['display'] = 'block'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'customerName':
+								if i['type'] == '1':
+									i['display'] = 'none'
+									i['fieldValue'] = self.encrypt.call('get_RSAencrypt', self.bb_uname)
+									i['fieldValueName'] = self.encrypt.call('get_RSAencrypt', self.bb_uname)
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'mobile':
+								if i['type'] == '1':
+									i['display'] = 'none'
+									i['fieldValue'] = self.encrypt.call('get_RSAencrypt', self.bb_phone_number)
+									i['fieldValueName'] = self.encrypt.call('get_RSAencrypt', self.bb_phone_number)
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'identifyType':
+								if i['type'] == '1':
+									i['display'] = 'none'
+									i['fieldValueName'] = '居民身份证'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'identifyNumber':
+								if i['type'] == '1':
+									i['display'] = 'none'
+									i['fieldValue'] = self.encrypt.call('get_RSAencrypt', self.bb_identifyNumber)
+									i['fieldValueName'] = self.encrypt.call('get_RSAencrypt', self.bb_identifyNumber)
+									new_ncispUnderwritingInfoList.append(i)
+
+							elif i.get('backEndTranslationNameYl') == 'sex':
+								if i['type'] == '1':
+									if i.get('fieldValueName') == '2':
+										i['fieldValueName'] = '女'
+									else:
+										i['fieldValueName'] = '男'
+									i['display'] = 'none'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'citizenship':
+								if i['type'] == '1':
+									i['display'] = 'none'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'age':
+								if i['type'] == '1':
+									i['display'] = 'none'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'identifyEffectiveStartDate':
+								if i['type'] == '1':
+									maxDate = str(datetime.date.today())
+									i['minDate'] = '1900-01-01'
+									i['maxDate'] = maxDate
+									i['display'] = 'none'
+									i['mustFill'] = '0'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'identifyEffectiveTerm':
+								if i['type'] == '1':
+									i['display'] = 'none'
+									i['mustFill'] = '0'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'provinceCode':
+								if i['type'] == '1':
+									i['fieldValue'] = self.get_ProvinceCode(self.bb_address)[-1]
+									i['fieldValueName'] = self.get_cityname(self.bb_address)[-3].replace('省','')
+									i["fieldDescribe"] ="省市地区"
+									i['remarks'] = self.get_cityname(self.bb_address)[-3].replace('省','')
+									i['areaCodeList'] = [self.get_ProvinceCode(self.bb_address)[-1], self.get_ProvinceCode(self.bb_address)[-2], self.get_ProvinceCode(self.bb_address)[-3]]
+									i['display'] = 'none'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'cityCode':
+								if i['type'] == '1':
+									i['fieldValue'] = self.get_ProvinceCode(self.bb_address)[-2]
+									i['fieldValueName'] = self.get_cityname(self.bb_address)[-2]
+									i['remarks'] = self.get_cityname(self.bb_address)[-2]
+									i['display'] = 'none'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'districtCode':
+								if i['type'] == '1':
+									i['fieldValue'] = self.get_ProvinceCode(self.bb_address)[0]
+									i['fieldValueName'] = self.get_cityname(self.bb_address)[-1]
+									i['remarks'] = self.get_cityname(self.bb_address)[-1]
+									i['display'] = 'none'
+									new_ncispUnderwritingInfoList.append(i)
+						modular['selected'] = True
+						modular['ncispUnderwritingInfoList'] = new_ncispUnderwritingInfoList
+
+					elif modular.get('sortNo')==200:
+						new_ncispUnderwritingInfoList = []
+						ncispUnderwritingInfoList = modular.get('ncispUnderwritingInfoList')
+						for i in ncispUnderwritingInfoList:
+							if i.get('backEndTranslationNameYl') == 'licensePlateNo':
+								if i['type'] == None:
+									i["fieldType"] ="-1"
+									# i['fieldValue'] = '-1'
+									i['mustFill'] = '2'
+									i['display'] = 'block'
+									i['fieldValue'] = self.encrypt.call('get_RSAencrypt', self.licenseNo)
+									i['fieldValueName'] = self.encrypt.call('get_RSAencrypt', self.licenseNo)
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'engineNumber':
+								if i['type'] == None:
+									i['fieldType'] = '-1'
+									i['mustFill'] = '2'
+									i['display'] = 'block'
+									i['fieldValue'] = self.encrypt.call('get_RSAencrypt', self.engineNo)
+									i['fieldValueName'] = self.encrypt.call('get_RSAencrypt', self.engineNo)
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'frameNo':
+								if i['type'] == None:
+									i['fieldType'] = '-1'
+									i['mustFill'] = '2'
+									i['display'] = 'block'
+									i['fieldValue'] = self.encrypt.call('get_RSAencrypt', self.vin)
+									i['fieldValueName'] = self.encrypt.call('get_RSAencrypt', self.vin)
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'passengersNumber':
+								if i['type'] == None:
+									i['readonly'] = '1'
+									i['fieldValue'] =self.car_info.get('seat')
+									i['fieldValueName']=self.car_info.get('seat')+'座'
+									i['mustFill']='2'
+									i['display'] = 'block'
+									new_ncispUnderwritingInfoList.append(i)
+							elif i.get('backEndTranslationNameYl') == 'carUserNatureCode':
+								if i['type'] == None:
+									i['readonly'] = '1'
+									i['fieldValue'] ='8A'
+									i['fieldValueName']='家庭自用'
+									i['mustFill']='2'
+									i['display'] = 'block'
+									new_ncispUnderwritingInfoList.append(i)
+						modular['selected'] = True
+						modular['ncispUnderwritingInfoList'] = new_ncispUnderwritingInfoList
+
+					elif modular.get('sortNo')==9999:
+						new_ncispUnderwritingInfoList = []
+						ncispUnderwritingInfoList = modular.get('ncispUnderwritingInfoList')
+						for i in ncispUnderwritingInfoList:
+							if i.get('backEndTranslationNameYl') == 'mark1':
+								if i['type'] == None:
+									i['display'] = 'block'
+									new_ncispUnderwritingInfoList.append(i)
+						modular['selected'] = True
+						modular['ncispUnderwritingInfoList'] = new_ncispUnderwritingInfoList
+
+			if productId == 'fd2dc8abe5f94eacbc8efd3bf62a8581' or productId == '39f47efbd6004899b4fa7c80bfdba801' \
+					or productId == '71d3c2271fe5404d82c78fb07d116cf0'		or productId == '77bcfb9bff014a93bfca0ed792c30258':
+				second_data['salesmanCode']=self.gs_info.get('userCode')
+				second_data['channelType'] = channelType
+				second_data['lockType'] = '0'
+				second_data['recommendGarageFlag'] = '0'
+				second_data['remarks'] =self.tb_phone_number
+				second_data['selectGroupId']=None
+				second_data['fromCarSystemSource'] = None
+				second_data['orderSource'] = '0'
+				second_data['policyHolderTypeOption']=None
+				second_data['policyHolderType']='1'
+				second_data['insuredPersonType']='1'
+				second_data['insuredPersonTypeOption']=None
+				second_data['saleAgreementNo'] = saleAgreementNo
+				second_data['businessNatureName'] = businessNatureName
+				second_data['salesman'] =salesman
+				second_data['comCode'] = self.zhanghao_info.get('data').get('userDepartment')
+				second_data['systemSource'] = "fromCar"
+				second_data['saleAgreementName'] =self.gs_info.get('userAgentName')
+				second_data['businessOfficeName'] =branchOfficeName
+				second_data['makeCom'] =self.zhanghao_info.get('data').get('userDepartment')
+				second_data['policeConfirmedFlag'] ="0"
+				second_data['startDate'] =self.get_time()[0]
+				second_data['period']='1y'
+				second_data['recordClerkCode']=self.gs_info.get('userCode')
+				second_data['agreeCusFlag']="0"
+				second_data['endDate'] = self.get_time()[1]
+				second_data["docSalePracticeNo"] = None
+				second_data["docSalesName"] = None
+				second_data["docSalesPhone"] = None
+				second_data["recommendGarageName"] = None
+				second_data["recommendGarageCode"] = None
+				second_data['businessNatureCode']=self.businessNatureCode
+				second_data['prefillCode'] = self.prefillCode
+				second_data['serial']=serial
+				second_data['insuranceOrderNo']=serial
+				second_data['handlerCode']= self.gs_info.get('handlerCode')
+			headers = {
+				"Accept": "application/json, text/plain, */*",
+				"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
+				"Content-Type": "application/json;charset=UTF-8",
+				"OauthToken": self.token,
+				"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
+			}
+			url = 'https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/order/underwritingVariablePremiumVariablePremium'
+			response = requests.post(url, headers=headers, data=json.dumps(second_data))
+			self.fcx_price=response.json().get('data')
+			if response.json().get('status')=='SUCCESS':
+				second_data['fromCarSystemSource']='ESHOP'
+				second_data['premium']=self.fcx_price
+				second_data['collectionSourcesCode']=''
+				second_data['collectionSourcesName'] = ''
+
+				url='https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/order/underwriting'
+				headers = {
+					"Accept": "application/json, text/plain, */*",
+					"Content-Type": "application/json;charset=UTF-8",
+					"OauthToken": self.token,
+					"Origin": "https://hub.chinalife-p.com.cn",
+					"Referer": "https://hub.chinalife-p.com.cn/",
+					"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
+					"type": "0"
+				}
+				data = json.dumps(second_data)
+				response = requests.post(url, headers=headers, data=data)
+				if response.json().get('status')=='SUCCESS':
+					fxc_orderId = response.json().get('data')
+					# -----------------------------------------------------------------------------------------------
+					url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/order/getProposalByInsuranceNumber"
+					data = {
+						"orderId": fxc_orderId
+					}
+					response = requests.post(url, headers=self.headers, data=data).json()
+					#非车险参数
+					mesOrderNcispList={}
+					mesOrderNcispList['ncispPlanName']=response.get('data').get('data').get('planName')
+					mesOrderNcispList['ncispPlanCode'] = response.get('data').get('data').get('planCode')
+					mesOrderNcispList['ncispProductName'] = response.get('data').get('data').get('productName')
+					mesOrderNcispList['ncispProductCode'] = response.get('data').get('data').get('productCode')
+					mesOrderNcispList['ncispAmount'] = response.get('data').get('data').get('sumInsured')
+					mesOrderNcispList['ncispPay'] = response.get('data').get('data').get('taxedPremium')
+					mesOrderNcispList['ncispStartDate'] = response.get('data').get('data').get('policyStartDate')
+					mesOrderNcispList['ncispEndDate'] = response.get('data').get('data').get('policyEndDate')
+					mesOrderNcispList['ncispProposalNo'] = response.get('data').get('data').get('proposalNo')
+					mesOrderNcispList['orderNo'] = self.orderId
+					mesOrderNcispList['businessNatureCode'] = self.businessNatureCode
+					mesOrderNcispList['businessNatureName'] = response.get('data').get('data').get('businessNatureName')
+					mesOrderNcispList['saleaman'] = self.gs_info.get('userCode')
+					mesOrderNcispList['saleamanName'] = response.get('data').get('data').get('saleamanName')
+					mesOrderNcispList['plcRelClauseLiabilityVOList'] = response.get('data').get('data').get('plcRelClauseLiabilityVOList')
+					mesOrderNcispList['size'] ='1'
+					mesOrderNcispList['isCommerce'] = response.get('data').get('data').get('isCommerce')
+					mesOrderNcispList['quotaProjectNo'] = response.get('data').get('data').get('quotaProjectNo')
+					mesOrderNcispList['identifyType'] = response.get('data').get('data').get('identifyType')
+					mesOrderNcispList['identifyName'] = response.get('data').get('data').get('identifyName')
+					mesOrderNcispList['identifyNumber'] = response.get('data').get('data').get('identifyNumber')
+					mesOrderNcispList['customerName'] = response.get('data').get('data').get('customerName')
+					mesOrderNcispList['insuredIdentifyType'] = response.get('data').get('data').get('insuredIdentifyType')
+					mesOrderNcispList['insuredIdentifyName'] = response.get('data').get('data').get('insuredIdentifyName')
+					mesOrderNcispList['insuredIdentifyNumber'] = response.get('data').get('data').get('insuredIdentifyNumber')
+					mesOrderNcispList['insuredCustomerName'] = response.get('data').get('data').get('insuredCustomerName')
+					mesOrderNcispList['vehicleName'] = response.get('data').get('data').get('vehicleName')
+					mesOrderNcispList['toncount'] = response.get('data').get('data').get('toncount')
+					mesOrderNcispList['caraddType'] = response.get('data').get('data').get('caraddType')
+					mesOrderNcispList['productLine'] = response.get('data').get('data').get('productLine')
+					mesOrderNcispList['ncispPublicinsurantStr'] =''
+					mesOrderNcispList['isDriveInsurance'] = response.get('data').get('data').get('isDriveInsurance')
+					mesOrderNcispList['productId'] = response.get('data').get('data').get('productId')
+					mesOrderNcispList['combinationNo'] = response.get('data').get('data').get('combinationNo')
+
+					self.mesOrderNcispList.append(mesOrderNcispList)
+			else:
+				self.fcxres_message=response.json().get('msg')
+				self.mesOrderNcispList=[]
+
+
+	def calculation(self):
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesCarInfo/getCarConfirmInfoForFrontByOrderId"
+		data = {
+			"orderId": self.orderId
+		}
+		self.headers['Content-Type']='application/json;charset=UTF-8'
+		response = requests.post(url, headers=self.headers, data=json.dumps(data))
+		n_data=response.json().get('data')
+		if n_data.get('vehicleQuality'):
+			vehicleQuality = int(n_data.get('vehicleQuality'))
+		else:
+			vehicleQuality = ''
+		if n_data.get('localpurchaseprice'):
+			localpurchaseprice = int(n_data.get('localpurchaseprice'))
+		else:
+			localpurchaseprice = ''
+		if n_data.get('enginePower'):
+			enginePower = int(n_data.get('enginePower'))
+		else:
+			enginePower = ''
+		n_data['tranNo']=self.tranNo
+		n_data['oriSysOperatorKey'] = self.zhanghao_info.get('data').get('oriSysOperatorKey')
+		n_data['oriSysOperator'] =self.zhanghao_info.get('data').get('oriSysOperator')
+		n_data['frameNo'] = self.vin
+		n_data['localpurchaseprice'] = localpurchaseprice
+		n_data['licenseColorCode'] = '01' if len(self.licenseNo)==7 else '06'
+		n_data['vehicleQuality'] = vehicleQuality
+		n_data['licenseColorName'] = '蓝' if len(self.licenseNo)==7 else '渐变绿'
+		n_data['userCode'] = self.gs_info.get('userCode')
+		n_data['licensePlateNo']=self.licenseNo
+		n_data['energyTypesCode']=self.car_info.get('energyTypesCode')
+		n_data['engineNumber'] = self.engineNo
+		n_data['enginePower'] = enginePower
+		n_data['energyTypesName'] = self.car_info.get('modelEnergyTypeName')
+		n_data['vehicleTonnage'] = self.car_info.get('vehicleTonnage')
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/updateCarInfo"
+		response = requests.post(url, headers=self.headers, data=json.dumps(n_data))
+		# -------------------------------------------------------------------------------------------------------
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/getPlatCarInfo"
+		data = {
+			"businessNatureCode": self.businessNatureCode,
+			"businessOffice": self.zhanghao_info.get('data').get('userDepartment'),
+			"orderId": self.orderId,
+			"structureId": self.zhanghao_info.get('data').get('provincialCom'),
+			"userCode": self.gs_info.get('userCode'),
+			"systemSource": "ESHOP",
+			"oriSysOperator":self.zhanghao_info.get('data').get('oriSysOperator'),
+			"oriSysOperatorKey": self.zhanghao_info.get('data').get('oriSysOperatorKey'),
+			"mesCarInfo": None,
+			"desensitizationJson": "",
+			"businessType": "main"
+		}
+		response = requests.post(url, headers=self.headers, data=json.dumps(data))
+		if response.json().get('data'):
+			n_data['vehiclecode']=response.json().get('data')[0].get('vehiclecode')
+			n_data['localpurchaseprice'] = response.json().get('data')[0].get('localpurchaseprice')
+			n_data['platModelName'] = response.json().get('data')[0].get('platModelName')
+			n_data['vehicleRemark'] = response.json().get('data')[0].get('vehicleRemark')
+			n_data['vehicleId'] = response.json().get('data')[0].get('vehicleId')
+			url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/updateCarInfo"
+			response = requests.post(url, headers=self.headers, data=json.dumps(n_data))
+			url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/getPlatCarInfo"
+			response = requests.post(url, headers=self.headers, data=json.dumps(data))
+
+		# -------------------------------------------------------------------------------------------------------
+		url='https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/getInsuranceInformation'
+		data={
+			  "thisId": self.orderId,
+			  "doCalculateFlag": "1"
+		}
+		response = requests.post(url, headers=self.headers, data=json.dumps(data))
+		self.desensitizationJson=eval(response.json().get('data').get('desensitizationJson').replace('null','None'))
+		self.desensitizationJson['taxPayerAddress']=self.desensitizationJson['address']
+		self.desensitizationJson['taxPayerAddressChange'] = "0"
+		self.desensitizationJson['taxPayerIdentifyNumber'] = self.desensitizationJson['carOwnerCardNo']
+		self.desensitizationJson['taxPayerIdentifyNumberChange'] = "0"
+		self.desensitizationJson=str(self.desensitizationJson).replace('None','null')
+
+		#-------------------------------------------------------------------------------------------------------
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/calculationInitialization"
+		data = {
+			"businessNatureCode": self.businessNatureCode,
+			"businessOffice": self.zhanghao_info.get('data').get('userDepartment'),
+			"structureId": self.zhanghao_info.get('data').get('provincialCom'),
+			"orderId": self.orderId,
+			"userCode":self.gs_info.get('userCode'),
+			"isDatail": "",
+			"reformFlag": "1",
+			"systemSource": "ESHOP",
+			"oriSysOperator": self.zhanghao_info.get('data').get('oriSysOperator'),
+			"oriSysOperatorKey": self.zhanghao_info.get('data').get('oriSysOperatorKey'),
+			"bindId": "",
+			"psnType": ""
+		}
+		data = json.dumps(data)
+		response = requests.post(url, headers=self.headers, data=data)
+
+		orderVo_list=response.json().get('data').get('orderVo')
+
+		orderVo_list['companyAgentrateFlag'] = '1'
+		orderVo_list['ktaxComName']='国家税务总局太原市小店区税务局'
+		orderVo_list['taxPayerTypeCode'] = '1'
+		orderVo_list['districtName'] = ''
+		orderVo_list['taxAuthorityName'] = '国家税务总局太原市小店区税务局'
+		orderVo_list['taxPayerAddress'] = self.encrypt.call('get_RSAencrypt',self.tb_address)
+		orderVo_list['calculateMode'] = 'C1' if len(self.licenseNo)==7 else 'C2'
+		orderVo_list['policyType'] ='1'
+		orderVo_list['taxPayerIdentifyNumber'] = self.encrypt.call('get_RSAencrypt',self.tb_identifyNumber)
+		orderVo_list['taxAuthorityCode'] = '11401050000'
+		orderVo_list['ktaxComCode']='11401050000'
+		orderVo_list['taxPayerTypeName'] = '投保人'
+		orderVo_list['calculateModeValue'] = '使用一年以上车辆'
+
+
+		orderVo_list['syStartDate'] = self.chesun_startDate
+		orderVo_list['syEndDate'] = self.get_syendday(self.chesun_startDate)
+		orderVo_list['jqStartDate'] = self.jiaoqiang_startDate
+		orderVo_list['jqEndDate'] = self.get_jqendday(self.jiaoqiang_startDate)
+		# orderVo_list['multiplexSyEnd']=None
+
+
+		if self.jiaoqiang_chooseFlag == 'on' and self.shangye_chooseFlag=='on':
+			orderVo_list['orderType']='0'
+		elif self.jiaoqiang_chooseFlag == 'on' and self.shangye_chooseFlag!='on':
+			orderVo_list['orderType'] = '2'
+		elif self.jiaoqiang_chooseFlag != 'on' and self.shangye_chooseFlag=='on':
+			orderVo_list['orderType'] = '1'
+
+
+		syShow=response.json().get('data').get('syShow')
+		clauseInfoList=response.json().get('data').get('clauseInfoList')
+
+		#险种参数
+		for i in clauseInfoList:
+			if i.get('clauseName')!='特约服务条款':
+				if i.get('clauseName')=='机动车损失保险' or i.get('clauseName')=='新能源汽车损失保险':
+					if self.chesun_chooseFlag=='on':
+						i['effect'] = "Y"
+						for ii in i.get('clauseInfoVoList'):
+							if ii.get('clauseName')=='附加车身划痕损失险':
+								if self.huahen_chooseFlag == 'on':
+									ii['effect'] = 'Y'
+									ii['oriCurAmount'] = self.huahen_amount
+							elif ii.get('clauseName')=='附加绝对免赔率特约险(机动车损失保险)' or ii.get('clauseName')=='附加绝对免赔率特约条款(新能源汽车损失保险)':
+								if self.fujiachesun_chooseFlag=='on':
+									ii['deductibleRate'] = self.fujiachesun_amount
+									ii['effect'] = 'Y'
+					else:
+						i['effect'] = "N"
+
+				elif i.get('clauseName')=='机动车第三者责任保险' or i.get('clauseName')=='新能源汽车第三者责任保险':
+					if self.sanzhe_chooseFlag=='on':
+						i['effect'] = "Y"
+						i['adjustment'] = "levelkeep"
+						i['oriCurAmount']=str(self.sanzhe_amount)
+						for ii in i.get('clauseInfoVoList'):
+							if ii.get('clauseName')=='附加绝对免赔率特约险(机动车第三者责任保险)' or ii.get('clauseName')=='附加绝对免赔率特约条款(新能源汽车第三者责任保险)':
+								if self.fujiasanzhe_chooseFlag=='on':
+									ii['deductibleRate']=self.fujiasanzhe_amount
+									ii['effect'] ='Y'
+
+
+							elif ii.get('clauseName') == '附加法定节假日限额翻倍险':
+								if self.fujia_jiejiari_chooseFlag == 'on':
+									ii['oriCurAmount'] = self.sanzhe_amount
+									ii['effect'] = 'Y'
+
+							elif ii.get('clauseName') == '附加医保外医疗费用责任险(机动车第三者责任保险)' or ii.get('clauseName') == '附加医保外医疗费用责任险(新能源汽车第三者责任保险)':
+								if self.ybw_sanzhe_chooseFlag == 'on':
+									ii['oriCurAmount'] = str(int(self.ybw_sanzhe_amount))
+									ii['effect'] = 'Y'
+
+				elif i.get('clauseName')=='机动车车上人员责任保险(驾驶人)' or i.get('clauseName')=='新能源汽车车上人员责任保险(驾驶人)':
+					if self.sjzeren_chooseFlag=='on':
+						i['effect'] = "Y"
+						i['oriCurAmount']=str(self.sjzeren_amount)
+						for ii in i.get('clauseInfoVoList'):
+							if ii.get('clauseName')=='附加绝对免赔率特约险(机动车车上人员责任保险-驾驶人)' or ii.get('clauseName')=='附加绝对免赔率特约条款(新能源汽车车上人员责任保险-驾驶人)':
+								if self.fujiasiji_chooseFlag=='on':
+									ii['deductibleRate']=self.fujiasiji_amount
+									ii['effect'] ='Y'
+
+
+							elif ii.get('clauseName') == '附加医保外医疗费用责任险(机动车车上人员责任保险-驾驶人)' or ii.get('clauseName') == '附加医保外医疗费用责任险(新能源汽车车上人员责任保险-驾驶人)':
+								if self.ybw_siji_chooseFlag == 'on':
+									self.ybw_siji_amount=str(int(self.ybw_siji_amount))
+									ii['oriCurAmount'] = self.ybw_siji_amount
+									ii['effect'] = 'Y'
+
+
+				elif i.get('clauseName')=='机动车车上人员责任保险(乘客)'  or i.get('clauseName')=='新能源汽车车上人员责任保险(乘客)':
+					if self.ckzeren_chooseFlag=='on':
+						i['effect'] = "Y"
+						i['oriCurAmount']=str(int(self.ckzeren_amount)*(int(self.car_info.get('seat'))-1))
+						i['everyoneAmount']=self.ckzeren_amount
+						for ii in i.get('clauseInfoVoList'):
+							if ii.get('clauseName')=='附加绝对免赔率特约险(机动车车上人员责任保险-乘客)' or ii.get('clauseName')=='附加绝对免赔率特约条款(新能源汽车车上人员责任保险-乘客)':
+								if self.fujiachengke_chooseFlag=='on':
+									ii['deductibleRate']=self.fujiachengke_amount
+									ii['effect'] ='Y'
+									ii['typeFlag'] = None
+									ii['newControl'] = False
+							elif ii.get('clauseName') == '附加医保外医疗费用责任险(机动车车上人员责任保险-乘客)' or ii.get('clauseName') == '附加医保外医疗费用责任险(新能源汽车车上人员责任保险-乘客)':
+								if self.ybw_ck_chooseFlag == 'on':
+									self.ybw_ck_amount=str(int(self.ybw_ck_amount))
+									ii['everyoneAmount']=self.ybw_ck_amount
+									ii['oriCurAmount'] = str((int(self.car_info.get('seat'))-1)*int(self.ybw_ck_amount))
+									ii['effect'] = 'Y'
+
+			else:
+				if self.chesun_chooseFlag=='on':
+					i['effect'] = 'Y'
+					for ii in i.get('clauseInfoVoList'):
+						if ii.get('clauseName')=='附加机动车道路救援服务特约条款':
+							ii['compensationDays']='12'
+							ii['effect'] = 'Y'
+						elif ii.get('clauseName')=='附加新能源汽车道路救援服务特约条款':
+							ii['compensationDays'] = '12'
+							ii['effect'] = 'Y'
+						else:
+							ii['effect'] = 'N'
+
+				else:
+					i['effect'] = 'N'
+					for ii in i.get('clauseInfoVoList'):
+						# if ii.get('clauseName')=='附加机动车道路救援服务特约条款':
+						ii['effect'] = 'N'
+		#报价请求
+		url='https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doCalculate'
+
+		data = {
+			"ncispSetList":None,
+			"desensitizationJson": self.desensitizationJson,
+			"businessCalcFeeVo": None,
+			"isCalcFee": None,
+			"errorCode": None,
+			"mesOrderNcispList": self.mesOrderNcispList,
+			"lastOrderVo": None,
+			'orderVo': orderVo_list,
+			"clauseInfoList": clauseInfoList,
+			"syShow": syShow,
+			"ifSameSalesMan": None,
+			"clauseInfoListXuBao": None,
+			"telemarketingFlagForAgree": None,
+			"riskInfoParam": None,
+			"calculateMsg": None,
+			"ncdVo": None,
+			"anXiningShowFlag": None,
+			"ncispsBeforeList": None,
+			"telemarketingFlag": None,
+			"crossCalcFeeVo": None,
+			"businessNatureCode": self.businessNatureCode,
+			"businessOffice": self.zhanghao_info.get('data').get('userDepartment'),
+			"structureId": self.zhanghao_info.get('data').get('provincialCom'),
+			"userCode": self.gs_info.get('userCode'),
+			"reformFlag": "1",
+			"oriSysOperator": self.zhanghao_info.get('data').get('oriSysOperator'),
+			"oriSysOperatorKey":self.zhanghao_info.get('data').get('oriSysOperatorKey'),
+			"solutionType": "1"
+		}
+
+		self.jiaoqiang_startDate=data.get('orderVo').get('jqStartDate')
+		self.chesun_startDate = data.get('orderVo').get('syStartDate')
+		self.data=data
+		response = requests.post(url, headers=self.headers, data=json.dumps(data))
+
+
+
+
+		return  response
+
+
+
+
+	def repeat(self, response):
+		if response.json().get('status')=="200":
+			self.tranNo = response.json().get('data').get('orderVo').get('transactionNo')
+			self.orderId= response.json().get('data').get('orderVo').get('orderNo')
+
+		if '商业险' in response.text and '重复投保' in	response.text and '保险期间:' in response.text:
+			self.sy_repeatinfo = response.json().get('msg')
+			if '<br' in response.text:
+				self.sy_repeatinfo = self.sy_repeatinfo.split('<br')[0]
+
+			sy_startdate=re.findall(r'~(.*?),',response.text)
+			if sy_startdate:
+				sy_startdate=sy_startdate[0]
+				sy_startdate=sy_startdate[0:4]+'-'+sy_startdate[4:6]+'-'+sy_startdate[6:8]+' '+sy_startdate[8:10]+':'+sy_startdate[10:12]+':'+'00'
+
+				self.data['orderVo']['syStartDate'] =sy_startdate
+				self.data['orderVo']['syEndDate'] = self.get_syendday(sy_startdate)
+				url = 'https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doCalculate'
+				response = requests.post(url, headers=self.headers, data=json.dumps(self.data))
+				return 	self.repeat(response)
+		elif '交强险' in response.text and '重复投保' in	response.text and '终保日期' in response.text:
+			self.jq_repeatinfo = response.json().get('msg')
+			jq_startdate=re.findall(r'终保日期 (.*?);',response.text)
+			if jq_startdate:
+				jq_startdate=jq_startdate[0]
+				jq_startdate=jq_startdate+':00'
+				self.data['orderVo']['jqStartDate'] =jq_startdate
+				self.data['orderVo']['jqEndDate'] = self.get_syendday(jq_startdate)
+				url = 'https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doCalculate'
+				response = requests.post(url, headers=self.headers, data=json.dumps(self.data))
+				return 	self.repeat(response)
+
+		elif '交强险' in response.text and '重复投保' in	response.text and '自动更新为' in response.text:
+
+			self.jq_repeatinfo = response.json().get('data').get('doubleMsg')
+			jq_startdate=re.findall(r'自动更新为(.*?)~',response.text)
+			if jq_startdate:
+				jq_startdate=jq_startdate[0]
+				jq_startdate=jq_startdate+':00'
+				self.data['orderVo']['jqStartDate'] =jq_startdate
+				self.data['orderVo']['jqEndDate'] = self.get_syendday(jq_startdate)
+				url = 'https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doCalculate'
+				response = requests.post(url, headers=self.headers, data=json.dumps(self.data))
+				return 	self.repeat(response)
+
+
+		elif response.json().get('status')!='200':
+			info = ''
+			if self.jq_repeatinfo and self.sy_repeatinfo:
+				info = self.jq_repeatinfo + ';' + self.sy_repeatinfo + ';'
+			elif self.jq_repeatinfo:
+				info = self.jq_repeatinfo + ';'
+			elif self.sy_repeatinfo:
+				info = self.sy_repeatinfo + ';'
+
+			return {
+				'code': 400,
+				'message': info+response.json().get('msg')
+			}
+
+		elif response.json().get('data').get('orderVo').get('taxTypeName')=='减税' and response.json().get('data').get('orderVo').get('relifReasonName')==None:
+			data=response.json().get('data')
+			data['orderVo']['ktaxComName']=data.get('orderVo').get('taxAuthorityName')
+			data['orderVo']['relifReason'] = 'M1'
+			data['orderVo']['relifReasonName'] = '具备减免税证明'
+			data['syShow']= self.data.get('syShow')
+			data['businessNatureCode']= self.businessNatureCode
+			data['businessOffice'] = self.zhanghao_info.get('data').get('userDepartment')
+			data['structureId'] = self.zhanghao_info.get('data').get('provincialCom')
+			data['userCode'] = self.gs_info.get('userCode')
+			data['reformFlag'] = '1'
+
+			data["oriSysOperator"]= self.zhanghao_info.get('data').get('oriSysOperator')
+			data["oriSysOperatorKey"]= self.zhanghao_info.get('data').get('oriSysOperatorKey')
+			data["solutionType"]= "1"
+			url = 'https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doCalculate'
+			response = requests.post(url, headers=self.headers, data=json.dumps(data))
+			return self.repeat(response)
+
+		else:
+			self.creatorder()
+			jq_startDate = ''
+			jq_endDate = ''
+			sy_startDate = ''
+			sy_endDate = ''
+
+
+
+			for z in self.data.get('clauseInfoList'):
+					if z.get('clauseName') == '机动车损失保险' or z.get('clauseName') == '新能源汽车损失保险':
+						self.zhejiu_price = z.get('oriCurAmount')
+						break
+					else:
+						self.zhejiu_price = '0'
+
+
+			if self.jiaoqiang_chooseFlag == 'on' and self.shangye_chooseFlag == 'on':
+				jq_startDate = self.data.get('orderVo').get('jqStartDate')
+				jq_endDate = self.data.get('orderVo').get('jqEndDate')
+				sy_startDate = self.data.get('orderVo').get('syStartDate')
+				sy_endDate = self.data.get('orderVo').get('syEndDate')
+			elif self.jiaoqiang_chooseFlag == 'on' and self.shangye_chooseFlag != 'on':
+				jq_startDate = self.data.get('orderVo').get('jqStartDate')
+				jq_endDate = self.data.get('orderVo').get('jqEndDate')
+				sy_startDate = ''
+				sy_endDate = ''
+			elif self.jiaoqiang_chooseFlag != 'on' and self.shangye_chooseFlag == 'on':
+				jq_startDate = ''
+				jq_endDate = ''
+				sy_startDate = self.data.get('orderVo').get('syStartDate')
+				sy_endDate = self.data.get('orderVo').get('syEndDate')
+
+			msg = response.json().get('msg')
+			kindprice_list=response.json().get('data').get('clauseInfoList')
+			for xz in kindprice_list:
+				if xz.get('clauseName') == '机动车损失保险' or  xz.get('clauseName')=='新能源汽车损失保险':
+					self.chesun_price = xz.get('totalPay')
+					for fjxz in xz.get('clauseInfoVoList'):
+						if fjxz.get('clauseName') == '附加车身划痕损失险' :
+							self.huahen_price = fjxz.get('totalPay')
+
+				elif xz.get('clauseName') == '机动车第三者责任保险' or xz.get('clauseName') == '新能源汽车第三者责任保险' :
+					self.sanzhe_price = xz.get('totalPay')
+					for fjxz in xz.get('clauseInfoVoList'):
+						if fjxz.get('clauseName') == '附加法定节假日限额翻倍险':
+							self.jjr_price = fjxz.get('totalPay')
+						elif fjxz.get('clauseName') == '附加医保外医疗费用责任险(机动车第三者责任保险)' or fjxz.get('clauseName') == '附加医保外医疗费用责任险(新能源汽车第三者责任保险)':
+							self.ybw_sanzheprice = fjxz.get('totalPay')
+
+				elif xz.get('clauseName') == '机动车车上人员责任保险(驾驶人)' or xz.get('clauseName') == '新能源汽车车上人员责任保险(驾驶人)':
+					self.siji_price = xz.get('totalPay')
+					for fjxz in xz.get('clauseInfoVoList'):
+						if fjxz.get('clauseName') == '附加医保外医疗费用责任险(机动车车上人员责任保险-驾驶人)' or fjxz.get('clauseName') == '附加医保外医疗费用责任险(新能源汽车车上人员责任保险-驾驶人)':
+							self.ybw_sjprice = fjxz.get('totalPay')
+
+				elif xz.get('clauseName') == '机动车车上人员责任保险(乘客)' or xz.get('clauseName') == '新能源汽车车上人员责任保险(乘客)':
+					self.chengke_price = xz.get('totalPay')
+					for fjxz in xz.get('clauseInfoVoList'):
+						if fjxz.get('clauseName') == '附加医保外医疗费用责任险(机动车车上人员责任保险-乘客)' or fjxz.get('clauseName') == '附加医保外医疗费用责任险(新能源汽车车上人员责任保险-乘客)' :
+							self.ybw_ckprice = fjxz.get('totalPay')
+
+
+			self.sy_price=response.json().get('data').get('orderVo').get('syPay')
+			if self.sy_price:
+				self.sy_price=float(self.sy_price)
+			else:
+				self.sy_price=0
+
+			self.jq_prine=response.json().get('data').get('orderVo').get('jqPay')
+			if self.jq_prine:
+				self.jq_prine=float(self.jq_prine)
+			else:
+				self.jq_prine=0
+
+			self.chechuan_price=response.json().get('data').get('orderVo').get('taxPay')
+			if self.chechuan_price:
+				self.chechuan_price=float(self.chechuan_price)
+			else:
+				self.chechuan_price=0
+
+			self.all_price = response.json().get('data').get('orderVo').get('realPay')
+			if self.all_price:
+				self.all_price=float(self.all_price)
+			else:
+				self.all_price=0
+
+
+
+			plyappno=self.orderId
+			redis_conn.hset('edian_' + plyappno, 'username', self.username)
+			redis_conn.hset('edian_' + plyappno, 'orderId', plyappno)
+			redis_conn.hset('edian_' + plyappno, 'tranNo', self.tranNo)
+			redis_conn.hset('edian_' + plyappno, 'businessOffice',self.zhanghao_info.get('data').get('userDepartment'))
+			redis_conn.hset('edian_' + plyappno, 'structureId', self.zhanghao_info.get('data').get('provincialCom'))
+			redis_conn.hset('edian_' + plyappno, 'userCode', self.gs_info.get('userCode'))
+			redis_conn.hset('edian_' + plyappno, 'token', self.token)
+			redis_conn.hset('edian_' + plyappno, 'data', response.json().get('data'))
+			redis_conn.hset('edian_' + plyappno, 'syShow', self.data.get('syShow'))
+			redis_conn.hset('edian_' + plyappno, 'license', self.licenseNo)
+
+
+			redis_conn.hset('edian_' + plyappno, 'zhanghao_info', self.zhanghao_info)
+			redis_conn.hset('edian_' + plyappno, 'gs_info', self.gs_info)
+			redis_conn.hset('edian_' + plyappno, 'bj_res', response.text)
+			redis_conn.hset('edian_' + plyappno, 'carinfo',self.car_info)
+
+			# 评分
+			jq_mark = "".join(re.findall(r'underwritingScoreJQ":(.*?),', response.text, re.S))
+			sy_mark = "".join(re.findall(r'underwritingScore":(.*?),', response.text, re.S))
+			mark = "".join(re.findall(r'unionUnderwritingScore":(.*?),', response.text, re.S))
+
+			#非车险
+
+			fcx_list = []
+			if self.accidentalDrivingVo:
+				mesOrderNcispList = response.json().get('data').get('mesOrderNcispList')
+				drivingInsurances = {}
+				for i in mesOrderNcispList:
+					drivingInsurances['price'] = i.get('ncispPay')
+					drivingInsurances['name'] = i.get('ncispPlanName')
+					drivingInsurances['policy'] = i.get('ncispProposalNo')
+					fcx_list.append(drivingInsurances)
+
+			carInfo = {}
+			# 车型名称
+			carInfo['modelcname'] = self.car_info.get('standardName')
+			# 车型编码
+			carInfo['modelCode'] = self.car_info.get('rbCode')
+			# 排量
+			carInfo['exhaustscale'] = self.car_info.get('displacement')
+			# 座位数
+			carInfo['seatCount'] = self.car_info.get('seat')
+			# 价格
+			carInfo['purchasePrice'] = self.car_info.get('purchasePrice')
+			# 功率
+			carInfo['power'] = self.car_info.get('enginePower')
+			# 年款
+			carInfo['caryear'] = self.car_info.get('marketDate')
+
+
+			headers = {
+				"Accept": "application/json, text/plain, */*",
+				"Content-Type": "application/json;charset=UTF-8",
+				"OauthToken": self.token,
+				"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
+			}
+			url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doQuotationProductContract"
+			data = {
+				"orderNo": self.orderId,
+				"structureId": self.zhanghao_info.get('data').get('provincialCom'),
+				"tranNo": self.tranNo,
+				"userCode": self.gs_info.get('userCode'),
+				"systemSource": "ESHOP",
+				"oriSysOperator": self.zhanghao_info.get('data').get('oriSysOperator'),
+			"oriSysOperatorKey": self.zhanghao_info.get('data').get('oriSysOperatorKey'),
+			}
+			data = json.dumps(data)
+			response = requests.post(url, headers=headers, data=data)
+			predict_info = []
+			if response.json().get('data'):
+				historicaList_list=response.json().get('data').get('historicaList')
+				if historicaList_list:
+					for i in historicaList_list:
+						opinion=i.get('ruleID')
+						description=i.get('description')
+						predict_info.append(
+							{
+								'opinion':opinion,
+								'description':description
+							}
+						)
+				historicbList_list = response.json().get('data').get('historicbList')
+				if historicbList_list:
+					for i in historicbList_list:
+						opinion=i.get('ruleID')
+						description=i.get('description')
+						predict_info.append(
+							{
+								'opinion':opinion,
+								'description':description
+							}
+						)
+
+
+
+			return {
+				'code':200,
+				'INSURANCE_TYPE': {
+					"A": self.chesun_price if self.chesun_price else '0',
+					"A_amount": self.zhejiu_price,
+					"B": self.sanzhe_price if self.sanzhe_price else '0',
+					"D3": self.siji_price if self.siji_price else '0',
+					"D4": self.chengke_price if self.chengke_price else '0',
+					"L": self.huahen_price  if self.huahen_price else '0',
+					"MJ1":self.mpv_csprice if self.mpv_csprice else '0',
+					"MJ2":self.mpv_szprice if self.mpv_szprice else '0',
+					"MJ3":self.mpv_sjprice if self.mpv_sjprice else '0',
+					"MJ4":self.mpv_ckprice if self.mpv_ckprice else '0',
+					"SY_FJ_YBW1": self.ybw_sanzheprice if self.ybw_sanzheprice else '0',
+					"SY_FJ_YBW2": self.ybw_ckprice if self.ybw_ckprice else '0',
+					"SY_FJ_YBW3": self.ybw_sjprice if self.ybw_sjprice else '0',
+				},
+				# 交强险价格
+				'forceCarInsureRisk': self.jq_prine,
+				# 车船税
+				'carInsureShiptax': self.chechuan_price,
+				# 商业险价格
+				'busiTotalPremium': self.sy_price,
+				# 总价
+				'carInsureMain': self.all_price,
+				# 订单号
+				'plyappno': plyappno,
+				'message':msg,
+
+				'jq_startDate': jq_startDate if self.jiaoqiang_chooseFlag=='on' else '',
+				'jq_endDate': jq_endDate if self.jiaoqiang_chooseFlag=='on' else '',
+				'sy_startDate': sy_startDate if self.shangye_chooseFlag=='on' else '',
+				'sy_endDate': sy_endDate if self.shangye_chooseFlag=='on' else '',
+				'other':{
+						'mark': mark,
+						'jq_mark':jq_mark,
+						'sy_mark':sy_mark,
+						'discount':str(self.discountRate),
+						'jq_discount': str(self.jq_discountRate),
+						'sy_discount': str(self.sy_discountRate),
+						'isQuoteGreenWay': '',
+						'predict_info':predict_info,
+					},
+				'jq_repeatinfo': self.jq_repeatinfo,
+				'sy_repeatinfo': self.sy_repeatinfo,
+				'drivingInsurances':fcx_list,
+				'carInfo':carInfo
+			}
+
+
+
+	def get_discountprice(self):
+		self.bj_res = json.loads(str(redis_conn.hget('edian_' + self.plyappno, 'bj_res'), 'utf8'))
+		self.gs_info = eval(str(redis_conn.hget('edian_' + self.plyappno, 'gs_info'), 'utf8'))
+		self.zhanghao_info = eval(str(redis_conn.hget('edian_' + self.plyappno, 'zhanghao_info'), 'utf8'))
+		self.syShow = str(redis_conn.hget('edian_' + self.plyappno, 'syShow'), 'utf8')
+		self.data= eval(str(redis_conn.hget('edian_' + self.plyappno, 'data'), 'utf8'))
+		self.car_info= eval(str(redis_conn.hget('edian_' + self.plyappno, 'carinfo'), 'utf8'))
+		firstdata=self.bj_res.get('data')
+		firstdata['syShow']=self.syShow
+		firstdata["calcFeeParamVo"]= {
+			"finalRat": "0",
+			"agentRate": "0",
+			"crossAgentRate": "",
+			"isFee": "0",
+			"inOrOut": "out",
+			"flag": "1",
+			"isChange": "0",
+			"feeDisLinkAgeFlagRation": "0"
+		}
+
+		firstdata["businessNatureCode"] =self.zhanghao_info.get('data').get('userResourceCode')
+		firstdata["businessOffice"] = self.zhanghao_info.get('data').get('userDepartment')
+		firstdata["structureId"] = self.zhanghao_info.get('data').get('provincialCom')
+		firstdata["userCode"] = self.zhanghao_info.get('data').get('userCode')
+		firstdata["oriSysOperator"] = self.zhanghao_info.get('data').get('oriSysOperator')
+		firstdata["oriSysOperatorKey"] = self.zhanghao_info.get('data').get('oriSysOperatorKey')
+
+		headers = {
+			"Accept": "application/json, text/plain, */*",
+			"Content-Type": "application/json;charset=UTF-8",
+			"OauthToken": self.token,
+			"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
+		}
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doCalcFee"
+		data = json.dumps(firstdata)
+		response = requests.post(url, headers=headers, data=data)
+
+
+		firstdata['businessCalcFeeVo']=response.json().get('data').get('businessCalcFeeVo')
+		firstdata['crossCalcFeeVo']=response.json().get('data').get('crossCalcFeeVo')
+		firstdata['calcFeeParamVo']={
+							"finalRat": str(self.discount),
+							"agentRate": response.json().get('data').get('businessCalcFeeVo').get('agentRate'),
+							"crossAgentRate": response.json().get('data').get('crossCalcFeeVo').get('agentRate'),
+							"isFee": "1",
+							"inOrOut": "inFinalRat",
+							"flag": "1",
+							"isChange": "0",
+							"feeDisLinkAgeFlagRation": "0",
+							"artifSelfPricesRat": response.json().get('data').get('businessCalcFeeVo').get('artifSelfPricesRat'),
+						  }
+		data = json.dumps(firstdata)
+		response = requests.post(url, headers=headers, data=data)
+
+		if response.json().get('msg')=='手续费计算成功':
+			self.creatorder()
+
+			if response.json().get('data').get('businessCalcFeeVo'):
+				self.sy_discountRate=response.json().get('data').get('businessCalcFeeVo').get('discountRate')
+				self.discountRate =  response.json().get('data').get('businessCalcFeeVo').get('artifSelfPricesRat')
+			else:
+				self.sy_discountRate =""
+				self.discountRate =""
+			if response.json().get('data').get('crossCalcFeeVo'):
+				self.jq_discountRate=response.json().get('data').get('crossCalcFeeVo').get('runPoundageRatio')
+			else:
+				self.jq_discountRate =''
+
+			jq_startDate = ''
+			jq_endDate = ''
+			sy_startDate = ''
+			sy_endDate = ''
+
+			for z in self.data.get('clauseInfoList'):
+				if z.get('clauseName') == '机动车损失保险' or z.get('clauseName') == '新能源汽车损失保险':
+					self.zhejiu_price = z.get('oriCurAmount')
+					break
+				else:
+					self.zhejiu_price = '0'
+
+			if self.jiaoqiang_chooseFlag == 'on' and self.shangye_chooseFlag == 'on':
+				jq_startDate = self.data.get('orderVo').get('jqStartDate')
+				jq_endDate = self.data.get('orderVo').get('jqEndDate')
+				sy_startDate = self.data.get('orderVo').get('syStartDate')
+				sy_endDate = self.data.get('orderVo').get('syEndDate')
+			elif self.jiaoqiang_chooseFlag == 'on' and self.shangye_chooseFlag != 'on':
+				jq_startDate = self.data.get('orderVo').get('jqStartDate')
+				jq_endDate = self.data.get('orderVo').get('jqEndDate')
+				sy_startDate = ''
+				sy_endDate = ''
+			elif self.jiaoqiang_chooseFlag != 'on' and self.shangye_chooseFlag == 'on':
+				jq_startDate = ''
+				jq_endDate = ''
+				sy_startDate = self.data.get('orderVo').get('syStartDate')
+				sy_endDate = self.data.get('orderVo').get('syEndDate')
+
+			msg = response.json().get('msg')
+			kindprice_list = response.json().get('data').get('clauseInfoList')
+			for xz in kindprice_list:
+				if xz.get('clauseName') == '机动车损失保险' or xz.get('clauseName') == '新能源汽车损失保险':
+					self.chesun_price = xz.get('totalPay')
+					for fjxz in xz.get('clauseInfoVoList'):
+						if fjxz.get('clauseName') == '附加车身划痕损失险':
+							self.huahen_price = fjxz.get('totalPay')
+
+				elif xz.get('clauseName') == '机动车第三者责任保险' or xz.get('clauseName') == '新能源汽车第三者责任保险':
+					self.sanzhe_price = xz.get('totalPay')
+					for fjxz in xz.get('clauseInfoVoList'):
+						if fjxz.get('clauseName') == '附加法定节假日限额翻倍险':
+							self.jjr_price = fjxz.get('totalPay')
+						elif fjxz.get('clauseName') == '附加医保外医疗费用责任险(机动车第三者责任保险)' or fjxz.get('clauseName') == '附加医保外医疗费用责任险(新能源汽车第三者责任保险)':
+							self.ybw_sanzheprice = fjxz.get('totalPay')
+
+				elif xz.get('clauseName') == '机动车车上人员责任保险(驾驶人)' or xz.get('clauseName') == '新能源汽车车上人员责任保险(驾驶人)':
+					self.siji_price = xz.get('totalPay')
+					for fjxz in xz.get('clauseInfoVoList'):
+						if fjxz.get('clauseName') == '附加医保外医疗费用责任险(机动车车上人员责任保险-驾驶人)' or fjxz.get('clauseName') == '附加医保外医疗费用责任险(新能源汽车车上人员责任保险-驾驶人)':
+							self.ybw_sjprice = fjxz.get('totalPay')
+
+				elif xz.get('clauseName') == '机动车车上人员责任保险(乘客)' or xz.get('clauseName') == '新能源汽车车上人员责任保险(乘客)':
+					self.chengke_price = xz.get('totalPay')
+					for fjxz in xz.get('clauseInfoVoList'):
+						if fjxz.get('clauseName') == '附加医保外医疗费用责任险(机动车车上人员责任保险-乘客)' or fjxz.get('clauseName') == '附加医保外医疗费用责任险(新能源汽车车上人员责任保险-乘客)':
+							self.ybw_ckprice = fjxz.get('totalPay')
+
+			self.sy_price = response.json().get('data').get('orderVo').get('syPay')
+			if self.sy_price:
+				self.sy_price = float(self.sy_price)
+			else:
+				self.sy_price = 0
+
+			self.jq_prine = response.json().get('data').get('orderVo').get('jqPay')
+			if self.jq_prine:
+				self.jq_prine = float(self.jq_prine)
+			else:
+				self.jq_prine = 0
+
+			self.chechuan_price = response.json().get('data').get('orderVo').get('taxPay')
+			if self.chechuan_price:
+				self.chechuan_price = float(self.chechuan_price)
+			else:
+				self.chechuan_price = 0
+
+			self.all_price = response.json().get('data').get('orderVo').get('realPay')
+			if self.all_price:
+				self.all_price = float(self.all_price)
+			else:
+				self.all_price = 0
+
+			# 评分
+			jq_mark = "".join(re.findall(r'underwritingScoreJQ":(.*?),', response.text, re.S))
+			sy_mark = "".join(re.findall(r'underwritingScore":(.*?),', response.text, re.S))
+			mark="".join(re.findall(r'unionUnderwritingScore":(.*?),', response.text, re.S))
+
+
+			# 非车险
+
+			fcx_list = []
+			if self.accidentalDrivingVo:
+				mesOrderNcispList = response.json().get('data').get('mesOrderNcispList')
+				drivingInsurances = {}
+				for i in mesOrderNcispList:
+					drivingInsurances['price'] = i.get('ncispPay')
+					drivingInsurances['name'] = i.get('ncispPlanName')
+					drivingInsurances['policy'] = i.get('ncispProposalNo')
+					fcx_list.append(drivingInsurances)
+
+			carInfo = {}
+			# 车型名称
+			carInfo['modelcname'] = self.car_info.get('standardName')
+			# 车型编码
+			carInfo['modelCode'] = self.car_info.get('rbCode')
+			# 排量
+			carInfo['exhaustscale'] = self.car_info.get('displacement')
+			# 座位数
+			carInfo['seatCount'] = self.car_info.get('seat')
+			# 价格
+			carInfo['purchasePrice'] = self.car_info.get('purchasePrice')
+			# 功率
+			carInfo['power'] = self.car_info.get('enginePower')
+			# 年款
+			carInfo['caryear'] = self.car_info.get('marketDate')
+
+			headers = {
+				"Accept": "application/json, text/plain, */*",
+				"Content-Type": "application/json;charset=UTF-8",
+				"OauthToken": self.token,
+				"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
+			}
+			url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doQuotationProductContract"
+			data = {
+				"orderNo": self.orderId,
+				"structureId": self.zhanghao_info.get('data').get('provincialCom'),
+				"tranNo": self.tranNo,
+				"userCode": self.gs_info.get('userCode'),
+				"systemSource": "ESHOP",
+				"oriSysOperator": self.zhanghao_info.get('data').get('oriSysOperator'),
+				"oriSysOperatorKey": self.zhanghao_info.get('data').get('oriSysOperatorKey'),
+			}
+			data = json.dumps(data)
+			response = requests.post(url, headers=headers, data=data)
+			predict_info = []
+			if response.json().get('data'):
+				historicaList_list = response.json().get('data').get('historicaList')
+				if historicaList_list:
+					for i in historicaList_list:
+						opinion = i.get('ruleID')
+						description = i.get('description')
+						predict_info.append(
+							{
+								'opinion': opinion,
+								'description': description
+							}
+						)
+				historicbList_list = response.json().get('data').get('historicbList')
+				if historicbList_list:
+					for i in historicbList_list:
+						opinion = i.get('ruleID')
+						description = i.get('description')
+						predict_info.append(
+							{
+								'opinion': opinion,
+								'description': description
+							}
+						)
+
+			return {
+				'code': 200,
+				'INSURANCE_TYPE': {
+					"A": self.chesun_price if self.chesun_price else '0',
+					"A_amount": self.zhejiu_price,
+					"B": self.sanzhe_price if self.sanzhe_price else '0',
+					"D3": self.siji_price if self.siji_price else '0',
+					"D4": self.chengke_price if self.chengke_price else '0',
+					"L": self.huahen_price if self.huahen_price else '0',
+					"MJ1": self.mpv_csprice if self.mpv_csprice else '0',
+					"MJ2": self.mpv_szprice if self.mpv_szprice else '0',
+					"MJ3": self.mpv_sjprice if self.mpv_sjprice else '0',
+					"MJ4": self.mpv_ckprice if self.mpv_ckprice else '0',
+					"SY_FJ_YBW1": self.ybw_sanzheprice if self.ybw_sanzheprice else '0',
+					"SY_FJ_YBW2": self.ybw_ckprice if self.ybw_ckprice else '0',
+					"SY_FJ_YBW3": self.ybw_sjprice if self.ybw_sjprice else '0',
+				},
+				# 交强险价格
+				'forceCarInsureRisk': self.jq_prine,
+				# 车船税
+				'carInsureShiptax': self.chechuan_price,
+				# 商业险价格
+				'busiTotalPremium': self.sy_price,
+				# 总价
+				'carInsureMain': self.all_price,
+				# 订单号
+				'plyappno': self.plyappno,
+				'message': msg,
+
+				'jq_startDate': jq_startDate if self.jiaoqiang_chooseFlag == 'on' else '',
+				'jq_endDate': jq_endDate if self.jiaoqiang_chooseFlag == 'on' else '',
+				'sy_startDate': sy_startDate if self.shangye_chooseFlag == 'on' else '',
+				'sy_endDate': sy_endDate if self.shangye_chooseFlag == 'on' else '',
+				'other': {
+					'mark': mark,
+					'jq_mark':jq_mark,
+					'sy_mark':sy_mark,
+					'discount':str(self.discountRate),
+					'jq_discount': str(self.jq_discountRate),
+					'sy_discount': str(self.sy_discountRate),
+					'isQuoteGreenWay': '',
+					'predict_info': predict_info,
+				},
+				'jq_repeatinfo': self.jq_repeatinfo,
+				'sy_repeatinfo': self.sy_repeatinfo,
+				'drivingInsurances': fcx_list,
+				'carInfo': carInfo
+			}
+
+		else:
+			return {
+				'code':400,
+				'message':"修改折扣失败,请联系管理员处理"
+			}
+
+	def creatorder(self):
+		headers = {
+			"Accept": "application/json, text/plain, */*",
+			"Content-Type": "application/json;charset=UTF-8",
+			"OauthToken": self.token,
+			"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
+		}
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doAutoGenerate"
+		if self.orderId:
+			self.structureId=self.zhanghao_info.get('data').get('provincialCom')
+			self.businessOffice=self.zhanghao_info.get('data').get('userDepartment')
+		else:
+			self.orderId=self.plyappno
+			self.tranNo = str(redis_conn.hget('edian_' + self.plyappno, 'tranNo'), 'utf8')
+			self.userCode=str(redis_conn.hget('edian_' + self.plyappno, 'userCode'), 'utf8')
+			self.businessOffice=str(redis_conn.hget('edian_' + self.plyappno, 'businessOffice'), 'utf8')
+			self.username=str(redis_conn.hget('edian_' + self.plyappno, 'username'), 'utf8')
+			self.structureId=self.zhanghao_info.get('data').get('provincialCom')
+		if self.plyappno and self.discount:
+			pass
+		else:
+
+			url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doCalcFee"
+			data =self.data
+			data['syShow'] = self.data.get('syShow')
+			data['businessNatureCode'] = self.businessNatureCode
+			data['businessOffice'] = self.businessOffice
+			data['structureId'] = self.structureId
+			data['userCode'] = self.username
+			data['reformFlag'] = '1'
+			data['oriSysOperator'] = 'E11_user'
+			data['oriSysOperatorKey'] = 'RTExZTEx'
+			data['solutionType'] = '1'
+			data['calcFeeParamVo'] = {
+				"finalRat": "0",
+				"agentRate": "0",
+				"crossAgentRate": "",
+				"isFee": "0",
+				"inOrOut": "out",
+				"flag": "1",
+				"isChange": "0",
+				"feeDisLinkAgeFlagRation": "0"
+			}
+			data = json.dumps(data)
+			response = requests.post(url, headers=self.headers, data=data)
+
+			if response.json().get('data').get('businessCalcFeeVo'):
+				self.sy_discountRate = response.json().get('data').get('businessCalcFeeVo').get('discountRate')
+				self.discountRate = response.json().get('data').get('businessCalcFeeVo').get('artifSelfPricesRat')
+			else:
+				self.sy_discountRate = ""
+				self.discountRate = ""
+			if response.json().get('data').get('crossCalcFeeVo'):
+				self.jq_discountRate = response.json().get('data').get('crossCalcFeeVo').get('runPoundageRatio')
+			else:
+				self.jq_discountRate = ''
+
+
+		#确认报价
+		data = {
+			"orderNo":self.orderId,
+			"tranNo": self.tranNo,
+			"userCode": self.username,
+			"structureId":self.structureId,
+			"businessOffice": self.businessOffice,
+			"systemSource": "E11",
+			"oriSysOperator": "E11_user",
+			"oriSysOperatorKey": "RTExZTEx"
+		}
+		data = json.dumps(data, separators=(',', ':'))
+		response = requests.post(url, headers=headers, data=data)
+
+
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doMesOrderDetail"
+		data = {
+			"orderNo": self.orderId,
+			"structureId": self.structureId,
+			"userCode": self.username,
+			"userLoginType": "1",
+			"sellCode": None
+		}
+		data = json.dumps(data, separators=(',', ':'))
+		response = requests.post(url, headers=headers, data=data)
+
+
+
+		url = "https://mesbj.chinalife-p.com.cn/mesci/img/ImgRest/getUploadSuccess"
+		data = {
+			"orderNo": self.orderId,
+			"userCode": self.username
+		}
+		data = json.dumps(data, separators=(',', ':'))
+		response = requests.post(url, headers=headers, data=data)
+
+
+
+
+
+
+
+
+
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doQueryLog"
+		data = {
+			"orderNo": self.orderId,
+			"tranNo": self.tranNo,
+			"structureId": self.structureId,
+			"userCode": self.username,
+			"oriSysOperator": "E11_user",
+			"oriSysOperatorKey": "RTExZTEx",
+			"bancassuranceFlag": 0,
+			"checkOrganizationFlag": "0"
+		}
+
+		data = json.dumps(data, separators=(',', ':'))
+		response = requests.post(url, headers=headers, data=data)
+		if response.json().get('msg') == '请求成功':
+			if response.json().get('data').get('vinUseFlag') != '1':
+				url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doQueryLog"
+				data = {
+					"orderNo": self.orderId,
+					"tranNo": self.tranNo,
+					"structureId": self.structureId,
+					"userCode": self.username,
+					"oriSysOperator": "E11_user",
+					"oriSysOperatorKey": "RTExZTEx",
+					"bancassuranceFlag": 0,
+					"checkOrganizationFlag": "0",
+					"vinUseChangeStatusFlag": "1"
+				}
+
+				data = json.dumps(data, separators=(',', ':'))
+				response = requests.post(url, headers=headers, data=data)
+			else:
+				pass
+		else:
+			pass
+
+		url = "https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doMesOrderDetail"
+		data = {
+			"orderNo": self.orderId,
+			"structureId": self.structureId,
+			"userCode": self.username,
+			"userLoginType": "1",
+			"sellCode": None
+		}
+		data = json.dumps(data, separators=(',', ':'))
+		response = requests.post(url, headers=headers, data=data)
+
+
+
+
+
+	def main(self):
+		self.check_login()
+		if '密码错误' not in self.token:
+			if self.plyappno and self.discount:
+
+				return self.get_discountprice()
+			else:
+				self.RSA_encrypt()
+				self.get_orderId()
+				self.get_tranNo()
+				self.get_carinfo()
+				ret=self.get_nextstep()
+				if ret=='200':
+
+					if self.car_info:
+						if self.accidentalDrivingVo:
+							self.get_fcxdata()
+							if self.fcxres_message:
+								return {
+									'code':400,
+									'message':'附加险:'+self.fcxres_message
+								}
+							else:
+								return self.repeat(self.calculation())
+						else:
+							return self.repeat(self.calculation())
+					else:
+						return {
+							'code':400,
+							'message':'暂未查询到车型'
+						}
+				else:
+					return {
+						'code':400,
+						'message':ret
+					}
+
+
+		elif self.gs_info==None:
+
+			return {
+				'code': 400,
+				'message': '请输入正确的归属信息'
+			}
+
+		else:
+			return {
+				'code': 400,
+				'message': '账号密码错误'
+			}
+
+
+
+
+car_type={
+  "B11": "重型普通半挂车",
+  "B12": "重型厢式半挂车",
+  "B13": "重型罐式半挂车",
+  "B14": "重型平板半挂车",
+  "B15": "重型集装箱半挂车",
+  "B16": "重型自卸半挂车",
+  "B17": "重型特殊结构半挂车",
+  "B21": "中型普通半挂车",
+  "B22": "中型厢式半挂车",
+  "B23": "中型罐式半挂车",
+  "B24": "中型平板半挂车",
+  "B25": "中型集装箱半挂车",
+  "B26": "中型自卸半挂车",
+  "B27": "中型特殊结构半挂车",
+  "B31": "轻型普通半挂车",
+  "B32": "轻型厢式半挂车",
+  "B33": "轻型罐式半挂车",
+  "B34": "轻型平板半挂车",
+  "B35": "轻型自卸半挂车",
+  "D11": "无轨电车",
+  "D12": "有轨电车",
+  "G11": "重型普通全挂车",
+  "G12": "重型厢式全挂车",
+  "G13": "重型罐式全挂车",
+  "G14": "重型平板全挂车",
+  "G15": "重型集装箱全挂车",
+  "G16": "重型自卸全挂车",
+  "G21": "中型普通全挂车",
+  "G22": "中型厢式全挂车",
+  "G23": "中型罐式全挂车",
+  "G24": "中型平板全挂车",
+  "G25": "中型集装箱全挂车",
+  "G26": "中型自卸全挂车",
+  "G31": "轻型普通全挂车",
+  "G32": "轻型厢式全挂车",
+  "G33": "轻型罐式全挂车",
+  "G34": "轻型平板全挂车",
+  "G35": "轻型自卸全挂车",
+  "H11": "重型普通货车",
+  "H12": "重型厢式货车",
+  "H13": "重型封闭货车",
+  "H14": "重型罐式货车",
+  "H15": "重型平板货车",
+  "H16": "重型集装厢车",
+  "H17": "重型自卸货车",
+  "H18": "重型特殊结构货车",
+  "H21": "中型普通货车",
+  "H22": "中型厢式货车",
+  "H23": "中型封闭货车",
+  "H24": "中型罐式货车",
+  "H25": "中型平板货车",
+  "H26": "中型集装厢车",
+  "H27": "中型自卸货车",
+  "H28": "中型特殊结构货车",
+  "H31": "轻型普通货车",
+  "H32": "轻型厢式货车",
+  "H33": "轻型封闭货车",
+  "H34": "轻型罐式货车",
+  "H35": "轻型平板货车",
+  "H37": "轻型自卸货车",
+  "H38": "轻型特殊结构货车",
+  "H41": "微型普通货车",
+  "H42": "微型厢式货车",
+  "H43": "微型封闭货车",
+  "H44": "微型罐式货车",
+  "H45": "微型自卸货车",
+  "H46": "微型特殊结构货车",
+  "H51": "低速普通货车",
+  "H52": "低速厢式货车",
+  "H53": "罐式低速货车",
+  "H54": "低速自卸货车",
+  "J11": "轮式装载机械",
+  "J12": "轮式挖掘机械",
+  "J13": "轮式平地机械",
+  "K11": "大型普通客车",
+  "K12": "大型双层客车",
+  "K13": "大型卧铺客车",
+  "K14": "大型铰接客车",
+  "K15": "大型越野客车",
+  "K21": "中型普通客车",
+  "K22": "中型双层客车",
+  "K23": "中型卧铺客车",
+  "K24": "中型铰接客车",
+  "K25": "中型越野客车",
+  "K31": "小型普通客车",
+  "K32": "小型越野客车",
+  "K33": "轿车",
+  "K41": "微型普通客车",
+  "K42": "微型越野客车",
+  "K43": "微型轿车",
+  "M11": "普通正三轮摩托车",
+  "M12": "轻便正三轮摩托车",
+  "M13": "正三轮载客摩托车",
+  "M14": "正三轮载货摩托车",
+  "M15": "侧三轮摩托车",
+  "M21": "普通二轮摩托车",
+  "M22": "轻便二轮摩托车",
+  "N11": "三轮农用运输车",
+  "Q11": "重型半挂牵引车",
+  "Q21": "中型半挂牵引车",
+  "Q31": "轻型半挂牵引车",
+  "S": "特种作业专用车",
+  "T11": "大型轮式拖拉机",
+  "T21": "中型轮式拖拉机",
+  "T22": "手扶拖拉机",
+  "T23": "手扶变形运输机",
+  "X99": "其它",
+  "Z11": "大型专项作业车",
+  "Z21": "中型专项作业车",
+  "Z31": "小型专项作业车",
+  "Z41": "微型专项作业车",
+  "Z51": "重型专项作业车",
+  "Z71": "轻型专项作业车"
+}

+ 0 - 0
spiders/edian/guishu/__init__.py


+ 49 - 0
spiders/edian/guishu/ed_config.py

@@ -0,0 +1,49 @@
+import sys
+sys.path.append('.')
+
+from  spiders.edian.Login.ed_login import  ED_login
+
+from config import *
+
+def set_userinfo(userinfo):
+    uname=userinfo.get('username')
+    guishu =userinfo.get('other').get('attributiveName')
+    type=userinfo.get('other').get('type')
+    res=ED_login(uname).main()
+    if res.get('code')  ==200:
+        token=res.get('token')
+        userCode=res.get('userCode')
+        prefillCode=res.get('prefillCode')
+
+        redis_conn.hset('edian_' + uname, 'username', uname)
+        redis_conn.hset('edian_' + uname, 'token', token)
+        redis_conn.hset('edian_' + uname, 'gs_name', guishu)
+        redis_conn.hset('edian_' + uname, 'userCode', userCode)
+        redis_conn.hset('edian_' + uname, 'prefillCode', prefillCode)
+        redis_conn.hset('edian_' + uname, 'type', type)
+        return {
+            "code":200,
+            'message':'登录成功'
+        }
+    else:
+        return {
+            "code": 400,
+            'message': '登录失败'
+        }
+def  get_userinfo(uname):
+    guishu = str(redis_conn.hget('edian_' + uname, 'gs_name'), 'utf8')
+    set_userinfo({
+        'username':uname,
+        'other':{"attributiveName":guishu}
+    })
+
+if __name__ == '__main__':
+    zz=set_userinfo(
+        {
+            'username': "140302199201141223",
+                'other':{'attributiveName':'田璐'},
+            "type":"1"
+        }
+
+    )
+    print(zz)

+ 112 - 0
spiders/edian/guishu/ed_feichexian.py

@@ -0,0 +1,112 @@
+def get_feichexian(username):
+    return {
+        "code": 200,
+            "overlayPlanList": [
+                {
+                    "id": "39f47efbd6004899b4fa7c80bfdba801",
+                    "classificationCode": "27020004",
+                    "insuranceTypeId": "1",
+                    "insuranceTypeName": "意外险",
+                    "isVariablePremium": "1",
+                    "noFixedPremium": "1",
+                    "productDescribe": "一年期 | 驾乘人员意外 | 驾乘意外伤亡 | 驾乘意外医疗",
+                    "productIntroduce": "一年期 | 驾乘人员意外 | 驾乘意外伤亡 | 驾乘意外医疗",
+                    "productModelId": "83c14accacf24483a1d092e93a00df6d",
+                    "productName": "驾乘无忧尊贵版",
+                    "quotaProjectNo": "P2702015_NCISP451016",
+                    "totalPremium": "396.00",
+                    "type": "1",
+                    "usingStatus": "1",
+                    "periodType": "0",
+                    "productDescirbUrl": "https://obs-mes.obs.cn-east-2.myhuaweicloud.com:443/file_1600415259465.png?AccessKeyId=FIXNQBQMGYMIHWG4XW6H&Expires=1697430202&Signature=Qgux%2FcF53%2B9o3zonfMzx4bddiCg%3D",
+                    "productBannerUrl": "https://obs-mes.obs.cn-east-2.myhuaweicloud.com:443/file_1650551499873.png?AccessKeyId=FIXNQBQMGYMIHWG4XW6H&Expires=1697430202&Signature=NirUuQlo9qNtM1yYz0vHRe0Dknk%3D",
+                    "productPosterUrl": "",
+                    "createDate": "2021-10-28 14:59:21",
+                    "updateDate": "2023-04-21 14:01:40",
+                    "salesVolume": None,
+                    "productModelPath": "001"
+                },
+                {
+                    "id": "71d3c2271fe5404d82c78fb07d116cf0",
+                    "classificationCode": "27020004",
+                    "insuranceTypeId": "1",
+                    "insuranceTypeName": "意外险",
+                    "isVariablePremium": "1",
+                    "noFixedPremium": "1",
+                    "productDescribe": "一年期 | 驾乘人员意外 | 驾乘意外伤亡 | 驾乘意外医疗",
+                    "productIntroduce": "一年期 | 驾乘人员意外 | 驾乘意外伤亡 | 驾乘意外医疗",
+                    "productModelId": "83c14accacf24483a1d092e93a00df6d",
+                    "productName": "驾乘无忧进阶版",
+                    "quotaProjectNo": "P2702015_NCISP451015",
+                    "totalPremium": "195.00",
+                    "type": "1",
+                    "usingStatus": "1",
+                    "periodType": "0",
+                    "productDescirbUrl": "https://obs-mes.obs.cn-east-2.myhuaweicloud.com:443/file_1600415259465.png?AccessKeyId=FIXNQBQMGYMIHWG4XW6H&Expires=1697430202&Signature=Qgux%2FcF53%2B9o3zonfMzx4bddiCg%3D",
+                    "productBannerUrl": "https://obs-mes.obs.cn-east-2.myhuaweicloud.com:443/file_1650551086923.png?AccessKeyId=FIXNQBQMGYMIHWG4XW6H&Expires=1697430202&Signature=DvAF%2BcXPp8h2aLSqGsPnsOzIMKc%3D",
+                    "productPosterUrl": "",
+                    "createDate": "2021-10-28 14:58:26",
+                    "updateDate": "2023-04-21 14:02:28",
+                    "salesVolume": None,
+                    "productModelPath": "001"
+                },
+                {
+                    "id": "fd2dc8abe5f94eacbc8efd3bf62a8581",
+                    "classificationCode": "27020004",
+                    "insuranceTypeId": "1",
+                    "insuranceTypeName": "意外险",
+                    "isVariablePremium": "1",
+                    "noFixedPremium": "1",
+                    "productDescribe": "一年期 | 驾乘人员意外 | 驾乘意外伤亡 | 驾乘意外医疗",
+                    "productIntroduce": "一年期 | 驾乘人员意外 | 驾乘意外伤亡 | 驾乘意外医疗",
+                    "productModelId": "83c14accacf24483a1d092e93a00df6d",
+                    "productName": "驾乘无忧基础版",
+                    "quotaProjectNo": "P2702015_NCISP480855",
+                    "totalPremium": "108.00",
+                    "type": "1",
+                    "usingStatus": "1",
+                    "periodType": "0",
+                    "productDescirbUrl": "https://obs-mes.obs.cn-east-2.myhuaweicloud.com:443/file_1600415259465.png?AccessKeyId=FIXNQBQMGYMIHWG4XW6H&Expires=1697430202&Signature=Qgux%2FcF53%2B9o3zonfMzx4bddiCg%3D",
+                    "productBannerUrl": "https://obs-mes.obs.cn-east-2.myhuaweicloud.com:443/file_1650550584737.png?AccessKeyId=FIXNQBQMGYMIHWG4XW6H&Expires=1697430202&Signature=VlrXGQVuzDxpvfoAJyxYS5IUozw%3D",
+                    "productPosterUrl": "",
+                    "createDate": "2021-10-28 14:28:03",
+                    "updateDate": "2023-04-21 14:03:02",
+                    "salesVolume": None,
+                    "productModelPath": "001"
+                },
+                {
+                    "id": "77bcfb9bff014a93bfca0ed792c30258",
+                    "classificationCode": "02020001",
+                    "insuranceTypeId": "3",
+                    "insuranceTypeName": "财产险",
+                    "isVariablePremium": "0",
+                    "noFixedPremium": "1",
+                    "productDescribe": "账户保护/支付无忧/持卡消费者必备",
+                    "productIntroduce": "账户保护/支付无忧/持卡消费者必备",
+                    "productModelId": "83c14accacf24483a1d092e93a00df6d",
+                    "productName": "银行卡盗刷(1万款)",
+                    "quotaProjectNo": "P0202002_NCISP360883",
+                    "totalPremium": "5.00",
+                    "type": "1",
+                    "usingStatus": "1",
+                    "periodType": "0",
+                    "productDescirbUrl": None,
+                    "productBannerUrl": "https://obs-mes.obs.cn-east-2.myhuaweicloud.com:443/file_1615448543964.png?AccessKeyId=FIXNQBQMGYMIHWG4XW6H&Expires=1705312247&Signature=e1sJfnztgBvpJ6AD8Q8y%2FRqGDQI%3D",
+                    "productPosterUrl": "",
+                    "createDate": "2021-03-11 15:42:32",
+                    "updateDate": "2024-01-15 03:12:29",
+                    "salesVolume": None,
+                    "productModelPath": "001"
+                }
+
+            ]
+        }
+
+
+
+
+
+if __name__ == '__main__':
+
+    aa=get_feichexian('1')
+    print(aa)

+ 17 - 4
spiders/guoshou/baojia/gs_bfjs.py

@@ -407,7 +407,6 @@ class gs_calculation(object):
 			  "positionCode": "",
 			  "positionName": "",
 
-			  "loginUserCode": "140104197306170867",
 			"loginUserCode":  self.gs_info.get('userCode'),
 
 
@@ -437,7 +436,7 @@ class gs_calculation(object):
 			"permitNo": self.gs_info.get('permitNo'),
 
 			  "qlfyctfNo": None,
-			  "teamType": "0501",
+			  "teamType": self.zhanghao_info.get('data').get('userLevel'),
 			  "identificationCode": None,
 			  "saleschlcode": None,
 			  # "qfdepttype": "05",
@@ -503,12 +502,12 @@ class gs_calculation(object):
 		data = {
 			"businessNatureCode": self.businessNatureCode,
 			"businessOffice": self.zhanghao_info.get('data').get('userDepartment'),
-			"carKindCode": "A0",
+			"carKindCode": self.carType ,
 			"engineNumber": "",
 			"enrollDate": "",
 			"frameNo": self.encrypt.call('get_RSAencrypt',self.vin),
 			"orderId": self.orderId,
-			"productCode": "0521",
+			"productCode": "0521" if len(self.licenseNo)==7 else '0531',
 			"structureId": self.zhanghao_info.get('data').get('provincialCom'),
 			"tranNo": self.tranNo,
 			"userCode": self.zhanghao_info.get('data').get('userCode'),
@@ -2016,6 +2015,20 @@ class gs_calculation(object):
 				response = requests.post(url, headers=self.headers, data=json.dumps(self.data))
 				return 	self.repeat(response)
 
+
+		elif '交强险' in response.text and '重复投保' in	response.text and '自动更新为' in response.text:
+
+			self.jq_repeatinfo = response.json().get('data').get('doubleMsg')
+			jq_startdate=re.findall(r'自动更新为(.*?)~',response.text)
+			if jq_startdate:
+				jq_startdate=jq_startdate[0]
+				jq_startdate=jq_startdate+':00'
+				self.data['orderVo']['jqStartDate'] =jq_startdate
+				self.data['orderVo']['jqEndDate'] = self.get_syendday(jq_startdate)
+				url = 'https://mesbj.chinalife-p.com.cn/mesci/order/MesOrderInfos/doCalculate'
+				response = requests.post(url, headers=self.headers, data=json.dumps(self.data))
+				return 	self.repeat(response)
+
 		elif response.json().get('status')!='200':
 			info = ''
 			if self.jq_repeatinfo and self.sy_repeatinfo:

+ 15 - 3
spiders/guoshou/guishu/gs_config.py

@@ -9,6 +9,7 @@ def set_userinfo(userinfo):
     uname=userinfo.get('username')
     password = userinfo.get('pwd')
     guishu =userinfo.get('other').get('attributiveName')
+    type=userinfo.get('other').get('type')
     if guishu:
         login = GS_login(uname, password).main()
         if '不匹配' not in login:
@@ -27,6 +28,7 @@ def set_userinfo(userinfo):
             redis_conn.hset('guoshou_' + uname, 'businessOffice', businessOffice)
             redis_conn.hset('guoshou_' + uname, 'gs_name', guishu)
             redis_conn.hset('guoshou_' + uname, 'userID', userID)
+            redis_conn.hset('guoshou_' + uname, 'type', type)
             return {'code':200,
                     'message':'登录成功'
                     }
@@ -70,10 +72,20 @@ if __name__ == '__main__':
         #     'pwd': "381843Swf.",
         #     'other': {'attributiveName': '孙伟峰'}
         # },
+        # {
+        #     'username': "140303197606100419",
+        #     'pwd': "Dzj@@@1234",
+        #     'other': {'attributiveName': '段志军'}
+        # },
+        # {
+        #     'username': "142202198110182371",
+        #     'pwd': "Ljl2364#",
+        #     'other': {'attributiveName': '栗建理'}
+        # },
         {
-            'username': "140303197606100419",
-            'pwd': "Dzj@@@1234",
-            'other': {'attributiveName': '段志军'}
+            'username': "14010519870216227X",
+            'pwd': "Wangzhen0417.",
+            'other': {'attributiveName': '王渊'}
         },
     )
     print(zz)

+ 36 - 40
spiders/guoshou/guishu/gs_feichexian.py

@@ -1,44 +1,40 @@
-from spiders.guoshou.guishu.gs_config import redis_conn
-import requests
-import re
-
 def get_feichexian(username):
-    OauthToken=str(redis_conn.hget('guoshou_' + username, 'token'),'utf8')
-    userCode=str(redis_conn.hget('guoshou_' + username, 'username'),'utf8')
-    businessOffice=str(redis_conn.hget('guoshou_' + username, 'businessOffice'),'utf8')
-    userID = str(redis_conn.hget('guoshou_' + username, 'userID'), 'utf8')
-    headers = {
-        "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
-        "OauthToken": OauthToken,
-        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
-    }
-    url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/manageProducts/getFromCarProducts"
-    data = {
-        "userCode": userID,
-        "applicantType": "1",
-        "insuranceTypeId": "",
-        "queryWord": "",
-        "businessOffice": businessOffice,
-        "authority": "2"
-    }
-    response = requests.post(url, headers=headers, data=data)
-    # print(response.text)
-    # fcx_list=[]
-    # for i in response.json().get('data'):
-    #     id=i.get('id')
-    #     name=i.get('productName')
-    #     periods=i.get('periods')
-    #     fcx_list.append(
-    #         {
-    #         'id':id,
-    #         'name':name,
-    #         'periods':periods
-    #     }
-    #     )
-    # return {
-    #
-    #     "overlayPlanList":response.json().get('data')
+    # OauthToken=str(redis_conn.hget('guoshou_' + username, 'token'),'utf8')
+    # userCode=str(redis_conn.hget('guoshou_' + username, 'username'),'utf8')
+    # businessOffice=str(redis_conn.hget('guoshou_' + username, 'businessOffice'),'utf8')
+    # userID = str(redis_conn.hget('guoshou_' + username, 'userID'), 'utf8')
+    # headers = {
+    #     "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
+    #     "OauthToken": OauthToken,
+    #     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
+    # }
+    # url = "https://messh.chinalife-p.com.cn/ncisp/gatewayncisp/ncisp/ncisp/manageProducts/getFromCarProducts"
+    # data = {
+    #     "userCode": userID,
+    #     "applicantType": "1",
+    #     "insuranceTypeId": "",
+    #     "queryWord": "",
+    #     "businessOffice": businessOffice,
+    #     "authority": "2"
     # }
+    # response = requests.post(url, headers=headers, data=data)
+    # # print(response.text)
+    # # fcx_list=[]
+    # # for i in response.json().get('data'):
+    # #     id=i.get('id')
+    # #     name=i.get('productName')
+    # #     periods=i.get('periods')
+    # #     fcx_list.append(
+    # #         {
+    # #         'id':id,
+    # #         'name':name,
+    # #         'periods':periods
+    # #     }
+    # #     )
+    # # return {
+    # #
+    # #     "overlayPlanList":response.json().get('data')
+    # # }
     return {
         "code": 200,
             "overlayPlanList": [
@@ -148,5 +144,5 @@ def get_feichexian(username):
 
 if __name__ == '__main__':
 
-    aa=get_feichexian('13934214498')
+    aa=get_feichexian('1')
     print(aa)

+ 23 - 9
spiders/hengbang/baodan/hb_state.py

@@ -1,5 +1,7 @@
+import json
 import re
 
+import execjs
 import requests
 from spiders.hengbang.guishu.hb_config import *
 import time
@@ -16,6 +18,14 @@ class hb_Check():
             'Authorization': "Bearer "+token,
             'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36',
         }
+    def get_bjdata(self,x):
+        data=execjs.compile(open(js_path+'hengbang/decrypt.js','r',encoding='utf8').read()).call('decrypt',x)
+        return data
+    def encrypt(self,x):
+        data = execjs.compile(open(js_path + 'hengbang/decrypt.js', 'r', encoding='utf8').read()).call('encrypt', x)
+        return data
+
+
     def get_time(self):
         timestamp = int(time.time())
         time_local = time.localtime(timestamp)
@@ -68,17 +78,21 @@ class hb_Check():
             "pageSize": "5"
         }
         response = requests.get(url, headers=self.headers, params=params)
+        res_data=self.get_bjdata(response.json().get('hb_enc_d'))
+        response=json.loads(res_data)
+
         fcx_list = []
-        if response.status_code==200:
-            if response.json().get('content'):
-                PLYAPPNO=response.json().get('content')[0].get('PLYAPPNO')
+        if response.get('content'):
+            if response.get('content'):
+                PLYAPPNO=response.get('content')[0].get('PLYAPPNO')
                 url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/proposal"
                 params = {
                     "plyappno": PLYAPPNO
                 }
                 res = requests.get(url, headers=self.headers, params=params)
-
-                fcxinfo_list=res.json().get('accidentInsuranceList')
+                res_data = self.get_bjdata(res.json().get('hb_enc_d'))
+                res = json.loads(res_data)
+                fcxinfo_list=res.get('accidentInsuranceList')
                 if fcxinfo_list:
                     for i in fcxinfo_list:
                         tbdh = i.get('proposalno')
@@ -89,13 +103,13 @@ class hb_Check():
                                 'application': bdh
                             }
                         )
-                if res.json().get('busiCarInsureRisk'):
-                    SY_Application=res.json().get('busiCarInsureRisk').get('policyno')
+                if res.get('busiCarInsureRisk'):
+                    SY_Application=res.get('busiCarInsureRisk').get('policyno')
                 else:
                     SY_Application=''
 
-                if res.json().get('forceCarInsureRisk'):
-                    JQ_Application=res.json().get('forceCarInsureRisk').get('policyno')
+                if res.get('forceCarInsureRisk'):
+                    JQ_Application=res.get('forceCarInsureRisk').get('policyno')
                 else:
                     JQ_Application=''
 

+ 2 - 7
spiders/hengbang/baojia/hb_bfjs.py

@@ -172,7 +172,7 @@ class hb_calculation(object):
         self.accidentalDriving=accidentalDriving
 
     def get_bjdata(self,x):
-        data=execjs.compile(open(js_path+'hengbang/decrypt.js','r',encoding='utf8').read()).call('get_data',x)
+        data=execjs.compile(open(js_path+'hengbang/decrypt.js','r',encoding='utf8').read()).call('decrypt',x)
         return data
 
     def get_actualvalue(self,beginDate):
@@ -181,7 +181,7 @@ class hb_calculation(object):
             'riskCode': '0808',
             'carKindCode': self.carKindCode,
             'enrollDate': self.get_utctime(self.registerDate),
-            'purchasePrice': self.purchasePrice,
+            'purchasePrice': str(self.carinfo.get('purchasePriceNotTax')),
             'carUseType': self.carUseType,
             'seatCount': str(self.carinfo.get('seatCount')),
             'tonCount': self.limitLoad,
@@ -191,10 +191,8 @@ class hb_calculation(object):
         response = requests.get('https://car.hbins.com.cn/backstage/api/coredblink/depreciationrate',
                                 headers=self.headers,
                                 params=params)
-
         self.actualValue = response.text
 
-
     def get_utctime(self,x):
         ret=execjs.compile(self.js_code).call('get_utc',x)
         return ret
@@ -233,7 +231,6 @@ class hb_calculation(object):
                 get_userinfo(self.username)
                 self.check_login()
 
-
     def get_fcxinfo(self,res):
         if self.accidentalDriving:
             res['accidentEpolicyFlag']='Y'
@@ -276,7 +273,6 @@ class hb_calculation(object):
         else:
             return  res
 
-
     #获取车辆信息
     def get_carinfo(self):
         params = {
@@ -970,7 +966,6 @@ class hb_calculation(object):
 
             self.bj_response = ress
 
-
     def proposal(self):
         url = 'https://car.hbins.com.cn/new-insure/api/carinsurenew/proposal?plyappno=' + self.plyappno
         res = requests.get(url, headers=self.headers)