S8NotificationLayerService.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using Admin.NET.Core;
  2. using Admin.NET.Plugin.AiDOP.Entity.S8;
  3. namespace Admin.NET.Plugin.AiDOP.Service.S8;
  4. public class S8NotificationLayerService : ITransient
  5. {
  6. private readonly SqlSugarRepository<AdoS8NotificationLayer> _rep;
  7. private readonly SqlSugarRepository<SysRole> _roleRep;
  8. public S8NotificationLayerService(
  9. SqlSugarRepository<AdoS8NotificationLayer> rep,
  10. SqlSugarRepository<SysRole> roleRep)
  11. {
  12. _rep = rep;
  13. _roleRep = roleRep;
  14. }
  15. public async Task<List<AdoS8NotificationLayer>> ListAsync(long tenantId, long factoryId) =>
  16. await _rep.AsQueryable()
  17. .Where(x => x.TenantId == tenantId && x.FactoryId == factoryId)
  18. .ToListAsync();
  19. public async Task<List<object>> GetRoleOptionsAsync()
  20. {
  21. var roles = await _roleRep.AsQueryable()
  22. .Where(x => (x.Id >= 1329908000101L && x.Id <= 1329908000107L) || x.Id == 1300000000101L)
  23. .OrderBy(x => x.Id)
  24. .Select(x => new { value = x.Code, label = x.Name })
  25. .ToListAsync();
  26. return roles.Cast<object>().ToList();
  27. }
  28. public async Task<AdoS8NotificationLayer> CreateAsync(AdoS8NotificationLayer body)
  29. {
  30. if (string.IsNullOrWhiteSpace(body.SceneCode) || string.IsNullOrWhiteSpace(body.Severity) || string.IsNullOrWhiteSpace(body.LevelCode))
  31. throw new S8BizException("场景、严重度、层级必填");
  32. if (string.IsNullOrWhiteSpace(body.TargetRoleIds))
  33. throw new S8BizException("目标角色必填");
  34. if (string.IsNullOrWhiteSpace(body.NotifyChannel))
  35. throw new S8BizException("通知渠道至少选一个");
  36. var exists = await _rep.AsQueryable()
  37. .AnyAsync(x => x.TenantId == body.TenantId && x.FactoryId == body.FactoryId &&
  38. x.SceneCode == body.SceneCode && x.Severity == body.Severity && x.LevelCode == body.LevelCode);
  39. if (exists) throw new S8BizException("同场景+严重度+层级已存在");
  40. body.Id = 0;
  41. body.CreatedAt = DateTime.Now;
  42. return await _rep.InsertReturnEntityAsync(body);
  43. }
  44. public async Task<AdoS8NotificationLayer> UpdateAsync(long id, AdoS8NotificationLayer body)
  45. {
  46. var e = await _rep.GetByIdAsync(id) ?? throw new S8BizException("记录不存在");
  47. if (string.IsNullOrWhiteSpace(body.SceneCode) || string.IsNullOrWhiteSpace(body.Severity) || string.IsNullOrWhiteSpace(body.LevelCode))
  48. throw new S8BizException("场景、严重度、层级必填");
  49. if (string.IsNullOrWhiteSpace(body.TargetRoleIds))
  50. throw new S8BizException("目标角色必填");
  51. if (string.IsNullOrWhiteSpace(body.NotifyChannel))
  52. throw new S8BizException("通知渠道至少选一个");
  53. var exists = await _rep.AsQueryable()
  54. .AnyAsync(x => x.Id != id && x.TenantId == body.TenantId && x.FactoryId == body.FactoryId &&
  55. x.SceneCode == body.SceneCode && x.Severity == body.Severity && x.LevelCode == body.LevelCode);
  56. if (exists) throw new S8BizException("同场景+严重度+层级已存在");
  57. body.Id = id;
  58. body.CreatedAt = e.CreatedAt;
  59. body.UpdatedAt = DateTime.Now;
  60. await _rep.UpdateAsync(body);
  61. return body;
  62. }
  63. public async Task DeleteAsync(long id) => await _rep.DeleteByIdAsync(id);
  64. }