feat: multiple improvements and bug fixes

- Add gift card redemption feature
- Resolve custom range selection issue in overview
- Allow log page size to be modified
- Add subscription path change notification
- Improve dynamic node rate feature
- Support markdown documentation display for plugins
- Reduce power reset service logging
- Fix backend version number not updating after update
This commit is contained in:
xboard
2025-07-14 00:33:04 +08:00
parent a01b94f131
commit a838a43ae5
38 changed files with 3056 additions and 325 deletions
+27
View File
@@ -12,6 +12,7 @@ use App\Http\Controllers\V2\Admin\StatController;
use App\Http\Controllers\V2\Admin\NoticeController;
use App\Http\Controllers\V2\Admin\TicketController;
use App\Http\Controllers\V2\Admin\CouponController;
use App\Http\Controllers\V2\Admin\GiftCardController;
use App\Http\Controllers\V2\Admin\KnowledgeController;
use App\Http\Controllers\V2\Admin\PaymentController;
use App\Http\Controllers\V2\Admin\SystemController;
@@ -158,6 +159,32 @@ class AdminRoute
$router->post('/update', [CouponController::class, 'update']);
});
// Gift Card
$router->group([
'prefix' => 'gift-card'
], function ($router) {
// Template management
$router->any('/templates', [GiftCardController::class, 'templates']);
$router->post('/create-template', [GiftCardController::class, 'createTemplate']);
$router->post('/update-template', [GiftCardController::class, 'updateTemplate']);
$router->post('/delete-template', [GiftCardController::class, 'deleteTemplate']);
// Code management
$router->post('/generate-codes', [GiftCardController::class, 'generateCodes']);
$router->any('/codes', [GiftCardController::class, 'codes']);
$router->post('/toggle-code', [GiftCardController::class, 'toggleCode']);
$router->get('/export-codes', [GiftCardController::class, 'exportCodes']);
$router->post('/update-code', [GiftCardController::class, 'updateCode']);
$router->post('/delete-code', [GiftCardController::class, 'deleteCode']);
// Usage records
$router->any('/usages', [GiftCardController::class, 'usages']);
// Statistics
$router->any('/statistics', [GiftCardController::class, 'statistics']);
$router->get('/types', [GiftCardController::class, 'types']);
});
// Knowledge
$router->group([
'prefix' => 'knowledge'