using GraphQL; using LY.App.Common.Redis; using LY.App.Extensions.DI; using LY.App.Model; using Mapster; using SqlSugar; namespace LY.App.Service { /// /// 业务层白名单服务 /// [ServiceInjection(InjectionType.Transient)] public class WhitListService { private readonly SqlSugarClient _db; private readonly RedisService _redisService; /// /// 构造函数 /// /// /// public WhitListService(SqlSugarClient sqlSugarClient, RedisService redisService) { _db = sqlSugarClient; _redisService = redisService; } /// /// 新增白名单 /// /// /// public async Task Add(AddWhitelist input) { var result = new ApiResult(); var entity = input.Adapt(); var exisit = await _db.Queryable().AnyAsync(x => x.sn == entity.sn && x.IsDeleted == false); if (exisit) { result.code = 1; result.msg = $"sn:{input.sn}已经存在白名单中"; return result; } var id = await _db.Insertable(entity).ExecuteReturnSnowflakeIdAsync(); var key = RedisKeyList.white_list(input.sn); await _redisService.SetAsync(key, entity); result.data = id.ToString(); return result; } /// /// 删除白名单 /// /// /// public async Task Delete(long id) { var result = new ApiResult(); var entity = await _db.Queryable().FirstAsync(x => x.Id == id); if (entity != null) { entity.IsDeleted = true; await _db.Updateable(entity).ExecuteCommandAsync(); var key = RedisKeyList.white_list(entity.sn); await _redisService.DeleteAsync(key); return result; } return result; } /// /// 获取白名单列表 /// /// /// /// /// public async Task GetList(int pageNum = 1, int pageSize = 10, string key = null) { var result = new ApiResult(); RefAsync total = 0; var items = await _db.Queryable() .Where(s => s.IsDeleted == false) .WhereIF(!string.IsNullOrEmpty(key), s => s.sn.Contains(key)) .OrderByDescending(s => s.Id) .ToPageListAsync(pageNum, pageSize, total); items.ForEach(x => { x.positionIds = x.positionId.Select(s => s.ToString()).ToList(); }); return new ApiResult() { data = new { total = total.Value, items } }; } /// /// 获取白名单详情 /// /// /// public async Task GetById(long id) { var entity = await _db.Queryable().FirstAsync(x => x.Id == id); if (entity != null) { return new ApiResult(true, null); } return new ApiResult(false, "未找到该白名单"); } /// /// 更新白名单 /// /// /// public async Task Update(UpdateWhitelist input) { var entity = input.Adapt(); if (entity != null) { await _db.Updateable(entity).ExecuteCommandAsync(); var key = RedisKeyList.white_list(input.sn); await _redisService.SetAsync(key, entity); return new ApiResult() { code = 0 }; } return new ApiResult() { code = 1, msg = "更新失败" }; } } }