def dispatch_order(form_data, cookies): ''' 派单 form_data(示例): {'serviceOrderNo':'FW170994405222', # 工单号 'serviceOrderId':'1042879214', 'serviceUserDemandIds':'1043261180', 'engineerCode':'E0199658'} # 师傅编号 需要拿待派单的单子测试 ''' api_url = 'https://cs.midea.com/c-css/wom/serviceorderunit/dispatchorder' headers = { 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.1.5)Gecko/20091102Firefox/3.5.5', 'Host': 'cs.midea.com', 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/json', 'Cookie': cookies } form_data = json.dumps(form_data) r = request(api_url, method='post', data=form_data, headers=headers) if r and r['content']['status'] == False: errorReport(api_url + ':' + 'get api data fail') return r
def appoint_order(form_data, cookies): ''' 预约工单 接口需抓包或者js查找 appint_data:预约数据 示例: form_data = {'serviceOrderNo':'FW170994405222', 工单号 'serviceOrderId':'1042879214', 'serviceMethodCode':'10', 'serviceMethodName':'上门', 'appointDesc':'已预约', 'appointTime':'2017-09-27 8点-10点' 预约时间 } ''' api_url = 'https://cs.midea.com/c-css/wom/serviceorderunit/unitappoint' headers = { 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.1.5)Gecko/20091102Firefox/3.5.5', 'Host': 'cs.midea.com', 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/json', 'Cookie': cookies } form_data = json.dumps(form_data) r = request(api_url, method='post', data=form_data, headers=headers) if r and r['content']['status'] == False: errorReport(api_url + ':' + 'get api data fail') return r
def receive_order(serviceOrderId, unitCode, cookies): ''' 接单接口 serviceOrderId:订单号 unitCode:服务网点编码 ''' api_url = 'https://cs.midea.com/c-css/wom/serviceorderunit/unitreceiveorder' headers = { 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.1.5)Gecko/20091102Firefox/3.5.5', 'Host': 'cs.midea.com', 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/json', 'Cookie': cookies } form_data = { 'serviceOrderId': serviceOrderId, 'unitCode': unitCode, 'operator': 'AW5101007150' } form_data = json.dumps(form_data) r = request(api_url, method='post', data=form_data, headers=headers) if r and r['content']['status'] == False: errorReport(api_url + ':' + 'get api data fail') return False return r
def auth(self,userid = '33580'): print(userid) userid = str(userid) session = DBSession() ret = session.query(auxAccount).filter(auxAccount.aux_id_number==userid).all() if ret: self.account = ret[0] else: return utils.errorReport('查无用户,aux_userid:' + userid + "ord_id:" + self.ord_id,system_name = self.system_name) print(self.account.aux_serial_number) element = self.login2("123456",self.account.aux_serial_number,'') print(element['username']) print(element['channelid']) if element == False: return element self.account.token = element['token'] self.token = element['token'] self.userid = userid self.adminid = element['adminid'] self.account.channelid = element['channelid'] self.account.aux_adminid = element['adminid'] session.add(self.account) session.commit() session.close() kickoff_element = self.kickoff(element) print(json.dumps(kickoff_element)) if kickoff_element == False: return kickoff_element return self.addchannel(kickoff_element)
def getmaintainitem(self,row_id,userid,token): url = self.aux_base_url + 'getmaintainitem/' requestData = {'row_id':row_id,'userid':userid,'token':token} obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) if obj['ret']!='0': return utils.errorReport(obj['msg']+' '+sys._getframe().f_code.co_name,system_name = self.system_name) return obj['element']
def addrepairmachine(self,data): url = self.aux_base_url + 'addrepairmachine/' requestData = { 'orderno':data['orderno'], 'repairinfo':data['repairinfo'], 'piclist':data['piclist'], 'lng':data['lng'], 'guarantee':data['guarantee'], 'userid':data['userid'], 'mac':data['mac'], 'machinetype':'空调', 'token':data['token'], 'buydate':data['buydate'], 'traftype':data['traftype'], 'servdesc':data['servdesc'], 'kilometer2':data['kilometer2'], 'appid':0, 'sn':data['sn'], 'brand':'奥克斯', 'lat':data['lat'], 'servmethod':data['servmethod'] } obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) if obj['ret'] !='0': return utils.errorReport(obj['msg']+' ord_id:'+ self.ord_id + " " +sys._getframe().f_code.co_name,system_name = self.system_name) return obj
def accept(self,data): orderinfo = db.find(Order,Order.ord_id == data['platform_orderid']) if len(orderinfo) < 1: return utils.errorReport('师傅接单错误,无订单:'+data['platform_orderid'],system_name = self.system_name) self.auth(userid = data['aux_userid']) print(orderinfo) return self.acceptorder(orderinfo['ord_cust_lat'],data['aux_orderno'],orderinfo['ord_cust_lng'],data['aux_userid'],self.token)
def get_orders(cookies, order_status='16'): ''' 查询所需要的工单 order_status:工单状态对应的id;待派单:10,待接收:11,,已派工:16,全部:'',已预约:15 ''' api_url = 'https://cs.midea.com/c-css/wom/serviceorderunit/listdata' headers = { 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.1.5)Gecko/20091102Firefox/3.5.5', 'Host': 'cs.midea.com', 'X-Requested-With': 'XMLHttpRequest', 'Referer': 'https://cs.midea.com/c-css/wom/serviceorderunit/list', 'Content-Type': 'application/json', 'Cookie': cookies } CONTACT_TIME_end, CONTACT_TIME = current_time() # 查询截止时间,为当前时间 form_data = { 'page': '1', 'rows': '50', 'pageIndex': '0', 'pageSize': '50', 'formConditions': { 'CONTACT_TIME': CONTACT_TIME, # 此处设置为当前日期前5天 'CONTACT_TIME_end': CONTACT_TIME_end, # 时间设置为当前日期 'SERVICE_ORDER_NO': '', 'SERVICE_CUSTOMER_TEL1': '', 'SERVICE_ORDER_STATUS': order_status, # 待派单:10,待接收:11,全部:'' 'IMPLEMENT_SUB_TYPE_CODE': '', 'ORDER_ORIGIN': '', 'SERVICE_PROCESS_TIME_OUT': '', 'URGE_COMPLAINT_ADDITIONAL': '', 'CONTAIN_EJFWS': 'N', 'PROD_CODE': '', 'refreshRowFlag': 'false', 'data': '' } } form_data = json.dumps(form_data) r = request(api_url, method='post', data=form_data, headers=headers) # print(r) if r and r['content']['status'] == False: errorReport(api_url + ':' + 'get api data fail') return r
def machinelist(self,orderno,userid,token): url = self.aux_base_url + 'machinelist/' requestData = {'orderno':orderno,'userid':userid,'token':token} # response = requests.post(url,data = requestData,headers = headers) obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) if obj['ret']!='0': return utils.errorReport(obj['msg']+" "+sys._getframe().f_code.co_name,system_name = self.system_name) return obj
def ismonline(self,userid,token): url = self.aux_base_url + 'ismonline/' requestData = {'userid':userid,'token':token} obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) if obj['ret']!='0': return utils.errorReport(obj['msg']+ " "+sys._getframe().f_code.co_name,system_name = self.system_name) else: return obj
def getfaultphenomenon(self,userid,token): userid,token = map(str,[userid,token]) url = self.aux_base_url + 'getfaultphenomenon/' requestData = {'userid':userid,'token':token} obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) if obj['ret']!='0': return utils.errorReport(obj['msg']+' '+sys._getframe().f_code.co_name,system_name = self.system_name) return obj['element']
def acceptorder(self,acceptlat,orderno,acceptlng,userid,token,operator = None): acceptlat,orderno,acceptlng,userid,token = map(str,[acceptlat,orderno,acceptlng,userid,token]) url = self.aux_base_url + 'acceptorder/' requestData = {'acceptlat':acceptlat,'orderno':orderno,'acceptlng':acceptlng,"userid":userid,'token':token} obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) if obj['ret']!='0': return utils.errorReport(obj['msg']+' ord_id:'+self.ord_id+" "+sys._getframe().f_code.co_name,system_name = self.system_name) self._after_accept(operator = operator,userid = userid) return obj
def addchannel(self,element): """ add channel 类似Jpush的jid""" url = self.aux_base_url + 'addchannel/' requestData = {'userid':element['userid'],'channelid':element['channelid'],'token':element['token']} r = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) print('addchannel',r.get('ret')) if r.get('ret') != u'0': return utils.errorReport(r['msg']+' '+sys._getframe().f_code.co_name,system_name = self.system_name) return r
def get_engineers_data(cookies): ''' 获取师傅数据接口 :param cookies: 登陆cookies :return: 美的师傅列表数据 ''' api_url = 'https://cs.midea.com/c-css/css/autoGrid/autoGrid.do?query' headers = { 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.1.5)Gecko/20091102Firefox/3.5.5', 'Host': 'cs.midea.com', 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/json', 'Cookie': cookies } # condition = {"condColumns":["flow_status"],"condOperates":["="],"condValues":["14"],"condTypes":["1"]} # form_data={"page":1, # "rows":50, # "model_type":"sup", # "gridId":"201", # "conditions":condition # } condition = { "condColumns": ["doc_status"], "condOperates": ["="], "condValues": ["11"], "condTypes": ["1"] } form_data = { "page": 1, "rows": 50, "model_type": "sup", "gridId": "50", "conditions": condition } form_data = json.dumps(form_data) r = request(api_url, method='post', data=form_data, headers=headers) print 'success request midea shifu_api' if r and r['content']['status'] == False: errorReport(api_url + ':' + 'get api data fail') return r
def use_queue(self, in_queue): while True: p = self.in_queue.get() p = json.loads(p) try: incode, outcode, css_account, css_passwd, cid, cssname, brand, ord_id, ord_finish_time, session_pick = p r_session = pickle.loads(session_pick) self.query_and_save(r_session, incode, outcode, css_account, css_passwd, cid, cssname, ord_id, ord_finish_time) except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1] msg = str( exc_type ) + ":" + e.message + " in file '" + fname + "' line " + str( exc_tb.tb_lineno) utils.errorReport(msg, self.system_name) self.in_queue.task_done()
def login2(self,password='******',mobile = 'aux0283070198', imei=''): #md5 password password = utils.getMd5(password) url = self.aux_base_url + 'login2/' requestData = {'password':password,'mobile':mobile,'imei':''} res_obj = utils.request(url = url,method = 'get',data = requestData) if res_obj['ret']!='13': return utils.errorReport(res_obj['msg']+ ",account:" + mobile + ' ord_id:'+self.ord_id+" "+sys._getframe().f_code.co_name,system_name = self.system_name) return res_obj['element']
def get_authcode(self, uuid): im = self.get_image(uuid) rc = RClient('WongTH', '147258369', '89380', 'c2faa5c3ff5d4b459c703f53ef3ad17b') cap_r = rc.rk_create(im=im, im_type=3040) # 3040表示数字字母混合 try: print('captcha:%s' % cap_r['Result']) except KeyError as e: if str(e) == "'Result'": errorReport('ruokuai count run out') import sys sys.exit('ruokuai count run out') image_name = './captcha_images/' + cap_r[ 'Result'] + '_' + current_timestamp() + '.jpg' if not os.path.exists('./captcha_images/'): os.mkdir('./captcha_images/') with open(image_name, 'wb') as f: f.write(im) return cap_r['Result']
def commit_order(form_data, cookies): ''' 录入订单接口 form_data:录入的数据字典,示例 {"serviceOrderVO":{"serviceOrderNo":"FW170994405222","serviceMainTypeCode":"10","serviceMainTypeName":"安装","serviceSubTypeCode":"1010","serviceSubTypeName":"安装","requireServiceDate":" ","implementMainTypeCode":"10","implementMainTypeName":"安装","implementSubTypeCode":"1010","implementSubTypeName":"安装","branchCode":"F5101000002","branchName":"成都销司","unitCode":"W5101007150","unitName":"武侯区宏旺电器维修服务部"},"serviceCustomerInfoVO":{"serviceCustomerId":"","serviceCustomerName":"王太红","serviceCustomerTel1":"18057486780","serviceCustomerTel2":"","serviceCustomerTel3":"","serviceCustomerType":"10","serviceCustomerLevel":"10","serviceAreaNumFlag":"2","serviceAreaNum":"028","serviceCustomerStarLevel":"","serviceAreaCode":"1510112001","serviceAreaName":"四川省成都市龙泉驿区龙泉街道","serviceCustomerAddress":"四川省成都市龙泉驿区龙泉街道芦溪河社区溪源居小区"},"serviceUserDemandInfoVOList":[{"prodCode":"1000","orgCode":"CS006","prodName":"家用空调","brandCode":"MIDEA","brandName":"美的","contactOrderServTypeCode":"BZ","contactOrderServTypeName":"报装","contactOrderSerItem1Code":"BZ01","contactOrderSerItem1Name":"报装","contactOrderSerItem2Code":"BZ01001","contactOrderSerItem2Name":"需要安装","productModel":"","prodNum":"1","productUse":"10","purchasingChannels":"10","purchaseDate":"","salesUnitCode":"","salesUnitName":"","serviceDesc":"需要安装","pubRemark":""}]}" } ''' api_url = 'https://cs.midea.com/c-css/wom/womserviceorderdocument/formcommit' headers = { 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.1.5)Gecko/20091102Firefox/3.5.5', 'Host': 'cs.midea.com', 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/json', 'Cookie': cookies } form_data = json.dumps(form_data) r = request(api_url, method='post', data=form_data, headers=headers) if r and r['content']['status'] == False: errorReport(api_url + ':' + 'get api data fail') return r
def addinstallmachine(self,requestData,retry = 1,operator = None): print(operator) print(operator['ord_id']) url = self.aux_base_url + 'addinstallmachine/' obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) if obj['ret'] !='0' and retry == 1: retry = retry + 1 self.acceptorder(requestData['lat'],requestData['orderno'],requestData['lng'],requestData['userid'],requestData['token'],operator = operator) obj = self.addinstallmachine(requestData,retry,operator = operator) if obj['ret'] !='0' and retry > 1: return utils.errorReport(obj['msg']+' ord_id:'+ self.ord_id + " " + sys._getframe().f_code.co_name,system_name = self.system_name) self._after_addinstall(requestData = requestData,operator = operator) return obj
def kickoff(self,element): url = self.aux_base_url + 'kickoff/' requestData = { 'password':element['password'], 'mobile': element['mobile'], 'imei':'', 'channelid':element['channelid'] } r = utils.request(url = url,method = 'get',data = requestData,timeout = 30) if str(r.get('ret')) is not '0': return utils.errorReport(r['msg']+' '+sys._getframe().f_code.co_name,system_name = self.system_name) return r['element']
def mastergetfinish(self,userid,token,pagesize = 20,page = 1): """get finish order""" url = self.aux_base_url + 'mastergetfinish/' requestData = {'pagesize':pagesize,'page':page,'type':'3','userid':userid,'token':token} # response = requests.post(url,data = requestData,headers = headers) obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) if obj['ret']!='0': return utils.errorReport(obj['msg']+' '+sys._getframe().f_code.co_name,system_name = self.system_name) # do something if len(obj['element'] == pagesize): page += 1 mastergetfinish(self,userid,token,pagesize = 20,page=page) else: return obj['element']
def searchServDtlMateria(self,causeId,maintainItemId,flag,phenomenonId,materialTypeId,userid,token): url = self.aux_base_url + 'searchServDtlMateria/' requestData = { 'causeId':causeId, 'maintainItemId':maintainItemId, 'flag':flag, 'phenomenonId':phenomenonId, 'materialTypeId':materialTypeId, 'userid':userid, 'token':token } obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) if obj['ret']!='0': return utils.errorReport(obj['msg']+' ' +sys._getframe().f_code.co_name,system_name = self.system_name) return obj['element']
def login(self): """登陆逻辑主函数""" useful_cookies = self.is_login() if not useful_cookies: print('the cookies is not alive') for i in range(4): try: para_dict = self.compute_form_param() r = random.random() # pwd = self.compute_pwd() login_url = self.login_url_fromat.format( login_bs_url=self.login_bs_url, uuid=para_dict['uuid'], return_url=self.return_url, r=r, version=self.version) form_data = { 'uuid': para_dict['uuid'], 'eid': self.eid, 'fp': self.fp, '_t': '_t', 'loginType': 'f', 'loginname': self.loginname, 'nloginpwd': self.pwd, 'chkRememberMe': '', 'authcode': para_dict['authcode'], 'pubKey': para_dict['pubkey'], 'sa_token': para_dict['sa_token'] } cookies_object = self.do_login(login_url, form_data) # 判断是否登陆成功,如果不是,跳出本次循环 if not cookies_object: errorReport( 'jd->%s->%s' % ('jd_' + self.loginname + '_login_again_need', time.asctime(time.localtime(time.time())))) continue else: errorReport( 'jd->%s->%s' % ('jd_' + self.loginname + '_login_success', time.asctime(time.localtime(time.time())))) cookies_str = self.save_cookies(cookies_object) # print('cook_object:%s'%cookies_object) return cookies_str except Exception as e: errorReport("jd login again->%s" % str(e) + str(e.args)) print("jd login again:%s" % (str(e))) else: print('the cookies is still useful') return useful_cookies
def mastergetservice2(self,userid,token,pagesize = 20,page = 1): userid,token,pagesize,page = map(str,[userid,token,pagesize,page]) url = self.aux_base_url + 'mastergetservice2/' requestData = {'pagesize':pagesize,'page':page,'userid':userid,'token':token} # response = requests.post(url,data = requestData,headers = headers) print('data:',json.dumps(requestData)) obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) print('headers:',json.dumps(self.headers)) print('mastergetservice2:',json.dumps(obj)) if obj['ret']!='0': return utils.errorReport(obj['msg']+" "+sys._getframe().f_code.co_name,system_name = self.system_name) # do something if len(obj['element'][0]['detail']) == pagesize or len(obj['element'][1]['detail']) == pagesize or len(obj['element'][2]['detail']) == pagesize: page = int(page)+1 mastergetservice2(self, userid, token, pagesize = 20, page = page) else: self._after_mastergetservice2(obj['element']) return obj['element']
def orderpic(self,file_stream,orderno,userid): userid = str(userid) orderno = str(orderno) print('orderno,userid',orderno,userid) auth = oss2.Auth(self.aux_accessKeyId, self.aux_accessKeySecret) bucket = oss2.Bucket(auth, self.aux_endpoint, self.aux_bucket) print('file_stream type:',type(file_stream)) print('aux_object_base:',self.aux_object_base) obj = self.aux_object_base + orderno + '-' + userid + '0_' + utils.getRandomStr(6) + '.jpg' print('obj:',obj) print('aux_ossbase_url:',self.aux_ossbase_url) picurl = self.aux_ossbase_url + obj print('picurl',picurl) response = bucket.put_object(obj, file_stream) print('upload response:',response) if format(response.status)!='200': return utils.errorReport('upload picture field,ord_id:' + self.ord_id + ",userid:" + userid,system_name = self.system_name) print('picurl',picurl) return picurl
def mastergetwait(self, userid, token, pagesize = 20, page = 1): userid,token,pagesize,page = map(str,[userid,token,pagesize,page]) print(userid,token,pagesize,page) print('/Api/Index/mastergetwait/') url = self.aux_base_url + 'mastergetwait/' print(url) requestData = {'pagesize':pagesize,'page':page,'userid':userid,'token':token} obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) print('mastergetwait:',json.dumps(obj)) print(json.dumps(obj)) if obj['ret']!='0': return utils.errorReport(obj['msg']+" "+sys._getframe().f_code.co_name,system_name = self.system_name) # do something if len(obj['element']) == pagesize: page = int(page)+1 self.mastergetwait(self, userid, token, pagesize = 20, page = page) else: if len(obj['element']) > 0: self._after_mastergetwait(obj['element']) return obj['element']
def finishorder2(self,data = [],operator = None): url = self.aux_base_url + 'finishorder2/' requestData = { 'note':'', 'orderno':data['orderno'], 'lng':data['lng'], 'userid':data['userid'], 'machinemadedate':'', 'yanbao':{}, 'isbatch':0, 'token':data['token'], 'tuoji':{}, 'price':0, 'outprice':'', 'accessory':{}, 'lat':data['lat'] } obj = utils.request(url = url,method = 'post',data = requestData ,headers = self.headers) if obj['ret']!='0': return utils.errorReport(obj['msg']+' ord_id:' + self.ord_id + " " +sys._getframe().f_code.co_name,system_name = self.system_name) self._after_finish(data,operator) return obj
def login(usename, pwd): '''登陆主函数,如果失败重试3次''' cookie_f_name = './cookies_file/' + 'midea_' + usename + '_cookies.txt' # cookies文件的文件名 useful_cookies = is_login(cookie_f_name) # print('useful_cookies:%s'%useful_cookies) if not useful_cookies: # 从数据库获取账号信息 pwd = midea_encrypt(pwd) # 对密码进行加密,必须放在重试循环之外 # 登录获取cookies,有错重试,最大3次 for i in range(3): try: try: captcha = rk_get_captcha() # errorReport('midea->get captcha:%s %s'%(captcha,str(i))+time.asctime(time.localtime(time.time()))) # with open('num_captcha.txt','a+') as x: # x.write('1'+'\n') except KeyError as e: if str(e) == "'Result'": print(str(e) + ':' + 'the ruokuai api run out') errorReport( 'the ruokuai api run out') # 表示若快的接口次数用完了,跳出循环 import sys sys.exit('the ruokuai api run out') # 结束进程 # break form_data = { 'userAccount': usename, 'userPassword': pwd, 'captcha': captcha } cookies_object, login_res = do_login(form_data) # 判断是否登陆成功,如果不是,跳出本次循环 if not cookies_object: errorReport('midea->%s->%s' % (usename + '_login_again_need', time.asctime(time.localtime(time.time())))) continue else: errorReport('midea->%s->%s' % (usename + '_login_success', time.asctime(time.localtime(time.time())))) print('cook_object:%s' % cookies_object) cook_list = [] # 保存登陆成功获得的cookies for cookie in cookies_object: cook_list.append(cookie.value) cookies_str = 'JSESSIONID={}; loginToken={}'.format( cook_list[0], cook_list[1]) print('cookies_str:%s' % cookies_str) with open(cookie_f_name, 'w') as f: f.write(cookies_str + '\n') f.write(str(time.time())) # errorReport('testtest->success write cookies:%s->%s'%(str(i),time.asctime( time.localtime(time.time()) ))) print('writewrite') return cookies_str except Exception as e: errorReport("testtest->%s" % str(e) + str(e.args)) print("meidi login again:%s" % (str(e))) else: print('the cookies is still useful:%s' % useful_cookies) # errorReport('testtest->the cookies is still useful->%s'%time.asctime( time.localtime(time.time()) )) return useful_cookies
def addinstall_orderpic_finish(self,data): ''' add and finsh:data['addinstall'] , data['finish'] ''' print("addinstall_orderpic_finish") self.ord_id = data['operator']['ord_id'] if data.get('add'): self.auxapi = AuxApi(data['add']['info']['account'],data['add']['info']['password']) add_dis = self.auxapi.add_dispatch(data['add'],operator = data['operator']) print('add_dis',add_dis) if add_dis is not True: print('建单派单失败') return False print("al add") ord_id = data['add']['info']['platform_orderid'] auxorder = db.find(AuxOrder,AuxOrder.platform_orderid == str(ord_id)) data['finish']['orderno'] = auxorder['aux_orderno'] data['finish']['userid'] = auxorder['aux_userid'] if data['finish']['userid'] is None: data['finish']['userid'] = '77181' print('before auth') self.auth(data['finish']['userid']) print('after auth') self.mastergetservice2(self.userid,token = self.token,pagesize = 20,page = 1) print('after mastergetservice2') self.mastergetwait(self.userid, self.token, pagesize = 20, page = 1) print('after mastergetwait') session = DBSession() _aux= session.query(AuxOrder).filter(AuxOrder.platform_orderid==data['operator']['ord_id']).all() aux = _aux[0] aux.is_pending = 1 session.add(aux) json_detail = aux.json_detail aux_userid = aux.aux_userid session.commit() session.close() aux_account = db.find(auxAccount,auxAccount.aux_id_number==aux_userid) print('json_detail:',json_detail) if json.loads(json_detail)['lng'] is None: return utils.errorReport('The value of latitude and longitude is not allowed to be None.ord_id:'+data['operator']['ord_id']) distance = utils.distanceRange(lon1 = json.loads(json_detail)['lng'], lat1 = json.loads(json_detail)['lat'], lon2 = json.loads(json_detail)['lng'], lat2 = json.loads(json_detail)['lat'], maxdistance = 490) if distance is False: return utils.errorReport('经纬度距离超过450米,提交阻止.ord_id:' + data['operator']['ord_id']) data['finish']['lng'] = distance['lon2'] data['finish']['lat'] = distance['lat2'] print(distance) regeo = utils.baidumapdecode({'lat': distance['lat2'], 'lng': distance['lon2']}) print(regeo) if regeo.get("result").get("addressComponent") is None: print('regeo field') return False for m in data['addinstall']: print('for addinstall 1') if vars().has_key('auxorder') is True: m['orderno'] = auxorder['aux_orderno'] m['userid'] = auxorder['aux_userid'] print('for addinstall 2') for pic in m['piclist']: print('for piclist 1') pic['finishlng'] = distance['lon2'] pic['finishlat'] = distance['lat2'] text1 = aux_account['aux_name'] + " " + datetime.now().strftime("%Y-%m-%d %H:%M:%S") street_number = str(regeo["result"]["addressComponent"]["street_number"]) if street_number != "" and u"号" not in street_number: street_number + "号" text2 = "在"+regeo["result"]["addressComponent"]["street"] + street_number + "附近" print(text2) IM = image_mark.ImageMark() # file_stream = IM.aux_mark(ttf_file = "./library/fonts/msyh.ttf",link = pic['picurl'],text1 = text1,text2 = text2) try: #有照片资源路劲无法访问的情况 file_stream = IM.aux_mark(ttf_file = "./library/fonts/msyh.ttf",link = pic['picurl'],text1 = text1,text2 = text2) except Exception as e: return utils.errorReport(str(e) + '.ord_id:' + self.ord_id + '.url:' + pic['picurl'],system_name = self.system_name) picret = self.orderpic(file_stream,m['orderno'],m['userid']) print('for piclist 2') if picret is False: return utils.errorReport('aliyun oss upload picture field.ord_id:' + self.ord_id,system_name = self.system_name) pic['picurl'] = picret m['piclist'] = json.dumps(m['piclist'],encoding="UTF-8", ensure_ascii=False) m['token'] = self.token m['userid'] = self.userid m['lng'] = data['finish']['lng'] m['lat'] = data['finish']['lat'] print('add 1') addret = self.addinstallmachine(requestData = m,operator = data['operator']) print('add 2') if addret is False: return addret data['finish']['token'] = self.token data['finish']['userid'] = self.userid print('finish 1') finshret = self.finishorder2(data['finish'],operator = data['operator']) print('finish 2') if finshret is False: return finshret print('done')