222 lines
5.8 KiB
Markdown
222 lines
5.8 KiB
Markdown
# 1.2 为什么选择我们
|
||
|
||
## 声明式 CRUD,开发效率倍增
|
||
|
||
项目最大的特点是声明式 CRUD 架构。只需在数据库中建好表,通过代码生成器即可一键生成完整的前后端 CRUD 模块:
|
||
|
||
```bash
|
||
# 通过 Web 界面操作,选择表 → 配置 → 生成
|
||
# 或通过命令行
|
||
php think generate:code think_example
|
||
```
|
||
|
||
生成器会自动完成:
|
||
|
||
- **后端代码**:Model、Validate、Logic、Controller 全套文件
|
||
- **前端页面**:列表页、编辑弹窗、详情弹窗
|
||
- **API 接口**:前端 TypeScript API 模块
|
||
- **菜单权限**:自动插入菜单记录和权限节点
|
||
- **路由注册**:自动将新模块接入主路由
|
||
|
||
一个标准 CRUD 模块从手写到调试通常需要 1-2 天,使用生成器只需几分钟。
|
||
|
||
## 完整的 RBAC 权限体系
|
||
|
||
系统内置了企业级的基于角色的访问控制:
|
||
|
||
- **用户管理**:用户增删改查、重置密码、角色分配
|
||
- **角色管理**:角色增删改查、菜单权限分配
|
||
- **菜单管理**:菜单树形结构、权限节点定义
|
||
- **部门管理**:组织架构树形管理
|
||
- **权限粒度**:精确到每个操作(`sys:user:add`、`sys:user:delete` 等)
|
||
- **超级管理员**:用户 ID=1 自动拥有所有权限,无需额外配置
|
||
|
||
前端通过 `v-perm` 指令自动控制按钮的显示和隐藏,与后端权限保持一致。
|
||
|
||
## 声明式 ThinkPHP 架构
|
||
|
||
项目遵循 ThinkPHP 最佳实践,代码结构清晰。以 `app/logic/ExampleLogic.php` 为例:
|
||
|
||
```php
|
||
// 逻辑层只需声明属性配置,无需编写 CRUD 代码
|
||
class ExampleLogic extends BaseLogic
|
||
{
|
||
/**
|
||
* 关联的模型类
|
||
*
|
||
* @var string
|
||
*/
|
||
protected string $modelClass = Example::class;
|
||
|
||
/**
|
||
* LIKE 模糊匹配字段
|
||
*
|
||
* @var array
|
||
*/
|
||
protected array $pageLikeFields = ['name'];
|
||
|
||
/**
|
||
* 精确匹配字段
|
||
*
|
||
* @var array
|
||
*/
|
||
protected array $pageEqFields = ['status'];
|
||
|
||
/**
|
||
* 默认排序规则
|
||
*
|
||
* @var array
|
||
*/
|
||
protected array $pageOrderBy = ['field' => 'sort', 'type' => 'asc'];
|
||
|
||
/**
|
||
* 唯一性校验字段
|
||
*
|
||
* @var array
|
||
*/
|
||
protected array $uniqueFields = ['name'];
|
||
|
||
/**
|
||
* 枚举显示名映射
|
||
*
|
||
* @var array
|
||
*/
|
||
protected array $serializeMaps = ['status' => 'example_status'];
|
||
|
||
/**
|
||
* 删除前处理:业务约束校验
|
||
*
|
||
* @param int $id 记录 ID
|
||
* @return void
|
||
*/
|
||
protected function beforeDelete(int $id): void
|
||
{
|
||
// 删除前校验
|
||
}
|
||
}
|
||
```
|
||
|
||
控制器只需调用通用方法:
|
||
|
||
```php
|
||
class ExampleController extends BaseController
|
||
{
|
||
protected ExampleLogic $logic;
|
||
|
||
protected function initialize(): void
|
||
{
|
||
$this->logic = new ExampleLogic();
|
||
}
|
||
|
||
#[Log('案例演示-查询分页', Log::TYPE_QUERY)]
|
||
#[Permission('sys:example:page', '案例分页')]
|
||
public function page(): Json
|
||
{
|
||
return parent::_index($this->logic); // 一行搞定分页查询
|
||
}
|
||
}
|
||
```
|
||
|
||
所有模块遵循相同的分层模式,新成员上手快,代码可维护性强。
|
||
|
||
## 丰富的内置模块
|
||
|
||
系统预置了 20+ 个常用业务模块,开箱即用:
|
||
|
||
- **系统管理**:用户、角色、菜单、部门、职级、岗位、租户
|
||
- **系统配置**:字典管理、系统配置、参数管理
|
||
- **内容管理**:文章管理、分类管理、公告管理、友情链接
|
||
- **系统监控**:登录日志、操作日志、定时任务
|
||
- **开发工具**:代码生成器、文件上传、示例模块
|
||
|
||
这些模块不仅可以直接使用,也是学习本框架开发模式的最佳参考。
|
||
|
||
## Vue3 + AntDesign 前端
|
||
|
||
前端采用主流技术栈,开发体验优秀:
|
||
|
||
- **Vue3 Composition API**:更灵活的组件逻辑组织
|
||
- **TypeScript**:类型安全,减少运行时错误
|
||
- **AntDesign**:成熟的企业级 UI 组件库
|
||
- **Pinia**:轻量级状态管理
|
||
- **Vite**:极速的开发服务器和构建工具
|
||
- **动态路由**:菜单和路由由后端驱动,前端无需硬编码
|
||
|
||
前端开发常用命令:
|
||
|
||
```bash
|
||
cd ui
|
||
pnpm install # 安装依赖
|
||
pnpm dev # 启动开发服务器 (http://localhost:8002)
|
||
pnpm build # 生产环境构建
|
||
```
|
||
|
||
## 开箱即用的开发体验
|
||
|
||
从获取源码到运行项目,只需几步:
|
||
|
||
```bash
|
||
# 1. 从官方网站下载源码包并解压
|
||
cd RXThinkCMF_ThinkPhp8_AntdVue
|
||
|
||
# 2. 安装依赖
|
||
composer install
|
||
|
||
# 3. 配置 .env(数据库、JWT 密钥)
|
||
|
||
# 4. 导入数据库
|
||
mysql -u root -proot rxthinkcmf.thinkphp8.antdvue < document/mysql/rxthinkcmf.thinkphp8.antdvue.sql
|
||
|
||
# 5. 启动后端
|
||
php think run
|
||
|
||
# 6. 启动前端
|
||
cd ui && pnpm install && pnpm dev
|
||
```
|
||
|
||
访问 `http://localhost:8002` 即可使用。默认超级管理员账号 `admin / 123456` 可直接登录。
|
||
|
||
## 多数据库支持
|
||
|
||
通过环境变量一键切换五种数据库:
|
||
|
||
```ini
|
||
; .env
|
||
[DATABASE]
|
||
TYPE = mysql ; MySQL(默认)
|
||
TYPE = pgsql ; PostgreSQL
|
||
TYPE = sqlsrv ; SQL Server
|
||
TYPE = oracle ; Oracle
|
||
TYPE = sqlite ; SQLite
|
||
```
|
||
|
||
业务代码零修改,ORM 自动处理 SQL 差异。
|
||
|
||
## 多租户与数据权限
|
||
|
||
内置企业级多租户隔离体系:
|
||
|
||
- **租户隔离**:通过 `BaseTenantLogic` 基类自动处理 `tenant_id` 过滤与填充
|
||
- **数据权限**:支持全部数据 / 本部门数据 / 仅本人数据三种范围
|
||
- **超级管理员**:`tenant_id=0` 的用户不受租户隔离限制,创建数据时自动代入默认租户
|
||
|
||
## 持续更新
|
||
|
||
项目持续迭代,紧跟技术发展:
|
||
|
||
- ThinkPHP 版本持续升级至 6.1.x
|
||
- PHP 版本要求 8.2+
|
||
- 前端从 Vue 2 升级到 Vue3 + AntDesign
|
||
- 代码生成器功能不断增强
|
||
- 安全机制持续完善
|
||
|
||
## 适用场景
|
||
|
||
项目适合以下场景:
|
||
|
||
- 企业内部管理系统(ERP、CRM、OA 等)
|
||
- 内容管理系统(CMS)
|
||
- 数据管理后台
|
||
- SaaS 多租户平台
|
||
- 快速原型开发
|
||
- 学习 ThinkPHP + Vue 全栈开发 |