# 资产管理模块部署 - 方案 2 手动操作指南 ## 📋 部署概述 **方案**: 创建独立的 oneos_asset 数据库 **优点**: 符合微服务架构,数据隔离 **时间**: 预计 10-15 分钟 ## 🔧 准备工作 ### 1. 本地文件准备 ✅ - ✅ SQL 脚本: `sql/update-2026-03-12-停车场和车型参数模块.sql` - ✅ Nacos 配置: `nacos-config/asset-server-dev.yaml` ### 2. 服务器信息 - **IP**: 47.103.115.36 - **用户**: root - **密码**: Passw0rd2026@ssl - **MySQL 密码**: Passw0rd2026 - **数据库名**: oneos_asset ## 📝 详细操作步骤 ### 步骤 1:登录服务器 ```bash ssh root@47.103.115.36 # 输入密码: Passw0rd2026@ssl ``` ### 步骤 2:创建 SQL 文件 在服务器上执行: ```bash cat > /tmp/update-asset.sql << 'EOF' -- ============================================= -- 资产管理系统 - 停车场和车型参数模块 -- 创建时间: 2026-03-12 -- ============================================= -- 1. 完善停车场表结构 ALTER TABLE `asset_parking` ADD COLUMN `principal` varchar(50) DEFAULT NULL COMMENT '公司负责人' AFTER `name`, ADD COLUMN `contact_name` varchar(50) DEFAULT NULL COMMENT '联系人' AFTER `principal`, ADD COLUMN `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话' AFTER `contact_name`, ADD COLUMN `parked_amount` int DEFAULT 0 COMMENT '已停车辆数' AFTER `capacity`, ADD COLUMN `stock_area` int DEFAULT NULL COMMENT '库存区域(字典)' AFTER `address`, ADD COLUMN `unusual_action_city` int DEFAULT NULL COMMENT '异动城市(字典)' AFTER `stock_area`, ADD COLUMN `longitude` varchar(50) DEFAULT NULL COMMENT '经度' AFTER `address`, ADD COLUMN `latitude` varchar(50) DEFAULT NULL COMMENT '纬度' AFTER `longitude`, ADD COLUMN `remark` varchar(500) DEFAULT NULL COMMENT '备注' AFTER `latitude`; -- 2. 创建车型参数表 CREATE TABLE `asset_vehicle_model` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `brand` int NOT NULL COMMENT '品牌(字典)', `model` int NOT NULL COMMENT '车型(字典)', `model_code` varchar(50) DEFAULT NULL COMMENT '车型编号', `model_name` varchar(100) NOT NULL COMMENT '车型名称', `notice_model` varchar(100) DEFAULT NULL COMMENT '车辆公告型号', `hydrogen_unit` int DEFAULT NULL COMMENT '仪表盘氢气单位(字典)', `hydrogen_capacity` int DEFAULT NULL COMMENT '氢瓶容量(L)', `electricity_mileage` int DEFAULT NULL COMMENT '电池公告可行驶里程(KM)', `reserve_electricity` decimal(10,2) DEFAULT NULL COMMENT '储电量(kwh)', `hydrogen_mileage` int DEFAULT NULL COMMENT '氢气公告可行驶里程(KM)', `fuel_type` int DEFAULT NULL COMMENT '燃料种类(字典)', `tire_size` varchar(50) DEFAULT NULL COMMENT '轮胎尺寸', `tire_number` int DEFAULT NULL COMMENT '轮胎数量', `truck_size` varchar(100) DEFAULT NULL COMMENT '车辆尺寸', `online_spread_enterprise` varchar(100) DEFAULT NULL COMMENT '电堆厂家', `battery_factory` varchar(100) DEFAULT NULL COMMENT '电池厂家', `refrigerator_factory` varchar(100) DEFAULT NULL COMMENT '冷机厂家', `creator` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), KEY `idx_brand` (`brand`), KEY `idx_model` (`model`), KEY `idx_model_name` (`model_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车型参数表'; -- 3. 创建车型维保项目关联表 CREATE TABLE `asset_vehicle_model_maintain_item` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `vehicle_model_id` bigint NOT NULL COMMENT '车型ID', `maintain_item_id` bigint NOT NULL COMMENT '维保项目ID', `creator` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), KEY `idx_vehicle_model_id` (`vehicle_model_id`), KEY `idx_maintain_item_id` (`maintain_item_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车型维保项目关联表'; -- 4. 更新车型维保项目关联表(添加保养详情字段) ALTER TABLE `asset_vehicle_model_maintain_item` ADD COLUMN `maintain_item` varchar(100) DEFAULT NULL COMMENT '保养项目' AFTER `maintain_item_id`, ADD COLUMN `maintain_content` varchar(500) DEFAULT NULL COMMENT '保养内容' AFTER `maintain_item`, ADD COLUMN `materials_expenses` decimal(10,2) DEFAULT NULL COMMENT '材料费' AFTER `maintain_content`, ADD COLUMN `hour_fee` decimal(10,2) DEFAULT NULL COMMENT '工时费' AFTER `materials_expenses`, ADD COLUMN `kilometer_cycle` int DEFAULT NULL COMMENT '保养公里周期(KM)' AFTER `hour_fee`, ADD COLUMN `time_cycle` int DEFAULT NULL COMMENT '保养时间周期(月)' AFTER `kilometer_cycle`; EOF ``` **提示**: 复制上面的整个命令块(包括 cat 和 EOF)一次性粘贴执行。 ### 步骤 3:检查 MySQL 容器 ```bash # 查看 MySQL 容器 docker ps | grep mysql # 应该看到类似输出: # xxxxx mysql:8.0 ... oneos-mysql ``` ### 步骤 4:创建数据库 ```bash docker exec oneos-mysql mysql -uroot -pPassw0rd2026 -e "CREATE DATABASE IF NOT EXISTS oneos_asset DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # 验证数据库创建 docker exec oneos-mysql mysql -uroot -pPassw0rd2026 -e "SHOW DATABASES LIKE 'oneos_asset';" ``` **预期输出**: ``` Database (oneos_asset) oneos_asset ``` ### 步骤 5:执行 SQL 脚本 ```bash docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset < /tmp/update-asset.sql ``` **注意**: 如果看到 `Warning: Using a password on the command line...` 是正常的,可以忽略。 ### 步骤 6:验证表结构 ```bash # 1. 查看创建的表 docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset -e "SHOW TABLES LIKE 'asset_%';" ``` **预期输出**: ``` Tables_in_oneos_asset (asset_%) asset_parking asset_vehicle_model asset_vehicle_model_maintain_item ``` ```bash # 2. 查看停车场表结构 docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset -e "DESC asset_parking;" ``` **检查是否包含新字段**: - principal(公司负责人) - contact_name(联系人) - contact_phone(联系电话) - parked_amount(已停车辆数) - stock_area(库存区域) - unusual_action_city(异动城市) - longitude(经度) - latitude(纬度) - remark(备注) ```bash # 3. 查看车型参数表结构 docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset -e "DESC asset_vehicle_model;" # 4. 查看车型维保项目关联表 docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset -e "DESC asset_vehicle_model_maintain_item;" ``` ### 步骤 7:创建 Nacos 配置文件 在服务器上执行: ```bash cat > /tmp/asset-server-dev.yaml << 'EOF' server: port: 48084 spring: datasource: dynamic: primary: master datasource: master: url: jdbc:mysql://oneos-mysql:3306/oneos_asset?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true username: root password: Passw0rd2026 slave: lazy: true url: jdbc:mysql://oneos-mysql:3306/oneos_asset?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true username: root password: Passw0rd2026 data: redis: database: 4 cloud: nacos: discovery: namespace: dev config: namespace: dev yudao: info: base-package: cn.iocoder.yudao.module.asset EOF ``` ### 步骤 8:上传配置到 Nacos #### 方式 1:通过 Nacos 控制台(推荐) 1. 访问 Nacos 控制台:http://47.103.115.36:8848/nacos 2. 登录(默认用户名/密码:nacos/nacos) 3. 进入"配置管理" → "配置列表" 4. 选择命名空间:dev 5. 点击"+"创建配置 6. 填写信息: - Data ID: `asset-server-dev.yaml` - Group: `DEFAULT_GROUP` - 配置格式: `YAML` - 配置内容: 复制 `/tmp/asset-server-dev.yaml` 的内容 7. 点击"发布" #### 方式 2:通过 API 上传 ```bash # 获取 Nacos Token TOKEN=$(curl -s -X POST 'http://localhost:8848/nacos/v1/auth/login' \ -d 'username=nacos&password=nacos' | \ python3 -c "import sys, json; print(json.load(sys.stdin)['accessToken'])") # 上传配置 curl -X POST 'http://localhost:8848/nacos/v1/cs/configs' \ -d "dataId=asset-server-dev.yaml" \ -d "group=DEFAULT_GROUP" \ -d "content=$(cat /tmp/asset-server-dev.yaml)" \ -d "type=yaml" \ -d "tenant=dev" \ -d "accessToken=$TOKEN" ``` ### 步骤 9:退出服务器 ```bash exit ``` ## ✅ 验证清单 在服务器上完成以下验证: - [ ] MySQL 容器运行正常 - [ ] oneos_asset 数据库创建成功 - [ ] asset_parking 表存在且包含 9 个新字段 - [ ] asset_vehicle_model 表创建成功 - [ ] asset_vehicle_model_maintain_item 表创建成功 - [ ] Nacos 配置上传成功 ## 🚀 下一步操作 ### 1. 启动应用服务(本地) ```bash cd /Users/kkfluous/Projects/ai-coding/ln-oneos/oneos-backend # 方式 1:使用 Maven mvn spring-boot:run # 方式 2:打包后启动 mvn clean package -DskipTests java -jar yudao-server/target/yudao-server-*.jar ``` ### 2. 验证服务启动 ```bash # 检查服务健康状态 curl http://localhost:48080/actuator/health # 访问 Swagger 文档 open http://localhost:48080/doc.html ``` ### 3. 执行 API 测试 ```bash # 获取登录 Token curl -X POST http://localhost:48080/admin-api/system/auth/login \ -H "Content-Type: application/json" \ -d '{"username": "admin", "password": "admin123"}' # 修改测试脚本中的 TOKEN vim test-api.sh # 运行测试 ./test-api.sh ``` ## 📊 部署总结 ### 已完成 - ✅ 创建 oneos_asset 数据库 - ✅ 执行 SQL 脚本 - ✅ 创建 3 张表 - ✅ 创建 Nacos 配置 ### 待完成 - ⏳ 上传配置到 Nacos - ⏳ 启动应用服务 - ⏳ 执行 API 测试 ## 💡 常见问题 ### Q1: 表已存在怎么办? 如果 asset_parking 表已存在,ALTER TABLE 会失败。解决方法: ```sql -- 检查字段是否存在 SHOW COLUMNS FROM asset_parking LIKE 'principal'; -- 如果不存在,单独添加 ALTER TABLE asset_parking ADD COLUMN principal varchar(50) DEFAULT NULL COMMENT '公司负责人' AFTER name; ``` ### Q2: Nacos 连接不上? 检查 Nacos 容器状态: ```bash docker ps | grep nacos docker logs ``` ### Q3: 数据库连接失败? 检查 MySQL 容器状态: ```bash docker ps | grep mysql docker logs oneos-mysql ``` --- **创建时间**: 2026-03-12 01:40 **预计时间**: 10-15 分钟 **难度**: ⭐⭐ 中等