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