コード例 #1
0
 def add(cls, user_id, balance=0.00):
     db = DbManager().db
     sql = 'insert into {table} (user_id, balance) values (%s, %s)'.format(
         table=cls.table)
     account_id = db.execute(sql, user_id, balance)
     return account_id and cls(
         id=account_id, user_id=user_id, balance=balance)
コード例 #2
0
ファイル: withdraw.py プロジェクト: zhenchaozhu/starmachine
 def add(cls, user_id, withdraw_account, amount, status=WITHDRAW_WAITING):
     db = DbManager().db
     create_time = datetime.now()
     db.execute('begin;')
     try:
         sql = 'insert into {table} (user_id, withdraw_account, amount, status, create_time) values ' \
         '(%s, %s, %s, %s, %s)'.format(table=cls.table)
         db.execute(sql, user_id, withdraw_account, amount, status,
                    create_time)
         sql = 'update {table} set balance=balance-%s where user_id=%s'.format(
             table=Account.table)
         db.execute(sql, amount, user_id)
         db.execute('commit;')
     except Exception as e:
         db.execute('rollback;')
         raise
コード例 #3
0
ファイル: vote.py プロジェクト: zhenchaozhu/starmachine
 def add(cls, vote_id, content):
     db = DbManager().db
     create_time = datetime.now()
     sql = 'insert into {table} (vote_id, content, create_time) values (%s, %s, %s)'.format(
         table=cls.table)
     option_id = db.execute(sql, vote_id, content, create_time)
     return option_id and cls.get(option_id)
コード例 #4
0
 def add(cls, user_id, device_token, os):
     db = DbManager().db
     create_time = datetime.now()
     sql = 'insert into {table} (user_id, device_token, os, create_time) values (%s, %s, %s, %s)'.format(
         table=cls.table)
     device_id = db.execute(sql, user_id, device_token, os, create_time)
     return device_id and cls.get(device_id)
コード例 #5
0
 def add(cls, trade_id, pay_method, notify):
     db = DbManager().db
     create_time = datetime.now()
     sql = 'insert into {table} (trade_id, pay_method, notify, create_time) values (%s, %s, %s, %s)'.format(
         table=cls.table)
     order_pay_notify_id = db.execute(sql, trade_id, pay_method, notify,
                                      create_time)
     return order_pay_notify_id
コード例 #6
0
 def add(cls, receiver_id, group_id, message_id, liked_amount, reward_type):
     db = DbManager().db
     sql = 'insert into {table} (receiver_id, group_id, message_id, liked_amount, reward_type) values (%s, %s, %s, %s, %s)'.format(
         table=cls.table)
     envelope_id = db.execute(sql, receiver_id, group_id, message_id,
                              liked_amount, reward_type)
     return cls(envelope_id, receiver_id, group_id, message_id,
                liked_amount, reward_type)
コード例 #7
0
 def update(self, **kwargs):
     db = DbManager().db
     params = ['%s="%s"' % (key, kwargs.get(key)) for key in kwargs]
     update_sql = ', '.join(params)
     sql = 'update {table} set %s where id=%s'.format(
         table=self.table) % (update_sql, self.id)
     r = db.execute(sql)
     return r
コード例 #8
0
ファイル: room_push.py プロジェクト: zhenchaozhu/starmachine
 def add(cls, user_id, room_id, content_id, status=ROOM_PUSH_PENDING):
     push_time = datetime.now()
     db = DbManager().db
     sql = 'insert into {table} (user_id, room_id, content_id, push_time, status) values (%s, %s, %s, %s, %s)'.format(
         table=cls.table)
     room_push_id = db.execute(sql, user_id, room_id, content_id, push_time,
                               status)
     return cls(room_push_id, user_id, room_id, content_id, push_time,
                status)
コード例 #9
0
ファイル: user.py プロジェクト: zhenchaozhu/starmachine
 def add(cls, user_id, district, name, telephone, address):
     db = DbManager().db
     create_time = datetime.now()
     sql = 'insert into {table} (user_id, district, name, telephone, address, create_time) values ' \
         '(%s, %s, %s, %s, %s, %s)'.format(table=cls.table)
     user_address_id = db.execute(sql, user_id, district, name, telephone,
                                  address, create_time)
     return user_address_id and cls(user_address_id, user_id, district,
                                    name, telephone, address, create_time,
                                    None)
