122 lines
5.7 KiB
Markdown
122 lines
5.7 KiB
Markdown
# Báo cáo sử dụng folder `app/Http/Controllers/admin`
|
|
|
|
Ngày kiểm tra: 2026-06-01
|
|
Phạm vi quét: toàn bộ `portal/` (routes, controllers, services, repositories, jobs, configs, seeders, …).
|
|
|
|
## Kết luận nhanh
|
|
|
|
> Folder `app/Http/Controllers/admin` **gần như là legacy/không còn được dùng**.
|
|
> Toàn bộ chức năng admin đã được migrate sang REST API namespace mới `App\Http\Controllers\Api\Admin\*` (xem comment trong `routes/web.php` dòng 12, 18).
|
|
>
|
|
> **Chỉ duy nhất 1 file** trong folder `admin/` còn được tham chiếu bởi code ngoài folder:
|
|
>
|
|
> - `app/Http/Controllers/admin/VCenterManagerController.php`
|
|
> — được import & dùng tại `routes/api.php:3` cho nhóm route `vcenter-manager/vm/*` (powerOn, powerOff, restart, snapshot, suspend, getPoweredOffVms).
|
|
|
|
Các file còn lại trong `admin/` **không** được import bởi bất kỳ file PHP nào ngoài chính folder `admin/` (không bởi `routes/api.php`, không bởi `routes/client.php`, không bởi service/repository/job/config/seeder/web.php).
|
|
|
|
> Lưu ý phương pháp: kiểm tra bằng cách quét toàn bộ chuỗi FQN `App\Http\Controllers\admin\…` trên toàn dự án. Một số controller có tên trùng (ví dụ `CustomerController`, `OrderController`, `PostController`, `SettingController`, `AddonController`, `InvoiceController`, `PaymentController`, `DomainController`, `ProductController`, `ProductCategoryController`) **trùng tên** với các controller mới trong `App\Http\Controllers\Api\Admin\*` hoặc `App\Http\Controllers\Api\Client\*` — các route file chỉ import bản mới, KHÔNG import bản trong `admin/`.
|
|
|
|
---
|
|
|
|
## 1) File ĐANG được dùng (1 file)
|
|
|
|
| File | Nơi dùng | Mục đích |
|
|
|---|---|---|
|
|
| `admin/VCenterManagerController.php` | `routes/api.php` (line 3 import, group `vcenter-manager` trong `Route::prefix('administrator')`) | Power operations cho VM (power-on/off, restart, snapshot, suspend, lấy danh sách VM tắt nguồn) |
|
|
|
|
Ghi chú nội bộ: `VCenterManagerController` này cũng được tham chiếu bởi một số file khác trong cùng `admin/` (ví dụ `package/Datacenter.php`, `package/Host.php`, …) — đây là tham chiếu nội bộ trong folder legacy.
|
|
|
|
---
|
|
|
|
## 2) File KHÔNG được dùng (toàn bộ phần còn lại)
|
|
|
|
Không file nào dưới đây được import/sử dụng bởi code ngoài folder `admin/`:
|
|
|
|
### 2.1. Top-level `admin/` (24 file)
|
|
|
|
- `AddonController.php`
|
|
- `CouponController.php`
|
|
- `CustomerController.php`
|
|
- `DomainController.php`
|
|
- `GroupController.php`
|
|
- `InvoiceController.php`
|
|
- `LoginController.php`
|
|
- `MailController.php`
|
|
- `MainController.php`
|
|
- `MediaController.php`
|
|
- `MenuController.php`
|
|
- `ModuleDNSController.php`
|
|
- `ModuleHostingController.php`
|
|
- `ModuleIPPoolController.php`
|
|
- `ModulevCenterController.php`
|
|
- `OrderController.php`
|
|
- `PaymentController.php`
|
|
- `PostController.php`
|
|
- `RolesController.php`
|
|
- `SettingController.php`
|
|
- `SupportController.php`
|
|
- `TaskController.php`
|
|
- `TemplateController.php`
|
|
- `UserController.php`
|
|
|
|
### 2.2. `admin/package/` (9 file)
|
|
|
|
- `Datacenter.php`
|
|
- `Datastore.php`
|
|
- `Folder.php`
|
|
- `Group.php`
|
|
- `Host.php`
|
|
- `IPMapping.php`
|
|
- `Network.php`
|
|
- `OsVersion.php`
|
|
- `SyncController.php`
|
|
|
|
> Cảnh báo cùng tên: các tên `Datacenter`, `Datastore`, `Folder`, `Host`, `Network`, `Group`, `OsVersion` xuất hiện rất nhiều trong dự án (Models, Repositories, Jobs, Views, configs như `admin-sidebar.php`). **Tuy nhiên** các tham chiếu đó trỏ tới `App\Models\*` / `App\Repositories\*` / `App\View\Components\Module\*`, KHÔNG phải các controller trong `admin/package/`. Đã xác nhận bằng cách grep FQN `App\Http\Controllers\admin\package\…` — không có file nào ngoài folder này import chúng.
|
|
|
|
### 2.3. `admin/product/` (2 file)
|
|
|
|
- `ProductCategoryController.php` (đã thay thế bởi `Api/Admin/Product/ProductCategoryController.php` và `Api/Service/ProductCategoryController.php`)
|
|
- `ProductController.php` (đã thay thế bởi `Api/Admin/Product/ProductController.php`)
|
|
|
|
### 2.4. `admin/vm/` (1 file)
|
|
|
|
- `VirtualMachineController.php`
|
|
|
|
---
|
|
|
|
## 3) Đối chiếu nhanh với 2 file route chính
|
|
|
|
### `routes/client.php`
|
|
Không import bất kỳ class nào từ namespace `App\Http\Controllers\admin\*`. Toàn bộ controller đến từ `App\Http\Controllers\Api\Client\*`, `App\Http\Controllers\Api\Service\*`, `App\Http\Controllers\Api\Setting\*`, `App\Http\Controllers\Api\Transaction\*`, `App\Http\Controllers\Api\NotificationController`.
|
|
|
|
### `routes/api.php`
|
|
Chỉ có **1 dòng** import từ `admin/`:
|
|
```php
|
|
use App\Http\Controllers\admin\VCenterManagerController; // dòng 3
|
|
```
|
|
Dùng trong group:
|
|
```php
|
|
Route::prefix('vcenter-manager')
|
|
->controller(VCenterManagerController::class)
|
|
->group(function () {
|
|
Route::post('vm/power-on', 'powerOn');
|
|
Route::post('vm/power-off', 'powerOff');
|
|
Route::post('vm/restart', 'restart');
|
|
Route::post('vm/snapshot', 'snapshot');
|
|
Route::post('vm/suspend', 'suspend');
|
|
Route::get ('vms/powered-off', 'getPoweredOffVms');
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## 4) Đề xuất
|
|
|
|
1. **Có thể xoá an toàn** toàn bộ folder `app/Http/Controllers/admin/` **trừ** `VCenterManagerController.php`.
|
|
2. Hoặc tốt hơn: di chuyển `VCenterManagerController` sang namespace mới `App\Http\Controllers\Api\Admin\VCenter\` cho đồng nhất, rồi xoá toàn bộ folder `admin/`.
|
|
3. Trước khi xoá nên:
|
|
- Chạy `composer dump-autoload` và test toàn bộ test suite.
|
|
- Kiểm tra thêm cache, queue config, scheduled commands, custom artisan command có hardcode tên class không (đã grep — không thấy).
|
|
- Kiểm tra Blade views (folder `admin/` views nếu còn) có gọi route name cũ không.
|