You've already forked FrameTour-BE
- 新增小程序人脸聊天控制器 AppChatController,支持会话创建、消息收发、历史查询及会话关闭 - 集成智谱 GLM 模型客户端 GlmClient,支持流式文本生成与回调 - 新增聊天会话与消息实体类及 MyBatis 映射,实现数据持久化 - 提供 FaceChatService 接口及实现,封装聊天业务逻辑包括同步/流式消息发送 - 引入 zai-sdk 依赖以支持调用智谱 AI 大模型能力 - 支持基于人脸 ID 的唯一会话管理与用户权限校验 - 消息记录包含角色、内容、追踪 ID 及延迟信息,便于调试与分析
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
package com.ycwl.basic.model.mobile.chat;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 会话信息返回对象。
|
||||
*/
|
||||
@Data
|
||||
public class ChatConversationVO {
|
||||
private Long conversationId;
|
||||
private Long faceId;
|
||||
private String status;
|
||||
private String model;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.ycwl.basic.model.mobile.chat;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 消息列表响应。
|
||||
*/
|
||||
@Data
|
||||
public class ChatMessagePageResp {
|
||||
private List<ChatMessageVO> messages;
|
||||
/**
|
||||
* 下一条游标(返回最后一条 seq)。
|
||||
*/
|
||||
private Integer nextCursor;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.ycwl.basic.model.mobile.chat;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 聊天消息视图对象。
|
||||
*/
|
||||
@Data
|
||||
public class ChatMessageVO {
|
||||
private Long id;
|
||||
private Integer seq;
|
||||
private String role;
|
||||
private String content;
|
||||
private String traceId;
|
||||
private Date createdAt;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.ycwl.basic.model.mobile.chat;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 发送消息请求体。
|
||||
*/
|
||||
@Data
|
||||
public class ChatSendMessageReq {
|
||||
/**
|
||||
* 用户输入的文本内容。
|
||||
*/
|
||||
private String content;
|
||||
/**
|
||||
* 链路追踪ID,前端可透传,没有则服务端生成。
|
||||
*/
|
||||
private String traceId;
|
||||
/**
|
||||
* 是否期望流式返回。
|
||||
*/
|
||||
private Boolean stream;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.ycwl.basic.model.mobile.chat;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 发送消息同步响应。
|
||||
*/
|
||||
@Data
|
||||
public class ChatSendMessageResp {
|
||||
private ChatMessageVO userMessage;
|
||||
private ChatMessageVO assistantMessage;
|
||||
private String traceId;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.ycwl.basic.model.mobile.chat;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 流式发送消息的服务结果。
|
||||
*/
|
||||
@Data
|
||||
public class ChatSendMessageStreamResp {
|
||||
private ChatMessageVO userMessage;
|
||||
private ChatMessageVO assistantMessage;
|
||||
private String traceId;
|
||||
private List<String> chunks;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.ycwl.basic.model.mobile.chat.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 小程序人脸聊天会话,一脸一会话。
|
||||
*/
|
||||
@Data
|
||||
@TableName("face_chat_conversation")
|
||||
public class FaceChatConversationEntity {
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 对应的人脸ID。
|
||||
*/
|
||||
private Long faceId;
|
||||
/**
|
||||
* 归属用户ID,冗余校验越权。
|
||||
*/
|
||||
private Long memberId;
|
||||
/**
|
||||
* 会话状态 active/closed。
|
||||
*/
|
||||
private String status;
|
||||
/**
|
||||
* 使用的模型名称,例如 glm-v。
|
||||
*/
|
||||
private String model;
|
||||
private Date createdAt;
|
||||
private Date updatedAt;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.ycwl.basic.model.mobile.chat.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 小程序人脸聊天消息,只保存文本。
|
||||
*/
|
||||
@Data
|
||||
@TableName("face_chat_message")
|
||||
public class FaceChatMessageEntity {
|
||||
@TableId
|
||||
private Long id;
|
||||
private Long conversationId;
|
||||
private Long faceId;
|
||||
private Integer seq;
|
||||
/**
|
||||
* user / assistant / system。
|
||||
*/
|
||||
private String role;
|
||||
private String content;
|
||||
private String traceId;
|
||||
private Integer latencyMs;
|
||||
private Date createdAt;
|
||||
}
|
||||
Reference in New Issue
Block a user