コード例 #10
0
    def add(cls, user_id, group_id, message_id):
        db = DbManager().db
        cache = CacheManager().cache
        create_time = datetime.now()
        score = get_int_date(create_time)
        redis_key = GROUP_MESSAGE_LIKED_KEY % (group_id, message_id)
        group_message_list_key = GROUP_MESSAGE_LIKED_LIST % group_id
        if cache.zscore(redis_key, user_id):
            sql = 'delete from {table} where user_id=%s and message_id=%s and group_id=%s'.format(
                table=cls.table)
            db.execute(sql, user_id, message_id, group_id)
            cache.zrem(redis_key, user_id)
            cache.zincrby(group_message_list_key, message_id, -1)
            return cache.zcard(redis_key)

        sql = 'insert into {table} (user_id, group_id, message_id, create_time) values' \
            ' (%s, %s, %s, %s)'.format(table=cls.table)
        db.execute(sql, user_id, group_id, message_id, create_time)
        cache.zadd(redis_key, score, user_id)
        cache.zincrby(group_message_list_key, message_id, 1)
        return cache.zcard(redis_key)
コード例 #11
0
    def update(self, **kwargs):
        db = DbManager().db
        if 'update_time' not in kwargs:
            kwargs.update({'update_time': datetime.now()})

        params = ['%s="%s"' % (key, kwargs.get(key)) for key in kwargs]
        update_sql = ', '.join(params)
        sql = 'update {table} set %s where id=%s'.format(
            table=self.table) % (update_sql, self.id)
        r = db.execute(sql)
        self.flush_redis_room_info()
        return r
コード例 #12
0
    def update(self, **kwargs):
        db = DbManager().db
        if 'status' in kwargs and kwargs['status'] not in VALID_STATUS:
            raise InvalidStatusException
        invalid_fields = ('id')
        for field in invalid_fields:
            if field in kwargs:
                del kwargs[field]

        sql = 'update {table} set '.format(table=self.table) +\
             ','.join('%s=%s' % (k, kwargs.get(k)) for k in kwargs) + ' where id=%s'
        r = db.execute(sql, self.id)
        return r
コード例 #13
0
 def add(cls,
         order_id,
         order_type,
         amount,
         pay_method,
         status=STATUS_PENDING):
     db = DbManager().db
     create_time = datetime.now()
     sql = 'insert into {table} (order_id, order_type, amount, pay_method, status, create_time) values ' \
         '(%s, %s, %s, %s, %s, %s)'.format(table=cls.table)
     trade_id = db.execute(sql, order_id, order_type, amount, pay_method,
                           status, create_time)
     return trade_id
コード例 #14
0
ファイル: user_auth.py プロジェクト: zhenchaozhu/starmachine
 def add(cls, user_id, access_token):
     create_time = datetime.now()
     db = DbManager().db
     sql = 'insert into {table} (user_id, access_token, create_time) values (%s, %s, %s)'.format(
         table=cls.table)
     try:
         user_auth_id = db.execute(sql, user_id, access_token, create_time)
         logger.info(u'添加用户access_token成功。user_auth_id:[%s]' % user_auth_id)
         return user_auth_id
     except Exception as e:
         logger.error(u'添加用户access_token失败。user_id:[%s], error:[%s]' %
                      (user_id, e))
         raise
コード例 #15
0
ファイル: posts.py プロジェクト: zhenchaozhu/starmachine
    def delete(self):
        db = DbManager().db
        content_id = self.id
        db.execute('begin;')
        try:
            sql = 'delete from {table} where id=%s'.format(table=self.table)
            db.execute(sql, content_id)
            db.execute('commit;')
        except:
            db.execute('rollback;')
            raise

        cache = CacheManager().cache
        posts_cache_key = POSTS_CACHE_KEY % content_id
        cache.delete(posts_cache_key)
