package com.klp.controller; import java.util.List; import java.util.Map; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import com.klp.common.annotation.Log; import com.klp.common.core.controller.BaseController; import com.klp.common.core.domain.R; import com.klp.common.enums.BusinessType; import com.klp.domain.bo.WmsSalesScriptGeneratorBo; import com.klp.domain.vo.WmsProductSalesScriptVo; import com.klp.service.IWmsSalesScriptGeneratorService; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; import javax.validation.constraints.NotNull; import javax.validation.constraints.NotEmpty; /** * 销售话术生成器 * * @author klp * @date 2025-01-27 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/wms/salesScriptGenerator") public class WmsSalesScriptGeneratorController extends BaseController { private final IWmsSalesScriptGeneratorService iWmsSalesScriptGeneratorService; /** * 为单个产品生成销售话术 */ @Log(title = "销售话术生成", businessType = BusinessType.INSERT) @PostMapping("/generateForProduct") public R> generateForProduct(@RequestBody WmsSalesScriptGeneratorBo bo) { List scripts = iWmsSalesScriptGeneratorService.generateScriptsForProduct(bo); return R.ok(scripts); } /** * 批量生成销售话术 */ @Log(title = "批量销售话术生成", businessType = BusinessType.INSERT) @PostMapping("/generateBatch") public R> generateBatch(@RequestBody WmsSalesScriptGeneratorBo bo) { Map result = iWmsSalesScriptGeneratorService.generateScriptsBatch(bo); return R.ok(result); } /** * 为指定产品ID列表生成话术 */ @Log(title = "指定产品话术生成", businessType = BusinessType.INSERT) @PostMapping("/generateForProductIds") public R> generateForProductIds(@RequestBody WmsSalesScriptGeneratorBo bo) { Map result = iWmsSalesScriptGeneratorService.generateScriptsForProductIds(bo); return R.ok(result); } /** * 测试AI连接 */ @GetMapping("/testConnection") public R> testConnection() { Map result = iWmsSalesScriptGeneratorService.testAiConnection(); return R.ok(result); } /** * 获取生成配置 */ @GetMapping("/config") public R> getConfig() { Map config = iWmsSalesScriptGeneratorService.getGenerationConfig(); return R.ok(config); } /** * 更新生成配置 */ @Log(title = "更新话术生成配置", businessType = BusinessType.UPDATE) @PostMapping("/config") public R updateConfig(@RequestBody Map config) { iWmsSalesScriptGeneratorService.updateGenerationConfig(config); return R.ok(); } /** * 获取可用的产品列表 */ @GetMapping("/availableProducts") public R>> getAvailableProducts() { List> products = iWmsSalesScriptGeneratorService.getAvailableProducts(); return R.ok(products); } /** * 获取生成历史 */ @GetMapping("/history") public TableDataInfo> getGenerationHistory(PageQuery pageQuery) { return iWmsSalesScriptGeneratorService.getGenerationHistory(pageQuery); } /** * 重新生成指定话术 */ @Log(title = "重新生成话术", businessType = BusinessType.UPDATE) @PostMapping("/regenerate/{scriptId}") public R regenerateScript(@NotNull(message = "话术ID不能为空") @PathVariable Long scriptId) { WmsProductSalesScriptVo script = iWmsSalesScriptGeneratorService.regenerateScript(scriptId); return R.ok(script); } /** * 预览话术生成(不保存到数据库) */ @PostMapping("/preview") public R>> previewScripts(@RequestBody WmsSalesScriptGeneratorBo bo) { List> previews = iWmsSalesScriptGeneratorService.previewScripts(bo); return R.ok(previews); } /** * 获取客户类型列表 */ @GetMapping("/customerTypes") public R>> getCustomerTypes() { List> customerTypes = iWmsSalesScriptGeneratorService.getCustomerTypes(); return R.ok(customerTypes); } /** * 获取产品特性关键词 */ @GetMapping("/featureKeywords") public R> getFeatureKeywords() { List keywords = iWmsSalesScriptGeneratorService.getFeatureKeywords(); return R.ok(keywords); } /** * 分析产品信息并生成话术建议 */ @PostMapping("/analyzeProduct") public R> analyzeProduct(@RequestBody WmsSalesScriptGeneratorBo bo) { Map analysis = iWmsSalesScriptGeneratorService.analyzeProduct(bo); return R.ok(analysis); } }