2018-06-11 15:03:23 +00:00
|
|
|
|
# coding=utf-8
|
|
|
|
|
import copy
|
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
from config.TicketEnmu import ticket
|
|
|
|
|
from config.emailConf import sendEmail
|
2019-09-08 10:46:01 +00:00
|
|
|
|
from config.serverchanConf import sendServerChan
|
2018-06-11 15:03:23 +00:00
|
|
|
|
from myException.ticketIsExitsException import ticketIsExitsException
|
|
|
|
|
from myException.ticketNumOutException import ticketNumOutException
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class queryOrderWaitTime:
|
|
|
|
|
"""
|
|
|
|
|
排队
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
def __init__(self, session):
|
|
|
|
|
self.session = session
|
|
|
|
|
|
|
|
|
|
def sendQueryOrderWaitTime(self):
|
|
|
|
|
"""
|
|
|
|
|
排队获取订单等待信息,每隔3秒请求一次,最高请求次数为20次!
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
num = 1
|
|
|
|
|
while True:
|
|
|
|
|
num += 1
|
|
|
|
|
if num > ticket.OUT_NUM:
|
|
|
|
|
print(ticket.WAIT_OUT_NUM)
|
|
|
|
|
order_id = self.queryMyOrderNoComplete() # 排队失败,自动取消排队订单
|
|
|
|
|
if order_id:
|
|
|
|
|
self.cancelNoCompleteMyOrder(order_id)
|
|
|
|
|
break
|
|
|
|
|
try:
|
|
|
|
|
queryOrderWaitTimeUrl = copy.deepcopy(self.session.urls["queryOrderWaitTimeUrl"])
|
|
|
|
|
queryOrderWaitTimeUrl["req_url"] = queryOrderWaitTimeUrl["req_url"].format(int(round(time.time() * 1000)))
|
|
|
|
|
queryOrderWaitTimeResult = self.session.httpClint.send(queryOrderWaitTimeUrl)
|
|
|
|
|
except ValueError:
|
|
|
|
|
queryOrderWaitTimeResult = {}
|
|
|
|
|
if queryOrderWaitTimeResult:
|
|
|
|
|
if queryOrderWaitTimeResult.get("status", False):
|
|
|
|
|
data = queryOrderWaitTimeResult.get("data", False)
|
|
|
|
|
if data and data.get("orderId", ""):
|
|
|
|
|
sendEmail(ticket.WAIT_ORDER_SUCCESS.format(
|
|
|
|
|
data.get("orderId", "")))
|
2019-09-08 10:46:01 +00:00
|
|
|
|
sendServerChan(ticket.WAIT_ORDER_SUCCESS.format(
|
|
|
|
|
data.get("orderId", "")))
|
2018-06-11 15:03:23 +00:00
|
|
|
|
raise ticketIsExitsException(ticket.WAIT_ORDER_SUCCESS.format(
|
|
|
|
|
data.get("orderId")))
|
|
|
|
|
elif data.get("msg", False):
|
2019-01-03 12:38:08 +00:00
|
|
|
|
print(data.get("msg", ""))
|
2018-06-11 15:03:23 +00:00
|
|
|
|
break
|
|
|
|
|
elif data.get("waitTime", False):
|
|
|
|
|
print(ticket.WAIT_ORDER_CONTINUE.format(0 - data.get("waitTime", False)))
|
|
|
|
|
else:
|
|
|
|
|
pass
|
|
|
|
|
elif queryOrderWaitTimeResult.get("messages", False):
|
|
|
|
|
print(ticket.WAIT_ORDER_FAIL.format(queryOrderWaitTimeResult.get("messages", "")))
|
|
|
|
|
else:
|
|
|
|
|
print(ticket.WAIT_ORDER_NUM.format(num + 1))
|
|
|
|
|
else:
|
|
|
|
|
pass
|
|
|
|
|
time.sleep(2)
|
|
|
|
|
else:
|
|
|
|
|
print(ticketNumOutException(ticket.WAIT_ORDER_SUB_FAIL))
|
|
|
|
|
|
|
|
|
|
def queryMyOrderNoComplete(self):
|
|
|
|
|
"""
|
|
|
|
|
获取订单列表信息
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
self.initNoComplete()
|
|
|
|
|
queryMyOrderNoCompleteUrl = self.session.urls["queryMyOrderNoCompleteUrl"]
|
|
|
|
|
data = {"_json_att": ""}
|
|
|
|
|
try:
|
|
|
|
|
queryMyOrderNoCompleteResult = self.session.httpClint.send(queryMyOrderNoCompleteUrl, data)
|
|
|
|
|
except ValueError:
|
|
|
|
|
queryMyOrderNoCompleteResult = {}
|
|
|
|
|
if queryMyOrderNoCompleteResult:
|
|
|
|
|
if queryMyOrderNoCompleteResult.get("data", False) and queryMyOrderNoCompleteResult["data"].get("orderDBList", False):
|
2018-12-25 02:34:56 +00:00
|
|
|
|
return queryMyOrderNoCompleteResult["data"]
|
2018-06-11 15:03:23 +00:00
|
|
|
|
elif queryMyOrderNoCompleteResult.get("data", False) and queryMyOrderNoCompleteResult["data"].get("orderCacheDTO", False):
|
|
|
|
|
if queryMyOrderNoCompleteResult["data"]["orderCacheDTO"].get("message", False):
|
|
|
|
|
print(queryMyOrderNoCompleteResult["data"]["orderCacheDTO"]["message"]["message"])
|
|
|
|
|
raise ticketNumOutException(
|
|
|
|
|
queryMyOrderNoCompleteResult["data"]["orderCacheDTO"]["message"]["message"])
|
|
|
|
|
else:
|
|
|
|
|
if queryMyOrderNoCompleteResult.get("message", False):
|
2019-01-03 12:38:08 +00:00
|
|
|
|
print(queryMyOrderNoCompleteResult.get("message", False))
|
2018-06-11 15:03:23 +00:00
|
|
|
|
return False
|
|
|
|
|
else:
|
|
|
|
|
return False
|
|
|
|
|
else:
|
2018-08-29 11:19:13 +00:00
|
|
|
|
return False
|
2018-06-11 15:03:23 +00:00
|
|
|
|
|
|
|
|
|
def initNoComplete(self):
|
|
|
|
|
"""
|
|
|
|
|
获取订单前需要进入订单列表页,获取订单列表页session
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
initNoCompleteUrl = self.session.urls["initNoCompleteUrl"]
|
|
|
|
|
data = {"_json_att": ""}
|
|
|
|
|
self.session.httpClint.send(initNoCompleteUrl, data)
|
|
|
|
|
|
|
|
|
|
def cancelNoCompleteMyOrder(self, sequence_no):
|
|
|
|
|
"""
|
|
|
|
|
取消订单
|
|
|
|
|
:param sequence_no: 订单编号
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
cancelNoCompleteMyOrderUrl = self.session.urls["cancelNoCompleteMyOrder"]
|
|
|
|
|
cancelNoCompleteMyOrderData = {
|
|
|
|
|
"sequence_no": sequence_no,
|
|
|
|
|
"cancel_flag": "cancel_order",
|
|
|
|
|
"_json_att": ""
|
|
|
|
|
}
|
|
|
|
|
cancelNoCompleteMyOrderResult = self.session.httpClint.send(cancelNoCompleteMyOrderUrl,
|
|
|
|
|
cancelNoCompleteMyOrderData)
|
|
|
|
|
if cancelNoCompleteMyOrderResult.get("data", False) and cancelNoCompleteMyOrderResult["data"].get("existError", "N"):
|
|
|
|
|
print(ticket.CANCEL_ORDER_SUCCESS.format(sequence_no))
|
|
|
|
|
time.sleep(2)
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
print(ticket.CANCEL_ORDER_FAIL.format(sequence_no))
|
2018-08-29 11:19:13 +00:00
|
|
|
|
return False
|