变更内容: 1. 删除 maintainItemId 字段(冗余,无实际作用) 2. 保留 maintainItem 字段(直接存储项目名称) 3. 新增接口:获取已使用的保养项目列表(去重) 4. 前端可使用该接口提供下拉提示,提升用户体验 5. 添加 maintainItem 字段的非空校验 设计思路: - 不引入保养项目字典表(避免过度设计) - 通过 DISTINCT 查询提供已使用项目列表 - 用户可以输入新项目,也可以从已有项目中选择 - 后续如需规范化,可平滑升级到字典表方案
184 lines
5.6 KiB
Bash
Executable File
184 lines
5.6 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# =============================================
|
||
# 资产管理模块部署脚本 - 方案 2
|
||
# 创建独立的 oneos_asset 数据库
|
||
# =============================================
|
||
|
||
set -e # 遇到错误立即退出
|
||
|
||
# 颜色输出
|
||
GREEN='\033[0;32m'
|
||
RED='\033[0;31m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
echo "=========================================="
|
||
echo "资产管理模块部署 - 方案 2"
|
||
echo "=========================================="
|
||
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||
echo ""
|
||
|
||
# 配置
|
||
SERVER_IP="47.103.115.36"
|
||
SERVER_USER="root"
|
||
SERVER_PASSWORD="Passw0rd2026@ssl"
|
||
MYSQL_PASSWORD="Passw0rd2026"
|
||
DATABASE_NAME="oneos_asset"
|
||
SQL_FILE="sql/update-2026-03-12-停车场和车型参数模块.sql"
|
||
|
||
echo "=== 步骤 1:准备 SQL 文件 ==="
|
||
if [ ! -f "$SQL_FILE" ]; then
|
||
echo -e "${RED}❌ SQL 文件不存在: $SQL_FILE${NC}"
|
||
exit 1
|
||
fi
|
||
echo -e "${GREEN}✅ SQL 文件存在${NC}"
|
||
echo ""
|
||
|
||
echo "=== 步骤 2:上传 SQL 文件到服务器 ==="
|
||
echo "提示:需要手动输入密码: $SERVER_PASSWORD"
|
||
scp "$SQL_FILE" ${SERVER_USER}@${SERVER_IP}:/tmp/update-asset.sql
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}✅ SQL 文件上传成功${NC}"
|
||
else
|
||
echo -e "${RED}❌ SQL 文件上传失败${NC}"
|
||
exit 1
|
||
fi
|
||
echo ""
|
||
|
||
echo "=== 步骤 3:上传 Nacos 配置文件 ==="
|
||
echo "提示:需要手动输入密码: $SERVER_PASSWORD"
|
||
scp nacos-config/asset-server-dev.yaml ${SERVER_USER}@${SERVER_IP}:/tmp/
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}✅ 配置文件上传成功${NC}"
|
||
else
|
||
echo -e "${RED}❌ 配置文件上传失败${NC}"
|
||
exit 1
|
||
fi
|
||
echo ""
|
||
|
||
echo "=== 步骤 4:在服务器上执行部署 ==="
|
||
echo "提示:需要手动输入密码: $SERVER_PASSWORD"
|
||
ssh ${SERVER_USER}@${SERVER_IP} << 'ENDSSH'
|
||
|
||
echo "=========================================="
|
||
echo "在服务器上执行部署操作"
|
||
echo "=========================================="
|
||
|
||
# 检查 MySQL 容器
|
||
echo ""
|
||
echo "=== 4.1 检查 MySQL 容器 ==="
|
||
if docker ps | grep -q oneos-mysql; then
|
||
echo "✅ MySQL 容器运行中"
|
||
else
|
||
echo "❌ MySQL 容器未运行"
|
||
exit 1
|
||
fi
|
||
|
||
# 创建数据库
|
||
echo ""
|
||
echo "=== 4.2 创建 oneos_asset 数据库 ==="
|
||
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 -e "CREATE DATABASE IF NOT EXISTS oneos_asset DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>&1 | grep -v "Warning"
|
||
if [ $? -eq 0 ]; then
|
||
echo "✅ 数据库创建成功"
|
||
else
|
||
echo "❌ 数据库创建失败"
|
||
exit 1
|
||
fi
|
||
|
||
# 验证数据库
|
||
echo ""
|
||
echo "=== 4.3 验证数据库 ==="
|
||
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 -e "SHOW DATABASES LIKE 'oneos_asset';" 2>&1 | grep -v "Warning"
|
||
|
||
# 执行 SQL 脚本
|
||
echo ""
|
||
echo "=== 4.4 执行 SQL 脚本 ==="
|
||
docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset < /tmp/update-asset.sql 2>&1 | grep -v "Warning"
|
||
if [ $? -eq 0 ]; then
|
||
echo "✅ SQL 脚本执行成功"
|
||
else
|
||
echo "❌ SQL 脚本执行失败"
|
||
exit 1
|
||
fi
|
||
|
||
# 验证表结构
|
||
echo ""
|
||
echo "=== 4.5 验证表结构 ==="
|
||
echo "查看创建的表:"
|
||
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset -e "SHOW TABLES LIKE 'asset_%';" 2>&1 | grep -v "Warning"
|
||
|
||
echo ""
|
||
echo "停车场表结构:"
|
||
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset -e "DESC asset_parking;" 2>&1 | grep -v "Warning" | head -15
|
||
|
||
echo ""
|
||
echo "车型参数表结构:"
|
||
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset -e "DESC asset_vehicle_model;" 2>&1 | grep -v "Warning" | head -15
|
||
|
||
echo ""
|
||
echo "车型维保项目关联表结构:"
|
||
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset -e "DESC asset_vehicle_model_maintain_item;" 2>&1 | grep -v "Warning" | head -15
|
||
|
||
# 检查 Nacos 容器
|
||
echo ""
|
||
echo "=== 4.6 检查 Nacos 容器 ==="
|
||
if docker ps | grep -q nacos; then
|
||
echo "✅ Nacos 容器运行中"
|
||
NACOS_CONTAINER=$(docker ps | grep nacos | awk '{print $1}')
|
||
echo "Nacos 容器 ID: $NACOS_CONTAINER"
|
||
|
||
# 复制配置文件到 Nacos 容器
|
||
echo ""
|
||
echo "=== 4.7 上传配置到 Nacos ==="
|
||
echo "提示:需要手动通过 Nacos 控制台上传配置文件"
|
||
echo "配置文件位置: /tmp/asset-server-dev.yaml"
|
||
echo "Nacos 地址: http://47.103.115.36:8848/nacos"
|
||
echo "命名空间: dev"
|
||
echo "Data ID: asset-server-dev.yaml"
|
||
echo "Group: DEFAULT_GROUP"
|
||
else
|
||
echo "⚠️ Nacos 容器未运行,需要手动配置"
|
||
fi
|
||
|
||
echo ""
|
||
echo "=========================================="
|
||
echo "服务器端部署完成"
|
||
echo "=========================================="
|
||
|
||
ENDSSH
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}✅ 服务器端部署成功${NC}"
|
||
else
|
||
echo -e "${RED}❌ 服务器端部署失败${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo ""
|
||
echo "=========================================="
|
||
echo "部署总结"
|
||
echo "=========================================="
|
||
echo -e "${GREEN}✅ 数据库创建成功: oneos_asset${NC}"
|
||
echo -e "${GREEN}✅ SQL 脚本执行成功${NC}"
|
||
echo -e "${GREEN}✅ 表结构验证通过${NC}"
|
||
echo ""
|
||
echo "⚠️ 下一步操作:"
|
||
echo "1. 通过 Nacos 控制台上传配置文件"
|
||
echo " - 访问: http://47.103.115.36:8848/nacos"
|
||
echo " - 命名空间: dev"
|
||
echo " - Data ID: asset-server-dev.yaml"
|
||
echo " - Group: DEFAULT_GROUP"
|
||
echo " - 配置内容: nacos-config/asset-server-dev.yaml"
|
||
echo ""
|
||
echo "2. 启动资产管理服务"
|
||
echo " cd /Users/kkfluous/Projects/ai-coding/ln-oneos/oneos-backend"
|
||
echo " mvn spring-boot:run"
|
||
echo ""
|
||
echo "3. 执行 API 测试"
|
||
echo " ./test-api.sh"
|
||
echo ""
|
||
echo "=========================================="
|
||
echo "部署完成时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||
echo "=========================================="
|