Administrator
2025-09-16 c477b897db9991f5b0ad2d6d299ef7065466b862
feat(ai): 新增首页推荐V2 接口并优化相关功能

- 在 AiProductCategoryService 中添加 hotV2 方法
- 实现在 AiProductCategoryServiceImpl 中的 hotV2 方法,支持根据公司 ID 查询热门分类
- 在 ApiProductCategoryController 中添加 hotV2
3 files modified
42 ■■■■■ changed files
src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiProductCategoryService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java
@@ -37,7 +37,16 @@
        return aiProductCategoryService.hot();
    }
    @ApiOperation(value = "首页推荐(带公司ID)", notes = "首页推荐(带公司ID)")
    @ApiOperation(value = "学习首页推荐(带公司ID)", notes = "学习首页推荐(带公司ID)")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiProductCategoryVo.class)
    })
    @PostMapping(value = "/hotV2")
    public FebsResponse hotV2(@RequestBody ApiProductCategoryHotDto dto) {
        return aiProductCategoryService.hotV2(dto);
    }
    @ApiOperation(value = "培训首页推荐(带公司ID)", notes = "培训首页推荐(带公司ID)")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiProductCategoryVo.class)
    })
src/main/java/cc/mrbird/febs/ai/service/AiProductCategoryService.java
@@ -29,6 +29,8 @@
    FebsResponse hotV1(ApiProductCategoryHotDto dto);
    FebsResponse hotV2(ApiProductCategoryHotDto dto);
    FebsResponse categoryList(ApiProductCategoryPageDto dto);
    String getDefaultProductCategoryId();
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java
@@ -103,6 +103,35 @@
    }
    @Override
    public FebsResponse hotV2(ApiProductCategoryHotDto dto) {
        List<ApiProductCategoryVo> list = new ArrayList<>();
        LambdaQueryWrapper<AiProductCategory> query = Wrappers.lambdaQuery(AiProductCategory.class);
        if (StrUtil.isNotEmpty(dto.getCompanyId())){
            query.eq(AiProductCategory::getCompanyId, dto.getCompanyId());
        }else{
            query.isNull(AiProductCategory::getCompanyId);
        }
        query.eq(AiProductCategory::getLevel, ProductCategoryLevelEnum.LEVEL_ONE.getLevel());
        query.eq(AiProductCategory::getState, 1);
        query.eq(AiProductCategory::getHotState, 1);
        query.orderByAsc(AiProductCategory::getSort);
        List<AiProductCategory> listByQuery = this.getListByQuery(query);
        if (CollUtil.isNotEmpty(listByQuery)){
            for (AiProductCategory aiProductCategory : listByQuery){
                ApiProductCategoryVo apiProductCategoryVo = new ApiProductCategoryVo();
                apiProductCategoryVo.setId(aiProductCategory.getId());
                apiProductCategoryVo.setName(aiProductCategory.getName());
                apiProductCategoryVo.setBackImg(aiProductCategory.getBackImg());
                apiProductCategoryVo.setIconImg(aiProductCategory.getIconImg());
                list.add(apiProductCategoryVo);
            }
        }
        return new FebsResponse().success().data(list);
    }
    @Override
    public FebsResponse categoryList(ApiProductCategoryPageDto dto) {
        // 创建分页对象,传入当前页和每页大小
        Page<ApiProductCategoryVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());