コード例 #16
0
ファイル: withdraw.py プロジェクト: zhenchaozhu/starmachine
 def add(cls,
         user_id,
         name,
         account_name,
         account_type=ALIPAY_ACCOUNT_TYPE):
     db = DbManager().db
     create_time = datetime.now()
     sql = 'insert into {table} (user_id, name, account_type, account_name, create_time) values (%s, %s, %s, %s, %s)'.format(
         table=cls.table)
     account_id = db.execute(sql, user_id, name, account_type, account_name,
                             create_time)
     if account_id:
         return cls(account_id, user_id, name, account_type, account_name,
                    create_time)
コード例 #17
0
 def add(cls, creator_id, proverbs, status=CHECK_STATUS_PENDING):
     create_time = datetime.now()
     db = DbManager().db
     cache = CacheManager().cache
     sql = 'insert into {table} (creator_id, proverbs, status, create_time) values (%s, %s, %s, %s)'.format(
         table=cls.table)
     proverbs_id = db.execute(sql, creator_id, proverbs, status,
                              create_time)
     if proverbs_id:
         user_tag_proverbs_limit_key = user_tag_proverbs_24_hours_limit % creator_id
         cache.set(user_tag_proverbs_limit_key, 'true')
         cache.expire(user_tag_proverbs_limit_key, LIMIT_SECONDS)
         return cls(proverbs_id, creator_id, proverbs, status, create_time,
                    None, None)
コード例 #18
0
 def add(cls, creator_id, receiver_id, content_id, room_id, amount, trades_info, type=REWARD_TYPE_CONTENT, status=STATUS_PENDING):
     db = DbManager().db
     create_time = datetime.now()
     db.execute('begin;')
     try:
         sql = 'insert into {table} (creator_id, receiver_id, type, content_id, room_id, amount, status, create_time) ' \
             'values (%s, %s, %s, %s, %s, %s, %s, %s)'.format(table=cls.table)
         reward_order_id = db.execute(sql, creator_id, receiver_id, type, content_id, room_id, amount, status, create_time)
         for trade_info in trades_info:
             trade_id = init_trade_id()
             pay_method = trade_info.get('pay_method')
             amount = trade_info.get('amount')
             sql = 'insert into {table} (id, order_id, order_type, amount, pay_method, status, create_time) values ' \
                 '(%s, %s, %s, %s, %s, %s, %s)'.format(table=Trade.table)
             db.execute(sql, trade_id, reward_order_id, ORDER_REWARD, amount, pay_method, status, create_time)
         db.execute('commit;')
         return cls(reward_order_id, creator_id, receiver_id, type, content_id, room_id, amount, status, create_time, None)
     except Exception:
         db.execute('rollback')
         raise
コード例 #19
0
ファイル: comment.py プロジェクト: zhenchaozhu/starmachine
 def add(cls, user_id, reply_user_id, content_id, text):
     db = DbManager().db
     create_time = datetime.now()
     cache = CacheManager().cache
     cache_key = CONTENT_COMMENT_CACHE_KEY % content_id
     sql = 'insert into {table} (user_id, reply_user_id, content_id, text, create_time) values ' \
         '(%s, %s, %s, %s, %s)'.format(table=cls.table)
     comment_id = db.execute(sql, user_id, reply_user_id, content_id, text,
                             create_time)
     if comment_id:
         content = Content.get(content_id)
         content.update(last_comment_time=create_time)
         cache.lpush(cache_key, comment_id)
         return cls(comment_id, user_id, reply_user_id, content_id, text,
                    create_time)
コード例 #20
0
 def add(cls,
         receiver_id,
         group_id,
         message_id,
         liked_amount,
         amount,
         status=STATUS_PENDING):
     db = DbManager().db
     create_time = datetime.now()
     sql = 'insert into {table} (receiver_id, group_id, message_id, liked_amount, amount, status, create_time) ' \
         'values (%s, %s, %s, %s, %s, %s, %s)'.format(table=cls.table)
     envelope_id = db.execute(sql, receiver_id, group_id, message_id,
                              liked_amount, amount, status, create_time)
     return cls(envelope_id, receiver_id, group_id, message_id,
                liked_amount, amount, status, create_time, None)
