ly/Service/WhitListService.cs

132 lines
4.4 KiB
C#
Raw Normal View History

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