using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using OASystem.API.OAMethodLib.DeepSeekAPI; using OASystem.API.OAMethodLib.GenericSearch; using OASystem.Domain.Entities.Financial; using OASystem.Domain.Entities.Groups; using OASystem.Infrastructure.Repositories.System; namespace OASystem.API.Controllers { /// /// 搜索 /// [Route("api/search")] [ApiController] public class SearchController : ControllerBase { private readonly DynamicSearchService _groupSearchService; public SearchController( DynamicSearchService groupSearchService ) { _groupSearchService = groupSearchService; } /// /// 接团信息 单字段(团组名称)关键字输入提示 /// /// 关键字 /// [HttpGet("group/{keyword}")] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GroupKeywordSearch(string keyword) { try { // 验证请求参数 if (string.IsNullOrEmpty(keyword)) { return Ok(JsonView(true, $"暂无数据!")); } var searchRequest = new DynamicSearchRequest { Keyword = keyword, RequireAllSingleChars = true, PageIndex = 1, PageSize = 999999, FieldWeights = new Dictionary { { "TeamName", 10 }, //{ "ClientUnit", 8 }, //{ "ClientName", 6 } }, Filters = new List() { new(){Field = "IsDel",Operator="eq",Value="0" } }, OrderBy = "TeamName", ReturnFields = new List() { "TeamName" } }; // 验证字段配置 var validation = _groupSearchService.ValidateFieldConfig( searchRequest.FieldWeights, searchRequest.ReturnFields); if (!validation.IsValid) { return Ok(JsonView(true, $"暂无数据!{validation.Message}")); } var result = await _groupSearchService.SearchAsync(searchRequest); if (result.Success) { var data = result.Items.Select(x => new { x.Data.Id, x.Data.TeamName }).ToList(); return Ok(JsonView(true, result.Message, data, data.Count)); } return Ok(JsonView(true, result.Message)); } catch (Exception ex) { return Ok(JsonView(true, $"搜索服务暂时不可用!")); } } } }