feat: Add DNS management resources and importer

- Implemented DomainCollection, DomainDetailResource, DomainNSCollection, DomainNSResource, and DomainResource for handling DNS domain and record data.
- Created VpsServiceCollection and VpsServiceResource for VPS service management.
- Added DnsManagerNS and DnsManagerUser models to represent DNS records and user associations.
- Developed AdminZoneDnsSqlImporter for importing DNS data from SQL dumps, including customer and DNS domain records.
- Added migration scripts to update the customers table with new fields and sync foreign key references for DNS tables.
- Created a migration preview document outlining the mapping and schema changes for the admin zone DNS import.
This commit is contained in:
baodev0
2026-05-26 13:54:33 +07:00
parent 520f21cb11
commit fccb0c353a
30 changed files with 4030 additions and 105 deletions
+17 -1
View File
@@ -2,6 +2,7 @@
use App\Http\Controllers\Api\Setting\SettingController;
use App\Http\Controllers\Api\Client\ClientController;
use App\Http\Controllers\Api\Client\Service\DomainController as ClientDomainController;
use App\Http\Controllers\Api\Client\Service\ServiceController as ClientServiceController;
use App\Http\Controllers\Api\Service\OrderController;
use App\Http\Controllers\Api\Service\ProductCategoryController;
@@ -55,12 +56,27 @@ Route::prefix('v1')
Route::post('dich-vu/{id}/renew', 'renewService')->name('services.renew');
});
Route::middleware(['api.auth'])
->prefix('client-service/domains')
->controller(ClientDomainController::class)
->as('client-service.domains.')
->group(function () {
Route::get('/', 'index')->name('list');
Route::get('{domainId}', 'show')->name('detail');
Route::get('{domainId}/records', 'show')->name('records');
Route::post('{domainId}/records', 'storeRecord')->name('records.store');
Route::put('{domainId}/records/{recordId}', 'updateRecord')->name('records.update');
Route::delete('{domainId}/records/{recordId}', 'destroyRecord')->name('records.destroy');
});
Route::middleware(['api.auth'])
->prefix('client-service')
->controller(ClientServiceController::class)
->as('client-service.')
->group(function () {
Route::get('/', 'getService')->name('list');
Route::get('vps', 'indexVps')->name('vps.list');
Route::get('hosting', 'indexHosting')->name('hosting.list');
Route::get('web-design', 'indexWebDesign')->name('web-design.list');
Route::get('{uuid}', 'getDetail')->name('detail');
Route::get('{uuid}/console-ticket', 'getConsoleTicket')->name('console-ticket');
Route::get('{uuid}/available-os', 'getAvailableOs')->name('available-os');