12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355 |
- # *_* coding:utf-8 *_*
- import json
- import re
- import time
- import os
- import execjs
- import requests
- import ddddocr
- import base64
- from spiders.hengbang.guishu.hb_config import *
- from config import *
- class hb_calculation(object):
- def __init__( # token、车辆、人员信息
- self,username, modelCName, engineNo, vin, licenseNo,seatCount, purchasePrice,vehicleUse,limitLoad,completeKerbMass,cartype,energyType,enginedesc,
- 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,
- #脱保车标识
- isOutOfInsurance,accidentalDriving
- ):
- self.username=username
- self.seat=seatCount
- 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.energyType=energyType
- self.enginedesc=enginedesc
- self.token=None
- self.headers =None
- self.modelCName = modelCName.replace('牌', '')
- self.engineNo = engineNo
- self.vin = vin
- self.licenseNo = licenseNo
- self.purchasePrice = purchasePrice
- if limitLoad:
- self.limitLoad=limitLoad
- else:
- self.limitLoad=''
- self.completeKerbMass=completeKerbMass
- self.cartype=cartype
- self.vehicleUse=vehicleUse
- if self.vehicleUse=='08' or self.vehicleUse=='04':
- self.carKindCode='200'
- else:
- self.carKindCode = '100'
- #usenatureCode营业01 非营业02
- #carUseType车辆用途 01家庭自用 08营业货运
- if self.vehicleUse=='04':
- self.usenatureCode='01'
- self.carUseType='08'
- else:
- self.usenatureCode='02'
- self.carUseType='01'
- # 是否过户
- 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.outofwarrantytype = ''
- self.carInsureItem = None
- self.carInsureRiskRelatedParty = None
- self.carInsureRelatedParty = None
- self.carinfo = None
- self.plyappno = None
- self.actualValue = None
- self.json_data = None
- self.JQres = ''
- self.JQres_beta=''
- self.SYres = ''
- self.SYres_beta = ''
- self.bj_response = None
- self.risktype = None
- # 商业险选择信息
- 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.csx = 0.0
- self.szx = 0.0
- self.cssj = 0.0
- self.csck = 0.0
- self.hhx = 0.0
- self.jjr = 0.0
- self.fjcs = 0.0
- self.fjsz = 0.0
- self.fjsj = 0.0
- self.fjck = 0.0
- self.ybwsz_price = 0.0
- self.ybwsj_price = 0.0
- self.ybwck_price = 0.0
- self.cs_amount=0.0
- self.cftb_message=None
- self.js_code=open(js_path+'hengbang/get_utctime.js','r',encoding='utf8').read()
- self.message=None
- self.jq_repeatinfo=''
- self.sy_repeatinfo=''
- #脱保标识
- # if isOutOfInsurance==True:
- # self.isOutOfInsurance='N'
- # else:
- # self.isOutOfInsurance=''
- self.isOutOfInsurance=''
- #非车险信息
- self.accidentalDriving=accidentalDriving
- #生成订单号错误信息
- self.quoteimmediately_info=''
- self.companyCode=''
- def get_bjdata(self,x):
- data=execjs.compile(open(js_path+'hengbang/decrypt.js','r',encoding='utf8').read()).call('decrypt',x)
- return data
- def get_actualvalue(self,beginDate):
- params = {
- 'beginDate': beginDate,
- 'riskCode': '0808',
- 'carKindCode': self.carKindCode,
- 'enrollDate': self.get_utctime(self.registerDate),
- 'purchasePrice': str(self.carinfo.get('purchasePriceNotTax')),
- 'carUseType': self.carUseType,
- 'seatCount': str(self.seat),
- 'tonCount': self.limitLoad,
- 'useNatureCode': self.usenatureCode,
- 'energyType': '0' if self.energyType=="0" or self.energyType=='4' else '1',
- }
- 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
- def get_time(self,x):
- ret = execjs.compile(self.js_code).call('get_time', x)
- ret=ret.replace('T',' ').replace('+08:00','')
- return ret
- def check_login(self):
- # redis取出token
- self.token=str(redis_conn.hget('hengbang_'+self.username,'token'),'utf8')
- if self.token=='':
- self.token = '用户名、密码错误'
- else:
- self.headers = {
- "Content-Type": "application/json;charset=UTF-8",
- 'Authorization': self.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'
- }
- params = {
- "sysCategory": "2",
- "resourceType": "HBXSH"
- }
- response = requests.get('https://car.hbins.com.cn/intermarket/api/userinfo/'+self.username, params=params,
- headers=self.headers)
- self.companyCode="".join(re.findall(r'COMPANYCODE" : "(.*?)"',response.text))
- if '登录失效' in response.text:
- get_userinfo(self.username)
- self.check_login()
- def get_fcxinfo(self,res):
- if self.accidentalDriving:
- res['accidentEpolicyFlag']='Y'
- if '1座' in self.accidentalDriving:
- res['drivingtype'] = "C1-小型汽车/C2/C3"
- else:
- res['drivingtype'] =""
- if self.shangye_chooseFlag=='on':
- res['begintimeAccident']=self.get_utctime(self.chesun_startDate)
- else:
- res['begintimeAccident'] = self.get_utctime(self.jiaoqiang_startDate)
- if self.uname==self.tb_uname:
- res['relationCarOwner']='a'
- else:
- res['relationCarOwner']='d'
- self.accidentalDriving['policycode'] = None
- self.accidentalDriving['ifdefault']=True
- self.accidentalDriving['proposalnostatus'] = None
- self.accidentalDriving['proposalnoinfo'] = None
- self.accidentalDriving['familyinsureitem'] = None
- self.accidentalDriving['drivingtype'] = None
- self.accidentalDriving['relationcarowner'] = None
- if self.accidentalDriving.get('ifDefault')==False:
- del self.accidentalDriving['policyCode']
- del self.accidentalDriving['ifDefault']
- del self.accidentalDriving['proposalnoStatus']
- del self.accidentalDriving['proposalnoInfo']
- del self.accidentalDriving['familyInsureItem']
- del self.accidentalDriving['drivingType']
- del self.accidentalDriving['relationCarOwner']
- res['accidentInsuranceList']=[self.accidentalDriving]
- return res
- else:
- return res
- #获取车辆信息
- def get_carinfo(self):
- url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/renewinsurance"
- params = {
- "licenseNo": "",
- "frameno": self.vin,
- "companyCode": self.companyCode
- }
- response = requests.get(url, headers=self.headers, params=params)
- if response.json().get('modelCodes'):
- modelCodes=response.json().get('modelCodes')
- params = {
- 'modelCName': self.modelCName,
- 'licenseNo': '',
- 'vinCode': '',
- 'cimodelCode': modelCodes,
- 'pageNo': '0',
- 'pageSize': '50',
- 'pageNo + 1': '1',
- }
- response = requests.get('https://car.hbins.com.cn/backstage/api/car-model/vague', params=params,
- headers=self.headers)
- if response.json().get('content'):
- cars_list = response.json().get('content')
- for i in cars_list:
- if str(int(i.get('purchasePriceNotTax'))) == str(self.purchasePrice):
- self.carinfo = i
- break
- if self.carinfo:
- pass
- else:
- self.carinfo = cars_list[0]
- else:
- url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/renewinsurance"
- params = {
- "licenseNo": "",
- "frameno": self.vin
- }
- response = requests.get(url, headers=self.headers, params=params)
- modelCodes=response.json().get('modelCodes')
- if modelCodes:
- modelCodes=",".join(response.json().get('modelCodes'))
- else:
- modelCodes = ""
- url = "https://car.hbins.com.cn/backstage/api/car-model/vague"
- params = {
- "modelCName": "",
- "licenseNo": "",
- "vinCode": self.vin,
- "cimodelCode": "",
- "modelCodes": modelCodes,
- "pageNo": "0",
- "pageSize": "5"
- }
- response = requests.get(url, headers=self.headers, params=params)
- cars_list = response.json().get('content')
- for i in cars_list:
- if str(int(i.get('purchasePriceNotTax'))) == str(self.purchasePrice):
- self.carinfo = i
- if self.carinfo:
- pass
- else:
- self.carinfo = cars_list[0]
- elif response.json().get('carMappings'):
- carMappings=response.json().get('carMappings').get('cbitData')
- url = "https://car.hbins.com.cn/backstage/api/car-model/queryByCarMapping"
- data = {
- "cbitData": carMappings,
- "pageNo": 0,
- "pageSize": 5,
- "pageNo + 1": 1
- }
- data = json.dumps(data)
- response = requests.post(url, headers=self.headers, data=data)
- if response.json().get('content'):
- cars_list = response.json().get('content')
- for i in cars_list:
- if str(int(i.get('purchasePriceNotTax'))) == str(self.purchasePrice):
- self.carinfo = i
- break
- if self.carinfo:
- pass
- else:
- self.carinfo = cars_list[0]
- else:
- self.carinfo = ''
- return ''
- else:
- url = "https://car.hbins.com.cn/backstage/api/car-model/vague"
- params = {
- "modelCName": "",
- "licenseNo": "",
- "vinCode": self.vin,
- "cimodelCode": "",
- "modelCodes": "",
- "pageNo": "0",
- "pageSize": "20"
- }
- response = requests.get(url, headers=self.headers, params=params)
- cars_list = response.json().get('content')
- for i in cars_list:
- if str(int(i.get('purchasePriceNotTax'))) == str(self.purchasePrice):
- self.carinfo = i
- if self.carinfo:
- pass
- else:
- self.carinfo = cars_list[0]
- beginDate=''
- if self.chesun_startDate:
- beginDate=self.get_utctime(self.chesun_startDate)
- else:
- beginDate = self.get_utctime(self.jiaoqiang_startDate)
- # 判断过户
- self.get_actualvalue(beginDate)
- if self.isTransfer == False:
- self.isTransfer = '0'
- else:
- self.isTransfer = '1'
- # 车辆信息
- # completeKerbMass=self.completeKerbMass
- # if completeKerbMass:
- # completeKerbMass=str(int(self.carinfo.get('completeKerbMass')))
- self.carInsureItem = {
- 'energyType': '0' if self.energyType=="0" or self.energyType=='4' else '1',
- 'purerange': '',
- 'otherEnergyTypeDesc': '',
- 'licenseNo': self.licenseNo,
- 'enrollDate': self.registerDate + 'T00:00:00+08:00',
- 'frameNo': self.vin,
- 'engineNo': self.engineNo,
- 'printBrandName': self.carinfo.get('modelCName'),
- 'brandName': self.carinfo.get('modelCName'),
- 'modelCode': self.carinfo.get('modelCode'),
- 'familyName': self.carinfo.get('familyName'),
- 'carKindCode': self.carKindCode,
- 'usenatureCode': self.usenatureCode,
- 'attachNature': '01',
- 'carUseType': self.carUseType,
- 'negotiationValue': self.actualValue,
- 'licenseKindCode': '02',
- 'vehicleType': self.cartype,
- 'chgownerFlag': str(self.isTransfer),
- 'transferDate': self.issueDate + 'T00:00:00+08:00' if self.isTransfer != 0 else '',
- "issueDate": self.issueDate + 'T00:00:00+08:00',
- 'seatCount': str(self.seat),
- 'countrynature': '',
- 'purchasePrice': str(int(self.carinfo.get('purchasePrice'))),
- 'exhaustscale': str(int(float(self.enginedesc)*1000)) if self.enginedesc else '0',
- 'exhaustScale': str(int(float(self.enginedesc)*1000)) if self.enginedesc else '0',
- 'power': self.carinfo.get('power'),
- 'tonCount': self.limitLoad,
- 'completeKerbMass': self.completeKerbMass,
- 'totalTonCount': '',
- 'specialCarFlag': '1',
- 'dealerCode': '',
- 'dealerName': '',
- 'ciModelCode': str(self.carinfo.get('cimodelCode')).replace('None', '') if str(
- self.carinfo.get('cimodelCode')).replace('None', '') else str(self.carinfo.get('cimodelCodeC')).replace(
- 'None', ''),
- 'actualValue': self.actualValue,
- 'purchasePriceNotTax': str(int(self.carinfo.get('purchasePriceNotTax'))),
- 'groupCode': '',
- 'carOwner': self.uname,
- 'credentialType': '01',
- 'credentialNo': self.identifyNumber,
- 'countyCode': '',
- 'countyCodeArray': '',
- 'countyNameArray': '',
- "maxDesignSpeed": "",
- "id": "1",
- "plyappno": "1",
- "styleUniqueId": "5548",
- "noticeType": "SVW7167AMD",
- }
- self.carinfo['seatCount']=int(self.seat)
- def get_peopleinfo(self):
- # 被保人信息
- self.carInsureRiskRelatedParty = {
- 'id': '',
- 'plyappno': '',
- 'name': self.bb_uname,
- 'mobilePhone': self.bb_phone_number,
- 'insuredType': '1',
- 'identifyType': '01',
- 'identifyNumber': self.bb_identifyNumber,
- 'birthday': '',
- 'company': '60',
- 'email': '',
- 'countyCode': '',
- 'countyNameArray': '',
- 'countyCodeArray': '',
- 'postCode': '',
- 'position': '60',
- 'sex': '女' if int(self.bb_identifyNumber[16]) % 2 == 0 else '男',
- 'address': self.bb_address,
- 'validityBegintime': '2015-09-02T00:00:00+08:00',
- 'validityEndTime': '2045-09-02T00:00:00+08:00',
- 'customerType': '00',
- 'vipInd': '0',
- 'relationshipToInsrnt': '0' if self.tb_uname == self.bb_uname else '6',
- 'moneyLaunderingInd': '',
- 'invoiceRequest': '03',
- }
- # 投保人信息
- self.carInsureRelatedParty = {
- 'id': '',
- 'plyappno': '',
- 'name': self.tb_uname,
- 'identifyNumber': self.tb_identifyNumber,
- 'identifyType': '01',
- 'sex': '女' if int(self.tb_identifyNumber[16]) % 2 == 0 else '男',
- 'email': '',
- 'postCode': '',
- 'address': self.tb_address,
- 'company': '60',
- 'position': '60',
- 'vipInd': '0',
- 'insuredType': '1',
- 'birthday': '',
- 'countyCode': '',
- 'mobilePhone': self.tb_phone_number,
- 'validityBegintime': '2015-09-02T00:00:00+08:00',
- 'validityEndTime': '2045-09-02T00:00:00+08:00',
- 'moneyLaunderingInd': '',
- 'customerType': '00',
- 'countyCodeArray': '',
- 'countyNameArray': '',
- 'invoiceRequest': '03',
- }
- def quoteimmediately(self):
- # 获取归属手机号
- params = {
- 'sysCategory': '2',
- 'resourceType': 'HBXSH',
- }
- response = requests.get('https://car.hbins.com.cn/intermarket/api/userinfo/'+self.username, params=params,
- headers=self.headers)
- mobile = response.json().get('userInfo')[0].get('MOBILE')
- # 根据手机号获取归属
- params = {
- 'mobile': mobile,
- }
- response = requests.get('https://car.hbins.com.cn/backstage/api/findSaleInformationNew', params=params,
- headers=self.headers)
- hb_encd = response.json().get('hb_enc_d')
- res_data = self.get_bjdata(hb_encd)
- res_data_json = json.loads(res_data)
- salesMan = res_data_json.get('salesMan')
- companys = res_data_json.get('companys')
- json_data = {
- 'carInsureItem': self.carInsureItem,
- 'carInsureRiskRelatedParty': self.carInsureRiskRelatedParty,
- 'carInsureRelatedParty': self.carInsureRelatedParty,
- 'carInsureMain': {
- 'businessMode': '2',
- 'businessModeName': '代理',
- 'businessSource': salesMan.get('saleschannel'),
- 'businessAgency': '',
- 'intermediaryCode': salesMan.get('usercode'),
- 'intermediaryName': salesMan.get('username'),
- 'agreementCode': salesMan.get('agreementcode'),
- 'solutionCode': salesMan.get('solutioncode'),
- 'salesman': '',
- 'resourceType': 'HBXSH',
- 'businessChannel': salesMan.get('channelsort'),
- 'businessChannelName': salesMan.get('channelsortName'),
- 'channelDetailCode': salesMan.get('channeltip'),
- 'channelDetailName': salesMan.get('channeltipName'),
- 'salesmanCode': salesMan.get('salesmancode'),
- 'companyCode': salesMan.get('companycode'),
- 'companyCName': companys.get('companyCName'),
- 'accountPeriod': '账期',
- 'mobile': salesMan.get('mobile'),
- 'salesmanname': salesMan.get('salesmanname'),
- 'dealerCode': '',
- 'dealerName': '',
- 'usertype': salesMan.get('usertype'),
- 'invoiceRequest': '03',
- 'operatorCode': self.username,
- 'creator': self.username,
- },
- }
- response = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/quoteimmediately',headers=self.headers, json=json_data)
- if 'status' not in response.text:
- self.plyappno = response.text
- url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/carInsureItem"
- params = {
- "plyappno": self.plyappno
- }
- response = requests.get(url, headers=self.headers, params=params)
- else:
- self.quoteimmediately_info = response.json().get('title')
- def calculation(self):
- if self.jiaoqiang_chooseFlag == 'on' and self.shangye_chooseFlag == 'on':
- self.risktype = '2'
- elif self.jiaoqiang_chooseFlag == 'on' and self.shangye_chooseFlag == 'False':
- self.risktype = '1'
- else:
- self.risktype = '0'
- # 正常险种信息列表
- epersonliabilityList = []
- # 新能源险种信息表
- epersonliabilityList1 = []
- # 险种信息列表添加险种
- if self.chesun_chooseFlag == 'on':
- epersonliabilityList.append({
- "kindcode": "101",
- "model": "0",
- "liabamt": str(self.actualValue),
- "liabname": "机动车损失保险"
- })
- epersonliabilityList1.append({
- "kindcode": "0401",
- "model": "0",
- "liabamt": str(self.actualValue),
- "liabname": "新能源汽车损失保险"
- })
- if self.sanzhe_chooseFlag == 'on':
- epersonliabilityList.append({
- "kindcode": "102",
- "model": "0",
- "liabamt": str(self.sanzhe_amount),
- "liabname": "机动车第三者责任保险"
- })
- epersonliabilityList1.append({
- "kindcode": "0402",
- "model": "0",
- "liabamt": str(self.sanzhe_amount),
- "liabname": "新能源汽车第三者责任保险"
- })
- if self.sjzeren_chooseFlag == 'on':
- epersonliabilityList.append({
- "kindcode": "103",
- "model": "0",
- "quantity": "1",
- "liabamt": str(self.sjzeren_amount),
- "liabname": "车上人员责任险(司机)",
- "unitAmount": str(self.sjzeren_amount)
- })
- epersonliabilityList1.append({
- "kindcode": "0403",
- "model": "0",
- "quantity": "1",
- "liabamt": str(self.sjzeren_amount),
- "liabname": "新能源汽车车上人员责任保险(司机)",
- "unitAmount": str(self.sjzeren_amount)
- })
- if self.ckzeren_chooseFlag == 'on':
- epersonliabilityList.append({
- "kindcode": "104",
- "model": "0",
- "quantity": int(self.carinfo.get('seatCount') - 1),
- "liabamt": str(int(self.ckzeren_amount) * int(int(self.carinfo.get('seatCount') - 1))),
- "liabname": "车上人员责任险(乘客)",
- "unitAmount": str(self.ckzeren_amount)
- })
- epersonliabilityList1.append({
- "kindcode": "0404",
- "model": "0",
- "quantity": int(self.carinfo.get('seatCount') - 1),
- "liabamt": str(int(self.ckzeren_amount) * int(int(self.carinfo.get('seatCount') - 1))),
- "liabname": "新能源汽车车上人员责任保险(乘客)",
- "unitAmount": str(self.ckzeren_amount)
- })
- if self.huahen_chooseFlag == 'on':
- epersonliabilityList.append({
- "kindcode": "107",
- "model": "0",
- "liabamt": str(self.huahen_amount),
- "liabname": "附加车身划痕损失险"
- })
- epersonliabilityList1.append({
- "kindcode": "0414",
- "model": "0",
- "liabamt": str(self.huahen_amount),
- "liabname": "附加车身划痕损失险(新能源汽车)"
- })
- if self.fujiachesun_chooseFlag == 'on':
- epersonliabilityList.append({
- "kindcode": "114",
- "model": "0",
- "liabamt": None,
- "liabname": "附加绝对免赔率特约险(车损)",
- "deDuctibleFranchise": str(self.fujiachesun_amount),
- "amount": None
- })
- epersonliabilityList1.append({
- "kindcode": "0426",
- "model": "0",
- "liabamt": None,
- "liabname": "附加绝对免赔率特约险(车损)(新能源汽车)",
- "deDuctibleFranchise": str(self.fujiachesun_amount),
- "amount": None
- })
- if self.fujiasanzhe_chooseFlag == 'on':
- epersonliabilityList.append({
- "kindcode": "120",
- "model": "0",
- "liabamt": None,
- "liabname": "附加绝对免赔率特约险(三者)",
- "deDuctibleFranchise": str(self.fujiasanzhe_amount),
- "amount": None
- })
- epersonliabilityList1.append({
- "kindcode": "0427",
- "model": "0",
- "liabamt": None,
- "liabname": "附加绝对免赔率特约险(三者)(新能源汽车)",
- "deDuctibleFranchise": str(self.fujiasanzhe_amount),
- "amount": None
- })
- if self.fujiasiji_chooseFlag == 'on':
- epersonliabilityList.append({
- "kindcode": "121",
- "model": "0",
- "liabamt": None,
- "liabname": "附加绝对免赔率特约险(人员司机)",
- "deDuctibleFranchise": str(self.fujiasiji_amount),
- "amount": None
- })
- epersonliabilityList1.append({
- "kindcode": "0428",
- "model": "0",
- "liabamt": None,
- "liabname": "附加绝对免赔率特约条款(人员司机)(新能源汽车)",
- "deDuctibleFranchise": str(self.fujiasiji_amount),
- "amount": None
- })
- if self.fujiachengke_chooseFlag == 'on':
- epersonliabilityList.append({
- "kindcode": "122",
- "model": "0",
- "liabamt": None,
- "liabname": "附加绝对免赔率特约险(人员乘客)",
- "deDuctibleFranchise": str(self.fujiachengke_amount),
- "amount": None
- })
- epersonliabilityList1.append({
- "kindcode": "0429",
- "model": "0",
- "liabamt": None,
- "liabname": "附加绝对免赔率特约条款(人员乘客)(新能源汽车)",
- "deDuctibleFranchise": str(self.fujiachengke_amount),
- "amount": None
- })
- if self.fujia_jiejiari_chooseFlag == 'on':
- epersonliabilityList.append({
- "kindcode": "113",
- "model": "0",
- "liabamt": None,
- "liabname": "附加法定节假日限额翻倍险"
- })
- epersonliabilityList1.append({
- "kindcode": "0422",
- "model": "0",
- "liabamt": "1000000",
- "liabname": "附加法定节假日限额翻倍险(新能源汽车)"
- })
- if self.ybw_sanzhe_chooseFlag=='on':
- epersonliabilityList.append(
- {
- "kindcode": "115",
- "model": "0",
- "liabamt": self.ybw_sanzhe_amount,
- "liabname": "附加医保外医疗费用责任险(三者)"
- }
- )
- if self.ybw_siji_chooseFlag == 'on':
- epersonliabilityList.append(
- {
- "kindcode": "131",
- "model": "0",
- "liabamt": self.ybw_siji_amount,
- "liabname": "附加医保外医疗费用责任险(人员司机)"
- }
- )
- if self.ybw_ck_chooseFlag=='on':
- epersonliabilityList.append(
- {
- "kindcode": "132",
- "model": "0",
- "liabamt": self.ybw_ck_amount,
- "liabname": "附加医保外医疗费用责任险(人员乘客)"
- }
- )
- self.chesun_startDate = self.get_utctime(self.chesun_startDate)
- self.jiaoqiang_startDate =self.get_utctime(self.jiaoqiang_startDate)
- self.json_data = {
- 'clauseType': '2' if self.energyType=="0" or self.energyType=='4' else '3',
- 'ecarChargingPosts': [],
- 'carInsureDevices': [],
- 'effectfLag': None,
- 'accidentInsuranceList': [],
- 'epersonliabilityList': epersonliabilityList if self.energyType=="0" or self.energyType=='4' else epersonliabilityList1,
- # 商业险起始日期
- 'begintimeBi': self.chesun_startDate,
- 'begintimeCi': self.jiaoqiang_startDate,
- 'endtimeBi': '',
- 'endtimeCi': '',
- 'plyappno': self.plyappno,
- # 0:单商业
- # 1:单交强
- # 2:交商
- 'risktype': self.risktype,
- 'expdisc': '',
- 'ecarshiptaxPart': '投保人',
- 'taxonomyCode': '02',
- 'epolicyFlag': 'Y',
- 'accidentEpolicyFlag': '',
- 'outofwarrantytype':self.isOutOfInsurance,
- }
- response = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation',
- headers=self.headers,
- json=self.get_fcxinfo(self.json_data))
- url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/proposal"
- params = {
- "plyappno": self.plyappno
- }
- res = requests.get(url, headers=self.headers, params=params)
- return response
- def repeat(self, response):
- # 第一次报价后响应及后续操作处理
- if '该车是转保车,请输入对应的转保验证码' in response.text:
- querynoSy = response.json().get('responseBody').get('querynoSy')
- querynoJq = response.json().get('responseBody').get('querynoJq')
- checkcodeSyImg = response.json().get('map').get('responseBody').get('checkcodeSyImg')
- checktypeSy = response.json().get('responseBody').get('checktypeSy')
- checkcodeJqImg = response.json().get('map').get('responseBody').get('checkcodeJqImg')
- checktypeJq = response.json().get('responseBody').get('checktypeJq')
- ocr = ddddocr.DdddOcr()
- ocr_beta = ddddocr.DdddOcr(beta=True)
- if checkcodeSyImg != None:
- open(images_path+'hengbang/hbSY.jpg', 'wb').write(base64.b64decode(checkcodeSyImg))
- with open(images_path+'hengbang/hbSY.jpg', 'rb') as f:
- image = f.read()
- self.SYres = ocr.classification(image).replace('0','O')
- self.SYres_beta=ocr_beta.classification(image).replace('0','O')
- if checkcodeJqImg != None:
- open(images_path+'hengbang/hbJQ.jpg', 'wb').write(base64.b64decode(checkcodeJqImg))
- with open(images_path+'hengbang/hbJQ.jpg', 'rb') as f:
- image = f.read()
- self.JQres = ocr.classification(image).replace('0','O')
- self.JQres_beta = ocr_beta.classification(image).replace('0', 'O')
- transferVehicle = {
- 'checkcodeJq': self.JQres,
- 'checkcodeSy': self.SYres,
- 'checktypeJq': checktypeJq,
- 'checktypeSy': checktypeSy,
- 'querynoJq': querynoJq,
- 'querynoSy': querynoSy,
- }
- self.json_data['transferVehicle'] = transferVehicle
- self.json_data['outofwarrantytype'] = self.isOutOfInsurance
- ress = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation',
- headers=self.headers,
- json=self.get_fcxinfo(self.json_data))
- if '校验码有误' in ress.text:
- transferVehicle = {
- 'checkcodeJq': self.JQres_beta,
- 'checkcodeSy': self.SYres_beta,
- 'checktypeJq': checktypeJq,
- 'checktypeSy': checktypeSy,
- 'querynoJq': querynoJq,
- 'querynoSy': querynoSy,
- }
- self.json_data['transferVehicle'] = transferVehicle
- self.json_data['outofwarrantytype'] = self.isOutOfInsurance
- ress = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation',
- headers=self.headers,
- json=self.get_fcxinfo(self.json_data))
- self.repeat(ress)
- elif '重复投保' in response.text and '终保日期' in response.text:
- if '失败:平台校验:' in response.text or "失败:交强险平台提示" in response.text:
- if re.findall(r'终保日期 (.*?);', response.text):
- self.jiaoqiang_startDate = self.get_utctime(re.findall(r'终保日期 (.*?);', response.text)[0])
- else:
- self.jiaoqiang_startDate = self.get_utctime(re.findall(r'终保日期:(.*?),', response.text)[0])
- self.json_data['begintimeCi'] = self.jiaoqiang_startDate
- if self.json_data.get('transferVehicle'):
- del self.json_data['transferVehicle']
- ress = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation',headers=self.headers,json=self.get_fcxinfo(self.json_data))
- self.jq_repeatinfo=response.json().get('detail')
- self.repeat(ress)
- elif 'begintimeBi' in response.text:
- self.sy_repeatinfo = response.json().get('message')
- self.chesun_startDate=self.get_utctime(response.json().get('responseBody').get('begintimeBi'))
- self.json_data['begintimeBi'] = self.chesun_startDate
- self.json_data['outofwarrantytype']=self.isOutOfInsurance
- if self.json_data.get('transferVehicle'):
- del self.json_data['transferVehicle']
- if self.chesun_chooseFlag=='on':
- self.get_actualvalue(self.chesun_startDate)
- for i in self.json_data['epersonliabilityList']:
- if i.get('kindcode')=='101' or i.get('kindcode')=='0401':
- i['liabamt']=str(self.actualValue)
- ress = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation', headers=self.headers, json=self.get_fcxinfo(self.json_data))
- if '重复投保' not in ress.text:
- self.sy_repeatinfo=response.json().get('message')
- self.repeat(ress)
- else:
- url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/proposal"
- params = {
- "plyappno": self.plyappno
- }
- response = requests.get(url, headers=self.headers, params=params)
- self.repeat(response)
- elif 'begintimeCi' in response.text:
- self.jq_repeatinfo=response.json().get('message')
- self.jiaoqiang_startDate = self.get_utctime(response.json().get('responseBody').get('begintimeCi'))
- self.json_data['begintimeCi'] = self.jiaoqiang_startDate
- self.json_data['outofwarrantytype'] = self.isOutOfInsurance
- if self.json_data.get('transferVehicle'):
- del self.json_data['transferVehicle']
- ress = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation', headers=self.headers, json=self.get_fcxinfo(self.json_data))
- if '重复投保' not in ress.text:
- self.jq_repeatinfo = response.json().get('message')
- self.repeat(ress)
- else:
- # url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/proposal"
- # params = {
- # "plyappno": self.plyappno
- # }
- # response = requests.get(url, headers=self.headers, params=params)
- # print(response.text)
- self.repeat(ress)
- elif '商业险平台返回信息' in response.text:
- self.sy_repeatinfo=response.json().get('carInsureMain').get('remark')
- sy_startday=re.findall(r'终保日期:(.*?),',response.text,re.S)
- if sy_startday:
- self.chesun_startDate=sy_startday[0]+' 00:00:00'
- self.json_data['begintimeBi'] = self.get_utctime(self.chesun_startDate)
- self.json_data['outofwarrantytype'] = self.isOutOfInsurance
- if self.json_data.get('transferVehicle'):
- del self.json_data['transferVehicle']
- if self.chesun_chooseFlag == 'on':
- self.get_actualvalue(self.chesun_startDate)
- for i in self.json_data['epersonliabilityList']:
- if i.get('kindcode') == '101' or i.get('kindcode') == '0401':
- i['liabamt'] = str(self.actualValue)
- ress = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation', headers=self.headers, json=self.get_fcxinfo(self.json_data))
- return self.repeat(ress)
- else:
- self.message=response.text
- elif '脱保' in response.text:
- self.json_data['outofwarrantytype'] = 'N'
- ress = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation',
- headers=self.headers,
- json=self.get_fcxinfo(self.json_data))
- self.repeat(ress)
- # self.message=response.json().get('message')
- elif 'begintimeCi' in response.text:
- self.jiaoqiang_startDate = self.get_utctime(response.json().get('responseBody').get('begintimeCi'))
- self.json_data['begintimeCi'] = self.jiaoqiang_startDate
- self.json_data['outofwarrantytype'] = self.isOutOfInsurance
- if self.json_data.get('transferVehicle'):
- del self.json_data['transferVehicle']
- ress = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation', headers=self.headers, json=self.get_fcxinfo(self.json_data))
- if '重复投保' not in ress.text:
- self.jq_repeatinfo = response.json().get('message')
- self.repeat(ress)
- else:
- url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/proposal"
- params = {
- "plyappno": self.plyappno
- }
- response = requests.get(url, headers=self.headers, params=params)
- self.repeat(response)
- elif 'begintimeBi' in response.text:
- self.chesun_startDate = self.get_utctime(response.json().get('responseBody').get('begintimeBi'))
- self.json_data['begintimeBi'] = self.chesun_startDate
- self.json_data['outofwarrantytype'] = self.isOutOfInsurance
- if self.json_data.get('transferVehicle'):
- del self.json_data['transferVehicle']
- if self.chesun_chooseFlag == 'on':
- self.get_actualvalue(self.chesun_startDate)
- for i in self.json_data['epersonliabilityList']:
- if i.get('kindcode') == '101' or i.get('kindcode') == '0401':
- i['liabamt'] = str(self.actualValue)
- ress = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation', headers=self.headers, json=self.get_fcxinfo(self.json_data))
- if '重复投保' not in ress.text:
- self.sy_repeatinfo = response.json().get('message')
- self.repeat(ress)
- else:
- url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/proposal"
- params = {
- "plyappno": self.plyappno
- }
- response = requests.get(url, headers=self.headers, params=params)
- self.repeat(response)
- elif response.json().get('carInsureRiskRelatedParty') and response.json().get('carInsureItem'):
- self.bj_response = response
- elif response.json().get('status')==500:
- self.message=response.json().get('detail')
- elif response.json().get('status')==400:
- self.message = response.json().get('title')
- else:
- # print(123321)
- # if self.json_data.get('epersonliabilityList'):
- # res = requests.get(
- # 'https://car.hbins.com.cn/new-insure/api/carinsurenew/carInsureItem?plyappno=' + self.plyappno,
- # headers=self.headers)
- #
- # liabamt = res.json().get('actualValue')
- # print(liabamt)
- # for i in self.json_data.get('epersonliabilityList'):
- #
- # if i.get('kindcode') == '101':
- # i['liabamt'] = liabamt
- #
- # ress = requests.post('https://car.hbins.com.cn/new-insure/api/carinsurenew/calculation',
- # headers=self.headers,
- # json=self.get_fcxinfo(self.json_data))
- self.bj_response = response
- def proposal(self):
- url = 'https://car.hbins.com.cn/new-insure/api/carinsurenew/proposal?plyappno=' + self.plyappno
- res = requests.get(url, headers=self.headers)
- hb_encd = res.json().get('hb_enc_d')
- res_data = self.get_bjdata(hb_encd)
- res_data_json=json.loads(res_data)
- #是否转保
- renewind="".join(re.findall(r'"renewind" : "(.*?)"',res_data,re.S))
- #交强出险次数
- jq_eaccidentRecordList=str(len(res_data_json.get('eaccidentRecordList')))
- #商业出险次数
- sy_eaccidentRecordList='0'
- if res_data_json.get('busiCarInsureRisk'):
- sy_eaccidentRecordList=res_data_json.get('busiCarInsureRisk').get('claimTimes')
- # 车险总价
- premium = re.findall(r'"totalPremium" : "(.*?)"',res_data,re.S)
- if premium:
- premium = premium[0]
- else:
- premium=0
- # 商业险价格
- busiTotalPremium = re.findall(r'"busiTotalPremium" : (.*?),',res_data,re.S)
- if busiTotalPremium:
- busiTotalPremium = busiTotalPremium[0]
- else:
- busiTotalPremium = 0
- # 交强险价格
- sumPremium = res_data_json.get('forceLiability')
- if sumPremium:
- sumPremium = res_data_json.get('forceLiability').get('liabprm')
- else:
- sumPremium = 0
- # 车船税
- ccsumPremium = res_data_json.get('carInsureShiptax')
- if ccsumPremium != None:
- ccsumPremium = res_data_json.get('carInsureShiptax').get('sumtax')
- message = res_data_json.get('busiCarInsureRisk')
- if message != None:
- message = res_data_json.get('busiCarInsureRisk').get('info')
- if ccsumPremium == None:
- ccsumPremium = 0
- # 商业险各个险种价格
- if res_data_json.get('carInsureLiabilityList') != []:
- for i in res_data_json.get('carInsureLiabilityList'):
- if i.get('liabname') == "机动车损失保险":
- self.csx = i.get('liabprm')
- elif i.get('liabname') == '机动车第三者责任保险':
- self.szx = i.get('liabprm')
- elif i.get('liabname') == '车上人员责任险(司机)':
- self.cssj = i.get('liabprm')
- elif i.get('liabname') == '车上人员责任险(乘客)':
- self.csck = i.get('liabprm')
- elif i.get('liabname') == '附加车身划痕损失险':
- self.hhx = i.get('liabprm')
- elif i.get('liabname') == '附加法定节假日限额翻倍险':
- self.jjr = i.get('liabprm')
- elif i.get('liabname') == '附加绝对免赔率特约险(车损)':
- self.fjcs = i.get('liabprm')
- elif i.get('liabname') == '附加绝对免赔率特约险(三者)':
- self.fjsz = i.get('liabprm')
- elif i.get('liabname') == '附加绝对免赔率特约险(人员司机)':
- self.fjsj = i.get('liabprm')
- elif i.get('liabname') == '附加绝对免赔率特约险(人员乘客)':
- self.fjck = i.get('liabprm')
- elif i.get('liabname') == '附加医保外医疗费用责任险(三者)':
- self.ybwsz_price = i.get('liabprm')
- elif i.get('liabname') == '附加医保外医疗费用责任险(人员司机)':
- self.ybwsj_price = i.get('liabprm')
- elif i.get('liabname') == '附加医保外医疗费用责任险(人员乘客)':
- self.ybwck_price = i.get('liabprm')
- #非车险信息
- fcxinfo_list=[]
- fcxinfo_dict ={}
- fcx_list=res_data_json.get('accidentInsuranceList')
- if fcx_list:
- for i in fcx_list:
- fcxinfo_dict['price']=i.get('sumgrosspremium')
- fcxinfo_dict['name']=i.get('programname')
- fcxinfo_dict['policy'] = ''
- fcxinfo_list.append(fcxinfo_dict)
- # 车船税逾期价格
- zhinajin_list = res_data_json.get('ecarshiptaxSubList')
- tax_arrears = []
- if zhinajin_list:
- for i in range(len(zhinajin_list)):
- if i != 0:
- # 车船税滞纳起止日期
- tax_arrears.append({
- 'start_day': zhinajin_list[i].get('taxStartDate'),
- 'end_day': zhinajin_list[i].get('taxEndDate'),
- 'late_fee': zhinajin_list[i].get('overdue'),
- 'late_chechuan': zhinajin_list[i].get('totalAmount'),
- 'all_late_fee': ''
- })
- if tax_arrears==[]:
- tax_arrears=[
- {
- 'start_day': '',
- 'end_day': '',
- 'late_fee': '',
- 'late_chechuan':'',
- 'all_late_fee': ''
- }
- ]
- #连接redis存储数据
- redis_conn.hset('hengbang_'+self.plyappno,'token',self.token)
- redis_conn.hset('hengbang_'+self.plyappno, 'risktype', self.risktype)
- redis_conn.hset('hengbang_' + self.plyappno, 'license', self.licenseNo)
- redis_conn.hset('hengbang_' + self.plyappno, 'time',
- time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
- redis_conn.hset('hengbang_' + self.plyappno, 'username',self.username)
- redis_conn.hset('hengbang_' + self.plyappno, 'plyappno', self.plyappno)
- redis_conn.hset('hengbang_' + self.plyappno, 'tb_id', self.tb_identifyNumber)
- jq_startDate=''
- jq_endDate = ''
- sy_startDate = ''
- sy_endDate = ''
- if self.jiaoqiang_chooseFlag=='on' and self.shangye_chooseFlag=='on':
- jq_startDate=self.get_time(res_data_json.get('forceCarInsureRisk').get('begintime'))
- jq_endDate =self.get_time(res_data_json.get('forceCarInsureRisk').get('endtime'))
- sy_startDate = self.get_time(res_data_json.get('busiCarInsureRisk').get('begintime'))
- sy_endDate = self.get_time(res_data_json.get('busiCarInsureRisk').get('endtime'))
- elif self.jiaoqiang_chooseFlag=='on':
- jq_startDate = self.get_time(res_data_json.get('forceCarInsureRisk').get('begintime'))
- jq_endDate = self.get_time(res_data_json.get('forceCarInsureRisk').get('endtime'))
- elif self.shangye_chooseFlag=='on':
- sy_startDate = self.get_time(res_data_json.get('busiCarInsureRisk').get('begintime'))
- sy_endDate = self.get_time(res_data_json.get('busiCarInsureRisk').get('endtime'))
- carInfo={}
- #车型名称
- carInfo['modelcname']=self.carInsureItem.get('brandName')
- #车型编码
- carInfo['modelCode'] = self.carInsureItem.get('modelCode')
- #排量
- carInfo['exhaustscale'] = self.carInsureItem.get('exhaustScale') if self.carInsureItem.get('exhaustScale')!='None' else '0'
- #座位数
- carInfo['seatCount'] = self.carInsureItem.get('seatCount')
- #价格
- carInfo['purchasePrice'] = self.carInsureItem.get('purchasePriceNotTax')
- #功率
- carInfo['power'] = self.carInsureItem.get('power')
- #年款
- carInfo['caryear'] = self.carinfo.get('carYear')
- info_list=[]
- if self.bj_response.json().get('message'):
- info_list.append(self.bj_response.json().get('message'))
- ret = {
- # 车险总价(含驾意险) totalPremium参数含驾意险
- 'carInsureMain': premium,
- # 商业险总价
- 'busiTotalPremium': busiTotalPremium,
- # 交强险总价
- 'forceCarInsureRisk': sumPremium,
- # 车船税
- 'carInsureShiptax': ccsumPremium,
- # 滞纳金信息
- 'tax_arrears': tax_arrears,
- #附加险价格
- 'INSURANCE_TYPE': {
- 'A': self.csx,
- 'A_amount':str(self.actualValue),
- 'B': self.szx,
- 'D3': self.cssj,
- 'D4': self.csck,
- 'L': self.hhx,
- 'BD': self.jjr,
- 'MJ1': self.fjcs,
- 'MJ2': self.fjsz,
- 'MJ3': self.fjsj,
- 'MJ4': self.fjck,
- 'SY_FJ_YBW1':self.ybwsz_price,
- 'SY_FJ_YBW2': self.ybwck_price,
- 'SY_FJ_YBW3': self.ybwsj_price,
- },
- 'code': 200,
- 'message': message if message != None else '成功',
- 'plyappno': self.plyappno,
- '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': '',
- 'jq_discount': '',
- 'sy_discount': '',
- 'isQuoteGreenWay': '',
- 'jq_renewalflag': renewind,
- 'sy_renewalflag': renewind,
- 'jq_accident':jq_eaccidentRecordList,
- 'sy_accident':sy_eaccidentRecordList,
- "info_list":info_list,
- },
- 'jq_repeatinfo':self.jq_repeatinfo,
- 'sy_repeatinfo': self.sy_repeatinfo,
- 'drivingInsurances': fcxinfo_list,
- 'carInfo':carInfo
- }
- return ret
- def main(self):
- self.check_login()
- if self.token == '用户名、密码错误':
- return {
- 'code': 400,
- 'message': '用户名、密码错误'
- }
- self.get_carinfo()
- if self.carinfo:
- pass
- else:
- return {
- 'code':400,
- 'message':'车型查询失败'
- }
- self.get_peopleinfo()
- self.quoteimmediately()
- if self.quoteimmediately_info:
- return {
- 'code':400,
- 'message':self.quoteimmediately_info
- }
- res = self.calculation()
- self.repeat(res)
- 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 + ';;;;;;;;;;;;;;;;;;;;;;;;;;;'
- if self.bj_response:
- if self.bj_response.json().get('status') == '9':
- ret = self.proposal()
- message = self.bj_response.json().get('message')
- ret['message'] = message
- return ret
- elif self.bj_response.json().get('status')==None:
- ret = self.proposal()
- return ret
- elif self.bj_response.json().get('status') != '0' and self.bj_response.json().get('status') != '3':
- if self.bj_response.json().get('message'):
- message1 = self.bj_response.json().get('message')
- else:
- message1 = ''
- if self.bj_response.json().get('status') != 500:
- if self.cftb_message:
- message2 = self.cftb_message
- else:
- message2 = ''
- else:
- if self.bj_response.json().get('detail'):
- mes_detail = self.bj_response.json().get('detail')
- else:
- mes_detail = ''
- if self.cftb_message:
- ctfb = self.cftb_message
- else:
- ctfb = ''
- message2 = mes_detail + '-------------------------------------------' + ctfb
- return {
- 'message': info+message1 + '-------------------------------------------' + message2,
- 'code': 400
- }
- else:
- ret = self.proposal()
- return ret
- else:
- return {
- 'code':400,
- 'message':info+self.message
- }
|