Administrator
2026-02-10 ed19ea21f7c74c49bba1a130983d812f3d14890e
feat(ai): 添加我的陪练功能接口

- 新增 ApiMemberProductTalkPageDto 请求参数类
- 新增 ApiMemberProductTalkVo 响应结果类
- 在 AiMemberTalkMapper 中添加 getPageMyTalkListByQuery 方法
- 在 XML 映射文件中添加对应的查询 SQL
- 在 AiMemberTalkStreamService 中添加 myTalkList 接口方法
- 在实现类中实现 myTalkList 业务逻辑
- 在控制器中添加 myTalkList API 接口
- 使用通配符导入优化代码中的 import 语句
2 files added
5 files modified
134 ■■■■■ changed files
src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkStreamController.java 18 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/mapper/AiMemberTalkMapper.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/req/memberTalk/ApiMemberProductTalkPageDto.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberProductTalkVo.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkStreamService.java 8 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkStreamServiceImpl.java 24 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/AiMemberTalkMapper.xml 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkStreamController.java
@@ -1,11 +1,10 @@
package cc.mrbird.febs.ai.controller.memberTalk;
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto;
import cc.mrbird.febs.ai.req.memberTalk.ApiTalkMemberListDto;
import cc.mrbird.febs.ai.req.memberTalk.ApiTalkReportListDto;
import cc.mrbird.febs.ai.req.memberTalk.*;
import cc.mrbird.febs.ai.req.memberTalkStream.*;
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkListDto;
import cc.mrbird.febs.ai.req.memberTalkStream.ApiMemberTalkStreamDto;
import cc.mrbird.febs.ai.res.memberTalk.*;
import cc.mrbird.febs.ai.res.memberTalk.ApiMemberProductTalkVo;
import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkReloadStreamVo;
import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkStreamV2Vo;
import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkStreamVo;
@@ -131,6 +130,17 @@
    }
    @ApiOperation(value = "我的陪练", notes = "我的陪练")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiMemberProductTalkVo.class)
    })
    @PostMapping(value = "/myTalkList")
    public FebsResponse myTalkList(@RequestBody @Validated ApiMemberProductTalkPageDto dto) {
        return aiMemberTalkStreamService.myTalkList(dto);
    }
    @ApiOperation(value = "陪练记录", notes = "陪练记录")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiMemberTalkListVo.class)
src/main/java/cc/mrbird/febs/ai/mapper/AiMemberTalkMapper.java
@@ -2,9 +2,11 @@
import cc.mrbird.febs.ai.entity.AiMemberTalk;
import cc.mrbird.febs.ai.req.member.ApiMemberTalkPageDto;
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberProductTalkPageDto;
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 cc.mrbird.febs.ai.res.memberTalk.ApiMemberProductTalkVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -21,4 +23,6 @@
    IPage<ApiMemberTalkListVo> getPageByDto(Page<ApiMemberTalkListVo> page, @Param("record")ApiMemberTalkListDto dto);
    Page<ApiMemberTalkPageVo> getTalkPage(Page<ApiMemberTalkPageVo> page, @Param("record")ApiMemberTalkPageDto dto);
    Page<ApiMemberProductTalkVo> getPageMyTalkListByQuery(Page<ApiMemberProductTalkVo> page, @Param("record")ApiMemberProductTalkPageDto dto);
}
src/main/java/cc/mrbird/febs/ai/req/memberTalk/ApiMemberProductTalkPageDto.java
New file
@@ -0,0 +1,29 @@
package cc.mrbird.febs.ai.req.memberTalk;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
 * @author Administrator
 */
@Data
@ApiModel(value = "ApiMemberProductTalkPageDto", description = "参数")
public class ApiMemberProductTalkPageDto {
    @NotNull(message = "页码不能为空")
    @ApiModelProperty(value = "页码", example = "1")
    private Integer pageNow;
    @NotNull(message = "每页数量不能为空")
    @ApiModelProperty(value = "每页数量", example = "10")
    private Integer pageSize;
    @ApiModelProperty(hidden = true)
    private String memberUuid;
    @ApiModelProperty(hidden = true)
    private String companyId;
}
src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberProductTalkVo.java
New file
@@ -0,0 +1,34 @@
package cc.mrbird.febs.ai.res.memberTalk;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * @author Administrator
 */
