group(function () { Route::get('/h5/me/profile', [H5ProfileController::class, 'show']); Route::put('/h5/me/profile', [H5ProfileController::class, 'update']); Route::post('/h5/upload', [H5UploadController::class, 'store']); }); Route::get('/h5/venue-dicts', [H5ContentController::class, 'venueDicts']); Route::get('/h5/activities', [H5ContentController::class, 'activities']); Route::get('/h5/activities/{id}', [H5ContentController::class, 'activityDetail']); Route::get('/h5/venues', [H5ContentController::class, 'venues']); Route::get('/h5/venues/{id}', [H5ContentController::class, 'venueDetail']); Route::get('/h5/study-tours', [H5ContentController::class, 'studyTours']); Route::get('/h5/study-tours/{id}', [H5ContentController::class, 'studyTourDetail']); Route::get('/h5/activities/{id}/booking-info', [H5ReservationController::class, 'bookingInfo']); Route::post('/h5/activities/{id}/reservations', [H5ReservationController::class, 'create']); Route::get('/h5/my/reservations', [H5ReservationController::class, 'myReservations']); Route::get('/h5/my/reservations/{id}', [H5ReservationController::class, 'detail']); Route::post('/h5/my/reservations/{id}/cancel', [H5ReservationController::class, 'cancel']); Route::middleware(['auth:sanctum', 'audit.log'])->group(function () { Route::post('/auth/logout', [AuthController::class, 'logout']); Route::get('/me', function (Request $request) { return $request->user()->load('venues:id,name'); }); Route::get('/admin-users', [AdminUserController::class, 'index']); Route::post('/admin-users', [AdminUserController::class, 'store']); Route::put('/admin-users/{user}', [AdminUserController::class, 'update']); Route::get('/admin-menus', [AdminMenuController::class, 'index']); Route::get('/admin-menus/all', [AdminMenuController::class, 'listAll']); Route::post('/admin-menus', [AdminMenuController::class, 'store']); Route::put('/admin-menus/{adminMenu}', [AdminMenuController::class, 'update']); Route::delete('/admin-menus/{adminMenu}', [AdminMenuController::class, 'destroy']); Route::get('/role-permissions', [RolePermissionController::class, 'index']); Route::put('/role-permissions/{rolePermission}', [RolePermissionController::class, 'update']); Route::post('/role-permissions/batch-update', [RolePermissionController::class, 'batchUpdate']); Route::get('/role-menu-permissions', [RoleMenuPermissionController::class, 'index']); Route::put('/role-menu-permissions/{role}', [RoleMenuPermissionController::class, 'update']); Route::get('/dict-items', [DictItemController::class, 'index']); Route::post('/dict-items', [DictItemController::class, 'store']); Route::put('/dict-items/{dictItem}', [DictItemController::class, 'update']); Route::delete('/dict-items/{dictItem}', [DictItemController::class, 'destroy']); Route::post('/upload', [UploadController::class, 'store']); Route::get('/map/search', [MapController::class, 'search']); Route::get('/map/reverse-geocode', [MapController::class, 'reverseGeocode']); Route::get('/study-tours', [StudyTourController::class, 'index']); Route::post('/study-tours', [StudyTourController::class, 'store']); Route::put('/study-tours/{studyTour}', [StudyTourController::class, 'update']); Route::delete('/study-tours/{studyTour}', [StudyTourController::class, 'destroy']); Route::get('/venues', [VenueController::class, 'index']); Route::post('/venues', [VenueController::class, 'store']); Route::get('/venues/import/template', [VenueImportController::class, 'template']); Route::post('/venues/import/preview', [VenueImportController::class, 'preview']); Route::post('/venues/import/confirm', [VenueImportController::class, 'confirm']); Route::put('/venues/{id}', [VenueController::class, 'update'])->whereNumber('id'); Route::post('/venues/{id}/audit/approve', [VenueController::class, 'approve'])->whereNumber('id'); Route::post('/venues/{id}/audit/reject', [VenueController::class, 'reject'])->whereNumber('id'); Route::get('/activities', [ActivityController::class, 'index']); Route::post('/activities', [ActivityController::class, 'store']); Route::put('/activities/{activity}', [ActivityController::class, 'update']); Route::post('/activities/{activity}/audit/approve', [ActivityController::class, 'approve']); Route::post('/activities/{activity}/audit/reject', [ActivityController::class, 'reject']); Route::post('/activities/{activity}/toggle', [ActivityController::class, 'toggle']); Route::delete('/activities/{activity}', [ActivityController::class, 'destroy']); Route::post('/activities/{activity}/restore', [ActivityController::class, 'restore']); Route::get('/activities/{activity}/booking-settings', [ActivityBookingController::class, 'show']); Route::put('/activities/{activity}/booking-settings', [ActivityBookingController::class, 'update']); Route::get('/activity-registrations', [ActivityRegistrationController::class, 'index']); Route::get('/activity-registrations/export', [ActivityRegistrationController::class, 'export']); Route::post('/activity-registrations/{reservation}/quick-blacklist', [ActivityRegistrationController::class, 'quickBlacklist']); Route::post('/activity-registrations/quick-blacklist/batch', [ActivityRegistrationController::class, 'batchQuickBlacklist']); Route::get('/blacklists', [BlacklistController::class, 'index']); Route::get('/user-management/users', [BlacklistController::class, 'users']); Route::post('/user-management/blacklist', [BlacklistController::class, 'batchBlacklist']); Route::post('/user-management/unblacklist', [BlacklistController::class, 'batchUnblacklist']); Route::post('/blacklists', [BlacklistController::class, 'store']); Route::post('/blacklists/batch-import', [BlacklistController::class, 'batchImport']); Route::put('/blacklists/{blacklist}', [BlacklistController::class, 'update']); Route::delete('/blacklists/{blacklist}', [BlacklistController::class, 'destroy']); Route::get('/dashboard/stats', [DashboardController::class, 'stats']); Route::get('/audit-logs', [AuditLogController::class, 'index']); Route::get('/reservations/today-summary', [ReservationVerifyController::class, 'todaySummary']); Route::get('/reservations', [ReservationVerifyController::class, 'index']); Route::get('/reservations/preview', [ReservationVerifyController::class, 'preview']); Route::post('/reservations/verify', [ReservationVerifyController::class, 'verifyByToken']); });