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

- 在 AiProductCategoryController 中添加公司 ID 筛选
- 更新 AiProductCategoryService 接口,增加公司 ID 参数
- 实现 AiProductCategoryServiceImpl 中的公司 ID 筛选逻辑
-优化 categoryTree 和 parent 方法,支持公司 ID 筛选
3 files modified
52 ■■■■ changed files
src/main/java/cc/mrbird/febs/ai/controller/productCategory/AiProductCategoryController.java 11 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiProductCategoryService.java 6 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java 35 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/controller/productCategory/AiProductCategoryController.java
@@ -31,6 +31,8 @@
    @GetMapping("list")
    public FebsResponse list(AiProductCategory dto, QueryRequest request) {
        String companyId = getCurrentUserCompanyId();
        dto.setCompanyId(companyId);
        Map<String, Object> data = getDataTable(service.listInPage(dto, request));
        return new FebsResponse().success().data(data);
@@ -50,7 +52,8 @@
    @PostMapping("add")
    @ControllerEndpoint(operation = "新增", exceptionMessage = "操作失败")
    public FebsResponse add(@RequestBody @Valid AiProductCategory dto) {
        String companyId = getCurrentUserCompanyId();
        dto.setCompanyId(companyId);
        return service.add(dto);
    }
@@ -73,13 +76,15 @@
    @GetMapping(value = "/categoryTree")
    public FebsResponse categoryTree() {
        return new FebsResponse().success().data(service.categoryTree());
        String companyId = getCurrentUserCompanyId();
        return new FebsResponse().success().data(service.categoryTree(companyId));
    }
    @GetMapping("categoryTree/parent")
    @ControllerEndpoint(exceptionMessage = "获取分类失败")
    public List<AiProductCategory> parent(){
        return service.parent();
        String companyId = getCurrentUserCompanyId();
        return service.parent(companyId);
    }
}
src/main/java/cc/mrbird/febs/ai/service/AiProductCategoryService.java
@@ -25,7 +25,7 @@
     */
    AiProductCategory getById(String id);
    List<AiProductCategory> getList();
    List<AiProductCategory> getList(String companyId);
    Map<String, AiProductCategory> selectMapByIds(Set<String> collect);
@@ -39,7 +39,7 @@
    FebsResponse delete(String id);
    List<AiProductCategory> categoryTree();
    List<AiProductCategory> categoryTree(String companyId);
    List<AiProductCategory> parent();
    List<AiProductCategory> parent(String companyId);
}
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java
@@ -8,6 +8,7 @@
import cc.mrbird.febs.ai.util.UUID;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.exception.FebsException;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@@ -43,8 +44,11 @@
    }
    @Override
    public List<AiProductCategory> getList() {
    public List<AiProductCategory> getList(String companyId) {
        LambdaQueryWrapper<AiProductCategory> query = Wrappers.lambdaQuery(AiProductCategory.class);
        if (StrUtil.isNotEmpty(companyId)){
            query.eq(AiProductCategory::getCompanyId, companyId);
        }
        query.ne(AiProductCategory::getState, 2);
        query.eq(AiProductCategory::getLevel, ProductCategoryLevelEnum.LEVEL_ONE.getLevel());
        query.orderByDesc(AiProductCategory::getHotState);
@@ -106,6 +110,9 @@
        Page<AiProductCategory> page = new Page<>(request.getPageNum(), request.getPageSize());
        LambdaQueryWrapper<AiProductCategory> query = Wrappers.lambdaQuery(AiProductCategory.class);
        if (StrUtil.isNotEmpty(dto.getCompanyId())){
            query.eq(AiProductCategory::getCompanyId, dto.getCompanyId());
        }
        query.ne(AiProductCategory::getState, 2);
        query.orderByDesc(AiProductCategory::getHotState);
        query.orderByAsc(AiProductCategory::getSort);
@@ -175,6 +182,21 @@
    public FebsResponse update(AiProductCategory dto) {
        String id = dto.getId();
        AiProductCategory entity = this.getById(id);
        dto.setLevel(ProductCategoryLevelEnum.LEVEL_ONE.getLevel());
        String parentId = dto.getParentId();
        if (parentId.equals( id)){
            throw new FebsException("父类不能选择自己");
        }
        if (StrUtil.isNotEmpty(parentId)){
            AiProductCategory parent = this.getById(parentId);
            if (
                    ObjectUtil.isNotNull(parent)
                            && parent.getLevel() < ProductCategoryLevelEnum.LEVEL_TWO.getLevel()
            ){
                dto.setLevel(parent.getLevel() +1);
                dto.setParentId(parentId);
            }
        }
        if (ObjectUtil.isNotNull( entity)){
            this.update(null,
                    Wrappers.lambdaUpdate(AiProductCategory.class)
@@ -184,6 +206,8 @@
                            .set(AiProductCategory::getIconImg, dto.getIconImg())
                            .set(AiProductCategory::getSort, dto.getSort())
                            .set(AiProductCategory::getUpdatedTime, new Date())
                            .set(AiProductCategory::getParentId, dto.getParentId())
                            .set(AiProductCategory::getLevel, dto.getLevel())
                            .eq(AiProductCategory::getId, id)
            );
        }
@@ -206,14 +230,17 @@
    }
    @Override
    public List<AiProductCategory> categoryTree() {
        return this.getList() ;
    public List<AiProductCategory> categoryTree(String companyId) {
        return this.getList(companyId) ;
    }
    @Override
    public List<AiProductCategory> parent() {
    public List<AiProductCategory> parent(String companyId) {
        LambdaQueryWrapper<AiProductCategory> query = Wrappers.lambdaQuery(AiProductCategory.class);
        query.select(AiProductCategory::getId,AiProductCategory::getName);
        if (StrUtil.isNotEmpty(companyId)){
            query.eq(AiProductCategory::getCompanyId, companyId);
        }
        query.eq(AiProductCategory::getLevel, 1);
        query.ne(AiProductCategory::getState, 2);
        return this.getBaseMapper().selectList(query);