コード例 #1
0
 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,
     }
コード例 #2
0
    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,
        }