2025-10-20 23:24:33 +08:00
|
|
|
from ..dbService import g_pDBService
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CPlayer:
|
|
|
|
|
def __init__(self):
|
|
|
|
|
self.user = {
|
|
|
|
|
"uid": "", # 用户Uid
|
|
|
|
|
"name": "", # 农场名称
|
|
|
|
|
"exp": 0, # 经验值
|
|
|
|
|
"point": 0, # 金币
|
|
|
|
|
"vipPoint": 0, # 点券
|
|
|
|
|
"soil": 3, # 解锁土地数量
|
|
|
|
|
"stealTime": "", # 偷菜时间字符串
|
|
|
|
|
"stealCount": 0, # 剩余偷菜次数
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async def init(self, uid: str) -> bool:
|
|
|
|
|
self.user["uid"] = uid
|
|
|
|
|
return await self.loadFormDB()
|
|
|
|
|
|
|
|
|
|
async def loadFormDB(self) -> bool:
|
|
|
|
|
uid = self.user.get("uid", "")
|
|
|
|
|
|
|
|
|
|
if uid == "":
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
self.user = await g_pDBService.user.getUserInfoByUid(uid)
|
|
|
|
|
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
async def isRegistered(self) -> bool:
|
|
|
|
|
"""检查用户是否注册农场
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
bool: 是否注册农场
|
|
|
|
|
"""
|
|
|
|
|
uid = self.user.get("uid", "")
|
|
|
|
|
|
|
|
|
|
if uid == "":
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
return await g_pDBService.user.isRegistered(uid)
|
|
|
|
|
|
|
|
|
|
async def addPoint(self, type: str, index: int) -> bool:
|
|
|
|
|
"""增加货币
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
type (str): 货币类型 point/vipPoint
|
|
|
|
|
index (int): 增加的数量
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
bool: 是否成功增加货币
|
|
|
|
|
"""
|
|
|
|
|
uid = self.user.get("uid", "")
|
|
|
|
|
|
|
|
|
|
if uid == "" or type not in g_pDBService.user.currencies:
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
if index == 0:
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
nowIndex = self.user.get(type, 0) + index
|
|
|
|
|
|
|
|
|
|
if nowIndex < 0:
|
|
|
|
|
nowIndex = 0
|
|
|
|
|
|
|
|
|
|
if await g_pDBService.user.updatePoint(uid, type, nowIndex):
|
|
|
|
|
self.user[type] = nowIndex
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
async def subPoint(self, type: str, index: int) -> bool:
|
|
|
|
|
"""减少货币
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
type (str): 货币类型 point/vipPoint
|
|
|
|
|
index (int): 减少的数量
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
bool: 是否成功减少货币
|
|
|
|
|
"""
|
|
|
|
|
uid = self.user.get("uid", "")
|
|
|
|
|
|
|
|
|
|
if uid == "" or type not in g_pDBService.user.currencies:
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
if index == 0:
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
nowIndex = self.user.get(type, 0) - index
|
|
|
|
|
|
|
|
|
|
if nowIndex < 0:
|
|
|
|
|
nowIndex = 0
|
|
|
|
|
|
|
|
|
|
if await g_pDBService.user.updatePoint(uid, type, nowIndex):
|
|
|
|
|
self.user[type] = nowIndex
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
async def addExp(self, exp: int) -> bool:
|
|
|
|
|
"""增加经验值
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
exp (int): 增加的经验值
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
bool: 是否成功增加经验值
|
|
|
|
|
"""
|
|
|
|
|
uid = self.user.get("uid", "")
|
|
|
|
|
|
|
|
|
|
if uid == "":
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
if exp == 0:
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
nowExp = self.user.get("exp", 0) + exp
|
|
|
|
|
|
|
|
|
|
if nowExp < 0:
|
|
|
|
|
nowExp = 0
|
|
|
|
|
|
|
|
|
|
if await g_pDBService.user.updateExp(uid, nowExp):
|
|
|
|
|
self.user["exp"] = nowExp
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
async def subExp(self, exp: int) -> bool:
|
|
|
|
|
"""减少经验值
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
exp (int): 减少的经验值
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
bool: 是否成功减少经验值
|
|
|
|
|
"""
|
|
|
|
|
uid = self.user.get("uid", "")
|
|
|
|
|
|
|
|
|
|
if uid == "":
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
if exp == 0:
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
nowExp = self.user.get("exp", 0) - exp
|
|
|
|
|
|
|
|
|
|
if nowExp < 0:
|
|
|
|
|
nowExp = 0
|
|
|
|
|
|
|
|
|
|
if await g_pDBService.user.updateExp(uid, nowExp):
|
|
|
|
|
self.user["exp"] = nowExp
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
async def updateName(self, name: str) -> str:
|
|
|
|
|
"""更新农场名称
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
name (str): 农场名称
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
str: success/error/error1
|
|
|
|
|
"""
|
|
|
|
|
uid = self.user.get("uid", "")
|
|
|
|
|
|
|
|
|
|
if uid == "":
|
|
|
|
|
return "error"
|
|
|
|
|
|
|
|
|
|
return await g_pDBService.user.updateName(uid, name)
|
|
|
|
|
|
|
|
|
|
async def getUserLevel(self) -> tuple[int, int, int]:
|
|
|
|
|
"""获取用户等级信息
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
tuple[int, int, int]: 成功返回(当前等级, 升至下级还需经验, 当前等级已获经验)
|
|
|
|
|
失败返回(-1, -1, -1)
|
|
|
|
|
"""
|
|
|
|
|
uid = self.user.get("uid", "")
|
|
|
|
|
|
|
|
|
|
if uid == "":
|
|
|
|
|
return -1, -1, -1
|
|
|
|
|
|
|
|
|
|
return await g_pDBService.user.getUserLevelByUid(uid)
|
|
|
|
|
|
2025-10-22 21:58:58 +08:00
|
|
|
async def updateStealCountByUid(
|
|
|
|
|
self, uid: str, stealTime: str, stealCount: int
|
|
|
|
|
) -> bool:
|
|
|
|
|
"""根据用户Uid更新剩余偷菜次数
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
uid (str): 用户Uid
|
|
|
|
|
stealTime (str): 偷菜日期
|
|
|
|
|
stealCount (int): 新剩余偷菜次数
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
bool: 是否更新成功
|
|
|
|
|
"""
|
|
|
|
|
uid = self.user.get("uid", "")
|
|
|
|
|
|
|
|
|
|
if uid == "":
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
return await g_pDBService.user.updateStealCountByUid(uid, stealTime, stealCount)
|
|
|
|
|
|
|
|
|
|
async def updateField(self, field: str, value) -> bool:
|
2025-10-20 23:24:33 +08:00
|
|
|
"""更新单字段信息
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
bool: 是否成功更新单字段信息
|
|
|
|
|
"""
|
|
|
|
|
uid = self.user.get("uid", "")
|
|
|
|
|
|
|
|
|
|
if uid == "":
|
|
|
|
|
return False
|
|
|
|
|
|
2025-10-22 21:58:58 +08:00
|
|
|
return await g_pDBService.user.updateFieldByUid(uid, field, value)
|