Skip to content

概述

EBAOZU 系统基于 ThinkPHP 8.0 路由机制,禁用了注解路由,所有对外接口均显式在 route/ 目录下的各独立路由文件中定义。不同业务端通过专属路由文件与前缀进行隔离。


路由文件与前缀映射

路由文件URL 前缀适用模块对应控制器目录
route/admin.php/adminapi/*总后台管理app/controller/admin/
route/api.php/api/*移动端与对外 APIapp/controller/api/
route/store.php/storeapi/*门店后台app/controller/store/
route/supplier.php/supplierapi/*供应商后台app/controller/supplier/
route/cashier.php/cashierapi/*线下收银台app/controller/cashier/

路由定义语法与示例

基础路由定义

php
use think\facade\Route;

// GET 请求
Route::get('user/list', 'v1.user.User/index')->name('getUserList')->option(['real_name' => '获取用户列表']);

// POST 请求
Route::post('user/save', 'v1.user.User/save')->name('saveUser')->option(['real_name' => '保存用户']);

// 带参数路由
Route::get('user/detail/:id', 'v1.user.User/read')->name('getUserDetail');

平台后台新增路由 (route/admin.php)

php
Route::group('adminapi', function () {

    // 自定义功能分组
    Route::group('custom', function () {
        Route::get('list', 'v1.custom.CustomController/index')
            ->option(['real_name' => '自定义数据列表']);
        Route::get('info/:id', 'v1.custom.CustomController/read')
            ->option(['real_name' => '自定义数据详情']);
        Route::post('save', 'v1.custom.CustomController/save')
            ->option(['real_name' => '保存自定义数据']);
        Route::delete('delete/:id', 'v1.custom.CustomController/delete')
            ->option(['real_name' => '删除自定义数据']);
    });

})->prefix('admin.')->middleware([
    \app\http\middleware\admin\AdminAuthTokenMiddleware::class,
    \app\http\middleware\admin\AdminCkeckRoleMiddleware::class,
    \app\http\middleware\SystemLogMiddleware::class, 'admin'
]);

移动端/用户 API 新增路由 (route/api.php)

php
Route::group('api', function () {

    // 1. 公开免登录接口
    Route::group(function () {
        Route::get('custom/public_data', 'v1.custom.Custom/getPublicData');
    });

    // 2. 可选登录接口(未登录不报错,登录后可获取个性化数据)
    Route::group(function () {
        Route::get('custom/goods_list', 'v1.custom.Custom/getGoodsList');
    })->middleware(\app\http\middleware\api\AuthTokenMiddleware::class, false);

    // 3. 必须登录接口
    Route::group(function () {
        Route::get('custom/user_records', 'v1.custom.Custom/getUserRecords');
        Route::post('custom/apply', 'v1.custom.Custom/apply')
            ->middleware(\app\http\middleware\BlockerMiddleware::class); // 防重复提交
    })->middleware(\app\http\middleware\api\AuthTokenMiddleware::class, true);

})->prefix('api.');

控制器参数获取规范

控制器中提取请求参数推荐使用 app\RequestgetMore() / postMore() 方法:

php
namespace app\controller\admin\v1\custom;

use app\basic\OpenBaseController;
use app\Request;

class CustomController extends OpenBaseController
{
    public function index(Request $request)
    {
        // 批量提取 GET 参数,带默认值
        [$keyword, $status] = $request->getMore([
            ['keyword', ''],
            ['status', ''],
        ], true); // true 返回一维数组以便解构

        return app('json')->success($this->services->getList(compact('keyword', 'status')));
    }

    public function save(Request $request)
    {
        // 批量提取 POST 参数
        $data = $request->postMore([
            'title',
            ['sort', 0],
            ['status', 1],
        ]);

        $this->services->saveData($data);
        return app('json')->success('保存成功');
    }
}

注意事项

  1. 禁止注解路由:系统所有路由必须在 route/ 下显式定义,方便代码检索与安全审计。
  2. 权限菜单同步:后台新增的路由如果需要受 RBAC 角色权限控制,需在后台【设置 -> 权限管理 -> 菜单管理】中添加对应的 API 路径与请求方法。
  3. 路由调试:修改路由后如遇 404,可执行 php think clear 清除路由缓存,或通过 php think route:list 排查。

承信租多门店租赁商城系统官方文档