bug修复

This commit is contained in:
2025-10-26 23:26:30 +08:00
parent 85e910fac9
commit df818578e5
20 changed files with 2008 additions and 98 deletions
+73 -35
View File
@@ -18,6 +18,7 @@ REMOTE_HOST="101.200.208.45"
REMOTE_USER="root"
REMOTE_DIR="/data/programs/emotion-museum"
REMOTE_LOG_DIR="/data/logs/emotion-museum"
REMOTE_JAR_NAME="emotion-single-1.0.0.jar"
SPRING_PROFILE="test"
# 颜色输出
@@ -41,29 +42,30 @@ log_error() {
# 检查并构建项目
build_project() {
log_info "检查项目构建状态..."
# 检查是否已经构建过并且JAR文件存在
if [ -f "$JAR_PATH" ]; then
log_info "JAR 文件已存在: $JAR_PATH"
return 0
fi
# 执行Maven构建
log_info "开始构建项目..."
if command -v mvn > /dev/null 2>&1; then
mvn clean package -DskipTests
if [ -f "$JAR_PATH" ]; then
log_info "项目构建成功: $JAR_PATH"
return 0
else
log_error "项目构建失败,未找到JAR文件: $JAR_PATH"
exit 1
fi
else
# 检查 Maven 是否安装
if ! command -v mvn > /dev/null 2>&1; then
log_error "未找到Maven命令,请确保已安装Maven"
exit 1
fi
# 执行 Maven 构建
log_info "执行: mvn clean package -DskipTests"
if ! mvn clean package -DskipTests; then
log_error "项目构建失败"
exit 1
fi
# 检查 JAR 文件是否生成
if [ ! -f "$JAR_PATH" ]; then
log_error "项目构建失败,未找到JAR文件: $JAR_PATH"
log_error "请检查 Maven 构建输出"
exit 1
fi
log_info "✅ 项目构建成功: $JAR_PATH"
log_info "文件大小: $(ls -lh $JAR_PATH | awk '{print $5}')"
}
# 检查 jar 文件是否存在
@@ -138,34 +140,70 @@ start_local_service() {
# 远程部署 - 上传文件到服务器
deploy_to_remote() {
log_info "开始远程部署到 $REMOTE_HOST..."
# 检查并构建项目
build_project
# 检查 jar 文件
check_jar
# 创建远程目录
log_info "创建远程目录..."
ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $REMOTE_DIR"
ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $REMOTE_LOG_DIR"
# 上传 jar 文件
if ! ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $REMOTE_DIR"; then
log_error "创建远程目录失败: $REMOTE_DIR"
exit 1
fi
if ! ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $REMOTE_LOG_DIR"; then
log_error "创建远程日志目录失败: $REMOTE_LOG_DIR"
exit 1
fi
# 上传 jar 文件并重命名
log_info "上传 JAR 文件到远程服务器..."
scp "$JAR_PATH" $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/
log_info "本地文件: $JAR_PATH"
log_info "远程路径: $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$REMOTE_JAR_NAME"
if ! scp "$JAR_PATH" $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$REMOTE_JAR_NAME; then
log_error "上传 JAR 文件失败"
log_error "请检查:"
log_error " 1. SSH 连接是否正常: ssh $REMOTE_USER@$REMOTE_HOST 'ls -la $REMOTE_DIR'"
log_error " 2. 本地文件是否存在: ls -la $JAR_PATH"
log_error " 3. 远程目录权限: ssh $REMOTE_USER@$REMOTE_HOST 'ls -la $REMOTE_DIR'"
exit 1
fi
log_info "✅ JAR 文件上传成功"
# 验证远程文件
log_info "验证远程文件..."
if ! ssh $REMOTE_USER@$REMOTE_HOST "ls -lh $REMOTE_DIR/$REMOTE_JAR_NAME"; then
log_error "远程文件验证失败"
exit 1
fi
# 上传部署脚本
log_info "上传部署脚本到远程服务器..."
scp "./deploy-server.sh" $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/
if ! scp "./deploy-server.sh" $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/; then
log_error "上传部署脚本失败"
exit 1
fi
log_info "✅ 部署脚本上传成功"
# 设置权限
ssh $REMOTE_USER@$REMOTE_HOST "chmod +x $REMOTE_DIR/deploy-server.sh"
log_info "设置远程脚本权限..."
if ! ssh $REMOTE_USER@$REMOTE_HOST "chmod +x $REMOTE_DIR/deploy-server.sh"; then
log_error "设置脚本权限失败"
exit 1
fi
# 在远程服务器上执行部署
log_info "在远程服务器上执行部署..."
ssh $REMOTE_USER@$REMOTE_HOST "cd $REMOTE_DIR && ./deploy-server.sh $SPRING_PROFILE"
log_info "远程部署完成!"
if ! ssh $REMOTE_USER@$REMOTE_HOST "cd $REMOTE_DIR && ./deploy-server.sh $SPRING_PROFILE"; then
log_error "远程部署脚本执行失败"
exit 1
fi
log_info "✅ 远程部署完成!"
show_remote_info
}
# 本地部署 - 检查服务状态
@@ -47,4 +47,9 @@ public class MessageResponse extends BaseResponse {
* 情感分析
*/
private String emotionAnalysis;
/**
* 消息顺序 - 在同一个会话中递增,用于确保消息展示顺序
*/
private Long messageOrder;
}
@@ -169,4 +169,10 @@ public class Message extends BaseEntity {
@TableField("coze_content_type")
private String cozeContentType;
/**
* 消息顺序 - 在同一个会话中递增,用于确保消息展示顺序
*/
@TableField("message_order")
private Long messageOrder;
}
@@ -66,7 +66,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getConversationId, conversationId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.page(page, wrapper);
}
@@ -75,7 +75,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getConversationId, conversationId)
.eq(Message::getIsDeleted, 0)
.orderByAsc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.list(wrapper);
}
@@ -94,7 +94,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
wrapper.eq(Message::getConversationId, conversationId)
.between(Message::getCreateTime, startTime, endTime)
.eq(Message::getIsDeleted, 0)
.orderByAsc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.list(wrapper);
}
@@ -103,7 +103,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getConversationId, conversationId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getCreateTime)
.orderByDesc(Message::getMessageOrder)
.last("LIMIT 1");
return this.getOne(wrapper);
}
@@ -113,7 +113,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getParentMessageId, parentMessageId)
.eq(Message::getIsDeleted, 0)
.orderByAsc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.list(wrapper);
}
@@ -184,10 +184,36 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
message.setIsRead(0);
}
// 设置消息顺序 - 在同一个会话中递增
if (message.getMessageOrder() == null) {
Long nextOrder = getNextMessageOrder(message.getConversationId());
message.setMessageOrder(nextOrder);
}
this.save(message);
return message;
}
/**
* 获取会话中下一个消息顺序
*
* @param conversationId 会话ID
* @return 下一个消息顺序
*/
private Long getNextMessageOrder(String conversationId) {
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getConversationId, conversationId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getMessageOrder)
.last("LIMIT 1");
Message lastMessage = this.getOne(wrapper);
if (lastMessage != null && lastMessage.getMessageOrder() != null) {
return lastMessage.getMessageOrder() + 1;
}
return 1L;
}
@Override
public boolean markAsRead(String messageId) {
return updateReadStatus(messageId, 1);
@@ -200,7 +226,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
wrapper.eq(Message::getUserId, userId)
.between(Message::getCreateTime, startTime, endTime)
.eq(Message::getIsDeleted, 0)
.orderByAsc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.list(wrapper);
}
@@ -211,7 +237,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getUserId, userId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
return this.page(page, wrapper);
}
@@ -223,7 +249,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
wrapper.eq(Message::getUserId, userId)
.eq(Message::getIsDeleted, 0)
.like(StringUtils.hasText(keyword), Message::getContent, keyword)
.orderByDesc(Message::getCreateTime);
.orderByAsc(Message::getMessageOrder);
IPage<Message> result = this.page(page, wrapper);
return result.getRecords();
}
@@ -235,7 +261,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Message::getUserId, userId)
.eq(Message::getIsDeleted, 0)
.orderByDesc(Message::getCreateTime);
.orderByDesc(Message::getMessageOrder);
IPage<Message> result = this.page(page, wrapper);
return result.getRecords();
}