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; ...@@ -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.constant.AiDialoguesTypeEnum;
import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto; import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto;
import cn.com.poc.expose.dto.DialoguesContextDto;
import java.util.List; import java.util.List;
...@@ -17,6 +18,15 @@ public interface AiDialoguesService { ...@@ -17,6 +18,15 @@ public interface AiDialoguesService {
String create(AiDialoguesTypeEnum type, Long userId) throws Exception; 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 { ...@@ -34,4 +44,14 @@ public interface AiDialoguesService {
*/ */
void batchDelete(List<String> dialoguesIds, Long userId) throws Exception; 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; 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.aggregate.AiDialoguesService;
import cn.com.poc.ai_dialogues.constant.AiDialoguesTypeEnum; import cn.com.poc.ai_dialogues.constant.AiDialoguesTypeEnum;
import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto; import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto;
...@@ -8,6 +10,8 @@ import cn.com.poc.ai_dialogues.service.BizAiDialoguesService; ...@@ -8,6 +10,8 @@ import cn.com.poc.ai_dialogues.service.BizAiDialoguesService;
import cn.com.poc.common.constant.CommonConstant; import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.service.BizFileUploadRecordService; import cn.com.poc.common.service.BizFileUploadRecordService;
import cn.com.poc.common.utils.StringUtils; 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.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -34,11 +38,42 @@ public class AiDialoguesServiceImpl implements AiDialoguesService { ...@@ -34,11 +38,42 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
@Resource @Resource
private BizFileUploadRecordService bizFileUploadRecordService; private BizFileUploadRecordService bizFileUploadRecordService;
@Resource
private BizAgentApplicationDialoguesRecordService bizAgentApplicationDialoguesRecordService;
@Override @Override
public String create(AiDialoguesTypeEnum type, Long userId) throws Exception { public String create(AiDialoguesTypeEnum type, Long userId) throws Exception {
return bizAiDialoguesService.create(type.getType(), userId); 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 @Override
public List<AiDialoguesRecordDto> getList(AiDialoguesTypeEnum type, Long userId) throws Exception { public List<AiDialoguesRecordDto> getList(AiDialoguesTypeEnum type, Long userId) throws Exception {
logger.info("get ai dialogues list type:{}, userId:{}", type, userId); logger.info("get ai dialogues list type:{}, userId:{}", type, userId);
...@@ -87,4 +122,25 @@ public class AiDialoguesServiceImpl implements AiDialoguesService { ...@@ -87,4 +122,25 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
bizAiDialoguesService.deletedById(entities.get(0).getId()); 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; ...@@ -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.AiDialoguesRecordDto;
import cn.com.poc.ai_dialogues.dto.BatchDelAiDialoguesDto; 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.core.rest.BaseRest;
import cn.com.yict.framemax.web.permission.Access; import cn.com.yict.framemax.web.permission.Access;
import cn.com.yict.framemax.web.permission.Permission; import cn.com.yict.framemax.web.permission.Permission;
...@@ -35,8 +36,15 @@ public interface AiDialoguesRest extends BaseRest { ...@@ -35,8 +36,15 @@ public interface AiDialoguesRest extends BaseRest {
void batchDelete(@RequestBody BatchDelAiDialoguesDto dto) throws Exception; 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; ...@@ -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.AiDialoguesRecordDto;
import cn.com.poc.ai_dialogues.dto.BatchDelAiDialoguesDto; import cn.com.poc.ai_dialogues.dto.BatchDelAiDialoguesDto;
import cn.com.poc.ai_dialogues.rest.AiDialoguesRest; 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.Assert;
import cn.com.poc.common.utils.BlContext; 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.poc.support.security.oauth.entity.UserBaseEntity;
import cn.com.yict.framemax.core.exception.BusinessException; import cn.com.yict.framemax.core.exception.BusinessException;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
...@@ -52,4 +52,20 @@ public class AiDialoguesRestImpl implements AiDialoguesRest { ...@@ -52,4 +52,20 @@ public class AiDialoguesRestImpl implements AiDialoguesRest {
} }
aiDialoguesService.batchDelete(dto.getDialoguesIds(), userBaseEntity.getUserId()); 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