@Data
@ApiModel(value = "ApiMemberProductTalkVo", description = "参数")
public class ApiMemberProductTalkVo {
    @ApiModelProperty(value = "ID")
    private String id;
    /**
     * 名称
     */
    @ApiModelProperty(value = "名称")
    private String name;
    /**
     * 目标
     */
    @ApiModelProperty(value = "目标")
    private String target;
    @ApiModelProperty(value = "时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createdTime;
}
src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkStreamService.java
@@ -1,11 +1,9 @@
package cc.mrbird.febs.ai.service;
import cc.mrbird.febs.ai.entity.AiMemberTalk;
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto;
import cc.mrbird.febs.ai.req.memberTalk.ApiTalkMemberListDto;
import cc.mrbird.febs.ai.req.memberTalk.ApiTalkReportListDto;
import cc.mrbird.febs.ai.req.memberTalk.*;
import cc.mrbird.febs.ai.req.memberTalkStream.*;
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkListDto;
import cc.mrbird.febs.ai.req.memberTalkStream.ApiMemberTalkStreamDto;
import cc.mrbird.febs.common.entity.FebsResponse;
import com.baomidou.mybatisplus.extension.service.IService;
import reactor.core.publisher.Flux;
@@ -22,6 +20,8 @@
    Flux<FebsResponse> startV2(ApiMemberTalkStreamV2Dto dto);
    FebsResponse myTalkList(ApiMemberProductTalkPageDto dto);
    FebsResponse talkList(ApiMemberTalkListDto dto);
    FebsResponse talkMemberList(ApiTalkMemberListDto dto);
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkStreamServiceImpl.java
@@ -4,12 +4,11 @@
import cc.mrbird.febs.ai.enumerates.AiTalkOutputEnum;
import cc.mrbird.febs.ai.enumerates.AiTypeEnum;
import cc.mrbird.febs.ai.mapper.AiMemberTalkMapper;
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto;
import cc.mrbird.febs.ai.req.memberTalk.ApiTalkMemberListDto;
import cc.mrbird.febs.ai.req.memberTalk.ApiTalkReportListDto;
import cc.mrbird.febs.ai.req.memberTalk.*;
import cc.mrbird.febs.ai.req.memberTalkStream.*;
import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkListDto;
import cc.mrbird.febs.ai.req.memberTalkStream.ApiMemberTalkStreamDto;
import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkMemberAnswerSavaVo;
import cc.mrbird.febs.ai.res.memberTalk.ApiMemberProductTalkVo;
import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkReloadStreamVo;
import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkStreamVo;
import cc.mrbird.febs.ai.service.*;
@@ -27,6 +26,7 @@
import com.alibaba.dashscope.common.Role;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -167,6 +167,22 @@
    }
    @Override
    public FebsResponse myTalkList(ApiMemberProductTalkPageDto dto) {
        String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid();
        dto.setMemberUuid(memberUuid);
        String companyId = LoginUserUtil.getLoginUser().getCompanyId();
        dto.setCompanyId(companyId);
        // 创建分页对象,传入当前页和每页大小
        Page<ApiMemberProductTalkVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
        Page<ApiMemberProductTalkVo> pageListByQuery = aiMemberTalkMapper.getPageMyTalkListByQuery(page, dto);
        return new FebsResponse().success().data(pageListByQuery);
    }
    @Override
    public FebsResponse talkList(ApiMemberTalkListDto dto) {
        return new FebsResponse().success().data(aiMemberTalkService.getPageByDto(dto));
src/main/resources/mapper/modules/AiMemberTalkMapper.xml
@@ -35,4 +35,21 @@
        order by a.CREATED_TIME desc
    </select>
    <select id="getPageMyTalkListByQuery" resultType="cc.mrbird.febs.ai.res.memberTalk.ApiMemberProductTalkVo">
        select DISTINCT
        b.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
            and b.state = 1
        </where>
        order by a.CREATED_TIME desc
    </select>
</mapper>