mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 21:52:56 +08:00
60 lines
2.4 KiB
Python
60 lines
2.4 KiB
Python
|
|
from datetime import datetime
|
||
|
|
|
||
|
|
from services.db_context import db
|
||
|
|
|
||
|
|
|
||
|
|
class OpenCasesUser(db.Model):
|
||
|
|
__tablename__ = 'open_cases_users'
|
||
|
|
|
||
|
|
id = db.Column(db.Integer(), primary_key=True)
|
||
|
|
user_qq = db.Column(db.BigInteger(), nullable=False)
|
||
|
|
belonging_group = db.Column(db.BigInteger(), nullable=False)
|
||
|
|
total_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
blue_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
blue_st_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
purple_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
purple_st_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
pink_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
pink_st_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
red_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
red_st_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
knife_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
knife_st_count = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
spend_money = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
make_money = db.Column(db.Float(), nullable=False, default=0)
|
||
|
|
today_open_total = db.Column(db.Integer(), nullable=False, default=0)
|
||
|
|
open_cases_time_last = db.Column(db.DateTime(timezone=True), nullable=False, default=datetime.now())
|
||
|
|
knifes_name = db.Column(db.Unicode(), nullable=False, default="")
|
||
|
|
|
||
|
|
_idx1 = db.Index('open_cases_group_users_idx1', 'user_qq', 'belonging_group', unique=True)
|
||
|
|
|
||
|
|
@classmethod
|
||
|
|
async def ensure(cls, user_qq: int, belonging_group: int, for_update: bool = False) -> 'OpenCasesUser':
|
||
|
|
query = cls.query.where(
|
||
|
|
(cls.user_qq == user_qq) & (cls.belonging_group == belonging_group)
|
||
|
|
)
|
||
|
|
if for_update:
|
||
|
|
query = query.with_for_update()
|
||
|
|
user = await query.gino.first()
|
||
|
|
return user or await cls.create(
|
||
|
|
user_qq=user_qq,
|
||
|
|
belonging_group=belonging_group,
|
||
|
|
)
|
||
|
|
|
||
|
|
@classmethod
|
||
|
|
async def get_user_all(cls, group_id: int = None) -> 'list':
|
||
|
|
user_list = []
|
||
|
|
if not group_id:
|
||
|
|
query = await cls.query.gino.all()
|
||
|
|
else:
|
||
|
|
query = await cls.query.where(
|
||
|
|
(cls.belonging_group == group_id)
|
||
|
|
).gino.all()
|
||
|
|
for user in query:
|
||
|
|
user_list.append(user)
|
||
|
|
return user_list
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|