Commit 57cae5c5 authored by alex yao's avatar alex yao

feat:AI 对话通用上下文获取接口

parent 760d93f7
......@@ -2,6 +2,7 @@ package cn.com.poc.ai_dialogues.aggregate;
import cn.com.poc.ai_dialogues.constant.AiDialoguesTypeEnum;
import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto;
import cn.com.poc.expose.dto.DialoguesContextDto;
import java.util.List;
......@@ -17,6 +18,15 @@ public interface AiDialoguesService {
String create(AiDialoguesTypeEnum type, Long userId) throws Exception;
/**
* 获取对话详情
*
* @param dialoguesId 对话ID
* @param userId 用户ID
*/
AiDialoguesRecordDto dialoguesDetail(String dialoguesId, Long userId) throws Exception;
/**
* 获取对话列表
*
......@@ -34,4 +44,14 @@ public interface AiDialoguesService {
*/
void batchDelete(List<String> dialoguesIds, Long userId) throws Exception;
/**
* 获取对话上下文
*
* @param dialogueId
* @return
* @throws Exception
*/
List<DialoguesContextDto> getDialogueContext(String dialogueId);
}
package cn.com.poc.ai_dialogues.aggregate.impl;
import cn.com.poc.agent_application.query.AgentApplicationDialoguesRecordQueryItem;
import cn.com.poc.agent_application.service.BizAgentApplicationDialoguesRecordService;
import cn.com.poc.ai_dialogues.aggregate.AiDialoguesService;
import cn.com.poc.ai_dialogues.constant.AiDialoguesTypeEnum;
import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto;
......@@ -8,6 +10,8 @@ import cn.com.poc.ai_dialogues.service.BizAiDialoguesService;
import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.service.BizFileUploadRecordService;
import cn.com.poc.common.utils.StringUtils;
import cn.com.poc.expose.dto.DialoguesContextDto;
import cn.com.yict.framemax.core.exception.BusinessException;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -34,11 +38,42 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
@Resource
private BizFileUploadRecordService bizFileUploadRecordService;
@Resource
private BizAgentApplicationDialoguesRecordService bizAgentApplicationDialoguesRecordService;
@Override
public String create(AiDialoguesTypeEnum type, Long userId) throws Exception {
return bizAiDialoguesService.create(type.getType(), userId);
}
@Override
public AiDialoguesRecordDto dialoguesDetail(String dialoguesId, Long userId) throws Exception {
logger.info("get ai dialogues detail dialoguesId:{}, userId:{}", dialoguesId, userId);
BizAiDialoguesEntity bizAiDialoguesEntity = new BizAiDialoguesEntity();
bizAiDialoguesEntity.setDialoguesId(dialoguesId);
bizAiDialoguesEntity.setMemberId(userId);
bizAiDialoguesEntity.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizAiDialoguesEntity> entities = bizAiDialoguesService.findByExample(bizAiDialoguesEntity, null);
if (CollectionUtils.isEmpty(entities)) {
throw new BusinessException("对话不存在");
}
BizAiDialoguesEntity entity = entities.get(0);
AiDialoguesRecordDto dto = new AiDialoguesRecordDto();
dto.setDialoguesId(entity.getDialoguesId());
dto.setDialoguesType(entity.getDialoguesType());
dto.setTitle(entity.getTitle());
dto.setMemberId(entity.getMemberId());
if (StringUtils.isNotBlank(entity.getFileUrl())) {
dto.setFileUrl(entity.getFileUrl());
dto.setFileName(bizFileUploadRecordService.getFileNameByFileUrl(entity.getFileUrl()));
}
dto.setCreatedTime(entity.getCreatedTime());
return dto;
}
@Override
public List<AiDialoguesRecordDto> getList(AiDialoguesTypeEnum type, Long userId) throws Exception {
logger.info("get ai dialogues list type:{}, userId:{}", type, userId);
......@@ -87,4 +122,25 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
bizAiDialoguesService.deletedById(entities.get(0).getId());
}
}
@Override
public List<DialoguesContextDto> getDialogueContext(String dialogueId) {
List<AgentApplicationDialoguesRecordQueryItem> items = bizAgentApplicationDialoguesRecordService.getDialogueRecord(dialogueId, null);
if (CollectionUtils.isNotEmpty(items)) {
return items.stream().map(value -> {
DialoguesContextDto dto = new DialoguesContextDto();
dto.setRole(value.getRole());
dto.setAgentId(value.getAgentId());
dto.setContent(value.getContent());
dto.setReasoningContent(value.getReasoningContent());
dto.setImageUrl(value.getImageUrl());
dto.setTimestamp(value.getTimestamp());
dto.setAgentTitle(value.getAgentTitle());
dto.setAgentAvatar(value.getAgentAvatar());
return dto;
}
).collect(Collectors.toList());
}
return null;
}
}
......@@ -2,6 +2,7 @@ package cn.com.poc.ai_dialogues.rest;
import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto;
import cn.com.poc.ai_dialogues.dto.BatchDelAiDialoguesDto;
import cn.com.poc.expose.dto.DialoguesContextDto;
import cn.com.yict.framemax.core.rest.BaseRest;
import cn.com.yict.framemax.web.permission.Access;
import cn.com.yict.framemax.web.permission.Permission;
......@@ -35,8 +36,15 @@ public interface AiDialoguesRest extends BaseRest {
void batchDelete(@RequestBody BatchDelAiDialoguesDto dto) throws Exception;
/**
* 获取对话上下文
* 获取对话详情
*
* @param dialoguesId 对话ID
*/
AiDialoguesRecordDto dialoguesDetail(@RequestParam String dialoguesId) throws Exception;
/**
* 获取对话上下文
*/
List<DialoguesContextDto> getDialogueContext(@RequestParam String dialogueId) throws Exception;
}
......@@ -5,9 +5,9 @@ import cn.com.poc.ai_dialogues.constant.AiDialoguesTypeEnum;
import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto;
import cn.com.poc.ai_dialogues.dto.BatchDelAiDialoguesDto;
import cn.com.poc.ai_dialogues.rest.AiDialoguesRest;
import cn.com.poc.ai_dialogues.service.BizAiDialoguesService;
import cn.com.poc.common.utils.Assert;
import cn.com.poc.common.utils.BlContext;
import cn.com.poc.expose.dto.DialoguesContextDto;
import cn.com.poc.support.security.oauth.entity.UserBaseEntity;
import cn.com.yict.framemax.core.exception.BusinessException;
import cn.hutool.core.util.ObjectUtil;
......@@ -52,4 +52,20 @@ public class AiDialoguesRestImpl implements AiDialoguesRest {
}
aiDialoguesService.batchDelete(dto.getDialoguesIds(), userBaseEntity.getUserId());
}
@Override
public AiDialoguesRecordDto dialoguesDetail(String dialoguesId) throws Exception {
Assert.notBlank(dialoguesId, "对话id不能为空");
UserBaseEntity userBaseEntity = BlContext.getCurrentUserNotException();
if (ObjectUtil.isEmpty(userBaseEntity)) {
throw new BusinessException("用户未登录");
}
return aiDialoguesService.dialoguesDetail(dialoguesId, userBaseEntity.getUserId());
}
@Override
public List<DialoguesContextDto> getDialogueContext(String dialogueId) {
Assert.notBlank(dialogueId);
return aiDialoguesService.getDialogueContext(dialogueId);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment