Administrator
11 hours ago 9b3f0e0c496871e9bc633bafe2512cace82dd5e2
feat(ai):为成员团队练习和学习接口添加分页功能

- 在 `AiMemberServiceImpl` 中替换原有的查询方式,使用 MyBatis Plus 的分页查询
- 增加对 `AiMemberTalk` 和 `AiMemberPoint` 查询的分页支持,并过滤状态为已完成的数据
- 在 `ApiMemberTeamPracticeDto` 和 `ApiMemberTeamStudyDto` 中新增 `pageNow` 和 `pageSize` 字段
- 添加字段校验注解,确保分页参数不为空
- 引入 `AiTypeEnum` 枚举用于状态判断
3 files modified
43 ■■■■■ changed files
src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberTeamPracticeDto.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberTeamStudyDto.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberTeamPracticeDto.java
@@ -5,11 +5,20 @@
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(value = "ApiMemberTeamPracticeDto", description = "参数")
public class ApiMemberTeamPracticeDto {
    @NotNull(message = "页码不能为空")
    @ApiModelProperty(value = "页码", example = "1")
    private Integer pageNow;
    @NotNull(message = "每页数量不能为空")
    @ApiModelProperty(value = "每页数量", example = "10")
    private Integer pageSize;
    @NotBlank(message = "用户ID不能为空")
    @ApiModelProperty(value = "用户ID")
    private String memberUuid;
src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberTeamStudyDto.java
@@ -5,11 +5,20 @@
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(value = "ApiMemberTeamStudyDto", description = "参数")
public class ApiMemberTeamStudyDto {
    @NotNull(message = "页码不能为空")
    @ApiModelProperty(value = "页码", example = "1")
    private Integer pageNow;
    @NotNull(message = "每页数量不能为空")
    @ApiModelProperty(value = "每页数量", example = "10")
    private Integer pageSize;
    @NotBlank(message = "用户ID不能为空")
    @ApiModelProperty(value = "用户ID")
    private String memberUuid;
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
@@ -1,6 +1,7 @@
package cc.mrbird.febs.ai.service.impl;
import cc.mrbird.febs.ai.entity.*;
import cc.mrbird.febs.ai.enumerates.AiTypeEnum;
import cc.mrbird.febs.ai.mapper.AiMemberMapper;
import cc.mrbird.febs.ai.req.member.ApiMemberTeamPageDto;
import cc.mrbird.febs.ai.req.member.ApiMemberTeamPracticeDto;
@@ -158,7 +159,17 @@
        String companyId = LoginUserUtil.getLoginUser().getCompanyId();
        String memberUuid = dto.getMemberUuid();
        List<AiMemberTalk> aiMemberTalks = aiMemberTalkService.getListByCompanyIdAndMemberUuid(companyId, memberUuid);
        // 创建分页对象,传入当前页和每页大小
        Page<AiMemberTalk> page = new Page<>(dto.getPageNow(), dto.getPageSize());
        LambdaQueryWrapper<AiMemberTalk> queryWrapper = Wrappers.lambdaQuery(AiMemberTalk.class);
        queryWrapper.eq(AiMemberTalk::getCompanyId, companyId);
        queryWrapper.eq(AiMemberTalk::getMemberId, memberUuid);
        queryWrapper.eq(AiMemberTalk::getState, AiTypeEnum.AI_MEMBER_TALK_STATE_DONE.getCode());
        Page<AiMemberTalk> pageListByQuery = aiMemberTalkService.getBaseMapper().selectPage(page, queryWrapper);
        List<AiMemberTalk> aiMemberTalks = pageListByQuery.getRecords();
//        List<AiMemberTalk> aiMemberTalks = aiMemberTalkService.getListByCompanyIdAndMemberUuid(companyId, memberUuid);
        Map<String, List<AiMemberTalk>> aiMemberTalkMap = new HashMap<>();
        if (CollUtil.isNotEmpty(aiMemberTalks)){
            //stream操作aiMemberTalks,返回一个根据productId分组的集合
@@ -226,7 +237,17 @@
        String companyId = LoginUserUtil.getLoginUser().getCompanyId();
        String memberUuid = dto.getMemberUuid();
        List<AiMemberPoint> aiMemberPoints = aiMemberPointService.getListByCompanyIdAndMemberUuid(companyId, memberUuid);
        // 创建分页对象,传入当前页和每页大小
        Page<AiMemberPoint> page = new Page<>(dto.getPageNow(), dto.getPageSize());
        LambdaQueryWrapper<AiMemberPoint> queryWrapper = Wrappers.lambdaQuery(AiMemberPoint.class);
        queryWrapper.eq(AiMemberPoint::getCompanyId, companyId);
        queryWrapper.eq(AiMemberPoint::getMemberId, memberUuid);
        Page<AiMemberPoint> pageListByQuery = aiMemberPointService.getBaseMapper().selectPage(page, queryWrapper);
        List<AiMemberPoint> aiMemberPoints = pageListByQuery.getRecords();
//        List<AiMemberPoint> aiMemberPoints = aiMemberPointService.getListByCompanyIdAndMemberUuid(companyId, memberUuid);
        if (CollUtil.isEmpty(aiMemberPoints)){
            return new FebsResponse().success().data(vos);
        }