# 金牛集团贷款档案管理系统 - 部署说明 ## 1. 环境要求 ### 方式 A:Docker 一键部署(推荐) - Docker 20+ / Docker Compose v2 - 无需本机安装 PHP / Nginx / 扩展 ### 方式 B:宝塔面板 - 宝塔面板(Linux) - Nginx 或 Apache - PHP 8.0+(建议 8.2) - 必需扩展:`pdo_sqlite`、`sqlite3`、`mbstring`、`fileinfo` - 推荐扩展:`zip`、`xml`(用于 xlsx 导出/导入) ## 2. 目录结构 - `public/`:网站入口目录(宝塔运行目录设置到这里) - `app/`:配置与基础逻辑 - `data/`:业务数据(SQLite + JSON配置) - `uploads/`:上传文件目录(按目录层级自动分文件夹) ### `data/` 下的关键文件 - `archive.sqlite`:主业务数据库 - `repayment_plans.json`:分期还款计划(免迁移方案) - `archive_finance.json`:结息/逾期配置(免迁移方案) - `delete_approvals.json`:双管理员删除审批记录 - `import_template.xlsx`:可选,自定义导入模板(手工放置) ## 3. Docker 一键部署 ### 方式 1:管理脚本(推荐,Ubuntu) ```bash chmod +x manage.sh ./manage.sh ``` 菜单可完成:启动 / 停止 / 重启 / 看状态 / 看日志 / **改端口** / 拉代码更新 / 查看常用命令说明。 端口保存在项目根目录 `.env` 的 `APP_PORT`(默认 `8080`)。 ### 方式 2:直接敲命令 在项目根目录执行: ```bash docker compose up -d --build ``` 浏览器访问:`http://服务器IP:8080` 常用命令: ```bash # 查看日志 docker compose logs -f # 停止 docker compose down # 修改端口(默认 8080) APP_PORT=80 docker compose up -d --build ``` `data/` 与 `uploads/` 已通过卷挂载持久化,容器重建不会丢业务数据。镜像内已预装 PhpSpreadsheet,可直接导入/导出 xlsx。 ### 3.1 从旧环境迁移数据库(可完整迁移) 本系统数据库是 **SQLite 文件**,不是 MySQL。迁移 = 拷贝文件,无需导 SQL。 **需要拷贝的内容:** | 路径 | 说明 | |------|------| | `data/archive.sqlite` | 主库(用户、目录、档案、文件元数据) | | `data/*.json` | 分期计划、结息/逾期、删除审批、贷款机构等 | | `data/import_template.xlsx` | 可选,自定义导入模板 | | `uploads/` 整目录 | 档案附件实体文件 | **步骤:** 1. 在旧服务器停止写入(或短暂停站),避免拷到一半又有新数据。 2. 将上述文件复制到本项目对应目录,例如: ```bash # 示例:从旧站备份目录恢复 cp /path/to/old/data/archive.sqlite ./data/ cp /path/to/old/data/*.json ./data/ 2>/dev/null || true cp -a /path/to/old/uploads/. ./uploads/ ``` 3. 启动 Docker: ```bash docker compose up -d --build ``` 4. 登录验证:档案列表、分期计划、文件预览/下载是否正常。 > 注意:`archive.sqlite` 里记录了上传文件相对路径,**必须与 `uploads/` 一起迁移**,否则库在、附件会 404。 ## 4. 宝塔部署步骤 1. 新建 PHP 站点 2. 上传项目到站点目录 3. 网站运行目录设置为:`/public` 4. 在 PHP 扩展中启用上面的必需扩展 5. 给 `data/` 与 `uploads/` 赋予可写权限 6. 访问域名初始化系统 ## 5. 默认账号 - 用户名:`admin` - 密码:`jinniu123` > 登录后建议立即修改默认密码。 ## 6. 导出说明 - 导出支持:`xlsx` / `csv` - 页面可自由选择格式 - 若服务器安装了 `PhpSpreadsheet`,`xlsx` 可直接使用: ```bash composer require phpoffice/phpspreadsheet ``` ## 7. 导入说明 ### 7.1 下载模板 - 点击页面“模板下载” - 系统优先下载:`data/import_template.xlsx`(如果你手工放了该文件) - 若该文件不存在,系统会动态生成模板(需要 `PhpSpreadsheet`) ### 7.2 模板字段规则 #### 必填字段 - 一级目录 - 二级目录 - 三级目录 - 档案名称 - 贷款机构 - 借款主体 - 授信额度 - 起止日 - 到期日 - 年利率 - 担保类型 - 担保人 #### 选填字段 - 计息方式(按月计息 / 按季付息 / 到期一次性付清) - 结息日(1-28) - 是否有分期还款计划(是/否) ## 8. 文件上传与存储 文件上传后按“目录层级 + 档案”自动存储,例如: `uploads/一级目录/二级目录/三级目录/archive_档案ID_档案名/文件` ## 9. 删除审批(双管理员) - 管理员A点击删除 -> 仅提交申请 - 管理员B在“删除审核”页面审批通过后才执行真实删除 - 申请人本人不能审批自己的删除申请 ## 10. 试运行建议 上线前建议至少验证: 1. 新建/编辑/查看档案 2. 新建页上传文件、编辑页文件管理(上传/重命名/删除) 3. 分期计划与剩余额度联动 4. 到期提醒详情页筛选与导出 5. 模板导入(先用 2-3 条测试数据) 6. 双管理员删除闭环流程