From cba91796368ab184d921ac59bba5cfac90c25436 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 21 Aug 2025 10:29:11 +0800
Subject: [PATCH] feat(ai): 添加我的训练功能- 新增 ApiMemberProductWorkPageDto 和 ApiMemberProductWorkVo 类 - 在 AiMemberAnswerMapper 中添加 getPageMyWorkListByQuery 方法 - 在 AiMemberAnswerService 中添加 myWork 方法 - 在 AiMemberAnswerController 中添加 myWork接口

---
 src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java                     |    2 +
 src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java            |   11 +++++
 src/main/java/cc/mrbird/febs/ai/controller/memberAnswer/ApiMemberAnswerController.java |   10 +++++
 src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java                       |    5 ++
 src/main/resources/mapper/modules/AiMemberAnswerMapper.xml                             |   21 ++++++++++
 src/main/java/cc/mrbird/febs/ai/req/memberAnswer/ApiMemberProductWorkPageDto.java      |   29 ++++++++++++++
 src/main/java/cc/mrbird/febs/ai/res/memberAnswer/ApiMemberProductWorkVo.java           |   33 ++++++++++++++++
 7 files changed, 111 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/controller/memberAnswer/ApiMemberAnswerController.java b/src/main/java/cc/mrbird/febs/ai/controller/memberAnswer/ApiMemberAnswerController.java
index e3c6dec..b589fc0 100644
--- a/src/main/java/cc/mrbird/febs/ai/controller/memberAnswer/ApiMemberAnswerController.java
+++ b/src/main/java/cc/mrbird/febs/ai/controller/memberAnswer/ApiMemberAnswerController.java
@@ -92,4 +92,14 @@
 
         return apiMemberAnswerService.wrongPage(dto);
     }
+
+    @ApiOperation(value = "我的训练", notes = "我的训练")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiMemberProductWorkVo.class)
+    })
+    @PostMapping(value = "/myWork")
+    public FebsResponse myWork(@RequestBody @Validated ApiMemberProductWorkPageDto dto) {
+
+        return apiMemberAnswerService.myWork(dto);
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java b/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java
index 6fa6188..041afbd 100644
--- a/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java
+++ b/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java
@@ -1,7 +1,11 @@
 package cc.mrbird.febs.ai.mapper;
 
 import cc.mrbird.febs.ai.entity.AiMemberAnswer;
+import cc.mrbird.febs.ai.req.memberAnswer.ApiMemberProductWorkPageDto;
+import cc.mrbird.febs.ai.res.memberAnswer.ApiMemberProductWorkVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * AI用户答题记录 Mapper接口
@@ -11,4 +15,5 @@
  */
 public interface AiMemberAnswerMapper extends BaseMapper<AiMemberAnswer> {
 
+    Page<ApiMemberProductWorkVo> getPageMyWorkListByQuery(Page<ApiMemberProductWorkVo> page,  @Param("record")ApiMemberProductWorkPageDto dto);
 }
diff --git a/src/main/java/cc/mrbird/febs/ai/req/memberAnswer/ApiMemberProductWorkPageDto.java b/src/main/java/cc/mrbird/febs/ai/req/memberAnswer/ApiMemberProductWorkPageDto.java
new file mode 100644
index 0000000..493be87
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/ai/req/memberAnswer/ApiMemberProductWorkPageDto.java
@@ -0,0 +1,29 @@
+package cc.mrbird.febs.ai.req.memberAnswer;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author Administrator
+ */
+@Data
+@ApiModel(value = "ApiMemberProductWorkPageDto", description = "参数")
+public class ApiMemberProductWorkPageDto {
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNow;
+
+    @NotNull(message = "每页数量不能为空")
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "状态 0-进行中 1-已结束", example = "0")
+    private Integer state;
+
+    @ApiModelProperty(hidden = true)
+    private String memberUuid;
+}
diff --git a/src/main/java/cc/mrbird/febs/ai/res/memberAnswer/ApiMemberProductWorkVo.java b/src/main/java/cc/mrbird/febs/ai/res/memberAnswer/ApiMemberProductWorkVo.java
new file mode 100644
index 0000000..d9f86db
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/ai/res/memberAnswer/ApiMemberProductWorkVo.java
@@ -0,0 +1,33 @@
+package cc.mrbird.febs.ai.res.memberAnswer;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Administrator
+ */
+@Data
+@ApiModel(value = "ApiMemberProductWorkVo", description = "参数")
+public class ApiMemberProductWorkVo {
+
+    @ApiModelProperty(value = "ID")
+    private String id;
+    /**
+     * 名称
+     */
+    @ApiModelProperty(value = "ID")
+    private String name;
+
+    /**
+     * 目标
+     */
+    @ApiModelProperty(value = "ID")
+    private String target;
+
+    /**
+     * 状态 0-进行中 1-已结束
+     */
+    @ApiModelProperty(value = "ID")
+    private Integer state;
+}
diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java b/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java
index bf48a10..5c5a946 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java
@@ -30,4 +30,6 @@
     FebsResponse previous(ApiMemberAnswerPreviousDto dto);
 
     FebsResponse wrongPage(ApiMemberAnswerWrongPageDto dto);
+
+    FebsResponse myWork(ApiMemberProductWorkPageDto dto);
 }
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
index 5cb8f6c..8a33d36 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
@@ -369,4 +369,15 @@
         dto.setMemberUuid(memberUuid);
         return aiMemberAnswerItemService.wrongPage(dto);
     }
+
+    @Override
+    public FebsResponse myWork(ApiMemberProductWorkPageDto dto) {
+        String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid();
+        dto.setMemberUuid(memberUuid);
+        // 创建分页对象,传入当前页和每页大小
+        Page<ApiMemberProductWorkVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+        Page<ApiMemberProductWorkVo> pageListByQuery = this.getBaseMapper().getPageMyWorkListByQuery(page, dto);
+
+        return new FebsResponse().success().data(pageListByQuery);
+    }
 }
diff --git a/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml b/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
index be1b5f2..2c6e453 100644
--- a/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
+++ b/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
@@ -1,4 +1,25 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cc.mrbird.febs.ai.mapper.AiMemberAnswerMapper">
+
+
+
+    <select id="getPageMyWorkListByQuery" resultType="cc.mrbird.febs.ai.res.memberAnswer.ApiMemberProductWorkVo">
+        select
+            b.id as id,
+            b.name as name,
+            b.target as target
+        from ai_member_answer a
+        left join ai_product b on a.product_id = b.id and b.state = 1
+        <where>
+            and a.member_id = #{record.memberUuid}
+            <if test="record != null">
+                <if test="record.state != null">
+                    and a.state = #{record.state}
+                </if>
+            </if>
+        </where>
+        group by a.product_id
+        order by a.CREATED_TIME desc
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1