Administrator
2025-08-21 cba91796368ab184d921ac59bba5cfac90c25436
feat(ai): 添加我的训练功能- 新增 ApiMemberProductWorkPageDto 和 ApiMemberProductWorkVo 类
- 在 AiMemberAnswerMapper 中添加 getPageMyWorkListByQuery 方法
- 在 AiMemberAnswerService 中添加 myWork 方法
- 在 AiMemberAnswerController 中添加 myWork接口
5 files modified
2 files added
111 ■■■■■ changed files
src/main/java/cc/mrbird/febs/ai/controller/memberAnswer/ApiMemberAnswerController.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/req/memberAnswer/ApiMemberProductWorkPageDto.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/res/memberAnswer/ApiMemberProductWorkVo.java 33 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/AiMemberAnswerMapper.xml 21 ●●●●● patch | view | raw | blame | history
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);
    }
}
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);
}
src/main/java/cc/mrbird/febs/ai/req/memberAnswer/ApiMemberProductWorkPageDto.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/ai/res/memberAnswer/ApiMemberProductWorkVo.java
New file
@@ -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;
}
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);
}
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);
    }
}
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>