Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
	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)
Пример #5
0
	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']
Пример #6
0
	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
Пример #7
0
	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)
Пример #8
0
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
Пример #9
0
	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
Пример #10
0
	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
Пример #11
0
	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']
Пример #12
0
	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
Пример #13
0
	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
Пример #14
0
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
Пример #15
0
 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()
Пример #16
0
	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']
Пример #17
0
    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']
Пример #18
0
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
Пример #19
0
	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
Пример #20
0
	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']
Пример #21
0
	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']
Пример #22
0
	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']
Пример #23
0
    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
Пример #24
0
	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']
Пример #25
0
	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
Пример #26
0
	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']
Пример #27
0
	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
Пример #28
0
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
Пример #29
0
	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')