SysPosService.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. // 麻省理工学院许可证
  2. //
  3. // 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司 联系电话/微信:18020030720 QQ:515096995
  4. //
  5. // 特此免费授予获得本软件的任何人以处理本软件的权利,但须遵守以下条件:在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
  6. //
  7. // 软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
  8. // 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他方式引起的,与软件或其使用或其他交易有关。
  9. namespace Admin.NET.Core.Service;
  10. /// <summary>
  11. /// 系统职位服务
  12. /// </summary>
  13. [ApiDescriptionSettings(Order = 460)]
  14. public class SysPosService : IDynamicApiController, ITransient
  15. {
  16. private readonly UserManager _userManager;
  17. private readonly SqlSugarRepository<SysPos> _sysPosRep;
  18. private readonly SysUserExtOrgService _sysUserExtOrgService;
  19. public SysPosService(UserManager userManager,
  20. SqlSugarRepository<SysPos> sysPosRep,
  21. SysUserExtOrgService sysUserExtOrgService)
  22. {
  23. _userManager = userManager;
  24. _sysPosRep = sysPosRep;
  25. _sysUserExtOrgService = sysUserExtOrgService;
  26. }
  27. /// <summary>
  28. /// 获取职位列表
  29. /// </summary>
  30. /// <param name="input"></param>
  31. /// <returns></returns>
  32. [DisplayName("获取职位列表")]
  33. public async Task<List<SysPos>> GetList([FromQuery] PosInput input)
  34. {
  35. return await _sysPosRep.AsQueryable()
  36. .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name))
  37. .WhereIF(!string.IsNullOrWhiteSpace(input.Code), u => u.Code.Contains(input.Code))
  38. .OrderBy(u => u.OrderNo).ToListAsync();
  39. }
  40. /// <summary>
  41. /// 增加职位
  42. /// </summary>
  43. /// <param name="input"></param>
  44. /// <returns></returns>
  45. [ApiDescriptionSettings(Name = "Add"), HttpPost]
  46. [DisplayName("增加职位")]
  47. public async Task AddPos(AddPosInput input)
  48. {
  49. var isExist = await _sysPosRep.IsAnyAsync(u => u.Name == input.Name && u.Code == input.Code);
  50. if (isExist)
  51. throw Oops.Oh(ErrorCodeEnum.D6000);
  52. await _sysPosRep.InsertAsync(input.Adapt<SysPos>());
  53. }
  54. /// <summary>
  55. /// 更新职位
  56. /// </summary>
  57. /// <param name="input"></param>
  58. /// <returns></returns>
  59. [ApiDescriptionSettings(Name = "Update"), HttpPost]
  60. [DisplayName("更新职位")]
  61. public async Task UpdatePos(UpdatePosInput input)
  62. {
  63. var sysPos = await _sysPosRep.GetFirstAsync(u => u.Name == input.Name && u.Code == input.Code && u.Id != input.Id);
  64. if (sysPos != null)
  65. throw Oops.Oh(ErrorCodeEnum.D6000);
  66. // 获取当前职位信息
  67. var currentPos = await _sysPosRep.GetByIdAsync(input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D6003);
  68. if (!_userManager.SuperAdmin && currentPos.CreateUserId != _userManager.UserId)
  69. throw Oops.Oh(ErrorCodeEnum.D6002);
  70. await _sysPosRep.AsUpdateable(input.Adapt<SysPos>()).IgnoreColumns(true).ExecuteCommandAsync();
  71. }
  72. /// <summary>
  73. /// 删除职位
  74. /// </summary>
  75. /// <param name="input"></param>
  76. /// <returns></returns>
  77. [ApiDescriptionSettings(Name = "Delete"), HttpPost]
  78. [DisplayName("删除职位")]
  79. public async Task DeletePos(DeletePosInput input)
  80. {
  81. var sysPos = await _sysPosRep.GetFirstAsync(u => u.Id == input.Id);
  82. if (sysPos == null)
  83. throw Oops.Oh(ErrorCodeEnum.D6003);
  84. if (!_userManager.SuperAdmin && sysPos.CreateUserId != _userManager.UserId)
  85. throw Oops.Oh(ErrorCodeEnum.D6002);
  86. // 该职位下是否有用户
  87. var hasPosEmp = await _sysPosRep.ChangeRepository<SqlSugarRepository<SysUser>>()
  88. .IsAnyAsync(u => u.PosId == input.Id);
  89. if (hasPosEmp)
  90. throw Oops.Oh(ErrorCodeEnum.D6001);
  91. // 该附属职位下是否有用户
  92. var hasExtPosEmp = await _sysUserExtOrgService.HasUserPos(input.Id);
  93. if (hasExtPosEmp)
  94. throw Oops.Oh(ErrorCodeEnum.D6001);
  95. await _sysPosRep.DeleteAsync(u => u.Id == input.Id);
  96. }
  97. }