UniversalCustomerService.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. namespace Admin.NET.Plugin.AiDOP.Universal;
  2. /// <summary>
  3. /// 通用客户选择服务 🏢
  4. /// 路由前缀:/api/Universal
  5. /// </summary>
  6. [ApiDescriptionSettings(Order = 280, Description = "通用-客户选择")]
  7. [Route("api/Universal")]
  8. [AllowAnonymous]
  9. [NonUnify]
  10. public class UniversalCustomerService : IDynamicApiController, ITransient
  11. {
  12. private readonly SqlSugarRepository<CustMaster> _custRep;
  13. private readonly UserManager _userManager;
  14. public UniversalCustomerService(SqlSugarRepository<CustMaster> custRep, UserManager userManager)
  15. {
  16. _custRep = custRep;
  17. _userManager = userManager;
  18. }
  19. /// <summary>获取客户选择分页列表 🏢</summary>
  20. [DisplayName("获取客户选择列表")]
  21. [HttpGet("customer/page")]
  22. public async Task<object> GetCustomerPage([FromQuery] UniversalCustomerPageInput input)
  23. {
  24. var tenantId = _userManager.TenantId;
  25. var query = _custRep.AsQueryable()
  26. .Where(u => u.TenantId == tenantId)
  27. .WhereIF(!string.IsNullOrWhiteSpace(input.CustNo), u => u.Cust!.Contains(input.CustNo!.Trim()))
  28. .WhereIF(!string.IsNullOrWhiteSpace(input.SortName), u => u.SortName!.Contains(input.SortName!.Trim()));
  29. bool isDesc = string.Equals(input.SortOrder, "desc", StringComparison.OrdinalIgnoreCase);
  30. query = (input.SortField?.ToLower()) switch
  31. {
  32. "sortname" => isDesc ? query.OrderByDescending(u => u.SortName) : query.OrderBy(u => u.SortName),
  33. _ => isDesc ? query.OrderByDescending(u => u.Cust) : query.OrderBy(u => u.Cust),
  34. };
  35. var paged = await query
  36. .Select(u => new UniversalCustomerOutput
  37. {
  38. Cust = u.Cust,
  39. SortName = u.SortName,
  40. Id = u.RecID.ToString(),
  41. })
  42. .ToPagedListAsync(input.Page, input.PageSize);
  43. return new { total = paged.Total, page = input.Page, pageSize = input.PageSize, list = paged.Items };
  44. }
  45. }