From 59131f1d5b1d63d72d6bfc587cbc4c8adf22ac80 Mon Sep 17 00:00:00 2001 From: renjianbo <263303411@qq.com> Date: Thu, 29 Jan 2026 17:51:13 +0800 Subject: [PATCH] a --- (红头)后台文档.md | 822 +++++++++++++++++++++ application/admin/view/login/login.html | 231 +++--- application/adminghd/view/login/login.html | 231 +++--- 3 files changed, 1016 insertions(+), 268 deletions(-) create mode 100644 (红头)后台文档.md diff --git a/(红头)后台文档.md b/(红头)后台文档.md new file mode 100644 index 0000000..a302f8f --- /dev/null +++ b/(红头)后台文档.md @@ -0,0 +1,822 @@ +# 后台管理系统文档 + +**项目名称:** 瑞莱医疗后台管理系统 +**技术架构:** ThinkPHP 5.0 + Layui + jQuery +**数据库:** MySQL +**文档版本:** v2.0 +**创建日期:** 2025年1月28日 +**最后更新:** 2025年1月29日(已完成逻辑彻底分离) + +> **✅ 分离状态:** 两个后台模块已实现**逻辑彻底分离**(方案一),可独立维护,互不影响。 +> - **admin 模块**:早熟预测后台,完全独立实现 +> - **adminghd 模块**:GHD预测后台,完全独立实现 +> - 两个模块不再依赖 `common` 模块的业务基类 + +--- + +## 一、系统概述 + +### 1.1 系统简介 + +本系统为两个医疗小程序提供统一的后台管理服务: + +1. **女童成长发育早熟预测模型后台** (`admin` 模块) + - 对应小程序:瑞莱医疗小程序 + - 小程序AppID: `wx0847525a15342a46` + - 访问路径:`/admin/` + +2. **生长激素缺乏预测模型后台** (`adminghd` 模块) + - 对应小程序:生长激素缺乏(GHD)预测模型小程序 + - 小程序AppID: `wxa75a76964ae7ce73` + - 访问路径:`/adminghd/` + +### 1.2 系统架构 + +``` +┌─────────────────────────────────────────┐ +│ 后台管理系统 │ +├─────────────────────────────────────────┤ +│ admin模块 adminghd模块 │ +│ (早熟预测) (GHD预测) │ +├─────────────────────────────────────────┤ +│ 共同功能: │ +│ - 登录认证 │ +│ - 菜单管理 │ +│ - 资讯管理 │ +│ - 用户管理 │ +│ - 计算记录管理 │ +└─────────────────────────────────────────┘ +``` + +--- + +## 二、系统架构 + +### 2.1 目录结构 + +``` +/www/wwwroot/code/ +├── application/ # 应用目录 +│ ├── admin/ # 早熟预测后台模块 +│ │ ├── controller/ # 控制器 +│ │ │ ├── Login.php # 登录控制器 +│ │ │ ├── Menu.php # 菜单管理 +│ │ │ ├── Wechatset.php # 资讯管理 +│ │ │ ├── Wechatinfro.php # 用户和记录管理 +│ │ │ └── Dashboard.php # 仪表盘 +│ │ ├── common/ # 公共类 +│ │ │ └── Base.php # 基础控制器(登录验证) +│ │ └── view/ # 视图模板 +│ │ ├── login/ # 登录相关视图 +│ │ │ ├── login.html # 登录页 +│ │ │ └── nav.html # 主框架页 +│ │ ├── wechatset/ # 资讯管理视图 +│ │ └── wechatinfro/ # 用户和记录视图 +│ ├── adminghd/ # GHD预测后台模块 +│ │ ├── controller/ # 控制器(结构同admin) +│ │ ├── common/ # 公共类 +│ │ └── view/ # 视图模板 +│ ├── app/ # 小程序API模块 +│ │ └── controller/ +│ │ ├── Ruilaiwechat.php # 瑞莱小程序API +│ │ └── Ghdwechat.php # GHD小程序API +│ └── common/ # 公共模块 +│ ├── config/ # 配置类 +│ │ └── BusinessConfig.php # 业务配置 +│ └── controller/ # 公共控制器 +│ ├── WechatsetBase.php # 资讯管理基类 +│ ├── WechatinfroBase.php # 用户管理基类 +│ └── DashboardBase.php # 仪表盘基类 +├── public/ # 公共访问目录 +│ ├── static/ # 静态资源 +│ │ ├── admin/ # admin模块静态资源 +│ │ │ ├── css/ # 样式文件 +│ │ │ ├── js/ # JavaScript文件 +│ │ │ └── layui/ # Layui框架 +│ │ └── adminghd/ # adminghd模块静态资源 +│ └── index.php # 入口文件 +└── thinkphp/ # ThinkPHP框架核心 +``` + +### 2.2 技术栈 + +- **后端框架:** ThinkPHP 5.0 +- **前端框架:** Layui 2.x +- **JavaScript库:** jQuery +- **数据库:** MySQL +- **会话管理:** ThinkPHP Session + +--- + +## 三、模块说明 + +### 3.1 admin 模块(早熟预测后台) + +#### 3.1.1 访问路径 +- 登录页:`/admin/login` +- 主框架:`/admin/login/index`(登录后自动跳转) + +#### 3.1.2 Session配置 +- 用户ID键名:`admin_user_id` +- 登录时间键名:`admin_user_login_time` +- 超时时间:3600秒(1小时) + +#### 3.1.3 数据表映射 +| 业务表 | 数据库表名 | +|--------|-----------| +| 用户表 | `wechat_user` | +| 资讯表 | `wechat_real_time_info` | +| 计算记录表 | `wechat_calculate_record` | +| 菜单表 | `menu` | +| 管理员表 | `user` | + +#### 3.1.4 静态资源路径 +- CSS:`/static/admin/css/` +- JS:`/static/admin/js/` +- Layui:`/static/admin/layui/` + +### 3.2 adminghd 模块(GHD预测后台) + +#### 3.2.1 访问路径 +- 登录页:`/adminghd/login` +- 主框架:`/adminghd/login/index`(登录后自动跳转) + +#### 3.2.2 Session配置 +- 用户ID键名:`adminghd_user_id` +- 登录时间键名:`adminghd_user_login_time` +- 超时时间:3600秒(1小时) + +#### 3.2.3 数据表映射 +| 业务表 | 数据库表名 | +|--------|-----------| +| 用户表 | `ghd_wechat_user` | +| 资讯表 | `wechat_real_time_info` | +| 计算记录表 | `wechat_calculate_record` | +| 菜单表 | `menu` | +| 管理员表 | `user` | + +#### 3.2.4 静态资源路径 +- CSS:`/static/adminghd/css/` +- JS:`/static/adminghd/js/` +- Layui:`/static/adminghd/layui/` + +--- + +## 四、功能模块 + +### 4.1 登录认证模块 + +#### 4.1.1 登录功能 + +**控制器:** `Login.php` + +**登录流程:** +1. 用户访问登录页 `/admin/login` 或 `/adminghd/login` +2. 输入用户名(手机号)和密码 +3. 系统验证用户信息: + - 查询 `user` 表 + - 验证条件:`phone` = 用户名,`password` = MD5(密码),`status` = 1,`type` = 1 +4. 登录成功: + - 设置Session:`admin_user_id` 或 `adminghd_user_id` + - 设置登录时间:`admin_user_login_time` 或 `adminghd_user_login_time`(当前时间 + 3600秒) + - 返回JSON:`{'status':1, 'msg':'登录成功', 'token':1}` +5. 跳转到主框架页面 + +**登录验证:** +- 所有需要登录的页面继承 `Base` 类 +- `Base::_initialize()` 方法自动检查Session +- 未登录或超时:跳转到登录页 + +#### 4.1.2 退出功能 + +**接口:** `/admin/Login/logout` 或 `/adminghd/Login/logout` + +**功能:** +- 清除所有Session数据 +- 返回JSON:`{'status':1, 'msg':'退出成功'}` +- 前端跳转到登录页 + +### 4.2 菜单管理模块 + +#### 4.2.1 菜单结构 + +**数据表:** `menu` + +**表结构:** +- `id`:菜单ID(主键) +- `pid`:父菜单ID(空或0表示一级菜单) +- `menu_name`:菜单名称 +- `url`:菜单链接 +- `seq_on`:排序序号 +- `menu_icon`:菜单图标 +- `create_time`:创建时间 + +**菜单层级:** +- 一级菜单:`pid` 为空或0 +- 二级菜单:`pid` 指向一级菜单的 `id` + +#### 4.2.2 获取菜单列表 + +**接口:** `/admin/Menu/getMenuList` 或 `/adminghd/Menu/getMenuList` + +**返回格式:** +```json +{ + "status": 1, + "msg": "获取数据成功!!", + "data": [ + { + "id": "xxx", + "pid": "", + "menu_name": "小程序设置", + "url": "", + "seq_on": 1, + "type": 1, + "children": [ + { + "id": "yyy", + "pid": "xxx", + "menu_name": "首页资讯列表", + "url": "/admin/Wechatset/wechatRealTimeInfo", + "type": 2 + } + ] + } + ] +} +``` + +#### 4.2.3 菜单管理功能 + +- **添加菜单:** `/admin/Menu/doaddMenu` +- **修改菜单:** `/admin/Menu/doupdMenu` +- **删除菜单:** `/admin/Menu/delMenu` +- **获取菜单详情:** `/admin/Menu/updMenu` + +### 4.3 用户信息模块 + +#### 4.3.1 获取当前用户信息 + +**接口:** `/admin/Menu/getUserInfor` 或 `/adminghd/Menu/getUserInfor` + +**返回格式:** +```json +{ + "status": 1, + "msg": "查询成功", + "infro": { + "user_name": "管理员", + "user_head": "/static/admin/img/upload.png" + } +} +``` + +#### 4.3.2 小程序注册用户管理 + +**控制器:** `Wechatinfro.php` + +**功能列表:** +- **用户列表:** `/admin/Wechatinfro/wechatUserList` +- **获取用户列表:** `/admin/Wechatinfro/getWechatUserList` + +**数据表:** +- admin模块:`wechat_user` +- adminghd模块:`ghd_wechat_user` + +**用户列表字段:** +- `uid`:用户ID +- `nickname`:用户昵称 +- `headimg`:头像 +- `create_time`:注册时间 + +**搜索功能:** +- 支持按昵称模糊搜索 + +### 4.4 资讯管理模块 + +#### 4.4.1 资讯列表 + +**控制器:** `Wechatset.php` + +**功能列表:** +- **资讯列表页:** `/admin/Wechatset/wechatRealTimeInfo` +- **获取资讯列表:** `/admin/Wechatset/getWechatRealTimeInfoList` +- **添加资讯页:** `/admin/Wechatset/wechatRealTimeInfoAdd` +- **编辑资讯页:** `/admin/Wechatset/wechatRealTimeInfoUpdate` +- **保存资讯:** `/admin/Wechatset/saveWechatRealTimeInfo` +- **删除资讯:** `/admin/Wechatset/delWechatRealTimeInfo` +- **获取资讯详情:** `/admin/Wechatset/getRealTimeInfoDetail` + +**数据表:** `wechat_real_time_info`(两个模块共用) + +**资讯字段:** +- `id`:资讯ID +- `title_plain`:标题 +- `thumbnail`:缩略图 +- `excerpt_plain`:简介 +- `url`:跳转链接 +- `create_time`:创建时间 + +**搜索功能:** +- 支持按标题模糊搜索 + +#### 4.4.2 资讯管理流程 + +1. **添加资讯:** + - 填写标题、上传图片、填写简介、填写跳转链接 + - 系统自动生成ID(MD5(时间戳+随机数)) + - 保存到数据库 + +2. **编辑资讯:** + - 根据ID获取资讯详情 + - 修改后保存 + +3. **删除资讯:** + - 根据ID删除记录 + +### 4.5 计算记录管理模块 + +#### 4.5.1 计算记录列表 + +**控制器:** `Wechatinfro.php` + +**功能列表:** +- **记录列表页:** `/admin/Wechatinfro/wechatRecordList` +- **获取记录列表:** `/admin/Wechatinfro/getWechatRecordList` + +**数据表:** `wechat_calculate_record`(两个模块共用) + +**记录字段:** +- `id`:记录ID +- `name`:姓名 +- `age`:年龄 +- `height`:身高 +- `bone_age`:骨龄 +- `father_height`:父亲身高 +- `mother_height`:母亲身高 +- `IGF`:IGF-1值(GHD)或IGFBP-3值(早熟) +- `LH`:LH值(早熟) +- `uterus_thickness`:子宫厚度(早熟) +- `calculate_resutlt`:计算结果 +- `create_time`:创建时间 + +**搜索功能:** +- 支持按姓名模糊搜索 + +### 4.6 仪表盘模块(Dashboard) + +#### 4.6.1 统计概览 + +**控制器:** `Dashboard.php` + +**功能列表:** +- **仪表盘页面:** `/admin/Dashboard/index` +- **获取统计数据:** `/admin/Dashboard/getStatistics` + +**统计数据:** +- 注册用户数 +- 首页资讯数量 +- 最近一次计算时间 +- 今日新增用户数 +- 总计算次数 + +--- + +## 五、数据库设计 + +### 5.1 核心数据表 + +#### 5.1.1 管理员表(user) + +**说明:** 后台管理员账户表,两个模块共用 + +**字段:** +- `id`:管理员ID(主键) +- `user_name`:管理员姓名 +- `phone`:手机号(登录用户名) +- `password`:密码(MD5加密) +- `user_head`:头像 +- `status`:状态(1=启用,0=禁用) +- `type`:类型(1=管理员) + +#### 5.1.2 菜单表(menu) + +**说明:** 后台菜单配置表,两个模块共用 + +**字段:** +- `id`:菜单ID(主键,MD5生成) +- `pid`:父菜单ID(空或0=一级菜单) +- `menu_name`:菜单名称 +- `url`:菜单链接 +- `seq_on`:排序序号 +- `menu_icon`:菜单图标 +- `create_time`:创建时间 + +#### 5.1.3 小程序用户表 + +**说明:** 小程序注册用户表,两个模块使用不同的表 + +**admin模块:** `wechat_user` +**adminghd模块:** `ghd_wechat_user` + +**字段:** +- `uid`:用户ID(主键) +- `openid`:微信OpenID +- `nickname`:用户昵称 +- `headimg`:头像 +- `create_time`:注册时间 + +#### 5.1.4 资讯表(wechat_real_time_info) + +**说明:** 首页资讯表,两个模块共用 + +**字段:** +- `id`:资讯ID(主键,MD5生成) +- `title_plain`:标题 +- `thumbnail`:缩略图URL +- `excerpt_plain`:简介 +- `url`:跳转链接 +- `create_time`:创建时间 + +#### 5.1.5 计算记录表(wechat_calculate_record) + +**说明:** 预测计算记录表,两个模块共用 + +**字段:** +- `id`:记录ID(主键,MD5生成) +- `uid`:用户ID +- `name`:姓名 +- `age`:年龄 +- `height`:身高(cm) +- `bone_age`:骨龄(年) +- `father_height`:父亲身高(cm) +- `mother_height`:母亲身高(cm) +- `IGF`:IGF-1值(GHD)或IGFBP-3值(早熟) +- `LH`:LH值(早熟预测) +- `uterus_thickness`:子宫厚度(早熟预测) +- `calculate_resutlt`:计算结果(JSON格式) +- `create_time`:创建时间 + +--- + +## 六、前端架构 + +### 6.1 主框架结构 + +**文件:** `application/admin/view/login/nav.html` 或 `application/adminghd/view/login/nav.html` + +**布局:** +- 左侧导航栏:菜单列表 +- 顶部栏:面包屑导航 + 用户信息 + 退出按钮 +- 主内容区:iframe加载功能页面 + +### 6.2 导航菜单渲染 + +**文件:** `public/static/admin/js/nav.js` 或 `public/static/adminghd/js/nav.js` + +**功能:** +1. 页面加载时调用 `/admin/Menu/getMenuList` 获取菜单数据 +2. 将菜单数据渲染为左侧导航栏 +3. 支持一级和二级菜单结构 +4. 点击菜单项,在iframe中加载对应页面 + +### 6.3 样式框架 + +**CSS框架:** Layui 2.x + +**主要样式文件:** +- `nav.css`:主框架样式 +- `login.css`:登录页样式 +- `index.css`:列表页样式 + +--- + +## 七、API接口 + +### 7.1 登录相关 + +| 接口 | 方法 | 说明 | +|------|------|------| +| `/admin/Login/index` | GET | 登录页 | +| `/admin/Login/login` | POST | 登录验证 | +| `/admin/Login/logout` | POST | 退出登录 | +| `/admin/Login/logoutJump` | GET | 超时跳转页 | + +### 7.2 菜单相关 + +| 接口 | 方法 | 说明 | +|------|------|------| +| `/admin/Menu/getMenuList` | POST | 获取菜单列表 | +| `/admin/Menu/getUserInfor` | POST | 获取当前用户信息 | +| `/admin/Menu/doaddMenu` | POST | 添加菜单 | +| `/admin/Menu/doupdMenu` | POST | 修改菜单 | +| `/admin/Menu/delMenu` | POST | 删除菜单 | + +### 7.3 用户管理 + +| 接口 | 方法 | 说明 | +|------|------|------| +| `/admin/Wechatinfro/wechatUserList` | GET | 用户列表页 | +| `/admin/Wechatinfro/getWechatUserList` | POST | 获取用户列表 | + +### 7.4 资讯管理 + +| 接口 | 方法 | 说明 | +|------|------|------| +| `/admin/Wechatset/wechatRealTimeInfo` | GET | 资讯列表页 | +| `/admin/Wechatset/getWechatRealTimeInfoList` | POST | 获取资讯列表 | +| `/admin/Wechatset/wechatRealTimeInfoAdd` | GET | 添加资讯页 | +| `/admin/Wechatset/wechatRealTimeInfoUpdate` | GET | 编辑资讯页 | +| `/admin/Wechatset/saveWechatRealTimeInfo` | POST | 保存资讯 | +| `/admin/Wechatset/delWechatRealTimeInfo` | POST | 删除资讯 | +| `/admin/Wechatset/getRealTimeInfoDetail` | POST | 获取资讯详情 | + +### 7.5 计算记录 + +| 接口 | 方法 | 说明 | +|------|------|------| +| `/admin/Wechatinfro/wechatRecordList` | GET | 记录列表页 | +| `/admin/Wechatinfro/getWechatRecordList` | POST | 获取记录列表 | + +### 7.6 仪表盘 + +| 接口 | 方法 | 说明 | +|------|------|------| +| `/admin/Dashboard/index` | GET | 仪表盘页面 | +| `/admin/Dashboard/getStatistics` | POST | 获取统计数据 | + +--- + +## 八、安全机制 + +### 8.1 登录验证 + +- 所有需要登录的控制器继承 `Base` 类 +- `Base::_initialize()` 自动检查Session +- 未登录或超时自动跳转到登录页 + +### 8.2 密码加密 + +- 密码使用MD5加密存储 +- 登录时对输入密码进行MD5加密后比对 + +### 8.3 Session管理 + +- 登录成功设置Session,有效期1小时 +- 每次请求检查Session是否过期 +- 退出登录清除所有Session + +### 8.4 权限控制 + +- 当前版本未实现细粒度权限控制 +- 所有登录用户拥有相同权限 +- 预留权限控制接口(代码中已注释) + +--- + +## 九、部署说明 + +### 9.1 环境要求 + +- PHP >= 5.6 +- MySQL >= 5.6 +- Apache/Nginx Web服务器 +- ThinkPHP 5.0框架 + +### 9.2 配置说明 + +#### 9.2.1 数据库配置 + +**文件:** `application/database.php` + +```php +return [ + 'type' => 'mysql', + 'hostname' => '127.0.0.1', + 'database' => 'ruilai', + 'username' => 'rootrui', + 'password' => 'X2)jB+k%YH.p', + 'charset' => 'utf8', + 'prefix' => 't_sys_', +]; +``` + +#### 9.2.2 路由配置 + +**文件:** `application/route.php` + +默认使用ThinkPHP的路由规则,URL格式: +- `/模块/控制器/方法` + +例如: +- `/admin/Login/index` → `application/admin/controller/Login.php::index()` + +### 9.3 静态资源 + +静态资源存放在 `public/static/` 目录下,通过Web服务器直接访问。 + +**访问路径:** +- `/static/admin/css/nav.css` +- `/static/adminghd/js/nav.js` + +--- + +## 十、常见问题 + +### 10.1 登录问题 + +**问题:** 登录后立即跳转到登录页 + +**原因:** Session未正确设置或Base类验证失败 + +**解决:** +1. 检查Session配置 +2. 检查Base类的Session键名是否正确 +3. 检查数据库用户表数据 + +### 10.2 菜单不显示 + +**问题:** 左侧导航栏菜单不显示 + +**原因:** +1. 菜单数据未正确返回 +2. JavaScript渲染错误 +3. 菜单表数据为空 + +**解决:** +1. 检查浏览器控制台错误 +2. 检查 `/admin/Menu/getMenuList` 接口返回 +3. 检查 `menu` 表是否有数据 + +### 10.3 数据表不存在 + +**问题:** 提示数据表不存在 + +**原因:** 数据库表前缀配置错误 + +**解决:** +1. 检查 `application/database.php` 中的 `prefix` 配置 +2. 确认数据库表名是否正确(包含前缀) + +--- + +## 十一、开发规范 + +### 11.1 代码规范 + +- 遵循PSR-2编码规范 +- 控制器类名首字母大写 +- 方法名使用驼峰命名 +- 注释使用PHPDoc格式 + +### 11.2 命名规范 + +- **控制器:** 大驼峰,如 `Wechatset.php` +- **方法:** 小驼峰,如 `getWechatUserList()` +- **数据表:** 小写下划线,如 `wechat_user` +- **Session键:** 小写下划线,如 `admin_user_id` + +### 11.3 文件组织 + +- 控制器放在 `controller/` 目录 +- 视图放在 `view/` 目录 +- 静态资源放在 `public/static/` 目录 +- 公共类放在 `common/` 目录 + +--- + +## 十二、后续优化建议 + +### 12.1 代码优化 + +1. **统一公共逻辑:** 将两个模块的公共代码提取到 `common` 模块 +2. **配置统一管理:** 使用配置文件管理业务类型和表映射 +3. **错误处理:** 统一异常处理和错误返回格式 + +### 12.2 功能增强 + +1. **权限管理:** 实现基于角色的权限控制(RBAC) +2. **操作日志:** 记录管理员操作日志 +3. **数据统计:** 增加更详细的数据统计和报表功能 +4. **批量操作:** 支持批量删除、批量导出等功能 + +### 12.3 性能优化 + +1. **缓存机制:** 菜单数据、统计数据使用缓存 +2. **数据库优化:** 添加索引,优化查询语句 +3. **前端优化:** 压缩静态资源,使用CDN + +--- + +## 十三、后台模块彻底分离维护方案 + +两个后台(admin 早熟预测、adminghd GHD 预测)可以做到**彻底分离维护**,互不影响。根据目标不同,有两种做法。 + +### 13.1 分离状态 + +**✅ 已完成逻辑彻底分离(方案一)** + +| 模块 | 状态 | 说明 | +|------|------|------| +| **admin 模块** | ✅ 已独立 | 所有控制器继承 `app\admin\common\Base`,不再依赖 common 模块 | +| **adminghd 模块** | ✅ 已独立 | 所有控制器继承 `app\adminghd\common\Base`,不再依赖 common 模块 | +| **Dashboard** | ✅ 已独立 | 两个模块的 `Dashboard` 控制器各自实现 `getStatistics` 方法,使用固定的表名 | +| **数据库** | 共用 | 同一库 `ruilai`,同一前缀 `t_sys_`;部分表共用(menu、wechat_real_time_info、wechat_calculate_record),用户表不同(wechat_user / ghd_wechat_user) | +| **入口与框架** | 共用 | 同一 `public/index.php`、同一 ThinkPHP 应用目录 | + +**已解除的耦合:** +- ✅ `Dashboard` 不再继承 `DashboardBase` +- ✅ 表名和 Session 键已硬编码到各自控制器中 +- ✅ 两个模块可独立修改,互不影响 + +--- + +### 13.2 方案一:同仓库内逻辑彻底分离(✅ 已采用) + +**目标**:同一套代码、同一部署,但 admin 与 adminghd 在代码上**完全独立**,改一个模块不会牵动另一个,也不依赖 common 里的业务基类。 + +**实施状态:** ✅ **已完成** + +**已完成的修改:** + +1. **✅ 解除 Dashboard 对 common 的依赖** + - `application/admin/controller/Dashboard.php` 已改为继承 `\app\admin\common\Base`,不再继承 `DashboardBase`。 + - `getStatistics` 方法已独立实现,使用固定的表名 `wechat_user`、`wechat_real_time_info`、`wechat_calculate_record`。 + - `application/adminghd/controller/Dashboard.php` 已改为继承 `\app\adminghd\common\Base`,使用固定的表名 `ghd_wechat_user`、`wechat_real_time_info`、`wechat_calculate_record`。 + +2. **✅ 代码独立性验证** + - 两个模块的控制器已完全独立,不再依赖 `app\common\controller\*Base` 和 `BusinessConfig`。 + - 表名和 Session 键已硬编码到各自控制器中。 + +3. **✅ common 模块保留** + - `common` 模块中的基类(`DashboardBase`、`WechatinfroBase`、`WechatsetBase`)已保留,但不再被使用。 + - 可作为参考或未来新后台的模板,但不影响现有两个模块的独立性。 + +**优点**:✅ 部署不变、数据库不变,只改一处不影响另一处,适合继续同仓库、同服务器维护。 +**维护约定**:两个模块独立维护,如需同步功能,需分别在两个模块中实现。建议在代码注释中标注需要同步的功能点。 + +--- + +### 13.3 方案二:拆成两个独立项目(物理分离) + +**目标**:两套独立代码库、可独立部署、独立发版,甚至不同服务器、不同数据库。 + +**思路**: +- 以当前代码为基准,复制出两份项目:一份只保留 admin 相关(及 app、index 等必要模块),一份只保留 adminghd 相关。 +- 每份项目有独立 `application`、独立入口(可共用同一 `public` 或各建各的)、独立配置与依赖。 + +**具体步骤**: + +1. **项目 A(早熟预测后台)** + - 新建目录如 `code-admin`,保留 ThinkPHP 框架、`public`、`application/database.php` 等。 + - 只保留 `application/admin`、`application/app`(瑞莱小程序 API)、`application/index` 等与早熟业务相关的模块;删除 `application/adminghd` 和 `application/common` 中业务相关部分。 + - 将原 admin 内对表名、Session 的写法固定为早熟业务(wechat_user、admin_user_id 等)。 + - 配置独立入口(如 `code-admin/public/index.php`)和独立域名或路径。 + +2. **项目 B(GHD 预测后台)** + - 新建目录如 `code-adminghd`,同样保留框架与必要目录。 + - 只保留 `application/adminghd`、`application/app`(GHD 小程序 API)等;删除 `application/admin` 和 common 业务基类。 + - 表名、Session 固定为 GHD(ghd_wechat_user、adminghd_user_id 等)。 + - 配置独立入口与访问方式。 + +3. **数据库** + - **选项甲**:仍用同一库,两项目连同一 `database.php`,仅模块不同、访问表不同。 + - **选项乙**:分库(如 `ruilai` 与 `ruilai_ghd`),各项目独立 `database.php`,表结构可复制或迁移脚本分表。 + +4. **静态资源** + - 各项目 `public/static` 下只保留本后台所需(如项目 A 只保留 `admin`,项目 B 只保留 `adminghd`),避免混用。 + +**优点**:版本、上线、回滚完全独立,技术栈升级可分批进行。 +**缺点**:两套代码、两套部署与运维;公共 bug 或需求要改两处,需通过复制或少量共享库(如 composer 私有包)来收敛。 + +--- + +### 13.4 选择建议 + +| 场景 | 建议 | +|------|------| +| 希望**少动部署、少动库**,只希望开发时互不干扰 | 采用 **方案一**(同仓库逻辑分离) | +| 需要**独立域名、独立服务器、独立发版节奏** | 采用 **方案二**(拆成两个项目) | +| 未来可能新增更多“类似后台”且希望复用一套基类 | 可保留 common 基类,仅把 admin、adminghd 改为不继承它们,实现“可选复用、默认分离” | + +**实施完成日期:** 2025年1月29日 +**采用的方案:** 方案一(同仓库内逻辑彻底分离) +**状态:** ✅ 已完成,两个模块已完全独立,可独立维护 + +--- + +## 附录 + +### A. 相关文档 + +- [数据库配置文档](./数据库配置.md) +- [生长激素缺乏预测模型项目需求文档](./生长激素缺乏预测模型项目需求文档.md) + +### B. 联系方式 + +如有问题,请联系开发团队。 + +--- + +**文档生成时间:** 2025年1月28日 +**最后更新:** 2025年1月28日 diff --git a/application/admin/view/login/login.html b/application/admin/view/login/login.html index 8ead031..a858b08 100644 --- a/application/admin/view/login/login.html +++ b/application/admin/view/login/login.html @@ -1,143 +1,106 @@ - - + + - - - - - - 用户登录 + + + + + + 登录 - 女童成长发育早熟预测模型后台 + - - -
-
-
- -
-
-
-
-
- + + + - - \ No newline at end of file diff --git a/application/adminghd/view/login/login.html b/application/adminghd/view/login/login.html index b006cbf..abd13ae 100644 --- a/application/adminghd/view/login/login.html +++ b/application/adminghd/view/login/login.html @@ -1,143 +1,106 @@ - - + + - - - - - - 用户登录 + + + + + + 登录 - 生长激素缺乏预测模型后台 + - - -
-
-
- -
-
-
-
-
- + + + - - \ No newline at end of file