Files
saasshop/routes/web.php

192 lines
12 KiB
PHP

<?php
use App\Http\Controllers\Admin\AuthController as AdminAuthController;
use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\Admin\OrderController as AdminOrderController;
use App\Http\Controllers\Admin\PlanController;
use App\Http\Controllers\Admin\PlatformOrderController;
use App\Http\Controllers\Admin\PlatformSettingController;
use App\Http\Controllers\Admin\ProductCategoryController as AdminProductCategoryController;
use App\Http\Controllers\Admin\ProductController as AdminProductController;
use App\Http\Controllers\Admin\MerchantController as AdminMerchantController;
use App\Http\Controllers\Admin\SiteSubscriptionController;
use App\Http\Controllers\Front\H5Controller;
use App\Http\Controllers\MerchantAdmin\AuthController as MerchantAdminAuthController;
use App\Http\Controllers\MerchantAdmin\DashboardController as MerchantDashboardController;
use App\Http\Controllers\MerchantAdmin\OrderController as MerchantOrderController;
use App\Http\Controllers\MerchantAdmin\ProductCategoryController as MerchantProductCategoryController;
use App\Http\Controllers\MerchantAdmin\ProductController as MerchantProductController;
use App\Http\Controllers\MerchantAdmin\UserController as MerchantUserController;
use App\Http\Controllers\Front\PcController;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\SiteAdmin\AuthController as SiteAdminAuthController;
use App\Http\Controllers\SiteAdmin\DashboardController as SiteDashboardController;
use App\Http\Controllers\SiteAdmin\MerchantController as SiteMerchantController;
use App\Http\Controllers\SiteAdmin\OrderController as SiteOrderController;
use App\Http\Controllers\SiteAdmin\ProductController as SiteProductController;
use App\Http\Controllers\Wechat\MiniProgramController;
use App\Http\Controllers\Wechat\MpController;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redis;
use Illuminate\Support\Facades\Route;
Route::get('/', [HomeController::class, 'index']);
Route::get('/pc', [PcController::class, 'index']);
Route::get('/h5', [H5Controller::class, 'index']);
Route::get('/wechat/mp', [MpController::class, 'index']);
Route::get('/wechat/mini', [MiniProgramController::class, 'index']);
Route::get('/health', function () {
$dbOk = false;
$dbMsg = '未检测';
try {
$row = DB::selectOne('select database() as db_name, now() as now_time');
$dbOk = true;
$dbMsg = '数据库连接正常 / ' . $row->db_name . ' / ' . $row->now_time;
} catch (Throwable $e) {
$dbMsg = $e->getMessage();
}
$redisOk = false;
$redisMsg = '未检测';
try {
$pong = Redis::ping();
$redisOk = true;
$redisMsg = 'Redis PING => ' . var_export($pong, true);
} catch (Throwable $e) {
$redisMsg = $e->getMessage();
}
return response()->view('welcome_status', [
'phpVersion' => PHP_VERSION,
'dbOk' => $dbOk,
'dbMsg' => $dbMsg,
'redisOk' => $redisOk,
'redisMsg' => $redisMsg,
]);
});
Route::prefix('admin')->group(function () {
Route::get('/login', [AdminAuthController::class, 'showLogin']);
Route::post('/login', [AdminAuthController::class, 'login']);
Route::post('/logout', [AdminAuthController::class, 'logout']);
Route::middleware('admin.auth')->group(function () {
Route::get('/', [DashboardController::class, 'index']);
Route::get('/merchants', [AdminMerchantController::class, 'index']);
Route::post('/merchants', [AdminMerchantController::class, 'store']);
Route::get('/products', [AdminProductController::class, 'index']);
Route::get('/products/import-histories', [AdminProductController::class, 'importHistories']);
Route::get('/products/import-histories/export', [AdminProductController::class, 'exportImportHistories']);
Route::get('/products/export', [AdminProductController::class, 'export']);
Route::get('/products/import-template', [AdminProductController::class, 'downloadImportTemplate']);
Route::post('/products/import', [AdminProductController::class, 'import']);
Route::get('/products/import-failures/{file}', [AdminProductController::class, 'downloadImportFailures']);
Route::post('/products/batch', [AdminProductController::class, 'batchUpdate']);
Route::post('/products', [AdminProductController::class, 'store']);
Route::post('/products/{id}', [AdminProductController::class, 'update']);
Route::post('/products/{id}/delete', [AdminProductController::class, 'destroy']);
Route::get('/product-categories', [AdminProductCategoryController::class, 'index']);
Route::post('/product-categories', [AdminProductCategoryController::class, 'store']);
Route::post('/product-categories/{id}', [AdminProductCategoryController::class, 'update']);
Route::post('/product-categories/{id}/delete', [AdminProductCategoryController::class, 'destroy']);
Route::get('/orders', [AdminOrderController::class, 'index']);
Route::get('/orders/export', [AdminOrderController::class, 'export']);
Route::get('/orders/{id}', [AdminOrderController::class, 'show']);
Route::post('/orders/{id}/status', [AdminOrderController::class, 'updateStatus']);
Route::get('/platform-orders', [PlatformOrderController::class, 'index']);
Route::get('/platform-orders/export', [PlatformOrderController::class, 'export']);
Route::get('/platform-orders/create', [PlatformOrderController::class, 'create']);
Route::post('/platform-orders', [PlatformOrderController::class, 'store']);
Route::post('/platform-orders/batch-activate-subscriptions', [PlatformOrderController::class, 'batchActivateSubscriptions']);
Route::post('/platform-orders/batch-mark-paid-and-activate', [PlatformOrderController::class, 'batchMarkPaidAndActivate']);
Route::post('/platform-orders/batch-mark-activated', [PlatformOrderController::class, 'batchMarkActivated']);
Route::post('/platform-orders/clear-sync-errors', [PlatformOrderController::class, 'clearSyncErrors']);
Route::post('/platform-orders/clear-bmpa-errors', [PlatformOrderController::class, 'clearBmpaErrors']);
Route::get('/platform-orders/{order}', [PlatformOrderController::class, 'show']);
Route::post('/platform-orders/{order}/activate-subscription', [PlatformOrderController::class, 'activateSubscription']);
Route::post('/platform-orders/{order}/mark-paid-and-activate', [PlatformOrderController::class, 'markPaidAndActivate']);
Route::post('/platform-orders/{order}/add-payment-receipt', [PlatformOrderController::class, 'addPaymentReceipt']);
Route::post('/platform-orders/{order}/add-refund-receipt', [PlatformOrderController::class, 'addRefundReceipt']);
Route::post('/platform-orders/{order}/mark-refunded', [PlatformOrderController::class, 'markRefunded']);
Route::post('/platform-orders/{order}/mark-partially-refunded', [PlatformOrderController::class, 'markPartiallyRefunded']);
Route::post('/platform-orders/{order}/mark-paid-status', [PlatformOrderController::class, 'markPaidStatus']);
Route::post('/platform-orders/{order}/mark-activated', [PlatformOrderController::class, 'markActivated']);
Route::get('/site-subscriptions', [SiteSubscriptionController::class, 'index']);
Route::get('/site-subscriptions/export', [SiteSubscriptionController::class, 'export']);
Route::get('/site-subscriptions/{subscription}', [SiteSubscriptionController::class, 'show']);
Route::get('/plans', [PlanController::class, 'index']);
Route::get('/plans/export', [PlanController::class, 'export']);
Route::get('/plans/create', [PlanController::class, 'create']);
Route::post('/plans', [PlanController::class, 'store']);
// 注意:必须放在 /plans/{plan} 之前,避免被参数路由吞掉导致 404
Route::post('/plans/seed-defaults', [PlanController::class, 'seedDefaults']);
Route::get('/plans/{plan}/edit', [PlanController::class, 'edit']);
Route::post('/plans/{plan}', [PlanController::class, 'update']);
Route::post('/plans/{plan}/set-status', [PlanController::class, 'setStatus']);
Route::get('/settings/system', [PlatformSettingController::class, 'system']);
Route::post('/settings/system/{id}', [PlatformSettingController::class, 'updateSystem']);
Route::get('/settings/channels', [PlatformSettingController::class, 'channels']);
Route::post('/settings/channels/{id}', [PlatformSettingController::class, 'updateChannel']);
Route::post('/settings/payments/{id}', [PlatformSettingController::class, 'updatePayment']);
});
});
Route::prefix('merchant-admin')->group(function () {
Route::get('/login', [MerchantAdminAuthController::class, 'showLogin']);
Route::post('/login', [MerchantAdminAuthController::class, 'login']);
Route::post('/logout', [MerchantAdminAuthController::class, 'logout']);
Route::middleware('merchant.admin.auth')->group(function () {
Route::get('/', [MerchantDashboardController::class, 'index']);
Route::get('/products', [MerchantProductController::class, 'index']);
Route::get('/products/import-histories', [MerchantProductController::class, 'importHistories']);
Route::get('/products/import-histories/export', [MerchantProductController::class, 'exportImportHistories']);
Route::get('/products/export', [MerchantProductController::class, 'export']);
Route::get('/products/import-template', [MerchantProductController::class, 'downloadImportTemplate']);
Route::post('/products/import', [MerchantProductController::class, 'import']);
Route::get('/products/import-failures/{file}', [MerchantProductController::class, 'downloadImportFailures']);
Route::post('/products/batch', [MerchantProductController::class, 'batchUpdate']);
Route::post('/products', [MerchantProductController::class, 'store']);
Route::post('/products/{id}', [MerchantProductController::class, 'update']);
Route::post('/products/{id}/delete', [MerchantProductController::class, 'destroy']);
Route::get('/product-categories', [MerchantProductCategoryController::class, 'index']);
Route::post('/product-categories', [MerchantProductCategoryController::class, 'store']);
Route::post('/product-categories/{id}', [MerchantProductCategoryController::class, 'update']);
Route::post('/product-categories/{id}/delete', [MerchantProductCategoryController::class, 'destroy']);
Route::get('/users', [MerchantUserController::class, 'index']);
Route::get('/orders', [MerchantOrderController::class, 'index']);
Route::get('/orders/export', [MerchantOrderController::class, 'export']);
Route::get('/orders/{id}', [MerchantOrderController::class, 'show']);
Route::post('/orders/{id}/status', [MerchantOrderController::class, 'updateStatus']);
});
});
Route::prefix('site-admin')->group(function () {
Route::get('/login', [SiteAdminAuthController::class, 'showLogin']);
Route::post('/login', [SiteAdminAuthController::class, 'login']);
Route::post('/logout', [SiteAdminAuthController::class, 'logout']);
Route::middleware('site.admin.auth')->group(function () {
Route::get('/', [SiteDashboardController::class, 'index']);
Route::get('/merchants', [SiteMerchantController::class, 'index']);
Route::get('/merchants/export', [SiteMerchantController::class, 'export']);
Route::get('/products', [SiteProductController::class, 'index']);
Route::get('/products/export', [SiteProductController::class, 'export']);
Route::get('/orders', [SiteOrderController::class, 'index']);
Route::get('/orders/export', [SiteOrderController::class, 'export']);
});
});