- 新增从指定目录批量导入Excel数据到CmsContent的功能 - 添加ImportPathDto请求参数实体类 - 实现importFromPath方法支持目录遍历和文件批量导入 - 添加truncateTable方法用于清空表数据 - 优化Excel导入逻辑增加异常处理和空值检查 - 调整批量处理大小从100改为10 - 更新审核状态和发布状态的描述文案 - 修复分享次数和官方标识字段的默认值设置 - 将Servlet API从javax迁移到jakarta - 更新README.md完善项目文档 - 优化技能解析逻辑支持多层级目录结构 - 修复AI模型生成中的标签选择和参数验证问题
107 lines
3.6 KiB
Java
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());
|
|
}
|
|
}
|
|
}
|