Administrator
2025-09-15 5f366e546806a5690ff7a5770857048663e4521a
feat(ai): 增加公司 ID 筛选功能

- 在 AiProductQuestionAiDto 中添加 companyId 字段
- 在列表、新增、AI 生成题目和题库树接口中增加公司 ID筛选
- 修改服务层和实现层以支持公司 ID筛选功能
4 files modified
29 ■■■■ changed files
src/main/java/cc/mrbird/febs/ai/controller/productQuestion/AiProductQuestionController.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/req/AiProductQuestionAiDto.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java 16 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/controller/productQuestion/AiProductQuestionController.java
@@ -30,6 +30,8 @@
    @GetMapping("list")
    public FebsResponse list(AiProductQuestion dto, QueryRequest request) {
        String companyId = getCurrentUserCompanyId();
        dto.setCompanyId(companyId);
        Map<String, Object> data = getDataTable(aiProductQuestionService.listInPage(dto, request));
        return new FebsResponse().success().data(data);
@@ -49,6 +51,8 @@
    @ControllerEndpoint(operation = "新增", exceptionMessage = "操作失败")
    public FebsResponse add(@RequestBody @Valid AiProductQuestion dto) {
        String companyId = getCurrentUserCompanyId();
        dto.setCompanyId(companyId);
        return aiProductQuestionService.add(dto);
    }
@@ -56,6 +60,8 @@
    @ControllerEndpoint(operation = "AI生成题目", exceptionMessage = "操作失败")
    public FebsResponse aiAdd(@RequestBody @Valid AiProductQuestionAiDto dto) {
        String companyId = getCurrentUserCompanyId();
        dto.setCompanyId(companyId);
        return aiProductQuestionService.aiAdd(dto);
    }
@@ -78,6 +84,8 @@
    @GetMapping(value = "/questionTree")
    public FebsResponse questionTree() {
        return new FebsResponse().success().data(aiProductQuestionService.questionTree());
        String companyId = getCurrentUserCompanyId();
        return new FebsResponse().success().data(aiProductQuestionService.questionTree(companyId));
    }
}
src/main/java/cc/mrbird/febs/ai/req/AiProductQuestionAiDto.java
@@ -4,6 +4,7 @@
@Data
public class AiProductQuestionAiDto {
    private String companyId;
    private String productCategoryId;
src/main/java/cc/mrbird/febs/ai/service/AiProductQuestionService.java
@@ -35,7 +35,7 @@
    FebsResponse delete(String id);
    List<AiProductQuestion> questionTree();
    List<AiProductQuestion> questionTree(String companyId);
    List<AiProductQuestion> productQuestionTree(LambdaQueryWrapper<AiProductQuestion> aiProductQuestionLambdaQueryWrapper);
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductQuestionServiceImpl.java
@@ -11,6 +11,7 @@
import cc.mrbird.febs.common.entity.QueryRequest;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
@@ -55,6 +56,9 @@
    public IPage<AiProductQuestion> listInPage(AiProductQuestion dto, QueryRequest request) {
        Page<AiProductQuestion> page = new Page<>(request.getPageNum(), request.getPageSize());
        LambdaQueryWrapper<AiProductQuestion> query = Wrappers.lambdaQuery(AiProductQuestion.class);
        if (StrUtil.isNotEmpty(dto.getCompanyId())){
            query.eq(AiProductQuestion::getCompanyId, dto.getCompanyId());
        }
        query.ne(AiProductQuestion::getState, 2);
        Page<AiProductQuestion> pages = aiProductQuestionMapper.selectPage(page, query);
        return pages;
@@ -99,6 +103,7 @@
        for (AiProductQuestionItem item : dto.getAiProductQuestionItems()){
            item.setId(UUID.getSimpleUUIDString());
            item.setProductQuestionId(entity.getId());
            item.setCompanyId(dto.getCompanyId());
            item.setTitle(entity.getTitle());
            item.setCreatedTime(new Date());
            aiProductQuestionItemService.getBaseMapper().insert(item);
@@ -125,7 +130,6 @@
        if (ObjectUtil.isNotNull( entity)){
            this.update(null,
                    Wrappers.lambdaUpdate(AiProductQuestion.class)
                            .set(AiProductQuestion::getCompanyId, dto.getCompanyId())
                            .set(AiProductQuestion::getProductCategoryId, dto.getProductCategoryId())
                            .set(AiProductQuestion::getTitle, dto.getTitle())
                            .set(AiProductQuestion::getDifficulty, dto.getDifficulty())
@@ -161,9 +165,13 @@
    }
    @Override
    public List<AiProductQuestion> questionTree() {
    public List<AiProductQuestion> questionTree(String companyId) {
        LambdaQueryWrapper<AiProductQuestion> query = Wrappers.lambdaQuery(AiProductQuestion.class);
        if (StrUtil.isNotEmpty(companyId)){
            query.eq(AiProductQuestion::getCompanyId, companyId);
        }
        return aiProductQuestionMapper.selectList(null);
        return aiProductQuestionMapper.selectList(query);
    }
    @Override
@@ -190,6 +198,7 @@
            AiProductQuestion aiProductQuestion = new AiProductQuestion();
            aiProductQuestion.setId(UUID.getSimpleUUIDString());
            aiProductQuestion.setCompanyId(dto.getCompanyId());
            aiProductQuestion.setProductCategoryId(productCategoryId);
            aiProductQuestion.setTitle(title);
            aiProductQuestion.setDifficulty(difficulty);
@@ -205,6 +214,7 @@
                System.out.println("分析: " + answer.getStr("analysis"));
                AiProductQuestionItem aiProductQuestionItem = new AiProductQuestionItem();
                aiProductQuestionItem.setId(UUID.getSimpleUUIDString());
                aiProductQuestionItem.setCompanyId(dto.getCompanyId());
                aiProductQuestionItem.setProductQuestionId(aiProductQuestion.getId());
                aiProductQuestionItem.setTitle(aiProductQuestion.getTitle());
                aiProductQuestionItem.setAnswer(answer.getStr("answer"));