This commit is contained in:
Putoo
2026-06-05 18:06:38 +08:00
parent 5195407266
commit 1927e3f960
17 changed files with 575 additions and 27 deletions

View File

@@ -877,14 +877,15 @@ public class GameMapService(ISqlSugarClient DbClient, IRedisCache redis) : IGame
public async Task<game_city_map_bus> GetMapBusInfo(int busId)
{
string key = string.Format(BaseCache.BaseCacheKeys, "CITY_MAP_BUS","BUS_INFO");
string key = string.Format(BaseCache.BaseCacheKeys, "CITY_MAP_BUS", "BUS_INFO");
if (await redis.HExistsHashAsync(key, busId.ToString()))
{
return await redis.GetHashAsync<game_city_map_bus>(key, busId.ToString());
}
var db = DbClient.AsTenant().GetConnectionWithAttr<game_city_map_bus>();
var data = await db.Queryable<game_city_map_bus>().Where(it => it.busId == busId).SingleAsync();
await redis.AddHashAsync(key,busId.ToString(), data);
var data = await db.Queryable<game_city_map_bus>().Where(it => it.busId == busId).SingleAsync();
await redis.AddHashAsync(key, busId.ToString(), data);
return data;
}
@@ -924,7 +925,19 @@ public class GameMapService(ISqlSugarClient DbClient, IRedisCache redis) : IGame
#endregion
#region
public async Task<game_city_map_res> GetMapResInfo(string resId)
{
string key = string.Format(BaseCache.BaseCacheKeys, "CityData", "MapResInfo");
var data = await redis.GetHashAsync<game_city_map_res>(key, resId);
if (data == null)
{
var db = DbClient.AsTenant().GetConnectionWithAttr<game_city_map_res>();
data = await db.Queryable<game_city_map_res>().Where(it => it.resId == resId).SingleAsync();
await redis.AddHashAsync(key, resId, data);
}
return data;
}
public async Task<List<game_city_map_res>> GetMapRes(string mapId)
{
string key = string.Format(BaseCache.BaseCacheKeys, "CityData", "MapRes");
@@ -933,12 +946,56 @@ public class GameMapService(ISqlSugarClient DbClient, IRedisCache redis) : IGame
{
var db = DbClient.AsTenant().GetConnectionWithAttr<game_city_map_res>();
data = await db.Queryable<game_city_map_res>().Where(it => it.mapId == mapId).ToListAsync();
await redis.AddHashAsync(key, mapId,data);
await redis.AddHashAsync(key, mapId, data);
}
return data;
}
public async Task<List<MapResModel>> GetMapResData(string mapId, int area)
{
var data = await GetMapRes(mapId);
List<MapResModel> result = new List<MapResModel>();
foreach (var item in data)
{
long lockTime = await GetMapResLockTime(item.resId, area);
MapResModel temp = new MapResModel()
{
resId = item.resId,
resName = item.resName,
lev = (int)item.lev,
lockTime = lockTime,
needVigour = (int)item.needVigour,
gather = (int)item.gatherTime
};
result.Add(temp);
}
return result;
}
public async Task<long> GetMapResLockTime(string resId, int area)
{
long result = 0;
string key = string.Format(BaseCache.BaseCacheKeys, "CityData", "MapResLockTime");
string field = $"{area}_{resId}";
if (await redis.HExistsHashAsync(key, field))
{
long lockTime = await redis.GetHashAsync<long>(key, field);
result = lockTime - TimeExtend.GetTimeStampSeconds;
result = result <= 0 ? 0 : result;
}
return result;
}
public async Task SetMapResLockTime(string resId, int area, int lockTime)
{
string key = string.Format(BaseCache.BaseCacheKeys, "CityData", "MapResLockTime");
string field = $"{area}_{resId}";
long atTime = TimeExtend.GetTimeStampSeconds + lockTime;
await redis.AddHashAsync(key, field, atTime);
}
#endregion
}