Administrator
2025-08-27 65f10033448a07535d610ad56a628d7b3f137480
feat(ai): 优化对话项添加逻辑并增强接口返回值

- 修改 AiMemberTalkItemService 接口,将 add 方法返回类型改为 AiMemberTalkItem
- 实现 AiMemberTalkItemServiceImpl 中的 add 方法,返回新增的对话项对象
- 更新 AiMemberTalkServiceImpl 中的 addAnswer 和 addResponse 方法,使用新的 add 方法并设置 memberTalkItemId
- 在 ApiMemberTalkItemPageDto 和 ApiMemberTalkVo 中添加 memberTalkItemId 字段
- 更新 AiMemberTalkItemMapper.xml,添加查询条件以排除当前对话项
6 files modified
40 ■■■■■ changed files
src/main/java/cc/mrbird/febs/ai/req/memberTalk/ApiMemberTalkItemPageDto.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkVo.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkItemService.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkItemServiceImpl.java 4 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java 27 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/AiMemberTalkItemMapper.xml 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/req/memberTalk/ApiMemberTalkItemPageDto.java
@@ -25,6 +25,9 @@
    @ApiModelProperty(value = "会话ID", example = "1")
    private String memberTalkId;
    @ApiModelProperty(value = "消息ID")
    private String memberTalkItemId;
    @ApiModelProperty(hidden = true)
    private String memberUuid;
src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkVo.java
@@ -17,6 +17,9 @@
     */
    @ApiModelProperty(value = "会话ID")
    private String memberTalkItemId;
    @ApiModelProperty(value = "会话ID")
    private String memberTalkId;
    /**
src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkItemService.java
@@ -22,7 +22,7 @@
public interface AiMemberTalkItemService extends IService<AiMemberTalkItem> {
    void add(String memberUuid, String id, int type, String resContext, Date createdTime);
    AiMemberTalkItem add(String memberUuid, String id, int type, String resContext, Date createdTime);
    AiMemberTalkItem getByQuery(LambdaQueryWrapper<AiMemberTalkItem> memberTalkItemQuery);
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkItemServiceImpl.java
@@ -38,7 +38,7 @@
    private final AiMemberTalkItemMapper aiMemberTalkItemMapper;
    @Override
    public void add(String memberUuid, String id, int type, String resContext,Date createdTime) {
    public AiMemberTalkItem add(String memberUuid, String id, int type, String resContext,Date createdTime) {
        AiMemberTalkItem aiMemberTalkItem = new AiMemberTalkItem();
        aiMemberTalkItem.setId(UUID.getSimpleUUIDString());
        aiMemberTalkItem.setCreatedTime(createdTime);
@@ -47,6 +47,8 @@
        aiMemberTalkItem.setType(type);
        aiMemberTalkItem.setContext(resContext);
        aiMemberTalkItemMapper.insert(aiMemberTalkItem);
        return aiMemberTalkItem;
    }
    @Override
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java
@@ -85,16 +85,18 @@
        List<AiMessage> aiMessageDtoList = aiMemberTalkItemService.getQuestionUpDownContext(aiMemberTalk.getId(),AiTypeEnum.QUESTION.getCode());
        AiResponse aiResponse = aiService.start(aiMessageDtoList,AiTypeEnum.QUESTION.getCode(),aiProductRoleLink.getProductRoleId(),AiTypeEnum.QUESTION.getName(), null);
        if(aiResponse.getCode().equals("200")){
            aiMemberTalkItemService.add(memberUuid,aiMemberTalk.getId(),1,aiResponse.getResContext(),nowTime);
            this.updateTimeUpdate(nowTime,aiMemberTalk.getId());
        }else{
            throw new FebsException(aiResponse.getDescription());
        }
        ApiMemberTalkVo apiMemberTalkVo = new ApiMemberTalkVo();
        apiMemberTalkVo.setMemberTalkId(aiMemberTalk.getId());
        apiMemberTalkVo.setType(1);
        apiMemberTalkVo.setContext(aiResponse.getResContext());
        if(aiResponse.getCode().equals("200")){
            AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(), 1, aiResponse.getResContext(), nowTime);
            apiMemberTalkVo.setMemberTalkItemId(aiMemberTalkItem.getId());
            this.updateTimeUpdate(nowTime,aiMemberTalk.getId());
        }else{
            throw new FebsException(aiResponse.getDescription());
        }
        return new FebsResponse().success().data(apiMemberTalkVo);
    }
@@ -238,6 +240,9 @@
//        AiResponse aiResponse = aiService.start(aiProductRoleLink.getProductRoleId(), format);
        ApiMemberTalkVo apiMemberTalkVo = new ApiMemberTalkVo();
        apiMemberTalkVo.setMemberTalkId(aiMemberTalk.getId());
        apiMemberTalkVo.setType(3);
        List<AiMessage> aiMessageDtoList = aiMemberTalkItemService.getQuestionUpDownContext(aiMemberTalk.getId(),AiTypeEnum.ANSWER.getCode());
        AiResponse aiResponse = aiService.start(aiMessageDtoList,AiTypeEnum.ANSWER.getCode(),aiProductRoleLink.getProductRoleId(), reqContext,aiMemberTalkItem.getContext());
        String context = null;
@@ -247,15 +252,15 @@
            if ("null".equals( context)){
                context = aiResponse.getResContext();
            }
            aiMemberTalkItemService.add(memberUuid,aiMemberTalk.getId(),3, context,nowTime);
            AiMemberTalkItem talkItem = aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(), 3, context, nowTime);
            this.updateTimeUpdate(nowTime,aiMemberTalk.getId());
            apiMemberTalkVo.setContext(context);
            apiMemberTalkVo.setMemberTalkItemId(talkItem.getId());
        }else{
            throw new FebsException(aiResponse.getDescription());
        }
        ApiMemberTalkVo apiMemberTalkVo = new ApiMemberTalkVo();
        apiMemberTalkVo.setMemberTalkId(aiMemberTalk.getId());
        apiMemberTalkVo.setType(3);
        apiMemberTalkVo.setContext(context);
        return new FebsResponse().success().data(apiMemberTalkVo);
    }
    @Override
src/main/resources/mapper/modules/AiMemberTalkItemMapper.xml
@@ -13,6 +13,7 @@
        <where>
            and a.member_id = #{record.memberUuid}
            and a.member_talk_id = #{record.memberTalkId}
            and a.id != #{record.memberTalkItemId}
        </where>
        order by a.CREATED_TIME desc
    </select>