Пример #1
0
    def receive(self, user_id, order_id) -> (int, str):
        try:
            # if not self.user_id_exist(user_id):
            #     return error.error_non_exist_user_id(user_id)
            # if not self.order_id_exist(order_id):
            #     return error.error_and_message(522,error.error_code[522].format(order_id))
            if not self.buyer_order_exist(user_id, order_id):
                if not self.user_id_exist(user_id):
                    return error.error_non_exist_user_id(user_id)
                if not self.order_id_exist(order_id):
                    return error.error_and_message(
                        522, error.error_code[522].format(order_id))
                return error.error_and_message(
                    541, error.error_code[541].format(order_id, user_id))
            if not self.deliver_flag_set(order_id):
                return error.error_and_message(
                    542, error.error_code[542].format(order_id))

            cursor = self.conn.cursor()
            cursor.execute(
                "UPDATE \"new_order\" SET receive=1 WHERE order_id=(%s)",
                (order_id, ))
            self.conn.commit()
        except (Exception, psycopg2.DatabaseError) as e:
            return 528, "{}".format(str(e)),
        except BaseException as e:
            return 530, "{}".format(str(e)),
        return 200, "ok"
Пример #2
0
    def deliver(self, user_id: str, order_id: str) -> (int, str):
        try:
            if not self.order_id_exist(order_id):
                if not self.user_id_exist(user_id):
                    return error.error_non_exist_user_id(user_id)
                else:
                    return error.error_and_message(
                        522, error.error_code[522].format(order_id))
            cursor = self.conn.cursor()
            cursor.execute(
                "select store_id,pay from \"new_order\" where order_id=(%s)",
                (order_id, ))
            row = cursor.fetchone()
            store_id = row[0]
            pay = row[1]
            if not self.user_store_exist(user_id, store_id):
                return error.error_and_message(
                    521, error.error_code[521].format(user_id, store_id))
            if not pay == 1:
                return error.error_and_message(523, error.error_code[523])

            cursor.execute(
                "UPDATE \"new_order\" SET deliver=1 WHERE order_id=(%s)",
                (order_id, ))
            self.conn.commit()
        except (Exception, psycopg2.DatabaseError) as e:
            traceback.print_exc()
            return 528, "{}".format(str(e))
        except BaseException as e:
            return 530, "{}".format(str(e))
        return 200, "ok"
Пример #3
0
    def admmit_return(self, user_id, password, order_id):
        try:
            cursor = self.conn.cursor()
            cursor.execute(
                "SELECT password  from \"user\" where user_id= (%s)",
                (user_id, ))
            row = cursor.fetchone()
            if row is None:
                return error.error_non_exist_user_id(user_id)

            if row[0] != password:
                return error.error_authorization_fail()

            if not self.order_id_exist(order_id):
                return error.error_and_message(
                    522, error.error_code[522].format(order_id))

            if not self.return_flag_set(order_id):
                return error.error_and_message(
                    544, error.error_code[544].format(order_id))

            cursor.execute(
                "SELECT book_id, count, price FROM \"new_order_detail\" WHERE order_id = (%s)",
                (order_id, ))
            total_price = 0
            rows = cursor.fetchall()
            for row in rows:
                count = row[1]
                price = row[2]
                total_price = total_price + price * count

            cursor.execute(
                "SELECT user_id from \"new_order\" where order_id= (%s)",
                (order_id, ))
            buyer_id = cursor.fetchone()[0]

            cursor.execute(
                "UPDATE \"user\" SET balance = balance - (%s)"
                "WHERE user_id = (%s) AND balance >= (%s)",
                (total_price, user_id, total_price))

            cursor.execute(
                "UPDATE \"user\" SET balance = balance + (%s)"
                "WHERE user_id = (%s)", (
                    total_price,
                    buyer_id,
                ))

            tool.cancel_order_tool(self.conn, order_id)
            cursor.execute(
                "UPDATE \"new_order\" SET refund=1"
                "WHERE order_id = (%s)", (order_id, ))
            self.conn.commit()
        except (Exception, psycopg2.DatabaseError) as e:
            traceback.print_exc()
            return 528, "{}".format(str(e))
        except BaseException as e:
            return 530, "{}".format(str(e))
        return 200, "ok"
