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, ""
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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()
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
    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))