Complete integration of the old clinical research platform (www.xunzhengyixue.com) into the new AI platform via Token injection + iframe embedding: Backend: - Add legacy-bridge module (MySQL pool, auth service, routes) - POST /api/v1/legacy/auth: JWT -> phone lookup -> Token injection into old MySQL - Auto-create user in old system if not found (matched by phone number) Frontend: - LegacySystemPage: iframe container with Bridge URL construction - ResearchManagement + StatisticalTools entry components - Module registry updated from external links to iframe embed mode ECS (token-bridge.html deployed to www.xunzhengyixue.com): - Wrapper Bridge: sets cookies within same-origin context - Storage Access API for cross-site dev environments - CSS injection: hide old system nav/footer, remove padding gaps - Inner iframe loads target page with full DOM access (same-origin) Key technical decisions: - Token injection (direct MySQL write) instead of calling login API - Wrapper Bridge instead of parent-page cookie setting (cross-origin fix) - Storage Access API + SameSite=None;Secure for third-party cookie handling - User isolation guaranteed by phone number matching Documentation: - Integration plan v4.0 with full implementation record - Implementation summary with 6 pitfalls documented - System status guide updated (ST module now integrated) Tested: Local E2E verified - auto login, research management, 126 statistical tools, report generation, download, UI layout all working correctly Made-with: Cursor
216 lines
5.8 KiB
Markdown
216 lines
5.8 KiB
Markdown
# 旧版本系统 - 服务器与数据库配置说明
|
||
|
||
> 最后更新:2026-02-15
|
||
|
||
---
|
||
|
||
## 1. 服务器信息
|
||
|
||
| 项目 | 值 |
|
||
|------|-----|
|
||
| 服务器地址 | `8.154.22.149` |
|
||
| 操作系统 | Linux (Ubuntu) |
|
||
| 数据库类型 | MariaDB |
|
||
| 数据库端口 | 3306 |
|
||
|
||
---
|
||
|
||
## 2. 数据库连接信息
|
||
|
||
| 项目 | 值 |
|
||
|------|-----|
|
||
| 连接地址 | `jdbc:mysql://127.0.0.1:3306/xzyx_online?characterEncoding=utf8` |
|
||
| 数据库名 | `xzyx_online` |
|
||
| 用户名 | `xzyx_rw` |
|
||
| 密码 | `SKJfdwalkd` |
|
||
|
||
### 命令行连接方式
|
||
|
||
```bash
|
||
# SSH 登录服务器
|
||
ssh root@8.154.22.149
|
||
|
||
# 连接数据库
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online
|
||
```
|
||
|
||
---
|
||
|
||
## 3. 用户表结构 (u_user_info)
|
||
|
||
### 核心字段
|
||
|
||
| 字段 | 类型 | 说明 | 后台显示名 |
|
||
|------|------|------|-----------|
|
||
| `id` | int(11) | 主键,自增 | - |
|
||
| `phone` | varchar(20) | 手机号(登录账号)**必填** | 账号 |
|
||
| `nickname` | varchar(40) | 昵称 | 昵称 |
|
||
| `real_name` | varchar(45) | 真实姓名 | - |
|
||
| `hospital` | varchar(255) | 固定值 "本地" | - |
|
||
| `company` | varchar(200) | **实际的机构/医院名称** | 医院 |
|
||
| `academy` | varchar(200) | **部门** | 部门 |
|
||
| `user_role` | varchar(20) | 用户角色,默认 "NORMAL" | 用户角色 |
|
||
| `user_status` | varchar(45) | 用户状态,默认 "NORMAL" | - |
|
||
| `password` | varchar(45) | 密码(MD5加密) | - |
|
||
| `hosptial_id` | int(11) | 医院ID,默认 0 | - |
|
||
| `email_validate_status` | tinyint(4) | 邮箱验证状态,默认 0 | - |
|
||
| `register_time` | int(11) | 注册时间(Unix时间戳) | - |
|
||
|
||
### 字段对应关系
|
||
|
||
| 后台显示 | 数据库字段 |
|
||
|----------|-----------|
|
||
| 账号 | `phone` |
|
||
| 昵称 | `nickname` + `real_name` |
|
||
| 用户角色:普通 | `user_role = 'NORMAL'` |
|
||
| 医院 | `company`(注意:不是 hospital 字段) |
|
||
| 部门 | `academy` |
|
||
|
||
### 默认密码
|
||
|
||
- 明文:`123456`
|
||
- MD5:`E10ADC3949BA59ABBE56E057F20F883E`
|
||
|
||
---
|
||
|
||
## 4. 批量导入用户操作指南
|
||
|
||
### 步骤1:准备 CSV 文件
|
||
|
||
格式要求:
|
||
|
||
```csv
|
||
手机号,姓名,医院,部门
|
||
13800000001,张三,北京大学第三医院,骨科
|
||
13800000002,李四,医朵云,医学部
|
||
```
|
||
|
||
### 步骤2:检查重复手机号
|
||
|
||
```bash
|
||
# 导出现有手机号
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online -N -e "SELECT phone FROM u_user_info;" > /tmp/existing_phones.txt
|
||
|
||
# 查看现有用户数量
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online -e "SELECT COUNT(*) FROM u_user_info;"
|
||
```
|
||
|
||
### 步骤3:生成 SQL 插入语句
|
||
|
||
单条插入模板:
|
||
|
||
```sql
|
||
INSERT INTO u_user_info (
|
||
phone,
|
||
nickname,
|
||
real_name,
|
||
hospital,
|
||
company,
|
||
academy,
|
||
user_role,
|
||
user_status,
|
||
password,
|
||
hosptial_id,
|
||
email_validate_status,
|
||
register_time
|
||
) VALUES (
|
||
'手机号',
|
||
'姓名',
|
||
'姓名',
|
||
'本地',
|
||
'机构名称',
|
||
'部门',
|
||
'NORMAL',
|
||
'NORMAL',
|
||
'E10ADC3949BA59ABBE56E057F20F883E',
|
||
0,
|
||
0,
|
||
UNIX_TIMESTAMP()
|
||
);
|
||
```
|
||
|
||
批量插入模板(使用 INSERT IGNORE 避免重复报错):
|
||
|
||
```sql
|
||
INSERT IGNORE INTO u_user_info (phone, nickname, real_name, hospital, company, academy, user_role, user_status, password, hosptial_id, email_validate_status, register_time) VALUES
|
||
('13800000001', '张三', '张三', '本地', '北京大学第三医院', '骨科', 'NORMAL', 'NORMAL', 'E10ADC3949BA59ABBE56E057F20F883E', 0, 0, UNIX_TIMESTAMP()),
|
||
('13800000002', '李四', '李四', '本地', '医朵云', '医学部', 'NORMAL', 'NORMAL', 'E10ADC3949BA59ABBE56E057F20F883E', 0, 0, UNIX_TIMESTAMP());
|
||
```
|
||
|
||
### 步骤4:上传并执行 SQL
|
||
|
||
```bash
|
||
# 上传 SQL 文件到服务器(或使用 nano 创建)
|
||
nano /tmp/batch_insert_users.sql
|
||
|
||
# 执行 SQL 文件
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online < /tmp/batch_insert_users.sql
|
||
```
|
||
|
||
### 步骤5:验证导入结果
|
||
|
||
```bash
|
||
# 查询指定机构的用户数量
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online -e "SELECT COUNT(*) as '用户数' FROM u_user_info WHERE company = '北京大学第三医院';"
|
||
|
||
# 抽查用户数据
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online -e "SELECT id, phone, nickname, company, academy FROM u_user_info WHERE company = '北京大学第三医院' LIMIT 10;"
|
||
```
|
||
|
||
---
|
||
|
||
## 5. 常用查询命令
|
||
|
||
### 查看所有表
|
||
|
||
```bash
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online -e "SHOW TABLES;"
|
||
```
|
||
|
||
### 查看表结构
|
||
|
||
```bash
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online -e "DESC u_user_info;"
|
||
```
|
||
|
||
### 根据手机号查询用户
|
||
|
||
```bash
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online -e "SELECT * FROM u_user_info WHERE phone = '18611348738'\G"
|
||
```
|
||
|
||
### 修改用户信息
|
||
|
||
```bash
|
||
# 修改手机号
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online -e "UPDATE u_user_info SET phone = '新手机号' WHERE phone = '旧手机号';"
|
||
|
||
# 重置密码为 123456
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online -e "UPDATE u_user_info SET password = 'E10ADC3949BA59ABBE56E057F20F883E' WHERE phone = '手机号';"
|
||
```
|
||
|
||
### 删除用户
|
||
|
||
```bash
|
||
mysql -u xzyx_rw -p'SKJfdwalkd' -h 127.0.0.1 xzyx_online -e "DELETE FROM u_user_info WHERE phone = '手机号';"
|
||
```
|
||
|
||
---
|
||
|
||
## 6. 已导入批次记录
|
||
|
||
| 批次 | 日期 | 机构 | 数量 | SQL文件 |
|
||
|------|------|------|------|---------|
|
||
| 第1批 | 2026-02-15 | 北京大学第三医院 | 225 | `docs/06-测试文档/batch_insert_users.sql` |
|
||
| 第2批 | 2026-02-15 | 北京大学第三医院 | 35 | `docs/06-测试文档/batch_insert_users_2.sql` |
|
||
|
||
---
|
||
|
||
## 7. 注意事项
|
||
|
||
1. **手机号唯一性**:手机号是用户的唯一登录凭证,不能重复
|
||
2. **密码存储**:使用 MD5 加密,默认密码 123456 对应 `E10ADC3949BA59ABBE56E057F20F883E`
|
||
3. **hospital 字段**:固定填写 "本地",实际医院名称存储在 `company` 字段
|
||
4. **部门字段**:使用 `academy` 字段存储
|
||
5. **使用 INSERT IGNORE**:批量导入时使用此语法,遇到重复手机号自动跳过不报错
|