From 78045ae6ac90cf5559922bca10f7f6e84fef5ff7 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 21 Oct 2025 14:04:15 +0800
Subject: [PATCH] feat(ai): 新增AI陪练分页查询功能

---
 src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java      |   18 ++++++++-
 src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java               |    2 +
 src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberTalkPageDto.java       |   27 +++++++++++++
 src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkService.java           |    5 ++
 src/main/java/cc/mrbird/febs/ai/controller/member/ApiMemberController.java |   10 +++++
 src/main/resources/mapper/modules/AiMemberAnswerMapper.xml                 |    1 
 src/main/java/cc/mrbird/febs/ai/res/member/ApiMemberTalkPageVo.java        |   26 +++++++++++++
 src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java  |    7 +++
 src/main/resources/mapper/modules/AiMemberTalkMapper.xml                   |   16 ++++++++
 src/main/java/cc/mrbird/febs/ai/mapper/AiMemberTalkMapper.java             |    4 ++
 src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberAnswerPageDto.java     |    3 +
 11 files changed, 117 insertions(+), 2 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/controller/member/ApiMemberController.java b/src/main/java/cc/mrbird/febs/ai/controller/member/ApiMemberController.java
index dfc495f..61a9470 100644
--- a/src/main/java/cc/mrbird/febs/ai/controller/member/ApiMemberController.java
+++ b/src/main/java/cc/mrbird/febs/ai/controller/member/ApiMemberController.java
@@ -49,6 +49,16 @@
         return aiMemberService.practice(dto);
     }
 
+    @ApiOperation(value = "Ai陪练分页查询", notes = "Ai陪练分页查询")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiMemberTalkPageVo.class)
+    })
+    @PostMapping(value = "/talkPage")
+    public FebsResponse talkPage(@RequestBody @Validated ApiMemberTalkPageDto dto) {
+
+        return aiMemberService.talkPage(dto);
+    }
+
     @ApiOperation(value = "题目练习分页查询", notes = "题目练习分页查询")
     @ApiResponses({
             @ApiResponse(code = 200, message = "success", response = ApiMemberAnswerPageVo.class)
diff --git a/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberTalkMapper.java b/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberTalkMapper.java
index 8a6b08b..daad781 100644
--- a/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberTalkMapper.java
+++ b/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberTalkMapper.java
@@ -1,7 +1,9 @@
 package cc.mrbird.febs.ai.mapper;
 
 import cc.mrbird.febs.ai.entity.AiMemberTalk;
+import cc.mrbird.febs.ai.req.member.ApiMemberTalkPageDto;
 import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkListDto;
+import cc.mrbird.febs.ai.res.member.ApiMemberTalkPageVo;
 import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkListVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -17,4 +19,6 @@
 public interface AiMemberTalkMapper extends BaseMapper<AiMemberTalk> {
 
     IPage<ApiMemberTalkListVo> getPageByDto(Page<ApiMemberTalkListVo> page, @Param("record")ApiMemberTalkListDto dto);
+
+    Page<ApiMemberTalkPageVo> getTalkPage(Page<ApiMemberTalkPageVo> page, @Param("record")ApiMemberTalkPageDto dto);
 }
diff --git a/src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberAnswerPageDto.java b/src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberAnswerPageDto.java
index e2e7232..89eca68 100644
--- a/src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberAnswerPageDto.java
+++ b/src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberAnswerPageDto.java
@@ -23,4 +23,7 @@
     @ApiModelProperty(value = "会员ID", example = "10")
     private String memberUuid;
 
+    @ApiModelProperty(hidden = true)
+    private String companyId;
+
 }
diff --git a/src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberTalkPageDto.java b/src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberTalkPageDto.java
new file mode 100644
index 0000000..e20090d
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/ai/req/member/ApiMemberTalkPageDto.java
@@ -0,0 +1,27 @@
+package cc.mrbird.febs.ai.req.member;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+@Data
+@ApiModel(value = "ApiMemberTalkPageDto", description = "参数")
+public class ApiMemberTalkPageDto {
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNow;
+
+    @NotNull(message = "每页数量不能为空")
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private Integer pageSize;
+
+    @NotBlank(message = "会员ID不能为空")
+    @ApiModelProperty(value = "会员ID", example = "10")
+    private String memberUuid;
+
+    @ApiModelProperty(hidden = true)
+    private String companyId;
+}
diff --git a/src/main/java/cc/mrbird/febs/ai/res/member/ApiMemberTalkPageVo.java b/src/main/java/cc/mrbird/febs/ai/res/member/ApiMemberTalkPageVo.java
new file mode 100644
index 0000000..b744f8c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/ai/res/member/ApiMemberTalkPageVo.java
@@ -0,0 +1,26 @@
+package cc.mrbird.febs.ai.res.member;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value = "ApiMemberTalkPageVo", description = "参数")
+public class ApiMemberTalkPageVo {
+
+    @ApiModelProperty(value = "答题ID")
+    private String id;
+
+    @ApiModelProperty(value = "时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "目标")
+    private String target;
+}
diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java b/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java
index 41bb61b..691156b 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java
@@ -15,6 +15,8 @@
 
     FebsResponse study(ApiMemberTeamStudyDto dto);
 
+    FebsResponse talkPage(ApiMemberTalkPageDto dto);
+
     FebsResponse answerPage(ApiMemberAnswerPageDto dto);
 
     FebsResponse answerInfo(ApiMemberAnswerInfoDto dto);
diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkService.java b/src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkService.java
index e26fed0..71363a4 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkService.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkService.java
@@ -1,14 +1,17 @@
 package cc.mrbird.febs.ai.service;
 
 import cc.mrbird.febs.ai.entity.AiMemberTalk;
+import cc.mrbird.febs.ai.req.member.ApiMemberTalkPageDto;
 import cc.mrbird.febs.ai.req.memberTalk.*;
 import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkListDto;
 import cc.mrbird.febs.ai.res.ai.AiResponse;
+import cc.mrbird.febs.ai.res.member.ApiMemberTalkPageVo;
 import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkListVo;
 import cc.mrbird.febs.ai.res.memberTalk.ApiTalkMemberListVo;
 import cc.mrbird.febs.common.entity.FebsResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import reactor.core.publisher.Flux;
 
@@ -50,4 +53,6 @@
     List<AiMemberTalk> getListByCompanyIdAndMemberUuid(String companyId, String memberUuid);
 
     IPage<ApiMemberTalkListVo> getPageByDto(ApiMemberTalkListDto dto);
+
+    Page<ApiMemberTalkPageVo> getTalkPage(Page<ApiMemberTalkPageVo> page, ApiMemberTalkPageDto dto);
 }
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
index 211e6bf..29deac0 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
@@ -287,13 +287,27 @@
     }
 
     @Override
