Commit f1286ecc authored by 陈立彬's avatar 陈立彬

新增 赞、踩 接口

parent a5babef5
......@@ -18,4 +18,8 @@ public class UserAskResultMobileDto implements Serializable {
@Schema(description = "AI回复内容")
@JsonProperty("reply_content")
private String replyContent;
@Schema(description = "消息ID")
@JsonProperty("message_id")
private Integer messageId;
}
......@@ -32,6 +32,16 @@ public class UserChatCompletionHistoryMobileDto implements Serializable {
@Schema(description = "内容")
private String content;
/**
* 踩(0否 1是)
*/
private Integer diss;
/**
* 赞(0否 1是)
*/
private Integer likes;
/**
* 创建时间
*/
......
......@@ -4,10 +4,7 @@ import cn.breeze.elleai.application.dto.PageResult;
import cn.breeze.elleai.application.dto.inner.AiChatComplateResultDto;
import cn.breeze.elleai.application.dto.request.*;
import cn.breeze.elleai.application.dto.response.*;
import cn.breeze.elleai.domain.sparring.model.request.QaAssistantRequestModel;
import cn.breeze.elleai.domain.sparring.model.request.QaAssistantSaveModel;
import cn.breeze.elleai.domain.sparring.model.request.UserChatCompletionSaveModel;
import cn.breeze.elleai.domain.sparring.model.request.UserQaRequestModel;
import cn.breeze.elleai.domain.sparring.model.request.*;
import cn.breeze.elleai.domain.sparring.model.response.KbTagResponseModel;
import cn.breeze.elleai.domain.sparring.model.response.QaAssistantResponseModel;
import cn.breeze.elleai.domain.sparring.model.response.UserChatCompletionHistoryResponseModel;
......@@ -356,10 +353,10 @@ public class AppChatCompletionService {
saveModel.setCreateTime(new Date());
saveModel.setFirstQuestion(request.getContent());
}
Integer recordId = chatCompletionService.saveUserQaSession(saveModel);
Integer chatCompletionId = chatCompletionService.saveUserQaSession(saveModel);
// 保存问答详情
chatCompletionService.saveUserQaRecord(recordId, 0, request.getContent(), request.getAssistantId());
Integer userQaRecordId = chatCompletionService.saveUserQaRecord(chatCompletionId, 0, null, request.getContent(), request.getAssistantId());
// 问一下AI
AiChatComplateResultDto complateResultDto = ask4Knowledge(sessionId, userPrincipal.getUserId(), request.getContent(), request.getAssistantId());
......@@ -369,15 +366,15 @@ public class AppChatCompletionService {
// 更新DIFY会话ID
if(StrUtil.isEmpty(sessionId)) {
UserChatCompletionSaveModel updateModel = new UserChatCompletionSaveModel();
updateModel.setId(recordId);
updateModel.setId(chatCompletionId);
updateModel.setSessionId(sessionId);
chatCompletionService.saveUserQaSession(updateModel);
}
// 保存AI问答详情
chatCompletionService.saveUserQaRecord(recordId, 1, replyContent, request.getAssistantId());
chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, replyContent, request.getAssistantId());
result.setChatCompletionId(recordId);
result.setChatCompletionId(chatCompletionId);
result.setReplyContent(replyContent);
}
return result;
......@@ -414,10 +411,10 @@ public class AppChatCompletionService {
saveModel.setCreateTime(new Date());
saveModel.setFirstQuestion(request.getContent());
}
Integer recordId = chatCompletionService.saveUserQaSession(saveModel);
Integer chatCompletionId = chatCompletionService.saveUserQaSession(saveModel);
// 保存问答详情
chatCompletionService.saveUserQaRecord(recordId, 0, request.getContent(), request.getAssistantId());
Integer userQaRecordId = chatCompletionService.saveUserQaRecord(chatCompletionId, 0, null, request.getContent(), request.getAssistantId());
Map<String, String> inputs = new HashMap<>();
inputs.put("assistant_id", Objects.nonNull(request.getAssistantId()) ? String.valueOf(request.getAssistantId()) : "");
......@@ -444,7 +441,8 @@ public class AppChatCompletionService {
UserAskResultMobileDto result = new UserAskResultMobileDto();
result.setReplyContent(buffer.toString());
result.setChatCompletionId(recordId);
result.setChatCompletionId(chatCompletionId);
result.setMessageId(userQaRecordId);
return result;
}).doOnComplete(
() -> {
......@@ -452,12 +450,12 @@ public class AppChatCompletionService {
// 更新DIFY会话ID
if(StrUtil.isEmpty(finalSessionId)) {
UserChatCompletionSaveModel updateModel = new UserChatCompletionSaveModel();
updateModel.setId(recordId);
updateModel.setId(chatCompletionId);
updateModel.setSessionId(difySessionId[0]);
chatCompletionService.saveUserQaSession(updateModel);
}
// 保存AI问答详情
chatCompletionService.saveUserQaRecord(recordId, 1, replyContent, request.getAssistantId());
chatCompletionService.saveUserQaRecord(chatCompletionId, 1, userQaRecordId, replyContent, request.getAssistantId());
}
).map(v -> ServerSentEvent.builder(v).build());
}
......@@ -524,4 +522,35 @@ public class AppChatCompletionService {
public PageResult<HotQaMobileDto> hotQaList(QaAssistantRequestDto request) {
return kbService.hotQaList(request);
}
/**
* 更新 踩 状态
* @param messageId
* @param status
*/
public void updateDissStatus(Integer messageId, Integer status) {
UserChatCompletionHistoryResponseModel model = chatCompletionService.getReplyMessageByUserMessageId(messageId);
if(Objects.nonNull(model)) {
UserQaHistorySaveModel saveModel = new UserQaHistorySaveModel();
saveModel.setId(model.getId());
saveModel.setDiss(status);
chatCompletionService.saveUserQaRecord(saveModel);
}
}
/**
* 更新 赞 状态
* @param messageId
* @param status
*/
public void updateLikesStatus(Integer messageId, Integer status) {
UserChatCompletionHistoryResponseModel model = chatCompletionService.getReplyMessageByUserMessageId(messageId);
if(Objects.nonNull(model)) {
UserQaHistorySaveModel saveModel = new UserQaHistorySaveModel();
saveModel.setId(model.getId());
saveModel.setLikes(status);
chatCompletionService.saveUserQaRecord(saveModel);
}
}
}
......@@ -97,4 +97,22 @@ public class ChatCompletionMobileController {
UserAskResultMobileDto result = chatCompletionService.userAsk(userPrincipal, request);
return ApiResponse.ok(result);
}
@Operation(summary = "踩/取消踩")
@PostMapping("/diss/{message_id}/{status}")
public ApiResponse<String> diss(@Schema(description = "消息ID") @PathVariable("message_id") Integer messageId,
@Schema(description = "状态(0取消 1踩)") @PathVariable("status") Integer status) {
chatCompletionService.updateDissStatus(messageId, status);
return ApiResponse.ok("ok");
}
@Operation(summary = "赞/取消赞")
@PostMapping("/likes/{message_id}/{status}")
public ApiResponse<String> likes(@Schema(description = "消息ID") @PathVariable("message_id") Integer messageId,
@Schema(description = "状态(0取消 1赞)") @PathVariable("status") Integer status) {
chatCompletionService.updateLikesStatus(messageId, status);
return ApiResponse.ok("ok");
}
}
package cn.breeze.elleai.domain.sparring.model.request;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class UserQaHistorySaveModel implements Serializable {
private Integer id;
/**
* 会话ID
*/
private Integer chatCompletionId;
/**
* 类型(0用户提问 1AI回答)
*/
private Integer type;
/**
* 问答助手ID
*/
private Integer assistantId;
/**
* 内容
*/
private String content;
/**
* 踩(0否 1是)
*/
private Integer diss;
/**
* 赞(0否 1是)
*/
private Integer likes;
/**
* AI回复用户消息ID
*/
private Integer replyMessageId;
}
......@@ -25,6 +25,16 @@ public class UserChatCompletionHistoryResponseModel implements Serializable {
*/
private String content;
/**
* 踩(0否 1是)
*/
private Integer diss;
/**
* 赞(0否 1是)
*/
private Integer likes;
/**
* 创建时间
*/
......
......@@ -19,13 +19,17 @@ public interface ChatCompletionService {
List<UserChatCompletionHistoryResponseModel> userQaHistoryDetail(Integer chatCompletionId);
UserChatCompletionHistoryResponseModel getReplyMessageByUserMessageId(Integer userMessageId);
Page<UserChatCompletionHistoryResponseModel> userQaHistoryDetailPaginQuery(Integer chatCompletionId, Integer pageNo, Integer pageSize);
UserChatCompletionResponseModel userQaDetail(UserQaRequestModel request);
Integer saveUserQaSession(UserChatCompletionSaveModel dto);
void saveUserQaRecord(Integer chatCompletionId, Integer type, String content, Integer assistantId);
Integer saveUserQaRecord(Integer chatCompletionId, Integer type, Integer replyMessageId, String content, Integer assistantId);
Integer saveUserQaRecord(UserQaHistorySaveModel dto);
/***************************************** AI助手 *****************************************/
Page<QaAssistantResponseModel> qaAssistantPaginQuery(QaAssistantRequestModel request);
......
......@@ -100,6 +100,14 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{
return chatCompletionHistoryMapper.selectListByQueryAs(queryWrapper, UserChatCompletionHistoryResponseModel.class);
}
@Override
public UserChatCompletionHistoryResponseModel getReplyMessageByUserMessageId(Integer userMessageId) {
QueryWrapper queryWrapper = QueryWrapper.create();
queryWrapper.where(USER_CHAT_COMPLETION_HISTORY_ENTITY.REPLY_MESSAGE_ID.eq(userMessageId));
return chatCompletionHistoryMapper.selectOneByQueryAs(queryWrapper, UserChatCompletionHistoryResponseModel.class);
}
@Override
public Page<UserChatCompletionHistoryResponseModel> userQaHistoryDetailPaginQuery(Integer chatCompletionId, Integer pageNo, Integer pageSize) {
......@@ -135,14 +143,24 @@ public class ChatCompletionServiceImpl implements ChatCompletionService{
}
@Override
public void saveUserQaRecord(Integer chatCompletionId, Integer type, String content, Integer assistantId) {
public Integer saveUserQaRecord(Integer chatCompletionId, Integer type, Integer replyMessageId, String content, Integer assistantId) {
UserChatCompletionHistoryEntity entity = new UserChatCompletionHistoryEntity();
entity.setChatCompletionId(chatCompletionId);
entity.setType(type);
entity.setReplyMessageId(replyMessageId);
entity.setContent(content);
entity.setAssistantId(assistantId);
entity.setCreateTime(new Date());
chatCompletionHistoryMapper.insertOrUpdateSelective(entity);
return entity.getId();
}
@Override
public Integer saveUserQaRecord(UserQaHistorySaveModel dto) {
UserChatCompletionHistoryEntity entity = new UserChatCompletionHistoryEntity();
BeanUtil.copyProperties(dto, entity);
chatCompletionHistoryMapper.insertOrUpdateSelective(entity);
return entity.getId();
}
@Override
......
......@@ -51,6 +51,20 @@ public class UserChatCompletionHistoryEntity implements Serializable {
*/
private String content;
/**
* 踩(0否 1是)
*/
private Integer diss;
/**
* 赞(0否 1是)
*/
private Integer likes;
/**
* AI回复用户消息ID
*/
private Integer replyMessageId;
/**
* 创建时间
*/
......
......@@ -39,6 +39,21 @@ public class UserChatCompletionHistoryTableDef extends TableDef {
*/
public final QueryColumn CONTENT = new QueryColumn(this, "content");
/**
* AI回复用户消息ID
*/
public final QueryColumn REPLY_MESSAGE_ID = new QueryColumn(this, "reply_message_id");
/**
* 踩
*/
public final QueryColumn DISS = new QueryColumn(this, "diss");
/**
* 赞
*/
public final QueryColumn LIKES = new QueryColumn(this, "likes");
/**
* 创建时间
*/
......@@ -52,7 +67,7 @@ public class UserChatCompletionHistoryTableDef extends TableDef {
/**
* 默认字段,不包含逻辑删除或者 large 等字段。
*/
public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, CHAT_COMPLETION_ID, TYPE, CONTENT, CREATE_TIME};
public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, CHAT_COMPLETION_ID, TYPE, CONTENT, REPLY_MESSAGE_ID, DISS, LIKES, CREATE_TIME};
public UserChatCompletionHistoryTableDef() {
super("", "ai_user_chat_completion_history");
......
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