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, $"搜索服务暂时不可用!"));
}
}
}
}