StatesAppService.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Threading.Tasks;
  6. using System.Web.Mvc;
  7. using Abp.Auditing;
  8. using Abp.Authorization;
  9. using Abp.Domain.Repositories;
  10. using Abp.Runtime.Caching;
  11. using ShwasherSys.Authorization.Permissions;
  12. using ShwasherSys.BaseSysInfo.States.Dto;
  13. using IwbZero;
  14. using IwbZero.AppServiceBase;
  15. using IwbZero.Auditing;
  16. namespace ShwasherSys.BaseSysInfo.States
  17. {
  18. [AbpAuthorize, AuditLog("系统字典", "字典")]
  19. public class StatesAppService : ShwasherAsyncCrudAppService<SysState, StateDto, int, PagedRequestDto, StateCreateDto, StateUpdateDto>, IStatesAppService
  20. {
  21. public StatesAppService(ICacheManager cacheManager, IRepository<SysState, int> repository) : base(repository, "StateNo")
  22. {
  23. CacheManager = cacheManager;
  24. }
  25. protected override string GetPermissionName { get; set; } = PermissionNames.PagesSystemSysState;
  26. protected override string GetAllPermissionName { get; set; } = PermissionNames.PagesSystemSysState;
  27. protected override string CreatePermissionName { get; set; } = PermissionNames.PagesSystemSysStateCreate;
  28. protected override string UpdatePermissionName { get; set; } = PermissionNames.PagesSystemSysStateUpdate;
  29. protected override string DeletePermissionName { get; set; } = PermissionNames.PagesSystemSysStateDelete;
  30. #region GetSelectList
  31. [DisableAuditing, AllowAnonymous]
  32. public List<SelectListItem> GetSelectLists(QueryStateDisplayValue input, Expression<Func<SysState, bool>> exp = null)
  33. {
  34. return GetSelectLists(input.TableName, input.ColumnName, exp);
  35. }
  36. [DisableAuditing, AllowAnonymous]
  37. public List<SelectListItem> GetSelectLists(string tableName, string columnName, Expression<Func<SysState, bool>> exp = null)
  38. {
  39. var slist = new List<SelectListItem>();
  40. var list = GetStateList(tableName, columnName, exp);
  41. foreach (var l in list)
  42. {
  43. slist.Add(new SelectListItem { Text = l.DisplayValue, Value = l.CodeValue });
  44. }
  45. return slist;
  46. }
  47. [DisableAuditing, AllowAnonymous]
  48. public string GetSelectListStrs(QueryStateDisplayValue input, Expression<Func<SysState, bool>> exp = null)
  49. {
  50. return GetSelectListStrs(input.TableName, input.ColumnName, exp);
  51. }
  52. [DisableAuditing, AllowAnonymous]
  53. public string GetSelectListStrs(string tableName, string columnName, Expression<Func<SysState, bool>> exp = null)
  54. {
  55. var options = "";
  56. var list = GetStateList(tableName, columnName, exp);
  57. foreach (var l in list)
  58. {
  59. options += $"<option value=\"{l.CodeValue}\" >{l.DisplayValue}</option>\r\n";
  60. }
  61. return options;
  62. }
  63. [DisableAuditing, AllowAnonymous]
  64. public List<StateDisplayDto> GetStateList(QueryStateDisplayValue input, Expression<Func<SysState, bool>> exp = null)
  65. {
  66. return GetStateList(input.TableName, input.ColumnName, exp);
  67. }
  68. [DisableAuditing, AllowAnonymous]
  69. public List<StateDisplayDto> GetStateList(string tableName, string columnName, Expression<Func<SysState, bool>> exp = null)
  70. {
  71. var list = Repository.GetAll().Where(a => a.TableName == tableName && a.ColumnName == columnName);
  72. if (exp != null)
  73. {
  74. list = list.Where(exp);
  75. }
  76. var dtos = list.Select(a => new StateDisplayDto()
  77. {
  78. CodeValue = a.CodeValue,
  79. DisplayValue = a.DisplayValue
  80. }).ToList();
  81. return dtos;
  82. }
  83. #endregion
  84. #region GetDisplayValue
  85. [DisableAuditing]
  86. public async Task<string> GetDisplayValueAsync(QueryStateDisplayValue input)
  87. {
  88. return await GetDisplayValueAsync(input.TableName, input.ColumnName, input.CodeValue);
  89. }
  90. [DisableAuditing]
  91. public async Task<string> GetDisplayValueAsync(string tableName, string columnName, string codeValue)
  92. {
  93. return await CacheManager.GetCache(IwbZeroConsts.SysStateCache).GetAsync(
  94. tableName + "." + columnName + "." + codeValue, () => DisplayValueAsync(tableName, columnName, codeValue));
  95. }
  96. private async Task<string> DisplayValueAsync(string tableName, string columnName, string codeValue)
  97. {
  98. var state = await Repository.FirstOrDefaultAsync(a =>
  99. a.TableName == tableName && a.ColumnName == columnName && a.CodeValue == codeValue);
  100. return state?.DisplayValue;
  101. }
  102. [DisableAuditing]
  103. public string GetDisplayValue(QueryStateDisplayValue input)
  104. {
  105. return GetDisplayValue(input.TableName, input.ColumnName, input.CodeValue);
  106. }
  107. [DisableAuditing]
  108. public string GetDisplayValue(string tableName, string columnName, string codeValue)
  109. {
  110. return CacheManager.GetCache(IwbZeroConsts.SysStateCache).Get(
  111. tableName + "." + columnName + "." + codeValue, () => DisplayValue(tableName, columnName, codeValue));
  112. }
  113. private string DisplayValue(string tableName, string columnName, string codeValue)
  114. {
  115. var state = Repository.FirstOrDefault(a =>
  116. a.TableName == tableName && a.ColumnName == columnName && a.CodeValue == codeValue);
  117. return state?.DisplayValue;
  118. }
  119. #endregion
  120. public override async Task<StateDto> Update(StateUpdateDto input)
  121. {
  122. CheckUpdatePermission();
  123. var dto = await UpdateEntity1(input);
  124. await CacheManager.GetCache(IwbZeroConsts.SysStateCache)
  125. .RemoveAsync(input.TableName + "." + input.ColumnName + "." + input.CodeValue);
  126. return dto;
  127. }
  128. public override async Task<StateDto> Create(StateCreateDto input)
  129. {
  130. CheckCreatePermission();
  131. var dto = await CreateEntity1(input);
  132. return dto;
  133. }
  134. }
  135. }