You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
9.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\AuthController;
use App\Http\Controllers\Api\AdminUserController;
use App\Http\Controllers\Api\ReservationVerifyController;
use App\Http\Controllers\Api\VenueController;
use App\Http\Controllers\Api\VenueImportController;
use App\Http\Controllers\Api\AdminMenuController;
use App\Http\Controllers\Api\ActivityController;
use App\Http\Controllers\Api\ActivityBookingController;
use App\Http\Controllers\Api\ActivityRegistrationController;
use App\Http\Controllers\Api\BlacklistController;
use App\Http\Controllers\Api\DashboardController;
use App\Http\Controllers\Api\RolePermissionController;
use App\Http\Controllers\Api\RoleMenuPermissionController;
use App\Http\Controllers\Api\DictItemController;
use App\Http\Controllers\Api\UploadController;
use App\Http\Controllers\Api\MapController;
use App\Http\Controllers\Api\StudyTourController;
use App\Http\Controllers\Api\AuditLogController;
use App\Http\Controllers\Api\H5HomeController;
use App\Http\Controllers\Api\H5ContentController;
use App\Http\Controllers\Api\H5ReservationController;
use App\Http\Controllers\Api\H5WechatController;
use App\Http\Controllers\Api\H5ProfileController;
use App\Http\Controllers\Api\H5UploadController;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "api" middleware group. Make something great!
|
*/
Route::post('/auth/login', [AuthController::class, 'login']);
Route::get('/h5/home', [H5HomeController::class, 'index']);
Route::post('/h5/wechat/oauth', [H5WechatController::class, 'oauth']);
Route::get('/wechat/jssdk-signature', [H5WechatController::class, 'jssdkSignature']);
/**
* 与「wx.config」一致GET/POST 均支持,参数 url=当前页完整 URL不含 hash
* H5 优先 POST body避免 query 过长被截断;生产若出现 404多为未部署本路由需发布 szkp-map-service 后执行 `php artisan route:clear`。
*/
Route::match(['get', 'post'], '/wechat/jssdk-config', [H5WechatController::class, 'jssdkSignature']);
Route::match(['get', 'post'], '/wechat/config', [H5WechatController::class, 'jssdkSignature']);
Route::middleware('auth:sanctum')->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::post('/upload/delete', [UploadController::class, 'remove']);
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::delete('/venues/{id}', [VenueController::class, 'destroy'])->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']);
});