This commit is contained in:
Putoo
2026-07-18 13:11:48 +08:00
parent 723a6861a0
commit 37eb063f33
9 changed files with 315 additions and 100 deletions

View File

@@ -94,7 +94,7 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa
public async Task<bool> AddFight(string fightId, string areaCode, string keyId, string mainId, string code,
string scene, string mapId,
string userId, long dueTime, long exp = 0, long copper = 0, long petExp = 0, string award = "",
string userId,long exp = 0, long copper = 0, long petExp = 0, string award = "",
string pars = "")
{
long addTime = TimeExtend.GetTimeStampMilliseconds;
@@ -119,7 +119,6 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa
petExp = petExp,
award = award,
pars = pars,
dueTime = dueTime,
addTime = addTime,
okTime = 0,
endTime = endTime
@@ -382,11 +381,6 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa
public async Task HandleFight(game_fight_data fightData)
{
if (await ValidFight(fightData) == false)
{
return;
}
string winUser = fightData.winUser;
string lowUser = fightData.userId == winUser ? fightData.mainId : fightData.userId;
@@ -701,26 +695,34 @@ public class GameFightService(ISqlSugarClient DbClient, IRedisCache redis) : IGa
await Task.CompletedTask;
}
public async Task<bool> ValidFight(game_fight_data fight, bool isBlack = true)
public async Task<bool> CheckFightLock(string userId, string lockStr)
{
bool result = true;
if (fight.dueTime > 0)
{
int diffTime = Convert.ToInt32(fight.okTime - fight.addTime);
if (diffTime < 3000)
{
result = diffTime >= fight.dueTime;
if (result == false && isBlack) //异常处理
{
//封禁账号
var userService = App.GetService<IUnitUserService>();
await userService.BlackUser(fight.userId);
}
}
}
string key = string.Format(BaseCache.BaseCacheKey, "FightLock");
var onData = await redis.GetHashAsync<string>(key, userId);
return onData == lockStr;
}
return result;
public async Task<string> SetFightLock(string userId)
{
string lockStr = StringAssist.NewGuid;
string key = string.Format(BaseCache.BaseCacheKey, "FightLock");
await redis.AddHashAsync(key, userId, lockStr);
return lockStr;
}
public async Task<bool> FightIsCool(string userId)
{
string key = string.Format(BaseCache.BaseCacheKey, "FightCool");
var onData = await redis.GetHashAsync<long>(key, userId);
return TimeExtend.GetTimeStampMilliseconds >= onData;
}
public async Task SetFightCool(string userId, long CoolTime)
{
long lockStr = TimeExtend.GetTimeStampMilliseconds + CoolTime;
string key = string.Format(BaseCache.BaseCacheKey, "FightCool");
await redis.AddHashAsync(key, userId, lockStr);
}
#endregion