Files
portal-api/docs/admin-folder-usage.md
T
2026-06-15 09:11:57 +07:00

5.7 KiB

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/:

use App\Http\Controllers\admin\VCenterManagerController;  // dòng 3

Dùng trong group:

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.