first
This commit is contained in:
26
server-api/config/app.php
Normal file
26
server-api/config/app.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
use support\Request;
|
||||
|
||||
return [
|
||||
'debug' => true,
|
||||
'error_reporting' => E_ALL,
|
||||
'default_timezone' => 'Asia/Shanghai',
|
||||
'request_class' => Request::class,
|
||||
'public_path' => base_path() . DIRECTORY_SEPARATOR . 'public',
|
||||
'runtime_path' => base_path(false) . DIRECTORY_SEPARATOR . 'runtime',
|
||||
'controller_suffix' => 'Controller',
|
||||
'controller_reuse' => false,
|
||||
];
|
||||
21
server-api/config/autoload.php
Normal file
21
server-api/config/autoload.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
return [
|
||||
'files' => [
|
||||
base_path() . '/app/functions.php',
|
||||
base_path() . '/support/Request.php',
|
||||
base_path() . '/support/Response.php',
|
||||
]
|
||||
];
|
||||
19
server-api/config/bootstrap.php
Normal file
19
server-api/config/bootstrap.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
return [
|
||||
app\bootstrap\Dotenv::class,
|
||||
support\bootstrap\Session::class,
|
||||
Webman\ThinkOrm\ThinkOrm::class,
|
||||
];
|
||||
15
server-api/config/container.php
Normal file
15
server-api/config/container.php
Normal file
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
return new Webman\Container;
|
||||
15
server-api/config/dependence.php
Normal file
15
server-api/config/dependence.php
Normal file
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
return [];
|
||||
17
server-api/config/exception.php
Normal file
17
server-api/config/exception.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
return [
|
||||
'' => support\exception\Handler::class,
|
||||
];
|
||||
32
server-api/config/log.php
Normal file
32
server-api/config/log.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
return [
|
||||
'default' => [
|
||||
'handlers' => [
|
||||
[
|
||||
'class' => Monolog\Handler\RotatingFileHandler::class,
|
||||
'constructor' => [
|
||||
runtime_path() . '/logs/webman.log',
|
||||
7, //$maxFiles
|
||||
Monolog\Logger::DEBUG,
|
||||
],
|
||||
'formatter' => [
|
||||
'class' => Monolog\Formatter\LineFormatter::class,
|
||||
'constructor' => [null, 'Y-m-d H:i:s', true],
|
||||
],
|
||||
]
|
||||
],
|
||||
],
|
||||
];
|
||||
21
server-api/config/middleware.php
Normal file
21
server-api/config/middleware.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
return [
|
||||
'' => [
|
||||
app\middleware\CorsMiddleware::class,
|
||||
app\middleware\AppAuthMiddleware::class,
|
||||
app\middleware\AdminAuthMiddleware::class,
|
||||
],
|
||||
];
|
||||
4
server-api/config/plugin/webman/redis-queue/app.php
Normal file
4
server-api/config/plugin/webman/redis-queue/app.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
return [
|
||||
'enable' => true,
|
||||
];
|
||||
7
server-api/config/plugin/webman/redis-queue/command.php
Normal file
7
server-api/config/plugin/webman/redis-queue/command.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Webman\RedisQueue\Command\MakeConsumerCommand;
|
||||
|
||||
return [
|
||||
MakeConsumerCommand::class
|
||||
];
|
||||
32
server-api/config/plugin/webman/redis-queue/log.php
Normal file
32
server-api/config/plugin/webman/redis-queue/log.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
return [
|
||||
'default' => [
|
||||
'handlers' => [
|
||||
[
|
||||
'class' => Monolog\Handler\RotatingFileHandler::class,
|
||||
'constructor' => [
|
||||
runtime_path() . '/logs/redis-queue/queue.log',
|
||||
7, //$maxFiles
|
||||
Monolog\Logger::DEBUG,
|
||||
],
|
||||
'formatter' => [
|
||||
'class' => Monolog\Formatter\LineFormatter::class,
|
||||
'constructor' => [null, 'Y-m-d H:i:s', true],
|
||||
],
|
||||
]
|
||||
],
|
||||
]
|
||||
];
|
||||
11
server-api/config/plugin/webman/redis-queue/process.php
Normal file
11
server-api/config/plugin/webman/redis-queue/process.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
return [
|
||||
'consumer' => [
|
||||
'handler' => Webman\RedisQueue\Process\Consumer::class,
|
||||
'count' => 8, // 可以设置多进程同时消费
|
||||
'constructor' => [
|
||||
// 消费者类目录
|
||||
'consumer_dir' => app_path() . '/queue/redis'
|
||||
]
|
||||
]
|
||||
];
|
||||
25
server-api/config/plugin/webman/redis-queue/redis.php
Normal file
25
server-api/config/plugin/webman/redis-queue/redis.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
return [
|
||||
'default' => [
|
||||
'host' => sprintf(
|
||||
'redis://%s:%s',
|
||||
$_ENV['REDIS_HOST'] ?? '127.0.0.1',
|
||||
$_ENV['REDIS_PORT'] ?? '6379'
|
||||
),
|
||||
'options' => [
|
||||
'auth' => $_ENV['REDIS_PASSWORD'] ?? null,
|
||||
'db' => (int)($_ENV['REDIS_DB'] ?? 0),
|
||||
'prefix' => $_ENV['REDIS_PREFIX'] ?? '',
|
||||
'max_attempts' => 5,
|
||||
'retry_seconds' => 5,
|
||||
],
|
||||
// Connection pool, supports only Swoole or Swow drivers.
|
||||
'pool' => [
|
||||
'max_connections' => 5,
|
||||
'min_connections' => 1,
|
||||
'wait_timeout' => 3,
|
||||
'idle_timeout' => 60,
|
||||
'heartbeat_interval' => 50,
|
||||
]
|
||||
],
|
||||
];
|
||||
62
server-api/config/process.php
Normal file
62
server-api/config/process.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
use support\Log;
|
||||
use support\Request;
|
||||
use app\process\Http;
|
||||
|
||||
global $argv;
|
||||
|
||||
return [
|
||||
'webman' => [
|
||||
'handler' => Http::class,
|
||||
'listen' => 'http://0.0.0.0:8787',
|
||||
'count' => cpu_count() * 4,
|
||||
'user' => '',
|
||||
'group' => '',
|
||||
'reusePort' => false,
|
||||
'eventLoop' => '',
|
||||
'context' => [],
|
||||
'constructor' => [
|
||||
'requestClass' => Request::class,
|
||||
'logger' => Log::channel('default'),
|
||||
'appPath' => app_path(),
|
||||
'publicPath' => public_path()
|
||||
]
|
||||
],
|
||||
// File update detection and automatic reload
|
||||
'monitor' => [
|
||||
'handler' => app\process\Monitor::class,
|
||||
'reloadable' => false,
|
||||
'constructor' => [
|
||||
// Monitor these directories
|
||||
'monitorDir' => array_merge([
|
||||
app_path(),
|
||||
config_path(),
|
||||
base_path() . '/process',
|
||||
base_path() . '/support',
|
||||
base_path() . '/resource',
|
||||
base_path() . '/.env',
|
||||
], glob(base_path() . '/plugin/*/app'), glob(base_path() . '/plugin/*/config'), glob(base_path() . '/plugin/*/api')),
|
||||
// Files with these suffixes will be monitored
|
||||
'monitorExtensions' => [
|
||||
'php', 'html', 'htm', 'env'
|
||||
],
|
||||
'options' => [
|
||||
'enable_file_monitor' => !in_array('-d', $argv) && DIRECTORY_SEPARATOR === '/',
|
||||
'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
275
server-api/config/route.php
Normal file
275
server-api/config/route.php
Normal file
@@ -0,0 +1,275 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
use Webman\Route;
|
||||
use app\controller\app\HomeController;
|
||||
use app\controller\app\CatalogController;
|
||||
use app\controller\app\AppraisalController;
|
||||
use app\controller\app\OrdersController;
|
||||
use app\controller\app\ReportsController;
|
||||
use app\controller\app\VerifyController;
|
||||
use app\controller\app\MaterialTagsController as AppMaterialTagsController;
|
||||
use app\controller\app\MessagesController as AppMessagesController;
|
||||
use app\controller\app\SupplementController as AppSupplementController;
|
||||
use app\controller\app\TicketsController as AppTicketsController;
|
||||
use app\controller\app\ShippingController as AppShippingController;
|
||||
use app\controller\app\AddressesController as AppAddressesController;
|
||||
use app\controller\app\HelpCenterController as AppHelpCenterController;
|
||||
use app\controller\app\SettingsController as AppSettingsController;
|
||||
use app\controller\app\AuthController as AppAuthController;
|
||||
use app\controller\app\MineController as AppMineController;
|
||||
use app\controller\admin\DashboardController as AdminDashboardController;
|
||||
use app\controller\admin\OrdersController as AdminOrdersController;
|
||||
use app\controller\admin\CatalogController as AdminCatalogController;
|
||||
use app\controller\admin\ReportsController as AdminReportsController;
|
||||
use app\controller\admin\AppraisalTasksController as AdminAppraisalTasksController;
|
||||
use app\controller\admin\MessagesController as AdminMessagesController;
|
||||
use app\controller\admin\TicketsController as AdminTicketsController;
|
||||
use app\controller\admin\UsersController as AdminUsersController;
|
||||
use app\controller\admin\WarehousesController as AdminWarehousesController;
|
||||
use app\controller\admin\MaterialsController as AdminMaterialsController;
|
||||
use app\controller\admin\AccessController as AdminAccessController;
|
||||
use app\controller\admin\ContentsController as AdminContentsController;
|
||||
use app\controller\admin\SystemConfigsController as AdminSystemConfigsController;
|
||||
use app\controller\admin\AuthController as AdminAuthController;
|
||||
use app\controller\admin\CustomersController as AdminCustomersController;
|
||||
use app\controller\open\OrdersController as OpenOrdersController;
|
||||
|
||||
Route::get('/', [app\controller\IndexController::class, 'json']);
|
||||
Route::options('/api/app/appraisal/draft/create', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/appraisal/draft/save', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/appraisal/file/upload', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/appraisal/file/delete', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/appraisal/preview', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/appraisal/submit', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/message/read', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/messages/read-all', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/order/supplement/file/upload', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/order/supplement/file/delete', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/order/supplement/submit', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/ticket/create', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/ticket/reply', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/ticket/file/upload', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/ticket/file/delete', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/order/shipping/save', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/order/return-address/save', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/address/save', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/address/default', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/address/delete', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/settings/save', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/{path:.+}', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/app/auth/{path:.+}', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/admin/{path:.+}', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::options('/api/open/v1/{path:.+}', function () {
|
||||
return response('', 204);
|
||||
});
|
||||
Route::get('/api/app/home/index', [HomeController::class, 'index']);
|
||||
Route::get('/api/app/content/page-visuals', [HomeController::class, 'pageVisuals']);
|
||||
Route::get('/api/app/catalog/categories', [CatalogController::class, 'categories']);
|
||||
Route::get('/api/app/catalog/brands', [CatalogController::class, 'brands']);
|
||||
Route::post('/api/app/appraisal/draft/create', [AppraisalController::class, 'createDraft']);
|
||||
Route::get('/api/app/appraisal/draft', [AppraisalController::class, 'draftDetail']);
|
||||
Route::post('/api/app/appraisal/draft/save', [AppraisalController::class, 'saveDraft']);
|
||||
Route::post('/api/app/appraisal/file/upload', [AppraisalController::class, 'uploadFile']);
|
||||
Route::post('/api/app/appraisal/file/delete', [AppraisalController::class, 'deleteFile']);
|
||||
Route::get('/api/app/appraisal/upload-template', [AppraisalController::class, 'uploadTemplate']);
|
||||
Route::post('/api/app/appraisal/preview', [AppraisalController::class, 'preview']);
|
||||
Route::post('/api/app/appraisal/submit', [AppraisalController::class, 'submit']);
|
||||
Route::get('/api/app/orders', [OrdersController::class, 'index']);
|
||||
Route::get('/api/app/order/detail', [OrdersController::class, 'detail']);
|
||||
Route::post('/api/app/order/return-address/save', [OrdersController::class, 'saveReturnAddress']);
|
||||
Route::get('/api/app/reports', [ReportsController::class, 'index']);
|
||||
Route::get('/api/app/report/detail', [ReportsController::class, 'detail']);
|
||||
Route::get('/api/app/verify', [VerifyController::class, 'show']);
|
||||
Route::get('/api/app/material-tag', [AppMaterialTagsController::class, 'show']);
|
||||
Route::post('/api/app/material-tag/verify', [AppMaterialTagsController::class, 'verify']);
|
||||
Route::get('/api/app/help-center', [AppHelpCenterController::class, 'index']);
|
||||
Route::get('/api/app/help-article/detail', [AppHelpCenterController::class, 'detail']);
|
||||
Route::post('/api/app/auth/send-code', [AppAuthController::class, 'sendCode']);
|
||||
Route::post('/api/app/auth/login/code', [AppAuthController::class, 'loginByCode']);
|
||||
Route::post('/api/app/auth/login/password', [AppAuthController::class, 'loginByPassword']);
|
||||
Route::get('/api/app/auth/me', [AppAuthController::class, 'me']);
|
||||
Route::post('/api/app/auth/password/save', [AppAuthController::class, 'savePassword']);
|
||||
Route::post('/api/app/auth/logout', [AppAuthController::class, 'logout']);
|
||||
Route::get('/api/app/mine/overview', [AppMineController::class, 'overview']);
|
||||
Route::get('/api/app/settings', [AppSettingsController::class, 'detail']);
|
||||
Route::post('/api/app/settings/save', [AppSettingsController::class, 'save']);
|
||||
Route::get('/api/app/messages/summary', [AppMessagesController::class, 'summary']);
|
||||
Route::get('/api/app/messages/meta', [AppMessagesController::class, 'meta']);
|
||||
Route::get('/api/app/messages', [AppMessagesController::class, 'index']);
|
||||
Route::post('/api/app/message/read', [AppMessagesController::class, 'read']);
|
||||
Route::post('/api/app/messages/read-all', [AppMessagesController::class, 'readAll']);
|
||||
Route::get('/api/app/order/supplement', [AppSupplementController::class, 'detail']);
|
||||
Route::post('/api/app/order/supplement/file/upload', [AppSupplementController::class, 'uploadFile']);
|
||||
Route::post('/api/app/order/supplement/file/delete', [AppSupplementController::class, 'deleteFile']);
|
||||
Route::post('/api/app/order/supplement/submit', [AppSupplementController::class, 'submit']);
|
||||
Route::get('/api/app/tickets/overview', [AppTicketsController::class, 'overview']);
|
||||
Route::get('/api/app/ticket/meta', [AppTicketsController::class, 'meta']);
|
||||
Route::get('/api/app/tickets', [AppTicketsController::class, 'index']);
|
||||
Route::get('/api/app/ticket/detail', [AppTicketsController::class, 'detail']);
|
||||
Route::post('/api/app/ticket/create', [AppTicketsController::class, 'create']);
|
||||
Route::post('/api/app/ticket/reply', [AppTicketsController::class, 'reply']);
|
||||
Route::post('/api/app/ticket/file/upload', [AppTicketsController::class, 'uploadFile']);
|
||||
Route::post('/api/app/ticket/file/delete', [AppTicketsController::class, 'deleteFile']);
|
||||
Route::get('/api/app/order/shipping', [AppShippingController::class, 'detail']);
|
||||
Route::post('/api/app/order/shipping/save', [AppShippingController::class, 'save']);
|
||||
Route::get('/api/app/addresses', [AppAddressesController::class, 'index']);
|
||||
Route::get('/api/app/address/detail', [AppAddressesController::class, 'detail']);
|
||||
Route::post('/api/app/address/save', [AppAddressesController::class, 'save']);
|
||||
Route::post('/api/app/address/default', [AppAddressesController::class, 'setDefault']);
|
||||
Route::post('/api/app/address/delete', [AppAddressesController::class, 'delete']);
|
||||
|
||||
Route::post('/api/open/v1/orders', [OpenOrdersController::class, 'create']);
|
||||
Route::get('/api/open/v1/orders', [OpenOrdersController::class, 'detail']);
|
||||
Route::get('/api/open/v1/orders/{external_order_no}', [OpenOrdersController::class, 'detail']);
|
||||
|
||||
Route::get('/api/admin/ping', function () {
|
||||
return api_success(['pong' => true]);
|
||||
});
|
||||
Route::post('/api/admin/auth/login', [AdminAuthController::class, 'login']);
|
||||
Route::get('/api/admin/auth/me', [AdminAuthController::class, 'me']);
|
||||
Route::post('/api/admin/auth/logout', [AdminAuthController::class, 'logout']);
|
||||
Route::get('/api/admin/dashboard', [AdminDashboardController::class, 'index']);
|
||||
Route::get('/api/admin/orders', [AdminOrdersController::class, 'index']);
|
||||
Route::get('/api/admin/order/detail', [AdminOrdersController::class, 'detail']);
|
||||
Route::get('/api/admin/order/warehouse/options', [AdminOrdersController::class, 'warehouseOptions']);
|
||||
Route::post('/api/admin/order/warehouse/reassign', [AdminOrdersController::class, 'reassignWarehouse']);
|
||||
Route::post('/api/admin/order/logistics/receive', [AdminOrdersController::class, 'receiveLogistics']);
|
||||
Route::post('/api/admin/order/return-logistics/save', [AdminOrdersController::class, 'saveReturnLogistics']);
|
||||
Route::post('/api/admin/order/return-logistics/receive', [AdminOrdersController::class, 'receiveReturnLogistics']);
|
||||
Route::get('/api/admin/catalog/overview', [AdminCatalogController::class, 'overview']);
|
||||
Route::get('/api/admin/catalog/categories', [AdminCatalogController::class, 'categories']);
|
||||
Route::get('/api/admin/catalog/brands', [AdminCatalogController::class, 'brands']);
|
||||
Route::get('/api/admin/catalog/upload-templates', [AdminCatalogController::class, 'uploadTemplates']);
|
||||
Route::get('/api/admin/catalog/appraisal-templates', [AdminCatalogController::class, 'appraisalTemplates']);
|
||||
Route::post('/api/admin/catalog/upload-template/sample-image/upload', [AdminCatalogController::class, 'uploadTemplateSampleImage']);
|
||||
Route::post('/api/admin/catalog/upload-template/sample-image/delete', [AdminCatalogController::class, 'deleteUploadTemplateSampleImage']);
|
||||
Route::post('/api/admin/catalog/category/save', [AdminCatalogController::class, 'saveCategory']);
|
||||
Route::post('/api/admin/catalog/brand/save', [AdminCatalogController::class, 'saveBrand']);
|
||||
Route::post('/api/admin/catalog/upload-templates/save', [AdminCatalogController::class, 'saveUploadTemplates']);
|
||||
Route::post('/api/admin/catalog/appraisal-templates/save', [AdminCatalogController::class, 'saveAppraisalTemplates']);
|
||||
Route::get('/api/admin/reports', [AdminReportsController::class, 'index']);
|
||||
Route::get('/api/admin/report/detail', [AdminReportsController::class, 'detail']);
|
||||
Route::post('/api/admin/report/inspection/save', [AdminReportsController::class, 'saveInspection']);
|
||||
Route::post('/api/admin/report/publish', [AdminReportsController::class, 'publish']);
|
||||
Route::get('/api/admin/appraisal-tasks', [AdminAppraisalTasksController::class, 'index']);
|
||||
Route::get('/api/admin/appraisal-task/detail', [AdminAppraisalTasksController::class, 'detail']);
|
||||
Route::get('/api/admin/appraisal-task/assignable-admins', [AdminAppraisalTasksController::class, 'assignableAdmins']);
|
||||
Route::post('/api/admin/appraisal-task/assign', [AdminAppraisalTasksController::class, 'assign']);
|
||||
Route::post('/api/admin/appraisal-task/save-result', [AdminAppraisalTasksController::class, 'saveResult']);
|
||||
Route::post('/api/admin/appraisal-task/material-tag/bind', [AdminAppraisalTasksController::class, 'bindMaterialTag']);
|
||||
Route::post('/api/admin/appraisal-task/request-supplement', [AdminAppraisalTasksController::class, 'requestSupplement']);
|
||||
Route::post('/api/admin/appraisal-task/evidence/upload', [AdminAppraisalTasksController::class, 'uploadEvidenceFile']);
|
||||
Route::post('/api/admin/appraisal-task/evidence/delete', [AdminAppraisalTasksController::class, 'deleteEvidenceFile']);
|
||||
Route::get('/api/admin/messages/overview', [AdminMessagesController::class, 'overview']);
|
||||
Route::get('/api/admin/messages/templates', [AdminMessagesController::class, 'templates']);
|
||||
Route::get('/api/admin/messages/logs', [AdminMessagesController::class, 'logs']);
|
||||
Route::post('/api/admin/messages/template/save', [AdminMessagesController::class, 'saveTemplate']);
|
||||
Route::get('/api/admin/tickets/overview', [AdminTicketsController::class, 'overview']);
|
||||
Route::get('/api/admin/tickets', [AdminTicketsController::class, 'index']);
|
||||
Route::get('/api/admin/ticket/detail', [AdminTicketsController::class, 'detail']);
|
||||
Route::post('/api/admin/ticket/save', [AdminTicketsController::class, 'save']);
|
||||
Route::post('/api/admin/ticket/reply', [AdminTicketsController::class, 'reply']);
|
||||
Route::post('/api/admin/ticket/file/upload', [AdminTicketsController::class, 'uploadFile']);
|
||||
Route::post('/api/admin/ticket/file/delete', [AdminTicketsController::class, 'deleteFile']);
|
||||
Route::get('/api/admin/users/overview', [AdminUsersController::class, 'overview']);
|
||||
Route::get('/api/admin/users', [AdminUsersController::class, 'index']);
|
||||
Route::get('/api/admin/user/detail', [AdminUsersController::class, 'detail']);
|
||||
Route::post('/api/admin/user/save', [AdminUsersController::class, 'save']);
|
||||
Route::get('/api/admin/customers', [AdminCustomersController::class, 'index']);
|
||||
Route::get('/api/admin/customer/detail', [AdminCustomersController::class, 'detail']);
|
||||
Route::post('/api/admin/customer/save', [AdminCustomersController::class, 'save']);
|
||||
Route::post('/api/admin/customer/app/create', [AdminCustomersController::class, 'createApp']);
|
||||
Route::post('/api/admin/customer/app/status', [AdminCustomersController::class, 'updateAppStatus']);
|
||||
Route::post('/api/admin/customer/app/reset-secret', [AdminCustomersController::class, 'resetAppSecret']);
|
||||
Route::get('/api/admin/customer/orders', [AdminCustomersController::class, 'orders']);
|
||||
Route::get('/api/admin/customer/order/progress', [AdminCustomersController::class, 'orderProgress']);
|
||||
Route::get('/api/admin/customer/events', [AdminCustomersController::class, 'events']);
|
||||
Route::get('/api/admin/customer/deliveries', [AdminCustomersController::class, 'deliveries']);
|
||||
Route::post('/api/admin/customer/event/resend', [AdminCustomersController::class, 'resendEvent']);
|
||||
Route::get('/api/admin/warehouses/overview', [AdminWarehousesController::class, 'overview']);
|
||||
Route::get('/api/admin/warehouses', [AdminWarehousesController::class, 'index']);
|
||||
Route::post('/api/admin/warehouse/save', [AdminWarehousesController::class, 'save']);
|
||||
Route::get('/api/admin/material/batches', [AdminMaterialsController::class, 'batches']);
|
||||
Route::get('/api/admin/material/batch/detail', [AdminMaterialsController::class, 'detail']);
|
||||
Route::post('/api/admin/material/batch/create', [AdminMaterialsController::class, 'create']);
|
||||
Route::get('/api/admin/material/batch/download', [AdminMaterialsController::class, 'download']);
|
||||
Route::get('/api/admin/access/overview', [AdminAccessController::class, 'overview']);
|
||||
Route::get('/api/admin/access/admins', [AdminAccessController::class, 'admins']);
|
||||
Route::get('/api/admin/access/roles', [AdminAccessController::class, 'roles']);
|
||||
Route::get('/api/admin/access/permissions', [AdminAccessController::class, 'permissions']);
|
||||
Route::post('/api/admin/access/admin/save', [AdminAccessController::class, 'saveAdmin']);
|
||||
Route::post('/api/admin/access/role/save', [AdminAccessController::class, 'saveRole']);
|
||||
Route::get('/api/admin/content/bootstrap', [AdminContentsController::class, 'bootstrap']);
|
||||
Route::get('/api/admin/content/home', [AdminContentsController::class, 'home']);
|
||||
Route::post('/api/admin/content/image/upload', [AdminContentsController::class, 'uploadImage']);
|
||||
Route::post('/api/admin/content/home/save', [AdminContentsController::class, 'saveHome']);
|
||||
Route::get('/api/admin/content/policy', [AdminContentsController::class, 'policy']);
|
||||
Route::post('/api/admin/content/policy/save', [AdminContentsController::class, 'savePolicy']);
|
||||
Route::get('/api/admin/content/meta', [AdminContentsController::class, 'meta']);
|
||||
Route::post('/api/admin/content/meta/save', [AdminContentsController::class, 'saveMeta']);
|
||||
Route::get('/api/admin/content/help/articles', [AdminContentsController::class, 'helpArticles']);
|
||||
Route::post('/api/admin/content/help/article/save', [AdminContentsController::class, 'saveHelpArticle']);
|
||||
Route::post('/api/admin/content/help/article/delete', [AdminContentsController::class, 'deleteHelpArticle']);
|
||||
Route::get('/api/admin/system-configs', [AdminSystemConfigsController::class, 'index']);
|
||||
Route::post('/api/admin/system-configs/upload-file', [AdminSystemConfigsController::class, 'uploadFile']);
|
||||
Route::post('/api/admin/system-configs/save', [AdminSystemConfigsController::class, 'save']);
|
||||
23
server-api/config/server.php
Normal file
23
server-api/config/server.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
return [
|
||||
'event_loop' => '',
|
||||
'stop_timeout' => 2,
|
||||
'pid_file' => runtime_path() . '/webman.pid',
|
||||
'status_file' => runtime_path() . '/webman.status',
|
||||
'stdout_file' => runtime_path() . '/logs/stdout.log',
|
||||
'log_file' => runtime_path() . '/logs/workerman.log',
|
||||
'max_package_size' => 10 * 1024 * 1024
|
||||
];
|
||||
65
server-api/config/session.php
Normal file
65
server-api/config/session.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
use Webman\Session\FileSessionHandler;
|
||||
use Webman\Session\RedisSessionHandler;
|
||||
use Webman\Session\RedisClusterSessionHandler;
|
||||
|
||||
return [
|
||||
|
||||
'type' => 'file', // or redis or redis_cluster
|
||||
|
||||
'handler' => FileSessionHandler::class,
|
||||
|
||||
'config' => [
|
||||
'file' => [
|
||||
'save_path' => runtime_path() . '/sessions',
|
||||
],
|
||||
'redis' => [
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 6379,
|
||||
'auth' => '',
|
||||
'timeout' => 2,
|
||||
'database' => '',
|
||||
'prefix' => 'redis_session_',
|
||||
],
|
||||
'redis_cluster' => [
|
||||
'host' => ['127.0.0.1:7000', '127.0.0.1:7001', '127.0.0.1:7001'],
|
||||
'timeout' => 2,
|
||||
'auth' => '',
|
||||
'prefix' => 'redis_session_',
|
||||
]
|
||||
],
|
||||
|
||||
'session_name' => 'PHPSID',
|
||||
|
||||
'auto_update_timestamp' => false,
|
||||
|
||||
'lifetime' => 7*24*60*60,
|
||||
|
||||
'cookie_lifetime' => 365*24*60*60,
|
||||
|
||||
'cookie_path' => '/',
|
||||
|
||||
'domain' => '',
|
||||
|
||||
'http_only' => true,
|
||||
|
||||
'secure' => false,
|
||||
|
||||
'same_site' => '',
|
||||
|
||||
'gc_probability' => [1, 1000],
|
||||
|
||||
];
|
||||
23
server-api/config/static.php
Normal file
23
server-api/config/static.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
/**
|
||||
* Static file settings
|
||||
*/
|
||||
return [
|
||||
'enable' => true,
|
||||
'middleware' => [ // Static file Middleware
|
||||
//app\middleware\StaticFile::class,
|
||||
],
|
||||
];
|
||||
42
server-api/config/think-orm.php
Normal file
42
server-api/config/think-orm.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'default' => 'mysql',
|
||||
'connections' => [
|
||||
'mysql' => [
|
||||
// 数据库类型
|
||||
'type' => 'mysql',
|
||||
// 服务器地址
|
||||
'hostname' => $_ENV['DB_HOST'] ?? '127.0.0.1',
|
||||
// 数据库名
|
||||
'database' => $_ENV['DB_DATABASE'] ?? 'test',
|
||||
// 数据库用户名
|
||||
'username' => $_ENV['DB_USERNAME'] ?? 'root',
|
||||
// 数据库密码
|
||||
'password' => $_ENV['DB_PASSWORD'] ?? '',
|
||||
// 数据库连接端口
|
||||
'hostport' => $_ENV['DB_PORT'] ?? '3306',
|
||||
// 数据库连接参数
|
||||
'params' => [
|
||||
// 连接超时3秒
|
||||
\PDO::ATTR_TIMEOUT => 3,
|
||||
],
|
||||
// 数据库编码默认采用utf8
|
||||
'charset' => $_ENV['DB_CHARSET'] ?? 'utf8mb4',
|
||||
// 数据库表前缀
|
||||
'prefix' => $_ENV['DB_PREFIX'] ?? '',
|
||||
// 断线重连
|
||||
'break_reconnect' => true,
|
||||
// 连接池配置
|
||||
'pool' => [
|
||||
'max_connections' => 5, // 最大连接数
|
||||
'min_connections' => 1, // 最小连接数
|
||||
'wait_timeout' => 3, // 从连接池获取连接等待超时时间
|
||||
'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收
|
||||
'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒
|
||||
],
|
||||
],
|
||||
],
|
||||
// 自定义分页类
|
||||
'paginator' => '',
|
||||
];
|
||||
25
server-api/config/translation.php
Normal file
25
server-api/config/translation.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
/**
|
||||
* Multilingual configuration
|
||||
*/
|
||||
return [
|
||||
// Default language
|
||||
'locale' => 'zh_CN',
|
||||
// Fallback language
|
||||
'fallback_locale' => ['zh_CN', 'en'],
|
||||
// Folder where language files are stored
|
||||
'path' => base_path() . '/resource/translations',
|
||||
];
|
||||
22
server-api/config/view.php
Normal file
22
server-api/config/view.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
/**
|
||||
* This file is part of webman.
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the MIT-LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @author walkor<walkor@workerman.net>
|
||||
* @copyright walkor<walkor@workerman.net>
|
||||
* @link http://www.workerman.net/
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*/
|
||||
|
||||
use support\view\Raw;
|
||||
use support\view\Twig;
|
||||
use support\view\Blade;
|
||||
use support\view\ThinkPHP;
|
||||
|
||||
return [
|
||||
'handler' => Raw::class
|
||||
];
|
||||
Reference in New Issue
Block a user