LawyerApplicationService.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using System.Web.Mvc;
  5. using Abp.Application.Services.Dto;
  6. using Abp.Auditing;
  7. using Abp.Authorization;
  8. using Abp.Domain.Repositories;
  9. using Abp.Runtime.Caching;
  10. using IwbZero.Auditing;
  11. using IwbZero.AppServiceBase;
  12. using ContractService.Authorization;
  13. using ContractService.Configuration;
  14. using ContractService.Lawyer.Dto;
  15. using ContractService.LegalContract;
  16. using IwbZero.ToolCommon.StringModel;
  17. using IwbZero.Runtime.Session;
  18. namespace ContractService.Lawyer
  19. {
  20. [AbpAuthorize, AuditLog("律师信息")]
  21. public class LawyerAppService : IwbAsyncCrudAppService<LawyerInfo, LawyerDto, string, IwbPagedRequestDto, LawyerCreateDto, LawyerUpdateDto >, ILawyerAppService
  22. {
  23. public LawyerAppService(
  24. ICacheManager cacheManager,
  25. IRepository<LawyerInfo, string> repository, LegalManager legalManager) : base(repository, "Id")
  26. {
  27. LegalManager = legalManager;
  28. CacheManager = cacheManager;
  29. }
  30. protected override bool KeyIsAuto { get; set; } = false;
  31. public LegalManager LegalManager { get; }
  32. #region GetSelect
  33. [DisableAuditing]
  34. public override async Task<List<SelectListItem>> GetSelectList()
  35. {
  36. var list = await Repository.GetAllListAsync();
  37. var sList = new List<SelectListItem> {new SelectListItem {Text = @"请选择...", Value = "", Selected = true}};
  38. foreach (var l in list)
  39. {
  40. sList.Add(new SelectListItem { Value = l.Id, Text = l.Name });
  41. }
  42. return sList;
  43. }
  44. [DisableAuditing]
  45. public override async Task<string> GetSelectStr()
  46. {
  47. var list = await Repository.GetAllListAsync();
  48. string str = "<option value=\"\" selected>请选择...</option>";
  49. foreach (var l in list)
  50. {
  51. str += $"<option value=\"{l.Id}\">{l.Name}</option>";
  52. }
  53. return str;
  54. }
  55. #endregion
  56. #region CURD
  57. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgCreate)]
  58. public override async Task Create(LawyerCreateDto input)
  59. {
  60. var entity = MapToEntity(input);
  61. entity.LawFirmNo = input.LawFirmNo.Empty() ? AbpSession.GetClaimValue(IwbConsts.UserCompanyLawFirmClaimType) : input.LawFirmNo;
  62. await LegalManager.CreateLawyer(entity, input.LawFirmNo);
  63. }
  64. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgUpdate)]
  65. public override async Task Update(LawyerUpdateDto input)
  66. {
  67. var entity = await GetEntityById(input.Id);
  68. if (entity == null)
  69. {
  70. CheckErrors(NotExistMessage);
  71. }
  72. MapToEntity(input, entity);
  73. await LegalManager.UpdateLawyer(entity);
  74. }
  75. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgDelete)]
  76. public override Task Delete(EntityDto<string> input)
  77. {
  78. return LegalManager.DeleteLawyer(input.Id);
  79. }
  80. [DisableAuditing]
  81. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgQuery)]
  82. public override async Task<PagedResultDto<LawyerDto>> GetAll(IwbPagedRequestDto input)
  83. {
  84. LegalManager.CheckAccount(AccountTypeDefinition.System, AccountTypeDefinition.Lawyer);
  85. var query = LegalManager.QueryAllLawyer();
  86. if (input.SearchList.Any(a => a.KeyField.ToLower() == "lawfirm"))
  87. {
  88. var search = input.SearchList.FirstOrDefault(a => a.KeyField.ToLower() == "lawfirm");
  89. var no = search?.KeyWords;
  90. if (search != null) input.SearchList.Remove(search);
  91. query = LegalManager.QueryLawFirmAllLawyers(no);
  92. }
  93. if (!string.IsNullOrEmpty(input.KeyWords))
  94. {
  95. query = input.KeyField.ToLower() == "keyword" ? KeyWordFilter(query, input.KeyWords) : KeyWordFilter(query, input);
  96. }
  97. query = SearchListFilter(query, input);
  98. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  99. query = _ApplySorting(query, input);
  100. query = _ApplyPaging(query, input);
  101. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  102. var dtoList = new PagedResultDto<LawyerDto>(totalCount, entities.Select(a=>new LawyerDto(a)).ToList());
  103. return dtoList;
  104. }
  105. protected override IQueryable<LawyerInfo> SelfSorting(IQueryable<LawyerInfo> query, IwbPagedRequestDto input)
  106. {
  107. return query.OrderByDescending(r => r.Id);
  108. }
  109. protected override IQueryable<LawyerInfo> KeyWordFilter(IQueryable<LawyerInfo> query, string keyword)
  110. {
  111. return query.Where(a => a.Id.Contains(keyword) || a.Name.Contains(keyword) ||
  112. a.PhoneNumber.Contains(keyword) || a.PhoneNumber2.Contains(keyword) ||
  113. a.Code.Contains(keyword) ||
  114. (a.LawFirmInfo != null &&
  115. (a.LawFirmInfo.Name.Contains(keyword) ||
  116. a.LawFirmInfo.DisplayName.Contains(keyword))) ||
  117. (a.OrganizationInfo != null && a.OrganizationInfo.Name.Contains(keyword)));
  118. }
  119. protected IQueryable<LawyerInfoClone> KeyWordFilter(IQueryable<LawyerInfoClone> query, string keyword)
  120. {
  121. return query.Where(a => a.Id.Contains(keyword) || a.Name.Contains(keyword) || a.PhoneNumber.Contains(keyword) || a.PhoneNumber2.Contains(keyword) || a.Code.Contains(keyword));
  122. }
  123. #region GetEntity/Dto
  124. /// <summary>
  125. /// 查询实体Dto
  126. /// </summary>
  127. /// <param name="input"></param>
  128. /// <returns></returns>
  129. [DisableAuditing]
  130. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgQuery)]
  131. public override async Task<LawyerDto> GetDto(EntityDto<string> input)
  132. {
  133. var entity = await GetEntity(input);
  134. return MapToEntityDto(entity);
  135. }
  136. /// <summary>
  137. /// 查询实体Dto
  138. /// </summary>
  139. /// <param name="id"></param>
  140. /// <returns></returns>
  141. [DisableAuditing]
  142. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgQuery)]
  143. public override async Task<LawyerDto> GetDtoById(string id)
  144. {
  145. var entity = await GetEntityById(id);
  146. return MapToEntityDto(entity);
  147. }
  148. /// <summary>
  149. /// 查询实体Dto(需指明自定义字段)
  150. /// </summary>
  151. /// <param name="no"></param>
  152. /// <returns></returns>
  153. [DisableAuditing]
  154. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgQuery)]
  155. public override async Task<LawyerDto> GetDtoByNo(string no)
  156. {
  157. var entity = await GetEntityByNo(no);
  158. return MapToEntityDto(entity);
  159. }
  160. /// <summary>
  161. /// 查询实体
  162. /// </summary>
  163. /// <param name="input"></param>
  164. /// <returns></returns>
  165. [DisableAuditing]
  166. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgQuery)]
  167. public override async Task<LawyerInfo> GetEntity(EntityDto<string> input)
  168. {
  169. var entity = await GetEntityById(input.Id);
  170. return entity;
  171. }
  172. /// <summary>
  173. /// 查询实体
  174. /// </summary>
  175. /// <param name="id"></param>
  176. /// <returns></returns>
  177. [DisableAuditing]
  178. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgQuery)]
  179. public override async Task<LawyerInfo> GetEntityById(string id)
  180. {
  181. return await Repository.FirstOrDefaultAsync(a=>a.Id==id);
  182. }
  183. /// <summary>
  184. /// 查询实体(需指明自定义字段)
  185. /// </summary>
  186. /// <param name="no"></param>
  187. /// <returns></returns>
  188. [DisableAuditing]
  189. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgQuery)]
  190. public override async Task<LawyerInfo> GetEntityByNo(string no)
  191. {
  192. //CheckGetPermission();
  193. if (string.IsNullOrEmpty(KeyFiledName))
  194. {
  195. ThrowError("NoKeyFieldName");
  196. }
  197. return await base.GetEntityByNo(no);
  198. }
  199. #endregion
  200. #region Hide
  201. ///// <summary>
  202. ///// 根据给定的<see cref="IwbPagedRequestDto"/>创建 <see cref="IQueryable{LawyerInfo}"/>过滤查询.
  203. ///// </summary>
  204. ///// <param name="input">The input.</param>
  205. //protected override IQueryable<LawyerInfo> CreateFilteredQuery(IwbPagedRequestDto input)
  206. //{
  207. // var query = Repository.GetAll();
  208. // var pagedInput = input as IIwbPagedRequest;
  209. // if (pagedInput == null)
  210. // {
  211. // return query;
  212. // }
  213. // if (!string.IsNullOrEmpty(pagedInput.KeyWords))
  214. // {
  215. // object keyWords = pagedInput.KeyWords;
  216. // LambdaObject obj = new LambdaObject()
  217. // {
  218. // FieldType = (LambdaFieldType)pagedInput.FieldType,
  219. // FieldName = pagedInput.KeyField,
  220. // FieldValue = keyWords,
  221. // ExpType = (LambdaExpType)pagedInput.ExpType
  222. // };
  223. // var exp = obj.GetExp<LawyerInfo>();
  224. // query = exp != null ? query.Where(exp) : query;
  225. // }
  226. // if (pagedInput.SearchList != null && pagedInput.SearchList.Count > 0)
  227. // {
  228. // List<LambdaObject> objList = new List<LambdaObject>();
  229. // foreach (var o in pagedInput.SearchList)
  230. // {
  231. // if (string.IsNullOrEmpty(o.KeyWords))
  232. // continue;
  233. // object keyWords = o.KeyWords;
  234. // objList.Add(new LambdaObject
  235. // {
  236. // FieldType = (LambdaFieldType)o.FieldType,
  237. // FieldName = o.KeyField,
  238. // FieldValue = keyWords,
  239. // ExpType = (LambdaExpType)o.ExpType
  240. // });
  241. // }
  242. // var exp = objList.GetExp<LawyerInfo>();
  243. // query = exp != null ? query.Where(exp) : query;
  244. // }
  245. // return query;
  246. //}
  247. //protected override IQueryable<LawyerInfo> ApplySorting(IQueryable<LawyerInfo> query, IwbPagedRequestDto input)
  248. //{
  249. // return query.OrderBy(a => a.No);
  250. //}
  251. //protected override IQueryable<LawyerInfo> ApplyPaging(IQueryable<LawyerInfo> query, IwbPagedRequestDto input)
  252. //{
  253. // if (input is IPagedResultRequest pagedInput)
  254. // {
  255. // return query.Skip(pagedInput.SkipCount).Take(pagedInput.MaxResultCount);
  256. // }
  257. // return query;
  258. //}
  259. #endregion
  260. #endregion
  261. /// <summary>
  262. /// 绑定账号
  263. /// </summary>
  264. /// <param name="input"></param>
  265. /// <returns></returns>
  266. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgBind),AuditLog("绑定账号")]
  267. public async Task Bind(BindDto input)
  268. {
  269. await LegalManager.BindLawyerAccount(input.LawyerNo, input.UserName);
  270. }
  271. /// <summary>
  272. /// 解绑账号
  273. /// </summary>
  274. /// <param name="input"></param>
  275. /// <returns></returns>
  276. [AbpAuthorize(PermissionNames.PagesLegalLawFirmMgLawyerMgUnBind),AuditLog("解绑账号")]
  277. public async Task UnBind(EntityDto<string> input)
  278. {
  279. await LegalManager.UnBindLawyerAccount(input.Id);
  280. }
  281. }
  282. }