def buy(self): # pid = request.params["pid"] # sid = request.params["sid"] seats = request.params['seats'] orderno = request.params["orderno"] order = Order.getby_orderno(orderno) if not order: return Code.order_does_not_exist, {'orderno': orderno} if order.status != OrderStatus.locked.value: return Code.order_status_error, {} sid_list = [] for sid, handle_fee, price in seats: order.amount += handle_fee + price sid_list.append(sid) bought_seats_num = PlaySeat.buy(orderno, order.pid, sid_list) if not bought_seats_num: return Code.seat_buy_failed, {} order.paid_time = datetime.now() order.status = OrderStatus.paid.value order.gen_ticket_flag() order.save() return { 'bought_seats_num': bought_seats_num, 'ticket_flag': order.ticket_flag, }
def buy(self): seats = request.params["seats"] orderno = request.params['orderno'] order = Order.getby_orderno(orderno) # 判断目标order是否存在 if not order: return Code.order_does_not_exist, request.params # 判断订单状态是否位锁定 if order.status != OrderStatus.locked.value: # 不是锁定状态报错 return Code.order_status_error, { "orderno": orderno, "status": order.status, } # 修改订单 order.sell_order_no = request.params["orderno"] order.amount = order.amount or 0 # 座位id sid_list = [] # 计算价钱 for sid, handle_fee, price in seats: sid_list.append(sid) order.amount += handle_fee + price # 座位购买数量 bought_seats_num = PlaySeat.buy(orderno, order.pid, sid_list) # 判断操作是否成功 if not bought_seats_num: return Code.seat_buy_failed, {} order.ticket_num = len(seats) order.status = OrderStatus.paid.value order.paid_time = datetime.now() order.gen_ticket_flag() order.save() return { "bought_seats_num": bought_seats_num, "ticket_flag": order.ticket_flag, }