from sqlalchemy.exc import SQLAlchemyError from be.model import error from be.model import postgreSQLORM from be.model.postgreSQLORM import New_Order from be.model import db_conn from sqlalchemy import and_ import json class Seller(db_conn.DBConn): def __init__(self): db_conn.DBConn.__init__(self) 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_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) if self.book_id_exist(store_id, book_id): return error.error_exist_book_id(book_id) # self.session.query(postgreSQLORM.Store_Book). new_book = postgreSQLORM.Store_Book(store_id=store_id,book_id=book_id,book_info=book_json_str,stock_level=stock_level) self.session.add(new_book) book = json.loads(book_json_str) thelist = [] # 由于没有列表类型,故使用将列表转为text的办法 for tag in book.get('tags'): if tag.strip() != "": # book.tags.append(tag) thelist.append(tag) book['tags'] = str(thelist) # 解析成list请使用eval( if book.get('picture') is not None: new_Book = postgreSQLORM.Book(book_id=book['id'], title=book['title'], author=book['author'],publisher=book['publisher'], original_title=book['original_title'],translator=book['translator'], pub_year=book['pub_year'],pages=book['pages'], original_price=book['price'],currency_unit=book['currency_unit'], binding=book['binding'],isbn=book['isbn'], author_intro=book['author_intro'],book_intro=book['book_intro'], content=book['content'],tags=book['tags'], picture=book['picture']) else: new_Book = postgreSQLORM.Book(book_id=book['id'], title=book['title'], author=book['author'],publisher=book['publisher'], original_title=book['original_title'],translator=book['translator'], pub_year=book['pub_year'],pages=book['pages'], original_price=book['price'],currency_unit=book['currency_unit'], binding=book['binding'],isbn=book['isbn'], author_intro=book['author_intro'],book_intro=book['book_intro'], content=book['content'],tags=book['tags'], picture=book['picture']) self.session.add(new_Book) # self.conn.execute("INSERT into store(store_id, book_id, book_info, stock_level)" # "VALUES (?, ?, ?, ?)", (store_id, book_id, book_json_str, stock_level)) # self.conn.commit() self.session.query(postgreSQLORM.Store).filter_by(store_id=store_id).update({'stock_level':postgreSQLORM.Store.stock_level+1}) self.session.commit() except SQLAlchemyError as e: return 528, "{}".format(str(e)) except BaseException as e: return 530, "{}".format(str(e)) return 200, "ok" def add_stock_level(self, user_id: str, store_id: str, book_id: str, add_stock_level: int): try: 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) if not self.book_id_exist(store_id, book_id): return error.error_non_exist_book_id(book_id) self.session.query(postgreSQLORM.Store).filter_by(store_id=store_id).update({'stock_level':add_stock_level}) self.session.query(postgreSQLORM.Store_Book).filter_by(store_id=store_id,book_id=book_id).update({'stock_level':add_stock_level}) # self.conn.execute("UPDATE store SET stock_level = stock_level + ? " # "WHERE store_id = ? AND book_id = ?", (add_stock_level, store_id, book_id)) # self.conn.commit() self.session.commit() except SQLAlchemyError as e: return 528, "{}".format(str(e)) except BaseException as e: return 530, "{}".format(str(e)) return 200, "ok" def create_store(self, user_id: str, store_id: str) -> (int, str): try: if not self.user_id_exist(user_id): return error.error_non_exist_user_id(user_id) if self.store_id_exist(store_id): return error.error_exist_store_id(store_id) # new_store = postgreSQLORM.Store(store_id=store_id,stock_level=0) new_user_store = postgreSQLORM.User_Store(user_id=user_id,store_id=store_id) # self.session.add(new_store) # self.session.commit() self.session.add(new_user_store) # self.conn.execute("INSERT into user_store(store_id, user_id)" # "VALUES (?, ?)", (store_id, user_id)) # self.conn.commit() self.session.commit() # print('touch1') except SQLAlchemyError as e: # print('touch2') return 528, "{}".format(str(e)) except BaseException as e: # print('touch3') return 530, "{}".format(str(e)) return 200, "ok" def send_out(self, order_id:str, user_id:str): session = self.session try: if not self.user_id_exist(user_id): return error.error_non_exist_user_id(user_id) row = session.query(New_Order).filter(New_Order.order_id==order_id).first() if row is None: return error.error_invalid_order_id(order_id) if row.status != 1: return error.error_invalid_order_id(order_id) row = session.query(New_Order).filter(New_Order.order_id==order_id).update({'status':2}) if row == 0: return error.error_invalid_order_id(order_id) session.commit() except SQLAlchemyError as e: return 528, "{}".format(str(e)) except BaseException as e: # print('touch3') return 530, "{}".format(str(e)) return 200, "ok"