mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-03 10:40:02 +08:00
first_commit .gitignore
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
from datetime import datetime
|
||||
|
||||
from services.db_context import db
|
||||
|
||||
|
||||
class SignGroupUser(db.Model):
|
||||
__tablename__ = 'sign_group_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)
|
||||
|
||||
checkin_count = db.Column(db.Integer(), nullable=False)
|
||||
checkin_time_last = db.Column(db.DateTime(timezone=True), nullable=False)
|
||||
impression = db.Column(db.Numeric(scale=3, asdecimal=False), nullable=False)
|
||||
add_probability = db.Column(db.Numeric(scale=3, asdecimal=False), nullable=False, default=0)
|
||||
specify_probability = db.Column(db.Numeric(scale=3, asdecimal=False), nullable=False, default=0)
|
||||
|
||||
_idx1 = db.Index('sign_group_users_idx1', 'user_qq', 'belonging_group', unique=True)
|
||||
|
||||
@classmethod
|
||||
async def ensure(cls, user_qq: int, belonging_group: int, for_update: bool = False) -> 'SignGroupUser':
|
||||
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,
|
||||
checkin_count=0,
|
||||
checkin_time_last=datetime.min, # 从未签到过
|
||||
impression=0,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
async def query_impression_all(cls, belonging_group: int) -> 'list,list':
|
||||
impression_list = []
|
||||
user_qq_list = []
|
||||
query = cls.query.where(
|
||||
(cls.belonging_group == belonging_group)
|
||||
)
|
||||
for user in await query.gino.all():
|
||||
impression_list.append(user.impression)
|
||||
user_qq_list.append(user.user_qq)
|
||||
return user_qq_list, impression_list
|
||||
|
||||
@classmethod
|
||||
async def query_glod_all(cls, belonging_group: int) -> 'list,list':
|
||||
glod_list = []
|
||||
user_qq_list = []
|
||||
query = cls.query.where(
|
||||
(cls.belonging_group == belonging_group)
|
||||
)
|
||||
for user in await query.gino.all():
|
||||
glod_list.append(user.glod)
|
||||
user_qq_list.append(user.user_qq)
|
||||
return user_qq_list, glod_list
|
||||
Reference in New Issue
Block a user