sxwz2.0/src/main/java/com/kexue/skills/controller/SkillGenController.java
wangzhiwei 3df611f809 feat(content): 添加从目录导入Excel功能并优化内容管理
- 新增从指定目录批量导入Excel数据到CmsContent的功能
- 添加ImportPathDto请求参数实体类
- 实现importFromPath方法支持目录遍历和文件批量导入
- 添加truncateTable方法用于清空表数据
- 优化Excel导入逻辑增加异常处理和空值检查
- 调整批量处理大小从100改为10
- 更新审核状态和发布状态的描述文案
- 修复分享次数和官方标识字段的默认值设置
- 将Servlet API从javax迁移到jakarta
- 更新README.md完善项目文档
- 优化技能解析逻辑支持多层级目录结构
- 修复AI模型生成中的标签选择和参数验证问题
2026-03-23 11:38:20 +08:00

107 lines
3.6 KiB
Java

package com.kexue.skills.controller;
import com.alibaba.fastjson.JSONObject;
import com.kexue.skills.common.CommonResult;
import com.kexue.skills.entity.CmsContent;
import com.kexue.skills.entity.request.GenIntroduceRequest;
import com.kexue.skills.entity.request.SkillGenRequest;
import com.kexue.skills.entity.request.SkillPreGenRequest;
import com.kexue.skills.entity.request.SkillUploadDto;
import com.kexue.skills.entity.response.SkillResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
/**
* 技能生成控制器
*
* @author 维哥
* @since 2026-01-28
*/
@RestController
@RequestMapping("api/skillGen")
@Tag(name = "技能生成 Api")
@CrossOrigin(origins = "*")
public class SkillGenController {
@Resource
private com.kexue.skills.service.SkillGenService skillGenService;
/**
* 生成技能
*
* @param request 生成请求
* @return 生成结果
*/
@PostMapping("/preGenerate")
@Operation(summary = "预生成技能", description = "生成技能")
public CommonResult<SkillResponse> preGenerate(@RequestBody SkillPreGenRequest request) {
return CommonResult.success(skillGenService.preGenerateV2(request));
}
@PostMapping("/generate")
@Operation(summary = "生成技能", description = "生成技能")
public CommonResult<CmsContent> generate(@RequestBody SkillGenRequest request) {
return CommonResult.success(skillGenService.generate(request));
}
/**
* 分析技能
*
* @param request 分析请求
* @return 分析结果
*/
@PostMapping("/analyze")
@Operation(summary = "分析技能", description = "分析技能")
public CommonResult<String> analyze(@RequestBody com.kexue.skills.entity.request.SkillAnalyzeRequest request) {
return CommonResult.success(skillGenService.analyzeSkill(request));
}
/**
* 生成技能介绍
*
* @param request 技能内容
* @return 技能介绍
*/
@PostMapping("/genIntroduce")
@Operation(summary = "生成技能介绍", description = "生成技能介绍")
public CommonResult<String> genIntroduce(@RequestBody GenIntroduceRequest request) {
return CommonResult.success(skillGenService.genIntroduce(request.getContent()));
}
/**
* 上传技能压缩包
*
* @param skillUploadDto 技能压缩包URL
* @return 生成的技能内容
*/
@PostMapping("/uploadSkill")
@Operation(summary = "上传技能压缩包", description = "上传技能压缩包并生成技能")
public CommonResult<CmsContent> uploadSkill(@RequestBody SkillUploadDto skillUploadDto) {
return CommonResult.success(skillGenService.uploadSkill(skillUploadDto.getUrl()));
}
/**
* 上传本地技能压缩包V2
*
* @param file 技能压缩包文件
* @return 生成的技能内容
*/
@PostMapping("/uploadSkillV2")
@Operation(summary = "上传本地技能压缩包V2", description = "上传本地zip或rar文件并生成技能")
public CommonResult<CmsContent> uploadSkillV2(
@RequestParam("file") MultipartFile file) {
try {
byte[] fileBytes = file.getBytes();
String fileName = file.getOriginalFilename();
CmsContent cmsContent = skillGenService.uploadSkillV2(fileBytes, fileName);
return CommonResult.success(cmsContent);
} catch (Exception e) {
return CommonResult.failed("上传失败:" + e.getMessage());
}
}
}