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
+7
View File
@@ -3,6 +3,7 @@ namespace App\Http\Routes\V1;
use App\Http\Controllers\V1\User\CommController;
use App\Http\Controllers\V1\User\CouponController;
use App\Http\Controllers\V1\User\GiftCardController;
use App\Http\Controllers\V1\User\InviteController;
use App\Http\Controllers\V1\User\KnowledgeController;
use App\Http\Controllers\V1\User\NoticeController;
@@ -61,6 +62,12 @@ class UserRoute
$router->get('/server/fetch', [ServerController::class, 'fetch']);
// Coupon
$router->post('/coupon/check', [CouponController::class, 'check']);
// Gift Card
$router->post('/gift-card/check', [GiftCardController::class, 'check']);
$router->post('/gift-card/redeem', [GiftCardController::class, 'redeem']);
$router->get('/gift-card/history', [GiftCardController::class, 'history']);
$router->get('/gift-card/detail', [GiftCardController::class, 'detail']);
$router->get('/gift-card/types', [GiftCardController::class, 'types']);
// Telegram
$router->get('/telegram/getBotInfo', [TelegramController::class, 'getBotInfo']);
// Comm
+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'