# CmsPro v5

<p align="center">
  <strong>模块化企业级内容管理系统</strong>
</p>

<p align="center">
  <a href="#技术栈">技术栈</a> •
  <a href="#特性">特性</a> •
  <a href="#快速开始">快速开始</a> •
  <a href="#文档">文档</a> •
  <a href="#应用模块">应用模块</a> •
  <a href="#版本管理">版本管理</a> •
  <a href="#项目结构">项目结构</a> •
  <a href="#许可证">许可证</a>
</p>

---

CmsPro v5 是一套基于 Laravel 框架构建的**模块化企业级 CMS 系统**。采用「核心框架 + 应用插件」的架构设计，支持通过应用商店动态安装/卸载功能模块，并通过内置的版本管理系统实现生产环境的平滑升级。

## 技术栈

| 类别 | 技术 | 版本 |
|------|------|------|
| 后端框架 | [Laravel](https://laravel.com) | ^13.8 |
| PHP | PHP | ^8.3 |
| 数据库 | MySQL | 8.0+ |
| 前端 UI | Layui + Pear Admin | - |
| 模板引擎 | Blade（Laravel 内置） | - |
| 认证方案 | Session (auth:admin) | - |
| 依赖管理 | Composer | - |

## 特性

- **模块化架构** — 应用放在 `app/Apps/` 目录下，每个应用独立包含控制器、模型、视图、路由和迁移
- **应用商店（Appstore）** — 应用的安装、卸载、启用、禁用，一站式管理
- **版本管理（Versionmgr）** — 版本检测、升级包部署、自动回滚
- **版本服务端（Versionsvr）** — 版本发布管理、公开 API、升级包分发
- **RBAC 权限系统** — 用户 → 角色 → 权限 → 菜单四级授权
- **内容管理** — 内容模型 + 字段设计器，支持自定义内容类型
- **数据库管理面板** — 表结构查看、字段编辑、数据备份恢复
- **升级包体系** — code-archive 技能自动收集变更，生成标准 ZIP 升级包

## 快速开始

### 环境要求

- PHP >= 8.3
- MySQL >= 8.0
- Composer >= 2.x
- 扩展：BCtype、Ctype、Fileinfo、JSON、Mbstring、OpenSSL、PDO、Tokenizer、XML

### 安装

```bash
# 克隆仓库
git clone https://gitee.com/holley/cmsprov5.git code

cd code

# 安装依赖
composer install --optimize-autoloader --no-dev

# 复制环境配置文件
cp .env.example .env

# 生成应用密钥
php artisan key:generate

# 编辑 .env 配置数据库连接信息
# 然后执行迁移和数据填充
php artisan migrate --seed
```

### 访问后台

启动内置开发服务器：

```bash
php artisan serve
```

浏览器访问 `http://127.0.0.1:8000/admin` 进入后台管理。

默认管理员账号：`admin / admin123456`

## 文档

| 文档 | 说明 |
|------|------|
| [系统架构文档](docs/CmsPro-v5-系统架构文档.md) | 分层架构、目录结构、认证授权、安全措施、功能清单 |
| [升级包制作规范](docs/CmsPro-v5-升级包制作规范.md) | 升级包格式规范与操作指南（格式规范 + 操作指南） |
| [应用开发文档](docs/CmsPro-v5-应用开发文档.md) | 应用模块开发规范、manifest.json 格式、Install.php 编写 |
| [发布部署指南](docs/CmsPro-v5-发布部署指南.md) | 生产环境部署流程、Nginx 配置、环境变量 |

## 应用模块

CmsPro v5 已集成以下应用模块：

| 应用 | 功能说明 | 状态 |
|------|---------|------|
| **Appstore** | 应用商店 — 应用的安装、卸载、启用、禁用 | ✅ |
| **Versionmgr** | 版本管理客户端 — 版本检测、升级包部署、回滚 | ✅ |
| **Versionsvr** | 版本服务端 — 版本发布管理、公开 API、升级包分发 | ✅ |
| **Payment** | 支付模块 — 支付渠道、订单、对账、退款、风控 | ✅ |
| **Friendlink** | 友情链接管理 | ✅ |
| **Boxcode** | 盒子码（二维码）管理 | ✅ |
| **Unilogin** | 统一登录（第三方账号接入） | ✅ |

## 版本管理

CmsPro 内置完整的版本管理体系：

```
开发环境                    版本服务端                  生产环境
(code-archive)             (Versionsvr)               (Versionmgr)
    │                          │                         │
    ├─ 收集变更文件              │                         │
    ├─ 生成 upgrade.json        │                         │
    └─ 打包为 ZIP ────────────►│─ 上传+发布               │
                               │◄──────────────────────┐│
                               │  检测新版本 / 下载       ││
                               │                        │└─ 执行升级
                               │                        └─ 更新版本号
```

```bash
# 生成升级包
php artisan upgrade:build 5.0.1 --from=5.0.0 --type=patch --desc="修复登录问题"

# 预览变更（不生成）
php artisan upgrade:build 5.0.1 --from=5.0.0 --dry-run

# 部署升级包
php artisan upgrade:deploy cmspro-5.0.0-to-5.0.1

# 回滚
php artisan upgrade:rollback cmspro-5.0.0-to-5.0.1
```

## 项目结构

```
code/
├── app/
│   ├── Apps/                  # 应用模块（Appstore/Payment/Friendlink 等）
│   ├── Console/Commands/      # Artisan 命令（BuildUpgrade/DeployUpgrade 等）
│   ├── Enums/                 # 枚举类
│   ├── Http/
│   │   ├── Controllers/       # 控制器（Admin 视图控制器 + Api 控制器）
│   │   ├── Middleware/        # 中间件（权限检查、操作日志）
│   │   └── Requests/          # 表单验证请求类
│   ├── Models/                # Eloquent 模型
│   ├── Providers/             # 服务提供者
│   ├── Services/              # 业务逻辑服务层
│   └── helpers.php            # 全局辅助函数
├── config/                    # 配置文件
├── database/migrations/       # 系统级数据库迁移
├── public/                    # Web 入口
├── resources/views/           # Blade 视图模板
├── routes/                    # 路由定义
├── storage/upgrades/          # 升级包存档
└── docs/                      # 项目文档
```

## 许可证

[MIT License](LICENSE)

---

<p align="center">
  <strong>CmsPro v5.0.0</strong> · Built with <a href="https://laravel.com">Laravel</a>
</p>
