|
@@ -0,0 +1,1051 @@
|
|
|
+# *_* coding:utf-8 *_*
|
|
|
+import json
|
|
|
+import re
|
|
|
+import time
|
|
|
+import datetime
|
|
|
+from spiders.taikang.guishu.tk_config import *
|
|
|
+import execjs
|
|
|
+import requests
|
|
|
+from urllib import parse
|
|
|
+from config import *
|
|
|
+
|
|
|
+
|
|
|
+class tk_calculation(object):
|
|
|
+ def __init__( # token、车辆、人员信息
|
|
|
+ self,username, modelCName, engineNo, vin, licenseNo,seatCount, purchasePrice,vehicleUse,
|
|
|
+ enginedesc,limitLoad,completeKerbMass,energyType,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,isTransferbi,
|
|
|
+ # 交强险、商业险是否选择,起止日期信息
|
|
|
+ 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,
|
|
|
+ #脱保车标识
|
|
|
+ # isOutOfInsurance,
|
|
|
+
|
|
|
+ accidentalDriving
|
|
|
+
|
|
|
+ ):
|
|
|
+ self.username=username
|
|
|
+ self.uname = uname
|
|
|
+ self.address = address
|
|
|
+ self.phone_number = phone_number
|
|
|
+ self.identifyNumber = str(identifyNumber)
|
|
|
+
|
|
|
+ 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.vehicleUse=vehicleUse
|
|
|
+ self.usage=''
|
|
|
+ #非营业家庭自用小车
|
|
|
+ if self.vehicleUse=='05':
|
|
|
+ self.usage='374001'
|
|
|
+ #非营业货车
|
|
|
+ elif self.vehicleUse=='08':
|
|
|
+ self.usage='374006'
|
|
|
+ #营业货车
|
|
|
+ elif self.vehicleUse == '04':
|
|
|
+ self.usage = '374010'
|
|
|
+ self.energyType = energyType
|
|
|
+ if self.energyType=='1' or self.energyType=='2' or self.energyType=='3':
|
|
|
+ self.energyType='1'
|
|
|
+ else:
|
|
|
+ self.energyType='0'
|
|
|
+
|
|
|
+ self.actualvalue=''
|
|
|
+
|
|
|
+ self.token=''
|
|
|
+ self.headers =''
|
|
|
+ self.cookie=''
|
|
|
+
|
|
|
+ self.modelCName = modelCName
|
|
|
+ self.engineNo = engineNo
|
|
|
+ self.vin = vin
|
|
|
+ self.licenseNo = licenseNo
|
|
|
+ if enginedesc:
|
|
|
+
|
|
|
+ self.enginedesc=str(int(float(enginedesc)*1000))
|
|
|
+ else:
|
|
|
+ self.enginedesc ='0'
|
|
|
+ self.limitLoad=limitLoad
|
|
|
+ self.completeKerbMass=completeKerbMass
|
|
|
+ self.purchasePrice = purchasePrice
|
|
|
+ self.cartype=cartype
|
|
|
+ # 交强险是否过户
|
|
|
+ self.isTransfer = '0' if isTransfer==False else '1'
|
|
|
+ # 商业险是否过户
|
|
|
+ self.isTransferbi = '0' if isTransferbi==False else '1'
|
|
|
+
|
|
|
+ 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 = 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.accidentalDriving=accidentalDriving
|
|
|
+ self.fcProductList=[]
|
|
|
+
|
|
|
+ #座位数
|
|
|
+ self.seat=seatCount
|
|
|
+
|
|
|
+ self.carinfo = ''
|
|
|
+ #险种价格
|
|
|
+ self.jq_price=0
|
|
|
+ self.sy_price = 0
|
|
|
+ self.ccs_price=0
|
|
|
+ self.cs_price=0
|
|
|
+ self.sz_price=0
|
|
|
+ self.sj_price=0
|
|
|
+ self.ck_price=0
|
|
|
+ self.ybw_sz=0
|
|
|
+ self.ybw_sj = 0
|
|
|
+ self.ybw_ck=0
|
|
|
+ self.huahen_price=0
|
|
|
+ self.all_price=0
|
|
|
+
|
|
|
+ self.fcx_price=0
|
|
|
+
|
|
|
+ self.gs_info=''
|
|
|
+ self.orderId=''
|
|
|
+ self.agentCode=''
|
|
|
+ self.userdata=''
|
|
|
+ self.areaInfoVo=''
|
|
|
+ self.carInfoVo=''
|
|
|
+ self.data=''
|
|
|
+ self.messageBZ=''
|
|
|
+ self.messageCI=''
|
|
|
+ self.cs_message=''
|
|
|
+ self.vehicleOwnerMessage=''
|
|
|
+ # 获取城市代码
|
|
|
+ # def get_citycode(self, addr):
|
|
|
+ # city_list = []
|
|
|
+ # for i in city_code:
|
|
|
+ # for o in i.get('children'):
|
|
|
+ # for p in o.get('children'):
|
|
|
+ # if p.get('areaName') in addr:
|
|
|
+ # province_code = i.get('areaCode')
|
|
|
+ # citycode = o.get('areaCode')
|
|
|
+ # county_code = p.get('areaCode')
|
|
|
+ # city_list = [province_code, citycode, county_code]
|
|
|
+ # return city_list
|
|
|
+ # return city_list
|
|
|
+
|
|
|
+ def get_enddate(self,x):
|
|
|
+ x = x.split('-')
|
|
|
+ x[0] = str(int(x[0]) + 1)
|
|
|
+ x = "-".join(x)
|
|
|
+ try:
|
|
|
+ timeArray = time.strptime(x, '%Y-%m-%d %H:%M:%S')
|
|
|
+ except Exception as err:
|
|
|
+ if str(err) == 'day is out of range for month':
|
|
|
+ x = x.split(' ')
|
|
|
+ x[0] = x[0].split('-')
|
|
|
+ x[0][-1] = str(int(x[0][-1]) - 1)
|
|
|
+ x[0] = "-".join(x[0])
|
|
|
+ x = " ".join(x)
|
|
|
+ timeArray = time.strptime(x, '%Y-%m-%d %H:%M:%S')
|
|
|
+ timeStamp = int(time.mktime(timeArray)) - 1
|
|
|
+ time_local = time.localtime(timeStamp)
|
|
|
+ dt = time.strftime('%Y-%m-%d %H:%M:%S', time_local)
|
|
|
+ return dt
|
|
|
+
|
|
|
+ def get_decrypt(self,x):
|
|
|
+ js_code = open(js_path+'taikang/AES_ECB.js','r').read()
|
|
|
+ de_str=execjs.compile(js_code).call("Decrypt",x)
|
|
|
+ return de_str
|
|
|
+
|
|
|
+ def get_uuid(self):
|
|
|
+ js_code=open(js_path+'taikang/get_uuid.js','r').read()
|
|
|
+ return execjs.compile(js_code).call('wA')
|
|
|
+
|
|
|
+ #检查登录状态
|
|
|
+ def check_login(self):
|
|
|
+ # redis取出token
|
|
|
+ self.token = str(redis_conn.hget('taikang_' + self.username, 'token'), 'utf8')
|
|
|
+ if self.token == '':
|
|
|
+ self.token = '用户名、密码错误'
|
|
|
+
|
|
|
+ else:
|
|
|
+ self.agentCode=str(redis_conn.hget('taikang_' + self.username, 'agentCode'), 'utf8')
|
|
|
+ self.tplatformId = str(redis_conn.hget('taikang_' + self.username, 'tplatformId'), 'utf8')
|
|
|
+ self.fromid = str(redis_conn.hget('taikang_' + self.username, 'fromid'), 'utf8')
|
|
|
+ self.tplatLoginKey= str(redis_conn.hget('taikang_' + self.username, 'tplatLoginKey'), 'utf8')
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ headers = {
|
|
|
+ "Accept": "application/json, text/javascript, */*; q=0.01",
|
|
|
+ "Content-Type": "application/json",
|
|
|
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
|
|
|
+ "tkCarRequestToken": self.token
|
|
|
+ }
|
|
|
+
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/controller/getOrderId"
|
|
|
+ data = {
|
|
|
+ "channelCode": "OffWeb"
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=headers, data=data)
|
|
|
+ if response.json().get('status')=='1':
|
|
|
+ self.orderId=response.json().get('data').get('orderId')
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/controller/identity"
|
|
|
+ data = {
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "orderId": self.orderId
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=headers, data=data)
|
|
|
+ self. headers = {
|
|
|
+ "Accept": "application/json, text/javascript, */*; q=0.01",
|
|
|
+ "Content-Type": "application/json",
|
|
|
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
|
|
|
+ "tkCarRequestToken": response.json().get('data').get('tkCarRequestToken')
|
|
|
+ }
|
|
|
+ else:
|
|
|
+ get_userinfo(self.username)
|
|
|
+ self.check_login()
|
|
|
+
|
|
|
+
|
|
|
+ #获取归属信息
|
|
|
+ def get_guishu(self):
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/agent/query"
|
|
|
+ data = {
|
|
|
+ "fromId": "64827",
|
|
|
+ "tplatformId": self.tplatformId,
|
|
|
+ "agentCode": self.agentCode,
|
|
|
+ "agencyKeyword": "泰康人寿(个险)(64827)",
|
|
|
+ "lifeAgencyCode": "J",
|
|
|
+ "property": "2",
|
|
|
+ "orderID": self.orderId
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=self.headers, data=data)
|
|
|
+ self.gs_info=response.json().get('data')
|
|
|
+ # {
|
|
|
+ # "agentName": "白爱珍",
|
|
|
+ # "agentCode": "82004884",
|
|
|
+ # "agentPhone": "13835109685",
|
|
|
+ # "agencyName": "山西分公司",
|
|
|
+ # "agencyCode": "R10",
|
|
|
+ # "aracde": "115",
|
|
|
+ # "status": "1",
|
|
|
+ # "errorMessage": None,
|
|
|
+ # "comCode": "R10115",
|
|
|
+ # "fromID": "64827",
|
|
|
+ # "intermediaryCode": None,
|
|
|
+ # "intermediaryName": None
|
|
|
+ # }
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/area/user"
|
|
|
+ data = {
|
|
|
+ "tplatformId": self.tplatformId,
|
|
|
+ "agencyKeyword": "",
|
|
|
+ "lifeAgencyCode": "J",
|
|
|
+ "property": "2",
|
|
|
+ "orderID": self.orderId,
|
|
|
+ "fromId": "64827",
|
|
|
+ "agentCode": self.agentCode
|
|
|
+ }
|
|
|
+ data = json.dumps(data)
|
|
|
+ response = requests.post(url, headers=self.headers, data=data)
|
|
|
+ self.userdata=response.json().get('data')[0]
|
|
|
+ self.areaInfoVo={
|
|
|
+ "agent": {
|
|
|
+ "comCode": "0114",
|
|
|
+ "intermediaryName": "泰康人寿(个险)(64827)",
|
|
|
+ "agentCode": self.agentCode,
|
|
|
+ "agentName": self.gs_info.get('agentName'),
|
|
|
+ "agencyName": self.gs_info.get('agencyName'),
|
|
|
+ "agencyCode": self.gs_info.get('comCode'),
|
|
|
+ "agentPhone": self.gs_info.get('agentPhone'),
|
|
|
+ "status": self.gs_info.get('status'),
|
|
|
+ "intermediaryCode": "000000000004",
|
|
|
+ "fromID": "64827"
|
|
|
+ },
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "orderID": self.orderId,
|
|
|
+ "bjFlag": 0,
|
|
|
+ "licenseNo":self.licenseNo,
|
|
|
+ "isNewCarWithoutLicense": 0,
|
|
|
+ "provinceName": self.userdata.get('provinceName'),
|
|
|
+ "provinceCode": self.userdata.get('provinceCode'),
|
|
|
+ "cityName": self.userdata.get('cityList')[0].get('cityName'),
|
|
|
+ "cityCode": self.userdata.get('cityList')[0].get('cityCode'),
|
|
|
+ "areaFlag": self.userdata.get('cityList')[0].get('cityCode'),
|
|
|
+ "comCode": self.userdata.get('cityList')[0].get('comCode'),
|
|
|
+ "renewalFlag": "",
|
|
|
+ "clientType": "",
|
|
|
+ "fromID": self.fromid ,
|
|
|
+ "formID": self.fromid ,
|
|
|
+ "tplatformId":self.tplatformId,
|
|
|
+ "leadsId": ""
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ #获取车辆信息
|
|
|
+ def get_carinfo(self):
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/car/modelinfo/query"
|
|
|
+ data = {
|
|
|
+ "orderID": self.orderId,
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "carInfoVo": {
|
|
|
+ "isQueryCarByOCR": "3",
|
|
|
+ "carType": "A",
|
|
|
+ "vinNo": self.vin,
|
|
|
+ "operateFlag": "3"
|
|
|
+ },
|
|
|
+ "fromId": self.fromid,
|
|
|
+ "tplatformId": self.tplatformId,
|
|
|
+ "areaInfoVo": self.areaInfoVo,
|
|
|
+ "premiumTrialFlag": "0",
|
|
|
+ "tplatLoginKey": self.tplatLoginKey
|
|
|
+ }
|
|
|
+ data = json.dumps(data)
|
|
|
+ response = requests.post(url, headers=self.headers, data=data)
|
|
|
+ res=eval(self.get_decrypt(response.json().get('data')).replace('false','False').replace('true','True').replace('null','None'))
|
|
|
+ for i in res.get('data').get('carModel'):
|
|
|
+ if self.purchasePrice==i.get('vehicleJingyou').get('price').replace('.0',''):
|
|
|
+ self.carinfo=i
|
|
|
+ break
|
|
|
+ if self.carinfo:
|
|
|
+ pass
|
|
|
+ elif res.get('data').get('carModel') and self.carinfo=='':
|
|
|
+ self.carinfo=res.get('data').get('carModel')[0]
|
|
|
+
|
|
|
+ #
|
|
|
+ def get_next(self):
|
|
|
+ self.carInfoVo={
|
|
|
+ "isQueryCarByOCR": "3",
|
|
|
+ "operateFlag": "4",
|
|
|
+ "carCheckVo": {
|
|
|
+ "checkCode": "",
|
|
|
+ "pmQueryNo": "",
|
|
|
+ "checkFlag": ""
|
|
|
+ },
|
|
|
+ #燃料类型
|
|
|
+ "fuelType": "0",
|
|
|
+ "carType": "A",
|
|
|
+ "carModel": [
|
|
|
+ self.carinfo
|
|
|
+ ],
|
|
|
+ "useNatureCodeCode": "8A",
|
|
|
+ "modelName": self.modelCName,
|
|
|
+ "licenseNo": self.licenseNo,
|
|
|
+ "vinNo": self.vin,
|
|
|
+ "engineNo": self.engineNo,
|
|
|
+ "enrollDate": self.registerDate,
|
|
|
+ "billDate": "",
|
|
|
+ "carBookingTime": "",
|
|
|
+ "billNo": "",
|
|
|
+ "chgOwnerFlag": self.isTransfer,
|
|
|
+ "transferDate": "" if self.isTransfer=='0' else self.issueDate,
|
|
|
+ "selectedSeat": self.seat,
|
|
|
+ "licenseType": "02",
|
|
|
+ "licenseTypeChinese": "小型汽车号牌",
|
|
|
+ "carOwnerNature": "1",
|
|
|
+ #排量
|
|
|
+ "exhaustScale": self.enginedesc,
|
|
|
+ "seatFlag": 1
|
|
|
+ }
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/car/modelinfo/query"
|
|
|
+ data = {
|
|
|
+ "orderID": self.orderId,
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "carInfoVo": self.carInfoVo,
|
|
|
+ "carOwnerVo": {
|
|
|
+ "carOwnerNature": "1",
|
|
|
+ "name": self.uname,
|
|
|
+ "id":self.identifyNumber,
|
|
|
+ "certificateType": "01"
|
|
|
+ },
|
|
|
+ "tplatformId": self.tplatformId,
|
|
|
+ "fromId": self.fromid,
|
|
|
+ "areaInfoVo": self.areaInfoVo,
|
|
|
+ "tplatLoginKey": self.tplatLoginKey
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=self.headers, data=data)
|
|
|
+
|
|
|
+ res = eval(self.get_decrypt(response.json().get('data')).replace('false', 'False').replace('true', 'True').replace('null', 'None'))
|
|
|
+ self.carInfoVo['carModel']=[res.get('data').get('carModel')[0]]
|
|
|
+ self.carinfo=res.get('data').get('carModel')[0]
|
|
|
+
|
|
|
+
|
|
|
+ check_carinfo=self.carInfoVo.copy()
|
|
|
+ del check_carinfo['isQueryCarByOCR']
|
|
|
+ del check_carinfo['operateFlag']
|
|
|
+ del check_carinfo['carCheckVo']
|
|
|
+ del check_carinfo['carOwnerNature']
|
|
|
+ check_carinfo['purchasePrice']=res.get('data').get('carModel')[0].get('vehicleJingyou').get('price').replace('.0','')
|
|
|
+ check_carinfo['brandName'] = res.get('data').get('carModel')[0].get('vehicleJingyou').get('vehicleName')
|
|
|
+ check_carinfo['tonnageFlag']='0'
|
|
|
+
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/car/modelinfo/checkVehicleType"
|
|
|
+ data = {
|
|
|
+ "carInfoVo": check_carinfo,
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "orderId": self.orderId
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=self.headers, data=data)
|
|
|
+
|
|
|
+ if response.json().get('data')=='交管车辆类型校验成功':
|
|
|
+ kindLimitCode=''
|
|
|
+ if self.jiaoqiang_chooseFlag=='on' and self.shangye_chooseFlag=='on':
|
|
|
+ pass
|
|
|
+ elif self.jiaoqiang_chooseFlag=='on' and self.shangye_chooseFlag!='on':
|
|
|
+ kindLimitCode='1'
|
|
|
+ elif self.jiaoqiang_chooseFlag != 'on' and self.shangye_chooseFlag == 'on':
|
|
|
+ kindLimitCode = '2'
|
|
|
+
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/save/basicInfo"
|
|
|
+ data = {
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "orderID": self.orderId,
|
|
|
+ "renewalFlag": "",
|
|
|
+ "isJgFlag": "",
|
|
|
+ "carInfoVo": check_carinfo,
|
|
|
+ "carOwnerVo": {
|
|
|
+ "carOwnerNature": "1",
|
|
|
+ "birthDate": self.identifyNumber[6:10]+"-"+self.identifyNumber[10:12]+"-"+self.identifyNumber[12:14],
|
|
|
+ "name": self.uname,
|
|
|
+ "id": self.identifyNumber,
|
|
|
+ "certificateType": "01",
|
|
|
+ "serialno": "0",
|
|
|
+ "sex": 1,
|
|
|
+ "insuredAddress": ""
|
|
|
+ },
|
|
|
+ "otherInfo": {
|
|
|
+ "isQueryVehicleFlag": False,
|
|
|
+ "showEngineNoFlag": "1",
|
|
|
+ "jyQueryFlag": False,
|
|
|
+ "newCarFlag": "0",
|
|
|
+ #
|
|
|
+ "kindLimitCode": kindLimitCode,
|
|
|
+ "retrospectId": self.get_uuid()
|
|
|
+ },
|
|
|
+ "insureInfo": {
|
|
|
+ "appliInfo": {},
|
|
|
+ "contacts": {},
|
|
|
+ "insuredInfo": {}
|
|
|
+ },
|
|
|
+ "carTaxVo": {
|
|
|
+ "isPayTax": "1"
|
|
|
+ },
|
|
|
+ "tplatformId": self.tplatformId,
|
|
|
+ "authFailContinueFlag": "",
|
|
|
+ "fromId": self.fromid,
|
|
|
+ "areaInfoVo": self.areaInfoVo,
|
|
|
+ "tplatLoginKey": self.tplatLoginKey
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=self.headers, data=data)
|
|
|
+
|
|
|
+
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/precise/init"
|
|
|
+ data = {
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "orderID": self.orderId,
|
|
|
+ "initFlag": "init",
|
|
|
+ "tplatformId": self.tplatformId,
|
|
|
+ "tplatLoginKey": self.tplatLoginKey
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=self.headers, data=data)
|
|
|
+ self.check_vehicleOwnerMessage(response)
|
|
|
+
|
|
|
+ else:
|
|
|
+ print(response.text)
|
|
|
+
|
|
|
+ def check_vehicleOwnerMessage(self,response):
|
|
|
+ self.data = response.json().get('data')
|
|
|
+
|
|
|
+ self.messageBZ = response.json().get('data').get('other').get('messageBZ')
|
|
|
+ if self.messageBZ == None:
|
|
|
+ self.messageBZ = ''
|
|
|
+
|
|
|
+ self.messageCI = response.json().get('data').get('other').get('messageCI')
|
|
|
+ if self.messageCI == None:
|
|
|
+ self.messageCI = ''
|
|
|
+ if self.chesun_chooseFlag == 'on':
|
|
|
+ self.cs_message = response.json().get('data').get('other').get('notice')
|
|
|
+ self.vehicleOwnerMessage = "".join(re.findall(r'"vehicleOwnerMessage":"(.*?)"', response.text))
|
|
|
+
|
|
|
+ if self.vehicleOwnerMessage:
|
|
|
+ if '商业险:未传送车辆过户标志' in self.vehicleOwnerMessage:
|
|
|
+ if self.isTransferbi == '1':
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/precise/init"
|
|
|
+ data = {
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "orderID": self.orderId,
|
|
|
+ "initFlag": "init",
|
|
|
+ "chgOwnerInfo": {
|
|
|
+ "startDateBZ": "",
|
|
|
+ "startDateCIP": "",
|
|
|
+ "chgOwnerFlagBZ": "0",
|
|
|
+ "chgOwnerFlagCIP": self.isTransferbi,
|
|
|
+ "InstantInureFlagCI": "0",
|
|
|
+ "InstantInureFlagBI": "0",
|
|
|
+ "transferDate": self.issueDate
|
|
|
+ }
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=self.headers, data=data)
|
|
|
+ self.check_vehicleOwnerMessage(response)
|
|
|
+ # self.data = response.json().get('data')
|
|
|
+ # self.vehicleOwnerMessage = ''
|
|
|
+
|
|
|
+ def bfjs(self):
|
|
|
+ if self.messageBZ or self.messageCI or self.cs_message or self.vehicleOwnerMessage:
|
|
|
+ return {
|
|
|
+ 'code':400,
|
|
|
+ "message":self.messageBZ+'-----------'+self.messageCI+'-----------'+self.cs_message+'-----------'+self.vehicleOwnerMessage
|
|
|
+ }
|
|
|
+ else:
|
|
|
+ if self.shangye_chooseFlag!='on' and self.jiaoqiang_chooseFlag=='on':
|
|
|
+ self.data['driverAccidentVo']['isSelect']='0'
|
|
|
+ self.data['driverAccidentVo']['quantityCname'] = '不投保'
|
|
|
+ self.data['driverAccidentVo']['quantity'] = 0
|
|
|
+ self.data['other']['fromID'] = self.fromid
|
|
|
+ self.data['other']['channelCode'] = 'OffWeb'
|
|
|
+ self.data['other']['notice'] = ''
|
|
|
+ self.data['other']['messageBZ'] = ''
|
|
|
+ self.data['other']['messageCI'] = ''
|
|
|
+ self.data['chargingPost']=[]
|
|
|
+ self.data['riskType'] ='0808'
|
|
|
+ self.data['initFlag'] = 'quote'
|
|
|
+ self.data['orderID'] = self.orderId
|
|
|
+ self.data['carTaxInfo'] = { "taxFlag": "T"}
|
|
|
+ self.data['tplatformId'] = self.tplatformId
|
|
|
+ self.data['tplatLoginKey'] = self.tplatLoginKey
|
|
|
+ elif self.shangye_chooseFlag=='on' and self.jiaoqiang_chooseFlag!='on':
|
|
|
+ ciKindsVo_list=[]
|
|
|
+ for zz in self.data.get('ciKindsVo'):
|
|
|
+ if zz.get('kindCName')=='车辆损失保险':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.chesun_chooseFlag=='on':
|
|
|
+ zz['bjSelect']='0'
|
|
|
+ zz['isSelect']='1'
|
|
|
+ self.actualvalue=str(zz.get('quoteAmount'))
|
|
|
+ zz['quoteAmountCN']=str(zz.get('quoteAmount'))+'0'
|
|
|
+ zz['quoteAmount'] = str(zz.get('quoteAmount')) + '0'
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName')=='第三者责任保险':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.sanzhe_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ zz['quoteAmount']=self.sanzhe_amount
|
|
|
+ a=str(int(int(self.sanzhe_amount)/10000))+'万'
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName')=='车上人员责任保险(司机)':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.sjzeren_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ a=str(int(int(self.sjzeren_amount)/10000))+'万'
|
|
|
+ zz['quoteAmount'] = self.sjzeren_amount
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ zz['unitAmount'] = self.sjzeren_amount
|
|
|
+ zz['unitAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName')=='车上人员责任保险(乘客)':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.ckzeren_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ a=str(int(int(self.sjzeren_amount)/10000))+'万'
|
|
|
+ zz['quantity'] = str(int(self.seat)-1)
|
|
|
+ zz['quoteAmount'] = str(int(self.sjzeren_amount)*(int(self.seat)-1))
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ zz['unitAmount'] = self.sjzeren_amount
|
|
|
+ zz['unitAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName')=='车身划痕损失险':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.huahen_chooseFlag=='on':
|
|
|
+ zz['bjSelect']='0'
|
|
|
+ zz['isSelect']='1'
|
|
|
+ zz['quoteAmount'] = self.huahen_amount
|
|
|
+ zz['quoteAmountCN']=self.huahen_amount
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName')=='附加医保外医疗费用责任险(三者)':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.ybw_sanzhe_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ zz['quoteAmount']=self.ybw_sanzhe_amount
|
|
|
+ a=str(int(int(self.ybw_sanzhe_amount)/10000))+'万'
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName')=='附加医保外医疗费用责任险(车上人员(司机))':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.ybw_siji_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ a=str(int(int(self.ybw_siji_amount)/10000))+'万'
|
|
|
+ zz['quoteAmount'] = self.ybw_siji_amount
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ zz['unitAmount'] = self.ybw_siji_amount
|
|
|
+ zz['unitAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName')=='附加医保外医疗费用责任险(车上人员(乘客))':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.ybw_ck_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ a=str(int(int(self.ybw_ck_amount)/10000))+'万'
|
|
|
+ zz['quantity'] = str(int(self.seat)-1)
|
|
|
+ zz['quoteAmount'] = str(int(self.ybw_ck_amount)*(int(self.seat)-1))
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ zz['unitAmount'] = self.ybw_ck_amount
|
|
|
+ zz['unitAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName')=='道路救援服务特约条款':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.sanzhe_chooseFlag == 'on' or self.chesun_chooseFlag=='on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName')=='代为送检服务特约条款':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.chesun_chooseFlag=='on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ else :
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ zz['quoteAmountCN']='不投保'
|
|
|
+ zz['bjSelect']='0'
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ self.data['ciKindsVo']=ciKindsVo_list
|
|
|
+ self.data['driverAccidentVo']['isSelect'] = '0'
|
|
|
+ self.data['driverAccidentVo']['quantityCname'] = '不投保'
|
|
|
+ self.data['driverAccidentVo']['quantity'] = 0
|
|
|
+ self.data['other']['fromID'] = self.fromid
|
|
|
+ self.data['other']['channelCode'] = 'OffWeb'
|
|
|
+ self.data['other']['notice'] = ''
|
|
|
+ self.data['other']['messageBZ'] = ''
|
|
|
+ self.data['other']['messageCI'] = ''
|
|
|
+ self.data['chargingPost'] = []
|
|
|
+ self.data['riskType'] = '0808'
|
|
|
+ self.data['initFlag'] = 'quote'
|
|
|
+ self.data['orderID'] = self.orderId
|
|
|
+ self.data['carTaxInfo'] = {}
|
|
|
+ self.data['tplatformId'] = self.tplatformId
|
|
|
+ self.data['tplatLoginKey'] = self.tplatLoginKey
|
|
|
+ elif self.shangye_chooseFlag=='on' and self.jiaoqiang_chooseFlag=='on':
|
|
|
+ ciKindsVo_list = []
|
|
|
+ for zz in self.data.get('ciKindsVo'):
|
|
|
+ if zz.get('kindCName') == '车辆损失保险':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.chesun_chooseFlag == 'on':
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ self.actualvalue = str(zz.get('quoteAmount'))
|
|
|
+ zz['quoteAmountCN'] = str(zz.get('quoteAmount')) + '0'
|
|
|
+ zz['quoteAmount'] = str(zz.get('quoteAmount')) + '0'
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName') == '第三者责任保险':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.sanzhe_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ zz['quoteAmount'] = self.sanzhe_amount
|
|
|
+ a = str(int(int(self.sanzhe_amount) / 10000)) + '万'
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName') == '车上人员责任保险(司机)':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.sjzeren_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ a = str(int(int(self.sjzeren_amount) / 10000)) + '万'
|
|
|
+ zz['quoteAmount'] = self.sjzeren_amount
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ zz['unitAmount'] = self.sjzeren_amount
|
|
|
+ zz['unitAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName') == '车上人员责任保险(乘客)':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.ckzeren_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ a = str(int(int(self.sjzeren_amount) / 10000)) + '万'
|
|
|
+ zz['quantity'] = str(int(self.seat) - 1)
|
|
|
+ zz['quoteAmount'] = str(int(self.sjzeren_amount) * (int(self.seat) - 1))
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ zz['unitAmount'] = self.sjzeren_amount
|
|
|
+ zz['unitAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName') == '车身划痕损失险':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.huahen_chooseFlag == 'on':
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['quoteAmount'] = self.huahen_amount
|
|
|
+ zz['quoteAmountCN'] = self.huahen_amount
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName') == '附加医保外医疗费用责任险(三者)':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.ybw_sanzhe_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ zz['quoteAmount'] = self.ybw_sanzhe_amount
|
|
|
+ a = str(int(int(self.ybw_sanzhe_amount) / 10000)) + '万'
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName') == '附加医保外医疗费用责任险(车上人员(司机))':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.ybw_siji_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ a = str(int(int(self.ybw_siji_amount) / 10000)) + '万'
|
|
|
+ zz['quoteAmount'] = self.ybw_siji_amount
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ zz['unitAmount'] = self.ybw_siji_amount
|
|
|
+ zz['unitAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName') == '附加医保外医疗费用责任险(车上人员(乘客))':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.ybw_ck_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ a = str(int(int(self.ybw_ck_amount) / 10000)) + '万'
|
|
|
+ zz['quantity'] = str(int(self.seat) - 1)
|
|
|
+ zz['quoteAmount'] = str(int(self.ybw_ck_amount) * (int(self.seat) - 1))
|
|
|
+ zz['quoteAmountCN'] = a
|
|
|
+ zz['unitAmount'] = self.ybw_ck_amount
|
|
|
+ zz['unitAmountCN'] = a
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName') == '道路救援服务特约条款':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.sanzhe_chooseFlag == 'on' or self.chesun_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ elif zz.get('kindCName') == '代为送检服务特约条款':
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ if self.chesun_chooseFlag == 'on':
|
|
|
+ zz['isSelect'] = '1'
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ else:
|
|
|
+ zz['isSelect'] = '0'
|
|
|
+ zz['quoteAmountCN'] = '不投保'
|
|
|
+ zz['bjSelect'] = '0'
|
|
|
+ ciKindsVo_list.append(zz)
|
|
|
+ self.data['ciKindsVo'] = ciKindsVo_list
|
|
|
+
|
|
|
+ self.data['driverAccidentVo']['isSelect'] = '0'
|
|
|
+ self.data['driverAccidentVo']['quantityCname'] = '不投保'
|
|
|
+ self.data['driverAccidentVo']['quantity'] = 0
|
|
|
+ self.data['other']['fromID'] = self.fromid
|
|
|
+ self.data['other']['channelCode'] = 'OffWeb'
|
|
|
+ self.data['other']['notice'] = ''
|
|
|
+ self.data['other']['messageBZ'] = ''
|
|
|
+ self.data['other']['messageCI'] = ''
|
|
|
+ self.data['chargingPost'] = []
|
|
|
+ self.data['riskType'] = '0808'
|
|
|
+ self.data['initFlag'] = 'quote'
|
|
|
+ self.data['orderID'] = self.orderId
|
|
|
+ self.data['carTaxInfo'] = {"taxFlag": "T"}
|
|
|
+ self.data['tplatformId'] = self.tplatformId
|
|
|
+ self.data['tplatLoginKey'] = self.tplatLoginKey
|
|
|
+ if self.accidentalDriving:
|
|
|
+ self.data['driverAccidentVo']['isSelect'] = '1'
|
|
|
+ self.data['driverAccidentVo']['selectPlanCode'] = self.accidentalDriving.get('planCode')
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/precise/init"
|
|
|
+
|
|
|
+ data = json.dumps(self.data, separators=(',', ':'))
|
|
|
+
|
|
|
+ response = requests.post(url, headers=self.headers, data=data)
|
|
|
+
|
|
|
+ self.quote()
|
|
|
+
|
|
|
+
|
|
|
+ mark=response.json().get('data').get('businessScore')
|
|
|
+ self.jq_price=response.json().get('data').get('premium').get('jqPremium')
|
|
|
+ self.ccs_price=response.json().get('data').get('premium').get('tax')
|
|
|
+ self.sy_price=response.json().get('data').get('premium').get('syPremium')
|
|
|
+ self.all_price=response.json().get('data').get('premium').get('countPremium')
|
|
|
+ if self.shangye_chooseFlag=='on':
|
|
|
+ for i in response.json().get('data').get('ciKindsVo'):
|
|
|
+ if i.get('kindCName')=='车辆损失保险':
|
|
|
+ self.cs_price=i.get('premium')
|
|
|
+ elif i.get('kindCName')=='第三者责任保险':
|
|
|
+ self.sz_price=i.get('premium')
|
|
|
+ elif i.get('kindCName')=='车上人员责任保险(司机)':
|
|
|
+ self.sj_price=i.get('premium')
|
|
|
+
|
|
|
+ elif i.get('kindCName')=='车上人员责任保险(乘客)':
|
|
|
+ self.ck_price=i.get('premium')
|
|
|
+ elif i.get('kindCName')=='车身划痕损失险':
|
|
|
+ self.huahen_price=i.get('premium')
|
|
|
+
|
|
|
+ elif i.get('kindCName')=='附加医保外医疗费用责任险(三者)':
|
|
|
+ self.ybw_sz=i.get('premium')
|
|
|
+ elif i.get('kindCName')=='附加医保外医疗费用责任险(车上人员(司机))':
|
|
|
+ self.ybw_sj=i.get('premium')
|
|
|
+ elif i.get('kindCName')=='附加医保外医疗费用责任险(车上人员(乘客))':
|
|
|
+ self.ybw_ck=i.get('premium')
|
|
|
+
|
|
|
+ carRenewalFlagCI=''
|
|
|
+ carRenewalFlagBI=''
|
|
|
+ jq_accident_list=''
|
|
|
+ sy_accident_list=''
|
|
|
+ self.jiaoqiang_startDate=response.json().get('data').get('date').get('initStartDateBZ')+':00'
|
|
|
+ self.chesun_startDate=response.json().get('data').get('date').get('initStartDateCI')+':00'
|
|
|
+ self.orderNo=self.orderId
|
|
|
+ fcx_list=[]
|
|
|
+ carInfo = {}
|
|
|
+ if self.accidentalDriving:
|
|
|
+ fcx_list.append({
|
|
|
+ 'price': self.accidentalDriving.get('sumPremium'),
|
|
|
+ 'name': self.accidentalDriving.get('planName'),
|
|
|
+ 'policy': "",
|
|
|
+ })
|
|
|
+ # 车型名称
|
|
|
+ carInfo['modelcname'] = self.carinfo.get('modelName')
|
|
|
+ # 车型编码
|
|
|
+ carInfo['modelCode'] = self.carinfo.get('modelCode')
|
|
|
+ # 排量
|
|
|
+ carInfo['exhaustscale'] = self.carinfo.get('vehicleJingyou').get('displacement')
|
|
|
+ # 座位数
|
|
|
+ carInfo['seatCount'] = self.carinfo.get('vehicleJingyou').get('seatMin')
|
|
|
+ # 价格
|
|
|
+ carInfo['purchasePrice'] = self.carinfo.get('vehicleJingyou').get('price')
|
|
|
+ # 功率
|
|
|
+ carInfo['power'] = self.carinfo.get('vehicleJingyou').get('power')
|
|
|
+ # 年款
|
|
|
+ carInfo['caryear'] = self.carinfo.get('vehicleJingyou').get('marketDate')
|
|
|
+
|
|
|
+ redis_conn.hset('taikang_' + self.orderNo, 'licenseNo', self.licenseNo)
|
|
|
+ redis_conn.hset('taikang_' + self.orderNo, 'headers', self.headers)
|
|
|
+ redis_conn.hset('taikang_' + self.orderNo, 'orderId', self.orderId)
|
|
|
+ redis_conn.hset('taikang_' + self.orderNo, 'fromId', self.fromid)
|
|
|
+ redis_conn.hset('taikang_' + self.orderNo, 'username', self.username)
|
|
|
+ redis_conn.hset('taikang_' + self.orderNo, 'tplatformId', self.tplatformId)
|
|
|
+ redis_conn.hset('taikang_' + self.orderNo, 'tplatLoginKey', self.tplatLoginKey)
|
|
|
+
|
|
|
+ peopleinfo = {
|
|
|
+ 'uname': self.uname,
|
|
|
+ 'identifyNumber': self.identifyNumber,
|
|
|
+ 'address': self.address,
|
|
|
+ 'phone_number': self.phone_number,
|
|
|
+
|
|
|
+ 'tb_uname': self.tb_uname,
|
|
|
+ 'tb_identifyNumber': self.tb_identifyNumber,
|
|
|
+ 'tb_address': self.tb_address,
|
|
|
+ 'tb_phone_number': self.tb_phone_number,
|
|
|
+
|
|
|
+ 'bb_uname': self.bb_uname,
|
|
|
+ 'bb_identifyNumber': self.bb_identifyNumber,
|
|
|
+ 'bb_address': self.bb_address,
|
|
|
+ 'bb_phone_number': self.bb_phone_number,
|
|
|
+ }
|
|
|
+ redis_conn.hset('taikang_' + self.orderNo, 'peopleinfo', peopleinfo)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return {
|
|
|
+ 'code': 200,
|
|
|
+ 'INSURANCE_TYPE': {
|
|
|
+ "A": str(self.cs_price),
|
|
|
+ "A_amount": str(self.actualvalue),
|
|
|
+ "B": str(self.sz_price),
|
|
|
+ "D3": str(self.sj_price),
|
|
|
+ "D4": str(self.ck_price),
|
|
|
+ "L": str(self.huahen_price),
|
|
|
+ "MJ1": '0',
|
|
|
+ "MJ2": '0',
|
|
|
+ "MJ3": '0',
|
|
|
+ "MJ4": '0',
|
|
|
+ "SY_FJ_YBW1": str(self.ybw_sz),
|
|
|
+ "SY_FJ_YBW2": str(self.ybw_ck),
|
|
|
+ "SY_FJ_YBW3": str(self.ybw_sj),
|
|
|
+ },
|
|
|
+ # 交强险价格
|
|
|
+ 'forceCarInsureRisk': str(self.jq_price),
|
|
|
+ # 车船税
|
|
|
+ 'carInsureShiptax': str(self.ccs_price),
|
|
|
+ # 商业险价格
|
|
|
+ 'busiTotalPremium': str(self.sy_price),
|
|
|
+ # 总价
|
|
|
+ 'carInsureMain': str(self.all_price),
|
|
|
+ # 订单号
|
|
|
+ 'plyappno': self.orderNo,
|
|
|
+ 'message': '报价成功',
|
|
|
+
|
|
|
+ 'jq_startDate': self.jiaoqiang_startDate if self.jiaoqiang_chooseFlag == 'on' else '',
|
|
|
+ 'jq_endDate': self.get_enddate(self.jiaoqiang_startDate) if self.jiaoqiang_chooseFlag == 'on' else '',
|
|
|
+ 'sy_startDate': self.chesun_startDate if self.shangye_chooseFlag == 'on' else '',
|
|
|
+ 'sy_endDate': self.get_enddate(self.chesun_startDate) if self.shangye_chooseFlag == 'on' else '',
|
|
|
+ 'other': {
|
|
|
+ 'mark': mark,
|
|
|
+ 'jq_discount': '',
|
|
|
+ 'sy_discount': '',
|
|
|
+ 'isQuoteGreenWay': '',
|
|
|
+ 'info_list': [],
|
|
|
+ 'jq_renewalflag': carRenewalFlagCI,
|
|
|
+ 'sy_renewalflag': carRenewalFlagBI,
|
|
|
+ 'jq_accident': jq_accident_list,
|
|
|
+ 'sy_accident': sy_accident_list,
|
|
|
+ },
|
|
|
+ 'jq_repeatinfo': '',
|
|
|
+ 'sy_repeatinfo': '',
|
|
|
+ 'drivingInsurances': fcx_list,
|
|
|
+ 'carInfo': carInfo
|
|
|
+ }
|
|
|
+
|
|
|
+ def quote(self):
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/controller/identity"
|
|
|
+ data = {
|
|
|
+ "channelCode": "OffWeb"
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=self.headers, data=data)
|
|
|
+ self.headers['tkCarRequestToken']=response.json().get('data').get('tkCarRequestToken')
|
|
|
+
|
|
|
+
|
|
|
+ headers=self.headers.copy()
|
|
|
+ headers["carInsurOrderId"]=self.orderId
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/save/quote"
|
|
|
+ data = {
|
|
|
+ "orderID": self.orderId,
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "fromID": self.fromid,
|
|
|
+ "quoteFlag": "5",
|
|
|
+ "tplatformId": self.tplatformId
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=headers, data=data)
|
|
|
+
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/float/notice/get"
|
|
|
+ data = {
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "orderID": self.orderId
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=headers, data=data)
|
|
|
+
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/init/quotation"
|
|
|
+ data = {
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "orderID": self.orderId,
|
|
|
+ "initFlag": "2"
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=headers, data=data)
|
|
|
+
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/init/proposal"
|
|
|
+ data = {
|
|
|
+ "orderId": self.orderId,
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "tplatformId": self.tplatformId,
|
|
|
+ "tplatLoginKey": self.tplatLoginKey
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=headers, data=data)
|
|
|
+
|
|
|
+ url = "https://car.tk.cn/carSelfService/rest/engage/engageQuery"
|
|
|
+ data = {
|
|
|
+ "channelCode": "OffWeb",
|
|
|
+ "orderId": self.orderId,
|
|
|
+ "fromId": self.fromid,
|
|
|
+ "privy": {
|
|
|
+ "insuredFlag": "",
|
|
|
+ "insuredName": "",
|
|
|
+ "identifyType": "",
|
|
|
+ "identifyNumber": ""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ data = json.dumps(data, separators=(',', ':'))
|
|
|
+ response = requests.post(url, headers=headers, data=data)
|
|
|
+
|
|
|
+ def main(self):
|
|
|
+ self.check_login()
|
|
|
+ if self.token=='用户名、密码错误':
|
|
|
+ return {
|
|
|
+ 'code':400,
|
|
|
+ 'message':'用户名、密码错误'
|
|
|
+ }
|
|
|
+ else:
|
|
|
+ self.get_guishu()
|
|
|
+ if self.gs_info=='':
|
|
|
+ return {
|
|
|
+ 'code':400,
|
|
|
+ 'message':'归属信息录入错误'
|
|
|
+ }
|
|
|
+ self.get_carinfo()
|
|
|
+
|
|
|
+ if self.carinfo:
|
|
|
+ self.get_next()
|
|
|
+ return self.bfjs()
|
|
|
+ # return self.repeat()
|
|
|
+ else:
|
|
|
+ return {
|
|
|
+ 'code':400,
|
|
|
+ 'message':'车辆信息查询失败'
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|