feat: 完善后端架构和service层实现

- 创建完整的entity实体类体系,包括所有业务实体
- 实现BaseEntity基类,统一管理公共字段
- 创建雪花算法ID生成器和自动填充处理器
- 简化所有mapper接口,只继承BaseMapper
- 重构service层,使用LambdaQueryWrapper进行数据库操作
- 创建BasePageRequest分页查询基类
- 完善用户上下文管理和JWT认证
- 新增WebSocket聊天功能和相关控制器
- 更新前端配置和组件,完善用户认证流程
- 同步数据库建表脚本
This commit is contained in:
2025-07-24 00:37:23 +08:00
parent 645036fcd2
commit 880e0e3c88
87 changed files with 8114 additions and 1106 deletions
@@ -1,108 +1,149 @@
package com.emotion.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 消息实体
*
* 消息实体
*
* @author emotion-museum
* @date 2025-07-22
* @date 2025-07-23
*/
public class Message {
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("message")
public class Message extends BaseEntity {
private String id;
/**
* 对话ID
*/
@TableField("conversation_id")
private String conversationId;
private String userId;
/**
* 消息内容
*/
@TableField("content")
private String content;
private String contentType;
private String senderType;
private String senderId;
private String status;
private LocalDateTime sendTime;
private Integer isRead;
private String parentMessageId;
private String cozeRole;
/**
* 消息类型
*/
@TableField("type")
private String type;
/**
* 发送者: user-用户, assistant-AI助手
*/
@TableField("sender")
private String sender;
/**
* 消息时间戳
*/
@TableField("timestamp")
private LocalDateTime timestamp;
/**
* Coze平台的聊天ID
*/
@TableField("coze_chat_id")
private String cozeChatId;
/**
* Coze平台的消息ID
*/
@TableField("coze_message_id")
private String cozeMessageId;
/**
* 消息状态: sending/sent/failed/processing
*/
@TableField("status")
private String status;
/**
* 错误信息
*/
@TableField("error_message")
private String errorMessage;
private Integer retryCount;
private LocalDateTime createTime;
private LocalDateTime updateTime;
private String createBy;
private String updateBy;
private Integer isDeleted;
private String remarks;
// 构造函数
public Message() {
this.createTime = LocalDateTime.now();
this.updateTime = LocalDateTime.now();
this.sendTime = LocalDateTime.now();
this.isDeleted = 0;
this.isRead = 0;
this.retryCount = 0;
}
/**
* 情绪评分
*/
@TableField("emotion_score")
private BigDecimal emotionScore;
// Getter和Setter方法
public String getId() { return id; }
public void setId(String id) { this.id = id; }
/**
* 情绪类型
*/
@TableField("emotion_type")
private String emotionType;
public String getConversationId() { return conversationId; }
public void setConversationId(String conversationId) { this.conversationId = conversationId; }
/**
* 情绪分析置信度
*/
@TableField("emotion_confidence")
private BigDecimal emotionConfidence;
public String getUserId() { return userId; }
public void setUserId(String userId) { this.userId = userId; }
/**
* 输入Token数
*/
@TableField("prompt_tokens")
private Integer promptTokens;
public String getContent() { return content; }
public void setContent(String content) { this.content = content; }
/**
* 输出Token数
*/
@TableField("completion_tokens")
private Integer completionTokens;
public String getContentType() { return contentType; }
public void setContentType(String contentType) { this.contentType = contentType; }
/**
* 总Token数
*/
@TableField("total_tokens")
private Integer totalTokens;
public String getSenderType() { return senderType; }
public void setSenderType(String senderType) { this.senderType = senderType; }
/**
* API调用费用
*/
@TableField("api_cost")
private BigDecimal apiCost;
public String getSenderId() { return senderId; }
public void setSenderId(String senderId) { this.senderId = senderId; }
/**
* 是否已读: 0-未读, 1-已读
*/
@TableField("is_read")
private Integer isRead;
public String getStatus() { return status; }
public void setStatus(String status) { this.status = status; }
/**
* 父消息ID(用于回复链)
*/
@TableField("parent_message_id")
private String parentMessageId;
public LocalDateTime getSendTime() { return sendTime; }
public void setSendTime(LocalDateTime sendTime) { this.sendTime = sendTime; }
/**
* 情绪分析结果
*/
@TableField("emotion_analysis")
private String emotionAnalysis;
public Integer getIsRead() { return isRead; }
public void setIsRead(Integer isRead) { this.isRead = isRead; }
/**
* 扩展元数据
*/
@TableField("metadata")
private String metadata;
public String getParentMessageId() { return parentMessageId; }
public void setParentMessageId(String parentMessageId) { this.parentMessageId = parentMessageId; }
public String getCozeRole() { return cozeRole; }
public void setCozeRole(String cozeRole) { this.cozeRole = cozeRole; }
public String getCozeMessageId() { return cozeMessageId; }
public void setCozeMessageId(String cozeMessageId) { this.cozeMessageId = cozeMessageId; }
public String getErrorMessage() { return errorMessage; }
public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; }
public Integer getRetryCount() { return retryCount; }
public void setRetryCount(Integer retryCount) { this.retryCount = retryCount; }
public LocalDateTime getCreateTime() { return createTime; }
public void setCreateTime(LocalDateTime createTime) { this.createTime = createTime; }
public LocalDateTime getUpdateTime() { return updateTime; }
public void setUpdateTime(LocalDateTime updateTime) { this.updateTime = updateTime; }
public String getCreateBy() { return createBy; }
public void setCreateBy(String createBy) { this.createBy = createBy; }
public String getUpdateBy() { return updateBy; }
public void setUpdateBy(String updateBy) { this.updateBy = updateBy; }
public Integer getIsDeleted() { return isDeleted; }
public void setIsDeleted(Integer isDeleted) { this.isDeleted = isDeleted; }
public String getRemarks() { return remarks; }
public void setRemarks(String remarks) { this.remarks = remarks; }
}