Service.tt 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <#@ template language="C#" #>
  2. <#@ assembly name="System.Core" #>
  3. <#@ import namespace="System.Linq" #>
  4. <#@ import namespace="System.Text" #>
  5. <#@ import namespace="System.Collections.Generic" #>
  6. using Abp.Application.Services.Dto;
  7. using Abp.Auditing;
  8. using Abp.Authorization;
  9. using Abp.Domain.Repositories;
  10. using Abp.Linq.Extensions;
  11. using Abp.Runtime.Caching;
  12. using VberZero.AppService.Base;
  13. using VberZero.AppService.Base.Dto;
  14. using VberZero.Auditing;
  15. using VberZero.Tools.StringModel;
  16. using <#=Model.ApplicationNamespace#>.Dto;
  17. <#
  18. string auditLog=string.IsNullOrEmpty(Model.HtmlPageTitle) ? "" : ", AuditLog(\""+ Model.HtmlPageTitle +"\")" ;
  19. #>
  20. namespace <#=Model.ApplicationNamespace#>
  21. {
  22. [AbpAuthorize<#=auditLog#>]
  23. public class <#=Model.FileName#>AppService : VzCrudAppServiceBase<<#=Model.ClassName#>, <#=Model.FileName#>Dto, <#=Model.IdType#>, VzPagedRequestDto, <#=Model.FileName#>CreateDto, <#=Model.FileName#>UpdateDto >, I<#=Model.FileName#>AppService
  24. {
  25. public <#=Model.FileName#>AppService(ICacheManager cacheManager, IRepository<<#=Model.ClassName#>, <#=Model.IdType#>> repository) : base(repository, "<#=Model.ColumnPrimaryKey#>")
  26. {
  27. CacheManager = cacheManager;
  28. }
  29. protected override bool KeyIsAuto { get; set; } = false;
  30. #region CURD
  31. [AbpAuthorize(PermissionNames.Vber<#=Model.ParentPath#><#=Model.FileName#>MgCreate)]
  32. public override async Task Create(<#=Model.FileName#>CreateDto input)
  33. {
  34. await CreateEntity(input);
  35. }
  36. [AbpAuthorize(PermissionNames.Vber<#=Model.ParentPath#><#=Model.FileName#>MgUpdate)]
  37. public override async Task Update(<#=Model.FileName#>UpdateDto input)
  38. {
  39. await UpdateEntity(input);
  40. }
  41. [AbpAuthorize(PermissionNames.Vber<#=Model.ParentPath#><#=Model.FileName#>MgDelete)]
  42. public override Task Delete(VzEntityDto<<#=Model.IdType#>> input)
  43. {
  44. return DeleteEntity(input);
  45. }
  46. [DisableAuditing]
  47. [AbpAuthorize(PermissionNames.Vber<#=Model.ParentPath#><#=Model.FileName#>MgQuery)]
  48. public override async Task<PagedResultDto<<#=Model.FileName#>Dto>> GetAll(VzPagedRequestDto input)
  49. {
  50. var query = CreateFilteredQuery(input);
  51. query = ApplyFilter(query, input);
  52. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  53. query = ApplySorting(query, input);
  54. query = ApplyPaging(query, input);
  55. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  56. var dtoList = new PagedResultDto<<#=Model.FileName#>Dto>(totalCount, entities.Select(MapToEntityDto).ToList());
  57. return dtoList;
  58. }
  59. /// <summary>
  60. /// 默认自定义排序
  61. /// </summary>
  62. /// <typeparam name="T"></typeparam>
  63. /// <param name="query"></param>
  64. /// <param name="input"></param>
  65. /// <returns></returns>
  66. protected override IQueryable<T> SelfSorting<T>(IQueryable<T> query, VzPagedRequestDto input)
  67. {
  68. if (query is IQueryable<<#=Model.ClassName#>> queryable)
  69. return (IQueryable<T>)queryable.OrderByDescending(r => r.Id);
  70. return query;
  71. }
  72. /// <summary>
  73. /// 关键字查询
  74. /// </summary>
  75. /// <typeparam name="T"></typeparam>
  76. /// <param name="query"></param>
  77. /// <param name="keyword"></param>
  78. /// <returns></returns>
  79. protected override IQueryable<T> KeyWordFilter<T>(IQueryable<T> query, string keyword)
  80. {
  81. if (query is IQueryable<<#=Model.ClassName#>> queryable)
  82. return (IQueryable<T>)queryable.WhereIf(keyword.NotEmpty(), a => a.Name.Contains(keyword));
  83. return query;
  84. }
  85. /// <summary>
  86. /// 特殊条件时,自定义查询 (使用完该字段查询条件时,应该从list里清除)
  87. /// </summary>
  88. /// <param name="query"></param>
  89. /// <param name="list"></param>
  90. /// <returns></returns>
  91. protected override IQueryable<T> SelfFilter<T>(IQueryable<T> query, List<MultiSearchDto> list)
  92. {
  93. //if (query is IQueryable<<#=Model.ClassName#>> queryable)
  94. //{
  95. // var search = list.FirstOrDefault(a => a.KeyField.ToLower() == "xxxxxx");
  96. // if (search != null)
  97. // {
  98. // var keyword = search.KeyWords;
  99. // if (keyword == "xxx")
  100. // {
  101. //
  102. // list.Remove(search);
  103. // }
  104. // }
  105. // return (IQueryable<T>)queryable;
  106. //}
  107. return query;
  108. }
  109. #region GetEntity/Dto
  110. /// <summary>
  111. /// 查询实体Dto
  112. /// </summary>
  113. /// <param name="input"></param>
  114. /// <returns></returns>
  115. [DisableAuditing]
  116. [AbpAuthorize(PermissionNames.Vber<#=Model.ParentPath#><#=Model.FileName#>MgQuery)]
  117. public override async Task<<#=Model.FileName#>Dto> GetDto(VzEntityDto<<#=Model.IdType#>> input)
  118. {
  119. var entity = await GetEntity(input);
  120. return MapToEntityDto(entity);
  121. }
  122. /// <summary>
  123. /// 查询实体Dto
  124. /// </summary>
  125. /// <param name="id"></param>
  126. /// <returns></returns>
  127. [DisableAuditing]
  128. [AbpAuthorize(PermissionNames.Vber<#=Model.ParentPath#><#=Model.FileName#>MgQuery)]
  129. public override async Task<<#=Model.FileName#>Dto> GetDtoById(<#=Model.IdType#> id)
  130. {
  131. var entity = await GetEntityById(id);
  132. return MapToEntityDto(entity);
  133. }
  134. /// <summary>
  135. /// 查询实体Dto(需指明自定义字段)
  136. /// </summary>
  137. /// <param name="no"></param>
  138. /// <returns></returns>
  139. [DisableAuditing]
  140. [AbpAuthorize(PermissionNames.Vber<#=Model.ParentPath#><#=Model.FileName#>MgQuery)]
  141. public override async Task<<#=Model.FileName#>Dto> GetDtoByNo(string no)
  142. {
  143. var entity = await GetEntityByNo(no);
  144. return MapToEntityDto(entity);
  145. }
  146. /// <summary>
  147. /// 查询实体
  148. /// </summary>
  149. /// <param name="input"></param>
  150. /// <returns></returns>
  151. [DisableAuditing]
  152. [AbpAuthorize(PermissionNames.Vber<#=Model.ParentPath#><#=Model.FileName#>MgQuery)]
  153. public override async Task<<#=Model.ClassName#>> GetEntity(VzEntityDto<<#=Model.IdType#>> input)
  154. {
  155. var entity = await GetEntityById(input.Id);
  156. return entity;
  157. }
  158. /// <summary>
  159. /// 查询实体
  160. /// </summary>
  161. /// <param name="id"></param>
  162. /// <returns></returns>
  163. [DisableAuditing]
  164. [AbpAuthorize(PermissionNames.Vber<#=Model.ParentPath#><#=Model.FileName#>MgQuery)]
  165. public override async Task<<#=Model.ClassName#>> GetEntityById(<#=Model.IdType#> id)
  166. {
  167. return await Repository.FirstOrDefaultAsync(a=>a.Id==id);
  168. }
  169. /// <summary>
  170. /// 查询实体(需指明自定义字段)
  171. /// </summary>
  172. /// <param name="no"></param>
  173. /// <returns></returns>
  174. [DisableAuditing]
  175. [AbpAuthorize(PermissionNames.Vber<#=Model.ParentPath#><#=Model.FileName#>MgQuery)]
  176. public override async Task<<#=Model.ClassName#>> GetEntityByNo(string no)
  177. {
  178. //CheckGetPermission();
  179. if (string.IsNullOrEmpty(KeyFiledName))
  180. {
  181. ThrowError("NoKeyFieldName");
  182. }
  183. return await base.GetEntityByNo(no);
  184. }
  185. #endregion
  186. #endregion
  187. }
  188. }