This commit is contained in:
Putoo
2026-05-20 18:32:54 +08:00
parent 2c85872abd
commit 784bc66ef6
51 changed files with 1818 additions and 106 deletions

View File

@@ -0,0 +1,128 @@
namespace Application.Domain;
public class GameMapService : IGameMapService, ITransient
{
private readonly ISqlSugarClient _dbClient;
private readonly IRedisCache _redisClient;
public GameMapService(ISqlSugarClient dbClient, IRedisCache redisClient)
{
_dbClient = dbClient;
_redisClient = redisClient;
}
#region
public async Task<game_city> GetCityInfo(int cityId)
{
string key = string.Format(BaseCache.BaseCacheKeys, "MapCityData", "CityData");
var data = await _redisClient.GetHashAsync<game_city>(key, cityId.ToString());
if (data == null)
{
var db = _dbClient.AsTenant().GetConnectionWithAttr<game_city>();
data = await db.Queryable<game_city>().Where(it => it.cityId == cityId).SingleAsync();
await _redisClient.AddHashAsync(key, cityId.ToString(), data);
}
return data;
}
public async Task<game_city_map> GetMapInfo(string mapId)
{
string key = string.Format(BaseCache.BaseCacheKeys, "MapCityData", "MapData");
var data = await _redisClient.GetHashAsync<game_city_map>(key, mapId);
if (data == null)
{
var db = _dbClient.AsTenant().GetConnectionWithAttr<game_city_map>();
data = await db.Queryable<game_city_map>().Where(it => it.mapId == mapId).SingleAsync();
await _redisClient.AddHashAsync(key, mapId, data);
}
return data;
}
public async Task<int> GetMapCityByMapId(string mapId)
{
var data = await GetMapInfo(mapId);
if (data != null)
{
return (int)data.cityId;
}
else
{
return 0;
}
}
public async Task<List<game_city_npc>> GetMapNpc(string mapId)
{
string key = string.Format(BaseCache.BaseCacheKeys, "MapCityData", "NpcData");
var data = await _redisClient.GetHashAsync<List<game_city_npc>>(key, mapId);
if (data == null)
{
var db = _dbClient.AsTenant().GetConnectionWithAttr<game_city_npc>();
data = await db.Queryable<game_city_npc>().Where(it => it.mapId == mapId && it.status == 1).ToListAsync();
await _redisClient.AddHashAsync(key, mapId, data);
}
return data;
}
public async Task<game_city_npc> GetNpcInfo(int npcId)
{
string key = string.Format(BaseCache.BaseCacheKeys, "MapCityData", "NpcInfo");
var data = await _redisClient.GetHashAsync<game_city_npc>(key, npcId.ToString());
if (data == null)
{
var db = _dbClient.AsTenant().GetConnectionWithAttr<game_city_npc>();
data = await db.Queryable<game_city_npc>().Where(it => it.npcId == npcId).SingleAsync();
await _redisClient.AddHashAsync(key, npcId.ToString(),data);
}
return data;
}
#endregion
#region
public async Task<string> GetUserOnMapId(string userId)
{
var data = await GetUserOnMap(userId);
if (data == null)
{
return "16_27";
}
return data.mapId;
}
public async Task<unit_user_online> GetUserOnMap(string userId)
{
string key = string.Format(UserCache.BaseCacheKey, "UserOnline");
if (await _redisClient.HExistsHashAsync(key, userId))
{
return await _redisClient.GetHashAsync<unit_user_online>(key, userId);
}
var db = _dbClient.AsTenant().GetConnectionWithAttr<unit_user_online>();
var data = await db.Queryable<unit_user_online>().Where(it => it.userId == userId).SingleAsync();
await _redisClient.AddHashAsync(key, userId, data);
return data;
}
public async Task UpdateUserOnMap(string userId, string ip, string mapId)
{
unit_user_online onLine = new unit_user_online();
onLine.userId = userId;
onLine.mapId = mapId;
onLine.ip = ip;
onLine.upTime = TimeAssist.GetTimeStampNum;
string key = string.Format(UserCache.BaseCacheKey, "UserOnline");
if (await _redisClient.AddHashAsync(key, userId, onLine))
{
var db = _dbClient.AsTenant().GetConnectionWithAttr<unit_user_online>();
await db.Updateable<unit_user_online>(onLine).ExecuteCommandAsync();
}
}
#endregion
}