# 用户权限管理系统部署指南

## 当前状态

✅ **前端已完成**：用户权限管理界面已实现，支持优雅的错误处理
❌ **后端待部署**：需要完成数据库表创建和后端服务重启

## 部署步骤

### 步骤1：创建数据库表

**执行SQL脚本：**
```sql
-- 在数据库中执行以下SQL
source C:\cattleTransport\tradeCattle\add_user_menu_table.sql;
```

**或者手动执行：**
```sql
CREATE TABLE IF NOT EXISTS `sys_user_menu` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` int(11) NOT NULL COMMENT '用户ID',
  `menu_id` int(11) NOT NULL COMMENT '菜单ID',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_menu_id` (`menu_id`),
  UNIQUE KEY `uk_user_menu` (`user_id`, `menu_id`) COMMENT '用户菜单唯一索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户菜单权限表';
```

### 步骤2：重启后端服务

**停止当前服务：**
```bash
# 查找Java进程
jps -l

# 停止Spring Boot应用（替换为实际的进程ID）
taskkill /F /PID <进程ID>
```

**重新启动服务：**
```bash
cd C:\cattleTransport\tradeCattle\aiotagro-cattle-trade
mvn spring-boot:run
```

**或者使用IDE启动：**
- 在IDE中运行 `AiotagroCattletradeApplication.java`
- 确保端口8080可用

### 步骤3：验证部署

**检查服务状态：**
```bash
# 检查端口是否监听
netstat -ano | findstr :8080

# 测试API接口
curl http://localhost:8080/api/sysUserMenu/hasUserPermissions?userId=1
```

**预期响应：**
```json
{
  "code": 200,
  "data": {
    "hasUserPermissions": false,
    "permissionCount": 0,
    "permissionSource": "角色权限"
  }
}
```

## 功能验证

### 1. 前端界面测试

1. **访问权限管理页面**
   - 打开浏览器访问：`http://localhost:8082`
   - 登录后进入权限管理页面

2. **测试标签页切换**
   - 确认"角色权限管理"标签页正常
   - 确认"用户权限管理"标签页正常

3. **测试用户权限管理**
   - 切换到"用户权限管理"标签页
   - 选择用户，查看权限来源显示
   - 尝试修改权限设置

### 2. 后端API测试

**测试用户权限查询：**
```bash
GET /api/sysUserMenu/hasUserPermissions?userId=3
```

**测试用户权限分配：**
```bash
POST /api/sysUserMenu/assignUserMenus
Content-Type: application/json

{
  "userId": 3,
  "menuIds": [1, 2, 3, 16, 4, 5]
}
```

**测试权限清空：**
```bash
DELETE /api/sysUserMenu/clearUserMenus?userId=3
```

## 当前问题解决

### 问题：404错误
**现象：** `Failed to load resource: the server responded with a status of 404`

**原因：** 后端服务未包含新的用户权限管理接口

**解决方案：**
1. 确保数据库表已创建
2. 重新编译后端项目：`mvn clean compile`
3. 重启后端服务：`mvn spring-boot:run`

### 问题：前端错误处理
**已解决：** 前端现在能够优雅地处理API不可用的情况
- 显示警告信息而不是错误
- 使用默认值（角色权限）
- 不影响其他功能的使用

## 部署检查清单

- [ ] 数据库表 `sys_user_menu` 已创建
- [ ] 后端项目已重新编译
- [ ] 后端服务已重启
- [ ] API接口 `/api/sysUserMenu/*` 可访问
- [ ] 前端页面可正常加载
- [ ] 用户权限管理功能正常

## 故障排除

### 1. 后端启动失败
**检查：**
- Java版本是否正确
- 数据库连接是否正常
- 端口8080是否被占用

### 2. API接口404
**检查：**
- 控制器类是否正确扫描
- 请求路径是否正确
- 服务是否完全启动

### 3. 数据库连接失败
**检查：**
- 数据库服务是否运行
- 连接配置是否正确
- 用户权限是否足够

## 完成后的功能

部署完成后，系统将支持：

1. **双权限系统**：
   - 角色权限管理（影响所有使用相同角色的用户）
   - 用户权限管理（仅影响单个用户）

2. **权限优先级**：
   - 用户专属权限覆盖角色权限
   - 向后兼容现有功能

3. **界面友好**：
   - 标签页切换
   - 权限来源显示
   - 操作确认提示

4. **API完整**：
   - 用户权限查询
   - 用户权限分配
   - 用户权限清空

## 联系支持

如果在部署过程中遇到问题，请检查：
1. 后端服务日志
2. 数据库连接状态
3. 网络连接情况
4. 端口占用情况