Пример #4
0
    def order_return(self, user_id, password, order_id):
        try:
            cursor = self.conn.cursor()
            cursor.execute(
                "SELECT password  from \"user\" where user_id= (%s)",
                (user_id, ))
            row = cursor.fetchone()
            if row is None:
                return error.error_non_exist_user_id(user_id)

            if row[0] != password:
                return error.error_authorization_fail()

            if not self.order_id_exist(order_id):
                return error.error_and_message(
                    522, error.error_code[522].format(order_id))

            if not self.buyer_order_exist(user_id, order_id):
                return error.error_and_message(
                    541, error.error_code[541].format(order_id, user_id))

            if not self.pay_flag_set(order_id):
                return error.error_and_message(523, error.error_code[523])

            cursor.execute(
                "UPDATE \"new_order\" SET return=1 WHERE order_id=(%s)",
                (order_id, ))
            self.conn.commit()

            current_time = time.time()
            scheduler = global_scheduler.instance_AutoAdmmitReturn.scheduler
            cur_time_str = time.strftime("%Y-%m-%d %H:%M:%S",
                                         time.localtime(current_time))
            cur_time_datetime = datetime.strptime(cur_time_str,
                                                  '%Y-%m-%d %H:%M:%S')
            auto_cancel_time = timedelta(seconds=conf.auto_return_time)
            scheduler.add_job(
                global_scheduler.instance_AutoAdmmitReturn.AutoAdmmitReturn,
                'date',
                run_date=cur_time_datetime + auto_cancel_time,
                args=[order_id, user_id])
        except (Exception, psycopg2.DatabaseError) as e:
            traceback.print_exc()
            return 528, "{}".format(str(e)),
        except BaseException as e:
            return 530, "{}".format(str(e)),
        return 200, "ok"
Пример #5
0
    def cancel_order(self, user_id, password, order_id) -> (int, str):
        try:
            cursor = self.conn.cursor()
            cursor.execute(
                "SELECT password  from \"user\" where user_id= (%s)",
                (user_id, ))
            row = cursor.fetchone()
            if row is None:
                return error.error_non_exist_user_id(user_id)

            if row[0] != password:
                return error.error_authorization_fail()

            if not self.order_id_exist(order_id):
                return error.error_and_message(
                    522, error.error_code[522].format(order_id))

            if not self.buyer_order_exist(user_id, order_id):
                return error.error_and_message(
                    541, error.error_code[541].format(order_id, user_id))

            if self.pay_flag_set(order_id):
                return error.error_and_message(
                    543, error.error_code[543].format(order_id))
            cursor.close()
            cancel_order_tool(self.conn, order_id)
            # cursor.execute("select store_id from \"new_order\" where order_id=(%s)",(order_id,))
            # store_id=cursor.fetchone()[0]
            # cursor.execute("select book_id,count from \"new_order_detail\" where order_id=(%s)",(order_id,))
            # rows=cursor.fetchall()
            # for row in rows:
            #     book_id=row[0]
            #     count=row[1]
            #     cursor.execute("UPDATE \"store\" SET stock_level = stock_level + (%s) "
            #                    "WHERE store_id = (%s) AND book_id = (%s)",
            #                    (count, store_id, book_id,))
            # cursor.execute("DELETE FROM \"new_order\" WHERE order_id =(%s)",(order_id, ))
            # cursor.execute("DELETE FROM \"new_order_detail\" where order_id = (%s)", (order_id, ))
            # self.conn.commit()
        except (Exception, psycopg2.DatabaseError) as e:
            traceback.print_exc()
            return 528, "{}".format(str(e)),
        except BaseException as e:
            return 530, "{}".format(str(e)),
        return 200, "ok"
Пример #6
0
 def add_book(self, user_id: str, store_id: str, book_id: str,
              book_json_str: str, stock_level: int):
     try:
         if not self.user_store_exist(user_id, store_id):
             if not self.user_id_exist(user_id):
                 return error.error_non_exist_user_id(user_id)
             if not self.store_id_exist(store_id):
                 return error.error_non_exist_store_id(store_id)
             return error.error_and_message(
                 520, error.error_code[520].format(user_id, store_id))
         if self.book_id_exist(store_id, book_id):
             return error.error_exist_book_id(book_id)
         cur = self.conn.cursor()
         cur.execute(
             "INSERT into \"store\"(store_id, book_id, book_info, stock_level)"
             "VALUES (%s, %s, %s, %s)",
             (store_id, book_id, book_json_str, stock_level))
         self.conn.commit()
     except (Exception, psycopg2.DatabaseError) as e:
         return 528, "{}".format(str(e))
     except BaseException as e:
         return 530, "{}".format(str(e))
     return 200, "ok"
Пример #7
0
    def add_stock_level(self, user_id: str, store_id: str, book_id: str,
                        add_stock_level: int):
        try:
            if not self.user_store_exist(user_id, store_id):
                if not self.user_id_exist(user_id):
                    return error.error_non_exist_user_id(user_id)
                if not self.store_id_exist(store_id):
                    return error.error_non_exist_store_id(store_id)
                return error.error_and_message(
                    520, error.error_code[520].format(user_id, store_id))

            if not self.book_id_exist(store_id, book_id):
                return error.error_non_exist_book_id(book_id)
            cursor = self.conn.cursor()
            cursor.execute(
                "UPDATE \"store\" SET stock_level = stock_level + (%s) "
                "WHERE store_id = (%s) AND book_id = (%s)",
                (add_stock_level, store_id, book_id))
            self.conn.commit()
        except (Exception, psycopg2.DatabaseError) as e:
            return 528, "{}".format(str(e))
        except BaseException as e:
            return 530, "{}".format(str(e))
        return 200, "ok"