コード例 #21
0
 def add(cls,
         sender_id,
         receiver_id,
         action,
         target_id,
         notify_type=NOTIFY_TYPE_SYSTEM,
         extra=None,
         extra_info=None,
         status=NOTIFY_UNREAD):
     db = DbManager().db
     create_time = datetime.now()
     sql = 'insert into {table} (sender_id, receiver_id, action, target_id, notify_type, extra, extra_info, status, create_time) values ' \
         '(%s, %s, %s, %s, %s, %s, %s, %s, %s)'.format(table=cls.table)
     notify_id = db.execute(sql, sender_id, receiver_id, action, target_id,
                            notify_type, extra, extra_info, status,
                            create_time)
     return notify_id
コード例 #22
0
    def add(cls, receiver_id, group_id, message_id, liked_amount, amount):
        db = DbManager().db
        create_time = datetime.now()
        try:
            db.execute('begin;')
            sql = 'insert into {table} (receiver_id, group_id, message_id, liked_amount, amount, create_time) values' \
                ' (%s, %s, %s, %s, %s, %s)'.format(table=cls.table)
            seeds_id = db.execute(sql, receiver_id, group_id, message_id,
                                  liked_amount, amount, create_time)
            db.execute('commit;')
        except:
            db.execute('rollback;')
            raise

        return cls(seeds_id, receiver_id, group_id, message_id, liked_amount,
                   amount, create_time)
コード例 #23
0
ファイル: charge.py プロジェクト: zhenchaozhu/starmachine
 def add(cls,
         creator_id,
         amount,
         order_type,
         pay_method,
         status=STATUS_PENDING):
     db = DbManager().db
     create_time = datetime.now()
     db.execute('begin;')
     try:
         sql = 'insert into {table} (creator_id, amount, status, create_time) ' \
             'values (%s, %s, %s, %s)'.format(table=cls.table)
         order_id = db.execute(sql, creator_id, amount, status, create_time)
         trade_id = init_trade_id()
         sql = 'insert into {table} (id, order_id, order_type, amount, pay_method, status, create_time) values ' \
               '(%s, %s, %s, %s, %s, %s, %s)'.format(table=Trade.table)
         db.execute(sql, trade_id, order_id, order_type, amount, pay_method,
                    status, create_time)
         db.execute('commit;')
         return cls.get(order_id)
     except:
         db.execute('rollback;')
         raise
コード例 #24
0
 def add(cls,
         user_id,
         name,
         telephone,
         id_card,
         id_card_front,
         id_card_back,
         status=VALIDATING_STATUS,
         reason=''):
     db = DbManager().db
     create_time = datetime.now()
     sql = 'insert into {table} (user_id, name, telephone, id_card, id_card_front, id_card_back, status, reason, create_time) ' \
         'values (%s, %s, %s, %s, %s, %s, %s, %s, %s)'.format(table=cls.table)
     user_validate_id = db.execute(sql, user_id, name, telephone, id_card,
                                   id_card_front, id_card_back, status,
                                   reason, create_time)
     return user_validate_id and cls(
         user_validate_id, user_id, name, telephone, id_card, id_card_front,
         id_card_back, status, reason, create_time, None)
コード例 #25
0
ファイル: user.py プロジェクト: zhenchaozhu/starmachine
 def add(cls,
         telephone,
         password,
         name='',
         role=USER_DEFAULT_ROLE,
         avatar='',
         intro='',
         city_id=USER_DEFAULT_CITY,
         status=USER_NORMAL):
     create_time = datetime.now()
     db = DbManager().db
     sql = 'insert into {table} (telephone, password, name, role, avatar, intro, city_id, status, create_time) values ' \
         '(%s, %s, %s, %s, %s, %s, %s, %s, %s)'.format(table=cls.table)
     try:
         user_id = db.execute(sql, telephone, password, name, role, avatar,
                              intro, city_id, status, create_time)
         logger.info(u'添加用户成功。user_id:[%s]' % user_id)
         return user_id
     except Exception as e:
         logger.error(u'添加用户失败。Error:[%s]' % e)
         raise
