refactor code

This commit is contained in:
hibiki
2021-07-30 21:21:51 +08:00
parent 2ad891aa1e
commit cc24822dca
165 changed files with 7815 additions and 8174 deletions
+90 -46
View File
@@ -1,10 +1,9 @@
from services.db_context import db
from typing import Optional, List
class BagUser(db.Model):
__tablename__ = 'bag_users'
__tablename__ = "bag_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)
@@ -15,25 +14,41 @@ class BagUser(db.Model):
get_today_gold = db.Column(db.Integer(), default=0)
spend_today_gold = db.Column(db.Integer(), default=0)
_idx1 = db.Index('bag_group_users_idx1', 'user_qq', 'belonging_group', unique=True)
_idx1 = db.Index("bag_group_users_idx1", "user_qq", "belonging_group", unique=True)
@classmethod
async def get_my_total_gold(cls, user_qq: int, belonging_group: int) -> str:
"""
说明:
获取金币概况
参数:
:param user_qq: qq号
:param belonging_group: 所在群号
"""
query = cls.query.where(
(cls.user_qq == user_qq) & (cls.belonging_group == belonging_group)
)
user = await query.gino.first()
if not user:
user = await cls.create(
user_qq=user_qq,
belonging_group=belonging_group,
)
return f'当前金币:{user.gold}\n今日获取金币:{user.get_today_gold}\n今日花费金币:{user.spend_today_gold}' \
f'\n今日收益:{user.get_today_gold - user.spend_today_gold}' \
f'\n总赚取金币:{user.get_total_gold}\n总花费金币:{user.spend_total_gold}'
user_qq=user_qq,
belonging_group=belonging_group,
)
return (
f"当前金币:{user.gold}\n今日获取金币:{user.get_today_gold}\n今日花费金币:{user.spend_today_gold}"
f"\n今日收益:{user.get_today_gold - user.spend_today_gold}"
f"\n总赚取金币:{user.get_total_gold}\n总花费金币:{user.spend_total_gold}"
)
@classmethod
async def get_gold(cls, user_qq: int, belonging_group: int) -> int:
"""
说明:
获取当前金币
参数:
:param user_qq: qq号
:param belonging_group: 所在群号
"""
query = cls.query.where(
(cls.user_qq == user_qq) & (cls.belonging_group == belonging_group)
)
@@ -42,13 +57,20 @@ class BagUser(db.Model):
return user.gold
else:
await cls.create(
user_qq=user_qq,
belonging_group=belonging_group,
)
user_qq=user_qq,
belonging_group=belonging_group,
)
return 100
@classmethod
async def get_props(cls, user_qq: int, belonging_group: int) -> str:
"""
说明:
获取当前道具
参数:
:param user_qq: qq号
:param belonging_group: 所在群号
"""
query = cls.query.where(
(cls.user_qq == user_qq) & (cls.belonging_group == belonging_group)
)
@@ -57,13 +79,21 @@ class BagUser(db.Model):
return user.props
else:
await cls.create(
user_qq=user_qq,
belonging_group=belonging_group,
)
return ''
user_qq=user_qq,
belonging_group=belonging_group,
)
return ""
@classmethod
async def add_gold(cls, user_qq: int, belonging_group: int, num: int) -> bool:
"""
说明:
增加金币
参数:
:param user_qq: qq号
:param belonging_group: 所在群号
:param num: 金币数量
"""
query = cls.query.where(
(cls.user_qq == user_qq) & (cls.belonging_group == belonging_group)
)
@@ -74,7 +104,7 @@ class BagUser(db.Model):
await user.update(
gold=user.gold + num,
get_total_gold=user.get_total_gold + num,
get_today_gold=user.get_today_gold + num
get_today_gold=user.get_today_gold + num,
).apply()
else:
await cls.create(
@@ -90,6 +120,14 @@ class BagUser(db.Model):
@classmethod
async def spend_gold(cls, user_qq: int, belonging_group: int, num: int) -> bool:
"""
说明:
花费金币
参数:
:param user_qq: qq号
:param belonging_group: 所在群号
:param num: 金币数量
"""
query = cls.query.where(
(cls.user_qq == user_qq) & (cls.belonging_group == belonging_group)
)
@@ -100,7 +138,7 @@ class BagUser(db.Model):
await user.update(
gold=user.gold - num,
spend_total_gold=user.spend_total_gold + num,
spend_today_gold=user.spend_today_gold + num
spend_today_gold=user.spend_today_gold + num,
).apply()
else:
await cls.create(
@@ -108,7 +146,7 @@ class BagUser(db.Model):
belonging_group=belonging_group,
gold=100 - num,
spend_total_gold=num,
spend_today_gold=num
spend_today_gold=num,
)
return True
except Exception:
@@ -116,6 +154,14 @@ class BagUser(db.Model):
@classmethod
async def add_props(cls, user_qq: int, belonging_group: int, name: str) -> bool:
"""
说明:
增加道具
参数:
:param user_qq: qq号
:param belonging_group: 所在群号
:param name: 道具名称
"""
query = cls.query.where(
(cls.user_qq == user_qq) & (cls.belonging_group == belonging_group)
)
@@ -123,14 +169,10 @@ class BagUser(db.Model):
user = await query.gino.first()
try:
if user:
await user.update(
props=user.props + f'{name},'
).apply()
await user.update(props=user.props + f"{name},").apply()
else:
await cls.create(
user_qq=user_qq,
belonging_group=belonging_group,
props=f'{name},'
user_qq=user_qq, belonging_group=belonging_group, props=f"{name},"
)
return True
except Exception:
@@ -138,6 +180,14 @@ class BagUser(db.Model):
@classmethod
async def del_props(cls, user_qq: int, belonging_group: int, name: str) -> bool:
"""
说明:
使用道具
参数:
:param user_qq: qq号
:param belonging_group: 所在群号
:param name: 道具名称
"""
query = cls.query.where(
(cls.user_qq == user_qq) & (cls.belonging_group == belonging_group)
)
@@ -145,21 +195,19 @@ class BagUser(db.Model):
user = await query.gino.first()
try:
if user:
rst = ''
rst = ""
props = user.props
if props.find(name) != -1:
props = props.split(',')
props = props.split(",")
try:
index = props.index(name)
except ValueError:
return False
props = props[:index] + props[index + 1:]
props = props[:index] + props[index + 1 :]
for p in props:
if p != '':
rst += p + ','
await user.update(
props=rst
).apply()
if p != "":
rst += p + ","
await user.update(props=rst).apply()
return True
else:
return False
@@ -169,19 +217,15 @@ class BagUser(db.Model):
return False
@classmethod
async def get_user_all(cls, group_id: int = None) -> list:
async def get_all_users(cls, group_id: Optional[int] = None) -> List["BagUser"]:
"""
说明:
获取所有用户数据
参数:
:param group_id: 群号
"""
if not group_id:
query = await cls.query.gino.all()
else:
query = await cls.query.where(
(cls.belonging_group == group_id)
).gino.all()
query = await cls.query.where((cls.belonging_group == group_id)).gino.all()
return query