SearchController.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using OASystem.API.OAMethodLib.DeepSeekAPI;
  4. using OASystem.API.OAMethodLib.GenericSearch;
  5. using OASystem.Domain.Entities.Financial;
  6. using OASystem.Domain.Entities.Groups;
  7. using OASystem.Infrastructure.Repositories.System;
  8. namespace OASystem.API.Controllers
  9. {
  10. /// <summary>
  11. /// 搜索
  12. /// </summary>
  13. [Route("api/search")]
  14. [ApiController]
  15. public class SearchController : ControllerBase
  16. {
  17. private readonly DynamicSearchService<Grp_DelegationInfo> _groupSearchService;
  18. public SearchController(
  19. DynamicSearchService<Grp_DelegationInfo> groupSearchService
  20. )
  21. {
  22. _groupSearchService = groupSearchService;
  23. }
  24. /// <summary>
  25. /// 接团信息 单字段(团组名称)关键字输入提示
  26. /// </summary>
  27. /// <param name="keyword">关键字</param>
  28. /// <returns></returns>
  29. [HttpGet("group/{keyword}")]
  30. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  31. public async Task<IActionResult> GroupKeywordSearch(string keyword)
  32. {
  33. try
  34. {
  35. // 验证请求参数
  36. if (string.IsNullOrEmpty(keyword))
  37. {
  38. return Ok(JsonView(true, $"暂无数据!"));
  39. }
  40. var searchRequest = new DynamicSearchRequest
  41. {
  42. Keyword = keyword,
  43. RequireAllSingleChars = true,
  44. PageIndex = 1,
  45. PageSize = 999999,
  46. FieldWeights = new Dictionary<string, int>
  47. {
  48. { "TeamName", 10 },
  49. //{ "ClientUnit", 8 },
  50. //{ "ClientName", 6 }
  51. },
  52. Filters = new List<SearchFilter>()
  53. {
  54. new(){Field = "IsDel",Operator="eq",Value="0" }
  55. },
  56. OrderBy = "TeamName",
  57. ReturnFields = new List<string>() { "TeamName" }
  58. };
  59. // 验证字段配置
  60. var validation = _groupSearchService.ValidateFieldConfig(
  61. searchRequest.FieldWeights,
  62. searchRequest.ReturnFields);
  63. if (!validation.IsValid)
  64. {
  65. return Ok(JsonView(true, $"暂无数据!{validation.Message}"));
  66. }
  67. var result = await _groupSearchService.SearchAsync(searchRequest);
  68. if (result.Success)
  69. {
  70. var data = result.Items.Select(x => new { x.Data.Id, x.Data.TeamName }).ToList();
  71. return Ok(JsonView(true, result.Message, data, data.Count));
  72. }
  73. return Ok(JsonView(true, result.Message));
  74. }
  75. catch (Exception ex)
  76. {
  77. return Ok(JsonView(true, $"搜索服务暂时不可用!"));
  78. }
  79. }
  80. }
  81. }