+    public FebsResponse talkPage(ApiMemberTalkPageDto dto) {
+
+        String companyId = LoginUserUtil.getLoginUser().getCompanyId();
+        dto.setCompanyId(companyId);
+        // 创建分页对象,传入当前页和每页大小
+        Page<ApiMemberTalkPageVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+        Page<ApiMemberTalkPageVo> pages = aiMemberTalkService.getTalkPage(page, dto);
+
+        return new FebsResponse().success().data(pages);
+    }
+
+    @Override
     public FebsResponse answerPage(ApiMemberAnswerPageDto dto) {
 
+        String companyId = LoginUserUtil.getLoginUser().getCompanyId();
+        dto.setCompanyId(companyId);
         // 创建分页对象,传入当前页和每页大小
         Page<ApiMemberAnswerPageVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
-        Page<ApiMemberAnswerPageVo> aiMemberAnswerPage = aiMemberAnswerService.getAnswerPage(page, dto);
+        Page<ApiMemberAnswerPageVo> pages = aiMemberAnswerService.getAnswerPage(page, dto);
 
-        return new FebsResponse().success().data(aiMemberAnswerPage);
+        return new FebsResponse().success().data(pages);
     }
 
     @Override
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java
index f6f7618..c30e579 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java
@@ -7,9 +7,11 @@
 import cc.mrbird.febs.ai.mapper.AiMemberTalkMapper;
 import cc.mrbird.febs.ai.req.ai.AiMessage;
 import cc.mrbird.febs.ai.req.ai.AiRequest;
+import cc.mrbird.febs.ai.req.member.ApiMemberTalkPageDto;
 import cc.mrbird.febs.ai.req.memberTalk.*;
 import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkListDto;
 import cc.mrbird.febs.ai.res.ai.AiResponse;
+import cc.mrbird.febs.ai.res.member.ApiMemberTalkPageVo;
 import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkListVo;
 import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkReloadVo;
 import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkVo;
@@ -327,4 +329,9 @@
         return aiMemberTalkMapper.getPageByDto(page, dto);
     }
 
+    @Override
+    public Page<ApiMemberTalkPageVo> getTalkPage(Page<ApiMemberTalkPageVo> page, ApiMemberTalkPageDto dto) {
+        return aiMemberTalkMapper.getTalkPage(page, dto);
+    }
+
 }
diff --git a/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml b/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
index 659582b..03afeb3 100644
--- a/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
+++ b/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
@@ -38,6 +38,7 @@
         left join ai_product b on a.product_id = b.id and b.state = 1
         where a.member_id = #{record.memberUuid}
           and a.state = 1
+          and a.company_id = #{record.companyId}
         group by a.product_id
         order by a.CREATED_TIME desc
     </select>
diff --git a/src/main/resources/mapper/modules/AiMemberTalkMapper.xml b/src/main/resources/mapper/modules/AiMemberTalkMapper.xml
index 44bb80c..bc08ecd 100644
--- a/src/main/resources/mapper/modules/AiMemberTalkMapper.xml
+++ b/src/main/resources/mapper/modules/AiMemberTalkMapper.xml
@@ -17,4 +17,20 @@
         order by a.CREATED_TIME desc
     </select>
 
+    <select id="getTalkPage" resultType="cc.mrbird.febs.ai.res.member.ApiMemberTalkPageVo">
+        select
+        a.ID as id,
+        b.name as name,
+        b.target as target,
+        a.CREATED_TIME as createdTime
+        from ai_member_talk a
+        left join ai_product b on a.product_id = b.id
+        <where>
+            and a.member_id = #{record.memberUuid}
+            and a.company_id = #{record.companyId}
+            and a.state = 1
+        </where>
+        order by a.CREATED_TIME desc
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1