コード例 #26
0
ファイル: comment.py プロジェクト: zhenchaozhu/starmachine
 def delete(self):
     db = DbManager().db
     sql = 'delete from {table} where id=%s'.format(table=self.table)
     db.execute(sql, self.id)
     self.flush_comment_cache()
コード例 #27
0
ファイル: __init__.py プロジェクト: zhenchaozhu/starmachine
    def delete(self):
        db = DbManager().db
        content_id = self.id
        db.execute('begin;')
        try:
            sql = 'delete from {table} where id=%s'.format(table=self.table)
            db.execute(sql, content_id)
            sql = 'delete from comment where content_id=%s'
            db.execute(sql, content_id)
            sql = 'delete from content_liked where content_id=%s'
            db.execute(sql, content_id)
            db.execute('commit;')
        except:
            db.execute('rollback;')
            raise

        cache = CacheManager().cache
        cache.zrem(USER_CREATED_CONTENT_KEY % self.creator_id, content_id)
        # 删除内容的评论和点赞记录
        content_comment_key = CONTENT_COMMENT_CACHE_KEY % content_id
        comment_ids = cache.lrange(content_comment_key, 0, -1)
        with cache.pipeline() as pipe:
            for comment_id in comment_ids:
                comment_cache_key = COMMENT_CACHE_KEY % comment_id
                pipe.delete(comment_cache_key)

            pipe.delete(content_comment_key)
            content_liked_key = CONTENT_LIKED_CACHE_KEY % content_id
            pipe.delete(content_liked_key)
            pipe.zrem(CONTENT_LIKED_RANK_KEY, content_id)
            pipe.execute()

        ContentTypeMap = getContentTypeMap()
        content_model = ContentTypeMap.get(self.content_type)
        content_obj = content_model.get(self.id)
        content_obj.delete()
コード例 #28
0
 def add(cls, user_id, source, order_type, order_id, amount, create_time):
     db = DbManager().db
     sql = 'insert into {table} (user_id, source, order_type, order_id, amount, create_time) values ' \
         '(%s, %s, %s, %s, %s, %s)'.format(table=cls.table)
     db.execute(sql, user_id, source, order_type, order_id, amount, create_time)
コード例 #29
0
 def update_amount(cls, message_id, liked_amount):
     db = DbManager().db
     sql = 'update {table} set liked_amount=%s where id=%s'.format(
         table=cls.table)
     db.execute(sql, liked_amount, message_id)
コード例 #30
0
    def receive_trade_payment(self):
        db = DbManager().db
        trades = self.trades
        now = datetime.now()
        all_trades_complete = True
        for trade in trades:
            if trade.status != STATUS_COMPLETE:
                return

        if all_trades_complete:
            try:
                db.execute('begin;')
                for trade in trades:
                    if trade.pay_method == PAYMETHOD_ACCOUNT:
                        sql = 'update {table} set balance=balance-%s where user_id=%s'.format(
                            table=Account.table)
                        db.execute(sql, float(trade.amount), self.creator_id)
                sql = 'update {table} set balance=balance+%s where room_id=%s'.format(
                    table=StarFund.table)
                db.execute(sql, float(self.amount), self.room_id)
                sql = 'update {table} set status=%s, pay_time=%s where id=%s'.format(
                    table=self.table)
                db.execute(sql, STATUS_COMPLETE, now, self.id)
                sql = 'insert into {table} (user_id, source, order_type, order_id, amount, create_time) values ' \
                      '(%s, %s, %s, %s, %s, %s)'.format(table=WalletRecord.table)
                db.execute(sql, self.creator_id, WALLET_RECORD_ROOM_RENT,
                           ORDER_ROOM, self.id, -self.amount, now)
                db.execute('commit;')
            except:
                db.execute('rollback;')
                raise

        RoomUser.add(self.room_id, self.creator_id)
        self.flush_fund_cache()