def sale_stock(uid, stock_code, stock_name, stock_count): """ 賣出 :param uid: :param stock_code: :param stock_name: :param stock_count: :return: if success return True,"" ortherwise return False, "errmsg" or raise the exceptions """ if not all([uid, stock_code, stock_name, stock_count]): logging.error("參數錯誤:", uid, stock_code, stock_name, stock_count) raise Exception("參數錯誤!") if not all( [isinstance(uid, str), isinstance(stock_code, str), isinstance(stock_name, str), isinstance(stock_count, int)]): logging.error("參數錯誤:", uid, stock_code, stock_name, stock_count) raise Exception("參數錯誤!") # 查詢是否已經購買此股 stock = None try: stock = dbsession.query(UserStock).filter_by(u_id=uid).filter_by(s_stock_code=stock_code).one() except NoResultFound as e: dbsession.rollback() logging.error(e) if stock == None: logging.info("用戶沒有持有持有該股票:", uid, stock_code) return False, "沒有持有持有該股票" ### 剛好清倉 if stock.s_stock_count == stock_count: try: dbsession.delete(stock) dbsession.commit() except Exception as e: logging.error(e) dbsession.rollback() raise e ## 數據有錯誤 elif stock.s_stock_count < stock_count: logging.info("用戶未持有這麽多股份:", uid, stock_code, stock_count) return False, "未持有這麽多股份" #正常買出 else: stock.s_stock_count -= stock_count try: dbsession.merge(stock) dbsession.commit() except Exception as e: logging.error(e) dbsession.rollback() raise e return True, ""
def delete_user(arg): user = None try: if isinstance(arg, int): user = dbsession.query(User).filter(User.id == arg).one() if user is not None: dbsession.delete(user) dbsession.commit() else: logging.error("delete_user:user obj is not a User instance.") except Exception as e: logging.error(e) dbsession.rollback() raise e
def upcountArticle(aid, uid): """ 給文章點贊, 如果電讚了得 就取消點讚 :param id: :param uid: :return: """ recode = None try: recode = dbsession.query(ArticleUpcounts).filter( and_(ArticleUpcounts.a_id == aid, ArticleUpcounts.u_id == uid)).one() except NoResultFound as e: pass except Exception as e: dbsession.rollback() raise e if not recode: recode = ArticleUpcounts() recode.u_id = uid recode.a_id = aid try: dbsession.add(recode) dbsession.commit() except Exception as e: dbsession.rollback() raise e try: dbsession.query(Article).filter(Article.id == aid).update( {Article.a_upcounts: Article.a_upcounts + 1}) dbsession.commit() except Exception as e: dbsession.rollback() raise e else: try: dbsession.delete(recode) dbsession.commit() dbsession.query(Article).filter(Article.id == aid).update( {Article.a_upcounts: Article.a_upcounts - 1}) dbsession.commit() except Exception as e: dbsession.rollback()
def upcountReply(uid, rid): """ 給評論點贊, 如果電讚了得 就取消點讚 :param id: :param uid: :return: """ recode = None try: recode = dbsession.query(ReplyUpcounts).filter( and_(ReplyUpcounts.r_id == rid, ReplyUpcounts.u_id == uid)).one() except NoResultFound as e: pass except Exception as e: dbsession.rollback() raise e if not recode: recode = ReplyUpcounts() recode.u_id = uid recode.r_id = rid try: dbsession.add(recode) dbsession.commit() except Exception as e: dbsession.rollback() raise e try: dbsession.query(Reply).filter(Reply.id == rid).update( {Reply.r_upcounts: Reply.r_upcounts + 1}) dbsession.commit() except Exception as e: dbsession.rollback() raise e else: try: dbsession.delete(recode) dbsession.commit() dbsession.query(Reply).filter(Reply.id == rid).update( {Reply.r_upcounts: Reply.r_upcounts - 1}) dbsession.commit() except Exception as e: dbsession.rollback()
def del_stock(uid, stock_code): if uid is None or uid == '': logging.error("uid 不合法:", uid) raise Exception("Parameter error.") if stock_code is None or stock_code == '': logging.error("stock_code 不合法:", stock_code) raise Exception("Parameter error.") try: stock = dbsession.query(UserFavoriteStocks).filter_by( u_id=uid).filter_by(s_stock_code=stock_code).one() # 找不到數據會抛出NoResultFound異常,補貨,不做處理,正常執行下面流程 except NoResultFound as e: stock = None if (stock is not None): dbsession.delete(stock) dbsession.commit() else: logging.error("stock:%s不存在" % (stock_code))