using System.Linq.Expressions; using Common; using CommonDomain; using CommonDomain.Enum; using Microsoft.Extensions.Logging; using MongoRepository; namespace AdminService.EmptyRoomRate { public class EmptyRoomRateConfigService : IEmptyRoomRateConfigService { private readonly IMongoBaseRepository _emptyRoomRateMongo; public EmptyRoomRateConfigService( IMongoBaseRepository emptyRoomRateMongo) { _emptyRoomRateMongo = emptyRoomRateMongo; } /// public async Task<(List list, long count)> GetList(int page, int size, GameTypeEnum? gameType, int? roomLevel) { Expression> filter = c => true; if (gameType.HasValue) { var type = gameType.Value; filter = filter.And(c => c.GameType == type); } if (roomLevel.HasValue) { var level = roomLevel.Value; filter = filter.And(c => c.RoomLevel == level); } var (total, list) = await _emptyRoomRateMongo.QueryPageAsync(filter, c => c.Id, false, size, page); return (list, total); } /// public async Task<(bool isok, string msg)> Add(GameTypeEnum gameType, int roomLevel, int emptyRoomRate) { if (emptyRoomRate < 0 || emptyRoomRate > 100) return (false, "空房率必须在0到100之间"); if (gameType == GameTypeEnum.中国象棋) roomLevel = 0; var existing = gameType == GameTypeEnum.中国象棋 ? await _emptyRoomRateMongo.FindOneAsync(c => c.GameType == gameType) : await _emptyRoomRateMongo.FindOneAsync(c => c.GameType == gameType && c.RoomLevel == roomLevel); if (existing != null) { return (false, "该游戏类型与房间等级的组合已存在"); } await _emptyRoomRateMongo.InsertOneAsync(new EmptyRoomRateConfig { GameType = gameType, RoomLevel = roomLevel, EmptyRoomRate = emptyRoomRate }); return (true, "新增成功"); } /// public async Task<(bool isok, string msg)> Update(string id, int emptyRoomRate) { if (emptyRoomRate < 0 || emptyRoomRate > 100) return (false, "空房率必须在0到100之间"); var config = await _emptyRoomRateMongo.FindByIdAsync(id); if (config == null) { return (false, "配置不存在"); } config.EmptyRoomRate = emptyRoomRate; await _emptyRoomRateMongo.ReplaceOneAsync(config); return (true, "修改成功"); } /// public async Task<(bool isok, string msg)> Delete(string id) { var config = await _emptyRoomRateMongo.FindByIdAsync(id); if (config == null) { return (false, "配置不存在"); } await _emptyRoomRateMongo.DeleteByIdAsync(id); return (true, "删除成功"); } } }