# 应用管理模块 - 数据库导入说明 ## 📋 SQL 文件清单 | 文件名 | 说明 | 执行顺序 | |--------|------|---------| | `pangu_tables.sql` | 表结构(pg_application, pg_api_dict, pg_app_api) | ① 必须 | | `pangu_menu.sql` | 菜单数据(应用管理菜单及权限) | ② 必须 | | `open_api_dict_data.sql` | API 字典初始数据(学生列表接口) | ③ 必须 | --- ## 🚀 方式一:自动检查并导入(推荐) 使用提供的自动化脚本,会自动检查表和数据是否存在,缺失则自动导入。 ### 步骤: ```bash cd /Users/felix/pgWorkSpace/pangu-user-platform/backend/pangu-modules/pangu-business/sql # 基本用法(使用默认配置) ./check_and_import.sh -p your_password # 指定完整配置 ./check_and_import.sh -h 8.148.25.55 -P 3306 -d pguser-db -u root -p your_password ``` ### 参数说明: | 参数 | 说明 | 默认值 | |------|------|--------| | -h, --host | 数据库主机 | 8.148.25.55 | | -P, --port | 数据库端口 | 3306 | | -d, --database | 数据库名称 | pguser-db | | -u, --user | 数据库用户 | root | | -p, --password | 数据库密码 | 无(必填) | ### 脚本功能: ✅ 自动检查数据库连接 ✅ 检查表是否存在 ✅ 检查菜单是否存在 ✅ 检查 API 字典数据是否存在 ✅ 缺失则自动导入 ✅ 彩色输出,清晰直观 --- ## 🔧 方式二:手动导入 如果需要手动导入,请按以下顺序执行: ### 1. 导入表结构 ```bash mysql -h 8.148.25.55 -P 3306 -u root -p pguser-db < pangu_tables.sql ``` **表结构说明**: - `pg_application` - 第三方应用表(存储应用信息、AppCode、AppSecret) - `pg_api_dict` - API 接口字典表(可授权的接口列表) - `pg_app_api` - 应用 API 授权表(多对多关系) ### 2. 导入菜单数据 ```bash mysql -h 8.148.25.55 -P 3306 -u root -p pguser-db < pangu_menu.sql ``` **菜单说明**: - menu_id: 2300 - 应用管理(一级菜单) - menu_id: 2301-2306 - 应用管理相关权限(查询、新增、修改、删除、重置密钥、接口授权) ### 3. 导入 API 字典数据 ```bash mysql -h 8.148.25.55 -P 3306 -u root -p pguser-db < open_api_dict_data.sql ``` **数据说明**: - api_code: OPEN_STUDENT_LIST - 学生列表查询接口 --- ## ✅ 验证导入 ### 1. 检查表结构 ```sql -- 查看表是否存在 SHOW TABLES LIKE 'pg_%'; -- 查看表结构 DESC pg_application; DESC pg_api_dict; DESC pg_app_api; -- 查看表数据量 SELECT COUNT(*) FROM pg_application; SELECT COUNT(*) FROM pg_api_dict; SELECT COUNT(*) FROM pg_app_api; ``` ### 2. 检查菜单数据 ```sql -- 查看应用管理菜单 SELECT menu_id, menu_name, perms, icon FROM sys_menu WHERE menu_id >= 2300 AND menu_id < 2400 ORDER BY menu_id; -- 预期结果: -- 2300 应用管理 -- 2301 应用查询 -- 2302 应用新增 -- 2303 应用修改 -- 2304 应用删除 -- 2305 重置密钥 -- 2306 接口授权 ``` ### 3. 检查 API 字典数据 ```sql -- 查看 API 字典 SELECT * FROM pg_api_dict; -- 预期结果: -- api_code: OPEN_STUDENT_LIST -- api_name: 学生列表 -- api_path: /open/api/student/list ``` --- ## 🔍 常见问题 ### Q1: 导入时报错 "Table already exists" **原因**:表已存在 **解决**:这是正常的,说明表已经导入过了,可以忽略 ### Q2: 导入菜单时报错 "Duplicate entry" **原因**:菜单数据已存在 **解决**:可以忽略,或者先删除旧菜单再导入 ```sql -- 删除旧菜单(谨慎操作) DELETE FROM sys_menu WHERE menu_id >= 2300 AND menu_id < 2400; ``` ### Q3: 如何重新导入所有数据? ```bash # 1. 删除表(会丢失所有应用数据) mysql -h 8.148.25.55 -P 3306 -u root -p pguser-db -e " DROP TABLE IF EXISTS pg_app_api; DROP TABLE IF EXISTS pg_application; DROP TABLE IF EXISTS pg_api_dict; " # 2. 删除菜单 mysql -h 8.148.25.55 -P 3306 -u root -p pguser-db -e " DELETE FROM sys_menu WHERE menu_id >= 2300 AND menu_id < 2400; " # 3. 重新导入 ./check_and_import.sh -p your_password ``` --- ## 📝 导入后的操作 ### 1. 重启后端服务 ```bash cd /Users/felix/pgWorkSpace/pangu-user-platform/backend ./build.sh -r ``` ### 2. 刷新前端页面 打开浏览器访问:http://localhost:80 ### 3. 检查菜单是否显示 登录后台 → 左侧菜单 → 应该能看到"应用管理"菜单 ### 4. 创建测试应用 进入【应用管理】→ 点击【新增】→ 填写应用信息 → 保存 --- ## 🔗 相关文档 - [应用管理技术方案](/docs/应用管理-需求与技术设计方案.md) - [开放接口实现说明](/docs/开放接口实现说明.md) - [PHP 客户端使用指南](/scripts/test/README.md) --- ## 📞 技术支持 如导入过程中遇到问题,请检查: 1. 数据库连接配置是否正确 2. 数据库用户是否有足够权限 3. SQL 文件是否完整 4. 后端日志:`/tmp/pangu-admin.log` **pangu** 2026-02-04