update logic

This commit is contained in:
baodev0
2026-06-15 09:11:57 +07:00
parent 9c68273b4a
commit 3243473843
30 changed files with 2502 additions and 24 deletions
+121
View File
@@ -0,0 +1,121 @@
# 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.
+44
View File
@@ -0,0 +1,44 @@
# Refactor Priority
Danh sách file nên chỉnh sửa, chia theo mức độ ưu tiên dựa trên độ lớn controller, số nhánh nghiệp vụ, và mức độ trộn giữa validation, query, mapping response.
## Cao
- `app/Http/Controllers/Api/Service/OrderController.php` - controller lớn nhất, ôm nhiều luồng order, invoice, payment, VM.
- `app/Http/Controllers/admin/CustomerController.php` - nhiều action, nhiều query, nhiều workflow admin/customer.
- `app/Http/Controllers/admin/VCenterManagerController.php` - nhiều helper nội bộ, tree/detail API, query và render view lẫn nhau.
- `app/Http/Controllers/Api/Admin/Customer/CustomerController.php` - CRUD + thống kê + response mapping.
- `app/Http/Controllers/Api/Service/VmController.php` - nhiều flow VM, log, Telegram, xử lý lỗi lặp.
- `app/Http/Controllers/Api/Admin/Invoice/InvoiceController.php` - CRUD + datatable + business rules.
- `app/Http/Controllers/Api/Client/Service/ServiceController.php` - nhiều endpoint, lookup VM/vCenter lặp.
- `app/Http/Controllers/Api/Admin/Product/ProductController.php` - validate lớn, create/update, sync pricing/OS.
- `app/Http/Controllers/Api/Transaction/TransactionController.php` - callback VNPay, update balance, log, job dispatch.
- `app/Http/Controllers/admin/OrderController.php` - nhiều khả năng đang gom nhiều workflow.
## Trung bình
- `app/Http/Controllers/Api/Admin/VCenter/VCenterController.php` - controller có vẻ vừa query vừa mapping response.
- `app/Http/Controllers/Api/Admin/IpPool/IpPoolController.php` - nhiều validation và action CRUD.
- `app/Http/Controllers/Api/Admin/DnsManager/DomainController.php` - CRUD + logic domain management.
- `app/Http/Controllers/Api/Admin/DnsManager/RecordController.php` - tương tự, cần tách request/DTO nếu logic lớn.
- `app/Http/Controllers/Api/Client/Service/DomainController.php` - validate và xử lý domain cho client.
- `app/Http/Controllers/Api/Transaction/ManualDepositController.php` - nhiều nhánh xử lý nạp/hủy/kiểm tra pending.
- `app/Http/Controllers/Api/Admin/Payment/PaymentController.php` - đang dùng `request->all()` và repository filter.
- `app/Http/Controllers/Api/Admin/Order/OrderController.php` - validate + create + upload + trạng thái.
- `app/Http/Controllers/Api/Admin/Addon/AddonController.php` - CRUD + bulk actions.
- `app/Http/Controllers/Api/Admin/Product/ProductCategoryController.php` - nhiều action và bulk IDs.
## Thấp
- `app/Http/Controllers/Api/Admin/Setting/SettingController.php` - ít action hơn, nhưng vẫn nên chuẩn hoá validation.
- `app/Http/Controllers/Api/Admin/Bank/BankController.php` - nhỏ hơn, chủ yếu CRUD.
- `app/Http/Controllers/Api/Admin/Auth/AuthController.php` - nhỏ, ít thay đổi.
- `app/Http/Controllers/Api/Client/ClientController.php` - đã có service/request, chỉ cần dọn dẹp dần.
- `app/Http/Controllers/Api/Service/SnapshotController.php` - nhiều validate nhưng scope hẹp hơn.
- `app/Http/Controllers/Api/Service/PaymentController.php` - kiểm tra nếu bắt đầu phình ra.
## Ghi chú
- Ưu tiên tách DTO trước cho các file ở mục **Cao**, vì chúng có payload rõ và đang trộn nhiều trách nhiệm.
- Các file ở mục **Trung bình** nên xử lý sau khi đã ổn định nhóm **Cao**.
- Không tính `vendor/`, `.env`, hoặc file hệ thống Git.