package cc.mrbird.febs.yinhe.controller; import cc.mrbird.febs.ai.req.product.ApiProductInfoDto; import cc.mrbird.febs.ai.req.product.ApiProductPageDto; import cc.mrbird.febs.ai.res.product.ApiProductInfoVo; import cc.mrbird.febs.ai.res.product.ApiProductVo; import cc.mrbird.febs.ai.res.productPoint.ApiProductPointVo; import cc.mrbird.febs.ai.service.AiProductService; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.vo.MallMemberVo; import cc.mrbird.febs.yinhe.req.*; import cc.mrbird.febs.yinhe.res.*; import cc.mrbird.febs.yinhe.service.YhAiService; import cn.hutool.core.util.StrUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import reactor.core.publisher.Flux; import javax.servlet.http.HttpServletRequest; /** * @author Administrator */ @Slf4j @Validated @RestController @RequiredArgsConstructor @RequestMapping(value = "/api/yh/agent") @Api(value = "YHApiAgentController", tags = "AI-银和-智能体相关接口") public class YHApiAgentController { private final YhAiService service; @ApiOperation(value = "获取用户信息", notes = "获取用户信息") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = YHMemberVo.class) }) @GetMapping(value = "/memberInfo") public FebsResponse memberInfo() { return service.memberInfo(); } @ApiOperation(value = "公司-智能体分类", notes = "公司-智能体分类") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = YHCategoryVo.class) }) @PostMapping(value = "/categoryList") public FebsResponse categoryList(@RequestBody @Validated YHCategoryDto dto) { return service.categoryList(dto); } @ApiOperation(value = "公司-智能体", notes = "公司-智能体") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = YHAgentVo.class) }) @PostMapping(value = "/agentList") public FebsResponse agentList(@RequestBody @Validated YHAgentDto dto) { return service.agentList(dto); } @ApiOperation(value = "公司-智能体-查看详情", notes = "公司-智能体-查看详情") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = YHAgentInitVo.class) }) @PostMapping(value = "/agentInfo") public FebsResponse agentInfo(@RequestBody @Validated YHAgentInitDto dto) { return service.agentInfo(dto); } @ApiOperation(value = "首页-智能体分类", notes = "首页-智能体分类") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = YHSysCategoryVo.class) }) @PostMapping(value = "/categorySysList") public FebsResponse categoryList(@RequestBody @Validated YHSysCategoryDto dto) { return service.categorySysList(dto); } @ApiOperation(value = "首页-智能体", notes = "首页-智能体") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = YHSysAgentVo.class) }) @PostMapping(value = "/agentSysList") public FebsResponse agentList(@RequestBody @Validated YHSysAgentDto dto) { return service.agentSysList(dto); } @ApiOperation(value = "首页-智能体-查看详情", notes = "首页-智能体-查看详情") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = YHSysAgentInitVo.class) }) @PostMapping(value = "/agentSysInfo") public FebsResponse agentSysInfo(@RequestBody @Validated YHSysAgentInitDto dto) { return service.agentSysInfo(dto); } @ApiOperation(value = "退出", notes = "退出") @PostMapping(value = "/logout") public FebsResponse logout() { return service.logout(); } @ApiOperation(value = "初始化对话", notes = "初始化对话") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = YHSendInitVo.class) }) @PostMapping(value = "/initSend", produces = "application/json") public FebsResponse initSend(@RequestBody @Validated YHSendInitDto dto) { return service.initSend(dto); } @ApiOperation(value = "保存对话消息", notes = "保存对话消息") @PostMapping(value = "/saveContext") public FebsResponse saveContext(@RequestBody @Validated YHSaveContextDto dto) { return service.saveContext(dto); } @ApiOperation("AI回答(流式)") @ApiResponses({ @ApiResponse(code = 200, message = "流式响应", response = YHAitalkItemStreamVo.class), }) @PostMapping("/aiAnswer") public Flux aiAnswer(@RequestBody @Validated YHAitalkItemStreamDto dto) { if (StrUtil.isEmpty(dto.getTalkId()) || StrUtil.isEmpty(dto.getReqContext())|| StrUtil.isEmpty(dto.getReqContext())){ return Flux.just(new FebsResponse().fail().message("参数异常")); } return service.aiAnswer(dto); } }