diff --git a/README.en.md b/README.en.md index a469cdb1c2b1406d8423d31932c496d1d6ca0921..5935db6c662865919810ea4daab7af64d7275d03 100644 --- a/README.en.md +++ b/README.en.md @@ -1,7 +1,7 @@ # laravel-vue-admin #### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} +laravel+vue-element-admin #### Software Architecture Software architecture description @@ -13,6 +13,7 @@ Software architecture description * 命令行,生成 APP_KEY:`php artisan key:generate` * 命令行,JWT的key:`php artisan jwt:secret` * 导入根目录sql:laravel-vue-admin.sql +* 任务调度:`php artisan schedule:run` #### Instructions diff --git a/README.md b/README.md index a9ff12811a3e15054f3be050be08d0d5c18e7dc4..ccb3b771c7e6379713c98be0a9bd7873cbf32b6b 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,12 @@ # laravel-vue-admin #### 介绍 -{**以下是 Gitee 平台说明,您可以替换此简介** -Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} +laravel+vue-element-admin #### 软件架构 软件架构说明 -文档地址(无文档,自己对接):https://docs.apipost.cn/view/680a60d8e13e4745 +文档地址(无需文档,自己对接):https://docs.apipost.cn/view/680a60d8e13e4745 #### 安装教程 @@ -17,6 +15,7 @@ Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN * 命令行,生成 APP_KEY:`php artisan key:generate` * 命令行,JWT的key:`php artisan jwt:secret` * 导入根目录sql:laravel-vue-admin.sql +* 任务调度:`php artisan schedule:run` #### 使用说明 diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index fe7c1b5f34d2f6f4d89930284d9353bbe77cc8dd..c24df94547a51449cd67d945d19b279a7eefb6f5 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -25,6 +25,11 @@ class Kernel extends ConsoleKernel protected function schedule(Schedule $schedule) { // $schedule->command('inspire')->hourly(); + + // var_dump('schedule:' . date('Y-m-d H:i:s')); + + // 每月1号调用:按月分表自动生成 + $schedule->command('autotablebuild')->monthlyOn(); } /** diff --git a/app/Modules/Admin/Entities/Rabc/Admin.php b/app/Modules/Admin/Entities/Rabc/Admin.php index 7aa794a880333f74c07e97489bcd73d823665a2e..891b305287e2ace1e089325c17bcaa1d69a5e775 100644 --- a/app/Modules/Admin/Entities/Rabc/Admin.php +++ b/app/Modules/Admin/Entities/Rabc/Admin.php @@ -19,6 +19,16 @@ class Admin extends Authenticatable implements JWTSubject protected $is_delete = 0; //是否开启删除(1.开启删除,就是直接删除;0.假删除) protected $delete_field = 'is_delete'; //删除字段 + public function getIsDelete() + { + return $this->is_delete; + } + + public function getDeleteField() + { + return $this->delete_field; + } + /** * 是否主动维护时间戳 * diff --git a/app/Modules/Admin/Entities/Rabc/AdminMenu.php b/app/Modules/Admin/Entities/Rabc/AdminMenu.php index 0d84a9eebc0b3301943e96c93b558f0df65da3ac..c599b9601398118a87945d007d47d6e4aafed20f 100644 --- a/app/Modules/Admin/Entities/Rabc/AdminMenu.php +++ b/app/Modules/Admin/Entities/Rabc/AdminMenu.php @@ -9,13 +9,25 @@ class AdminMenu extends Model protected $primaryKey = 'menu_id'; protected $is_delete = 0; - public static function getAllMenus() + public function getAllMenus() { - return self::orderBy('menu_sort', 'ASC')->get(); + return $this->orderBy('menu_sort', 'ASC')->get(); } public function getSelectLists() { return list_to_tree($this->orderBy('menu_sort', 'ASC')->get()->toArray()); } + + public function getMenusByIds(array $menu_ids) + { + return $this->whereIn('menu_id', $menu_ids) + ->orderBy('menu_sort', 'ASC') + ->get(); + } + + public function getMenusByIdsForRabc(array $menu_ids) + { + return $this->whereIn('menu_id', $menu_ids)->where('api_url', '<>', '')->pluck('api_method', 'api_url'); + } } diff --git a/app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php b/app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php index f58acb31ffc174c3bb1e3a553519344ad07967e7..28aeb42d98060b484dbe6944689dc535ee56fcd4 100644 --- a/app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php +++ b/app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php @@ -8,4 +8,9 @@ class AdminRoleWithMenu extends Model { protected $primaryKey = 'with_id'; public $timestamps = false; + + public function getMenuIdsByRoles(array $role_ids) + { + return array_unique(array_column($this->whereIn('role_id', $role_ids)->select('menu_id')->get()->toArray(), 'menu_id')); + } } diff --git a/app/Modules/Admin/Http/Controllers/AuthController.php b/app/Modules/Admin/Http/Controllers/AuthController.php index 2e63e0d286c254dfb2d35daef1bc76f1619e9be2..e811b8cc32da7bb22e44a8c1dccfb112b017ea03 100644 --- a/app/Modules/Admin/Http/Controllers/AuthController.php +++ b/app/Modules/Admin/Http/Controllers/AuthController.php @@ -59,6 +59,6 @@ class AuthController extends BaseController public function getRabcList() { // 临时测试数据 - return $this->successJson(list_to_tree(AdminMenu::getAllMenus()->toArray())); + return $this->successJson(list_to_tree(AdminMenu::getInstance()->getAllMenus()->toArray())); } } diff --git a/app/Modules/Admin/Http/Middleware/CheckAuth.php b/app/Modules/Admin/Http/Middleware/CheckAuth.php index 55b67d336890d6c86e8398737995fe5221c57108..eaf612d3de013aff8d33edcb46e4d13316e8ccdc 100644 --- a/app/Modules/Admin/Http/Middleware/CheckAuth.php +++ b/app/Modules/Admin/Http/Middleware/CheckAuth.php @@ -24,12 +24,11 @@ class CheckAuth */ public function handle(Request $request, Closure $next) { - return $next($request); - $this->guard = 'admin'; - + // Auth认证 + $auth = Auth()->guard($this->guard); try { - if ( !Auth()->guard($this->guard)->check() ) { //未登录踢回,给予错误返回提示 + if ( !$auth->check() ) { //未登录踢回,给予错误返回提示 return $this->errorJson('认证失败,请重新登录!'); } } catch (TokenExpiredException $e) { diff --git a/app/Modules/Admin/Http/Middleware/CheckRabc.php b/app/Modules/Admin/Http/Middleware/CheckRabc.php new file mode 100644 index 0000000000000000000000000000000000000000..dec3e915c29bc76466c3bcfdf2056217b6a60285 --- /dev/null +++ b/app/Modules/Admin/Http/Middleware/CheckRabc.php @@ -0,0 +1,64 @@ +guard = 'admin'; + // 开始验证路由权限 + if (!$this->checkRabc($request, Auth()->guard($this->guard)->user()->getAuthIdentifier(), $load_error)){ + return $this->errorJson('无权限' . (empty($load_error) ? '!' : ',' . $load_error), -2); + } + + return $next($request); + } + + private function checkRabc($request, int $admin_id, &$load_error = ''):bool + { + // 超级管理员账户无需验证 + if ($admin_id == 1) return true; + + $roles = Admin::getInstance()->detail($admin_id)->roles->toArray(); + if (empty($roles)) return false; + $role_ids = array_column($roles, 'role_id'); + if (empty($role_ids)) return false; + $menu_ids = AdminRoleWithMenu::getInstance()->getMenuIdsByRoles($role_ids); + if (empty($menu_ids)) return false; + $menus = AdminMenu::getInstance()->getMenusByIdsForRabc($menu_ids)->toArray(); + if (empty($menus)) return false; + + // 获取当前路由 + $route_path = $request->route()->uri(); + // 检测是否存在当前API + if (isset($menus[$route_path])){ + // 验证请求方式 + if ($menus[$route_path] == $request->getMethod()){ + return true; + } + $load_error = '请求方式有误!'; + } + return false; + } +} diff --git a/app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php b/app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php index 6d8a7ade8bcdecd291719999b7e1ada4c02193ad..c66d42132bab6e8e448f6c8a2b47772454a345f3 100644 --- a/app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php +++ b/app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php @@ -7,6 +7,11 @@ use App\Modules\Admin\Http\Requests\BaseRequest; class ArticleCategoryRequest extends BaseRequest { + public function setInstance() + { + $this->instance = ArticleCategory::getInstance(); + } + /** * Get the validation rules that apply to the request. * @@ -14,15 +19,11 @@ class ArticleCategoryRequest extends BaseRequest */ public function rules() { - $instance = ArticleCategory::getInstance(); - $primarykey = $instance->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; - return [ 'category_name' => [ 'required', 'max:256', - 'unique:' . $instance->getTable() . ',category_name' . $validate_id + 'unique:' . $this->instance->getTable() . ',category_name' . $this->validate_id ], 'category_sort' => [ 'required', diff --git a/app/Modules/Admin/Http/Requests/Article/ArticleRequest.php b/app/Modules/Admin/Http/Requests/Article/ArticleRequest.php index 104ad616fc381e8b623c4ed8a518a3d0a5e5b330..8336bf2cb7fd6966c0c69789bc98a6c6f5d0ef8e 100644 --- a/app/Modules/Admin/Http/Requests/Article/ArticleRequest.php +++ b/app/Modules/Admin/Http/Requests/Article/ArticleRequest.php @@ -7,6 +7,11 @@ use App\Modules\Admin\Http\Requests\BaseRequest; class ArticleRequest extends BaseRequest { + public function setInstance() + { + $this->instance = Article::getInstance(); + } + /** * Get the validation rules that apply to the request. * @@ -14,15 +19,11 @@ class ArticleRequest extends BaseRequest */ public function rules() { - $instance = Article::getInstance(); - $primarykey = $instance->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; - return [ 'article_title' => [ 'required', 'max:256', - 'unique:' . $instance->getTable() . ',article_title' . $validate_id, + 'unique:' . $this->instance->getTable() . ',article_title' . $this->validate_id, ], 'category_id' => [ 'required', diff --git a/app/Modules/Admin/Http/Requests/BaseRequest.php b/app/Modules/Admin/Http/Requests/BaseRequest.php index 2c17922f9ec8644d16f67854afa5ea0d6b976770..00711c4917e48c3a137ef9992ea7c724f53394fc 100644 --- a/app/Modules/Admin/Http/Requests/BaseRequest.php +++ b/app/Modules/Admin/Http/Requests/BaseRequest.php @@ -6,6 +6,28 @@ use Illuminate\Foundation\Http\FormRequest; class BaseRequest extends FormRequest { + protected $instance; + protected $validate_id = ''; + + public function __construct(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) + { + parent::__construct($query, $request, $attributes, $cookies, $files, $server, $content); + + if ( method_exists($this, 'setInstance') ) { + $this->setInstance(); + } + + $this->setValidateId(); + } + + protected function setValidateId() + { + if ($this->instance){ + $primarykey = $this->instance->getKeyName(); + $this->validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey . ($this->instance->getIsDelete() == 0 ? ',is_delete,0' : ''); + } + } + /** * Get the validation rules that apply to the request. * diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php index 0be8cf4dd85d78f4d4c31380869c05375fb8888a..be8ffb659eef03e72fbf7d6ea8324fe46fc2c904 100644 --- a/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php @@ -7,6 +7,11 @@ use App\Modules\Admin\Http\Requests\BaseRequest; class AdminMenuRequest extends BaseRequest { + public function setInstance() + { + $this->instance = AdminMenu::getInstance(); + } + /** * Get the validation rules that apply to the request. * @@ -14,15 +19,11 @@ class AdminMenuRequest extends BaseRequest */ public function rules() { - $instance = AdminMenu::getInstance(); - $primarykey = $instance->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; - return [ 'menu_name' => [ 'required', 'max:256', - 'unique:' . $instance->getTable() . ',menu_name' . $validate_id + 'unique:' . $this->instance->getTable() . ',menu_name' . $this->validate_id ], ]; } diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php index 21343fefeac4ac927304c7d779f8c843f3c25959..5b597501fd6c0babf76231f0a7cc79bf57accac0 100644 --- a/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php @@ -7,6 +7,11 @@ use App\Modules\Admin\Http\Requests\BaseRequest; class AdminRequest extends BaseRequest { + public function setInstance() + { + $this->instance = Admin::getInstance(); + } + /** * Get the validation rules that apply to the request. * @@ -14,15 +19,11 @@ class AdminRequest extends BaseRequest */ public function rules() { - $instance = Admin::getInstance(); - $primarykey = $instance->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; - return [ 'admin_name' => [ 'required', 'max:256', - 'unique:' . $instance->getTable() . ',admin_name' . $validate_id + 'unique:' . $this->instance->getTable() . ',admin_name' . $this->validate_id ], 'admin_email' => [ 'required', diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php index 9d191f3225f38059f4022b0d3df38da63781cd48..c52ba766290b8f4f07b32d5a6a4fe0c610ac4abc 100644 --- a/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php @@ -7,6 +7,11 @@ use App\Modules\Admin\Http\Requests\BaseRequest; class AdminRoleRequest extends BaseRequest { + public function setInstance() + { + $this->instance = AdminRole::getInstance(); + } + /** * Get the validation rules that apply to the request. * @@ -14,15 +19,11 @@ class AdminRoleRequest extends BaseRequest */ public function rules() { - $instance = AdminRole::getInstance(); - $primarykey = $instance->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; - return [ 'role_name' => [ 'required', 'max:256', - 'unique:' . $instance->getTable() . ',role_name' . $validate_id + 'unique:' . $this->instance->getTable() . ',role_name' . $this->validate_id ], 'is_check' => [ 'required', diff --git a/app/Modules/Admin/Http/Requests/System/BannerRequest.php b/app/Modules/Admin/Http/Requests/System/BannerRequest.php index e89679f4797294ccc864753d8bda8548bcf179a0..7671babe0a77db44e6e2420cfcd2d734cd321101 100644 --- a/app/Modules/Admin/Http/Requests/System/BannerRequest.php +++ b/app/Modules/Admin/Http/Requests/System/BannerRequest.php @@ -7,6 +7,11 @@ use App\Modules\Admin\Http\Requests\BaseRequest; class BannerRequest extends BaseRequest { + public function setInstance() + { + $this->instance = Banner::getInstance(); + } + /** * Get the validation rules that apply to the request. * @@ -14,15 +19,11 @@ class BannerRequest extends BaseRequest */ public function rules() { - $instance = Banner::getInstance(); - $primarykey = $instance->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; - return [ 'banner_title' => [ 'required', 'max:256', - 'unique:' . $instance->getTable() . ',banner_title' . $validate_id + 'unique:' . $this->instance->getTable() . ',banner_title' . $this->validate_id ], 'banner_cover' => [ 'required', diff --git a/app/Modules/Admin/Http/Requests/System/ConfigRequest.php b/app/Modules/Admin/Http/Requests/System/ConfigRequest.php index 7a0387df07b212d4c78a588e058a71208927f1cf..ba37ccb02d780dba704e8699bbd346a81f346b23 100644 --- a/app/Modules/Admin/Http/Requests/System/ConfigRequest.php +++ b/app/Modules/Admin/Http/Requests/System/ConfigRequest.php @@ -7,6 +7,11 @@ use App\Modules\Admin\Http\Requests\BaseRequest; class ConfigRequest extends BaseRequest { + public function setInstance() + { + $this->instance = Config::getInstance(); + } + /** * Get the validation rules that apply to the request. * @@ -14,10 +19,6 @@ class ConfigRequest extends BaseRequest */ public function rules() { - $instance = Config::getInstance(); - $primarykey = $instance->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; - return [ 'config_title' => [ 'required', @@ -26,7 +27,7 @@ class ConfigRequest extends BaseRequest 'config_name' => [ 'required', 'max:256', - 'unique:' . $instance->getTable() . ',config_name' . $validate_id + 'unique:' . $this->instance->getTable() . ',config_name' . $this->validate_id ] ]; } diff --git a/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php b/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php index fb09d2b6e0a0aff97003c463cf42401b15c94dd9..bf1248a769e297e09bcfb60473dd75ec5f0d069f 100644 --- a/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php +++ b/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php @@ -7,6 +7,11 @@ use App\Modules\Admin\Http\Requests\BaseRequest; class FriendlinkRequest extends BaseRequest { + public function setInstance() + { + $this->instance = Friendlink::getInstance(); + } + /** * Get the validation rules that apply to the request. * @@ -14,15 +19,11 @@ class FriendlinkRequest extends BaseRequest */ public function rules() { - $instance = Friendlink::getInstance(); - $primarykey = $instance->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; - return [ 'link_name' => [ 'required', 'max:256', - 'unique:' . $instance->getTable() . ',link_name' . $validate_id + 'unique:' . $this->instance->getTable() . ',link_name' . $this->validate_id ], 'link_url' => [ 'url', diff --git a/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php b/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php index 324cd543975542820d927ab069f3e4137f20db68..d339d534cac23cf2c6564aa5f65741833ea53f4d 100644 --- a/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php +++ b/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php @@ -7,6 +7,11 @@ use App\Modules\Admin\Http\Requests\BaseRequest; class ProtocolRequest extends BaseRequest { + public function setInstance() + { + $this->instance = Protocol::getInstance(); + } + /** * Get the validation rules that apply to the request. * @@ -14,15 +19,11 @@ class ProtocolRequest extends BaseRequest */ public function rules() { - $instance = Protocol::getInstance(); - $primarykey = $instance->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; - return [ 'protocol_name' => [ 'required', 'max:256', - 'unique:' . $instance->getTable() . ',protocol_name' . $validate_id + 'unique:' . $this->instance->getTable() . ',protocol_name' . $this->validate_id ], 'protocol_type' => [ 'required', diff --git a/app/Modules/Admin/Http/Requests/System/VersionRequest.php b/app/Modules/Admin/Http/Requests/System/VersionRequest.php index 25fdc379a7bb72a71173a7d2522464ca4b3494e9..1165aa5170ef2bff13dae8c2d54908751747c885 100644 --- a/app/Modules/Admin/Http/Requests/System/VersionRequest.php +++ b/app/Modules/Admin/Http/Requests/System/VersionRequest.php @@ -7,6 +7,11 @@ use App\Modules\Admin\Http\Requests\BaseRequest; class VersionRequest extends BaseRequest { + public function setInstance() + { + $this->instance = Version::getInstance(); + } + /** * Get the validation rules that apply to the request. * @@ -14,15 +19,11 @@ class VersionRequest extends BaseRequest */ public function rules() { - $instance = Version::getInstance(); - $primarykey = $instance->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; - return [ 'version_name' => [ 'required', 'max:256', - 'unique:' . $instance->getTable() . ',version_name' . $validate_id + 'unique:' . $this->instance->getTable() . ',version_name' . $this->validate_id ], 'version_number' => [ 'required', diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js b/app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js index f703136f881d1dcec5e6d619cc3967bd673c9918..4d5aef92309a8c3ac3de34ebdec09f4b1f0521fa 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js @@ -17,7 +17,7 @@ export function getList(params) { export function create(data) { return request({ - url: '/admin_menus', + url: '/admin_menus/create', method: 'post', data }) @@ -25,7 +25,7 @@ export function create(data) { export function update(data) { return request({ - url: `/admin_menus`, + url: `/admin_menus/update`, method: 'put', data }) @@ -33,7 +33,7 @@ export function update(data) { export function setDel(data) { return request({ - url: `/admin_menus`, + url: `/admin_menus/delete`, method: 'delete', data }) diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js b/app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js index a73024ec2383b7e01f51128112ae909e581f29e7..150c68079d4193d4af9e84e953ee45de16c08cad 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js @@ -17,7 +17,7 @@ export function getList(params) { export function create(data) { return request({ - url: '/admin_roles', + url: '/admin_roles/create', method: 'post', data }) @@ -25,7 +25,7 @@ export function create(data) { export function update(data) { return request({ - url: `/admin_roles`, + url: `/admin_roles/update`, method: 'put', data }) @@ -33,7 +33,7 @@ export function update(data) { export function setDel(data) { return request({ - url: `/admin_roles`, + url: `/admin_roles/delete`, method: 'delete', data }) diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js b/app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js index 79d6ed6f875f7b7315368e615ae26838300b3931..2e3fea3b57442fcc4c596752398af06a4085092d 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js @@ -10,7 +10,7 @@ export function getList(params) { export function setDel(data) { return request({ - url: `/adminloginlogs`, + url: `/adminloginlogs/delete`, method: 'delete', data }) diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js b/app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js index 5b0062f5955617803f193d73cc9ede1259cfbfd4..c303f103dcea0b4a0575fabd1f430d1351738db5 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js @@ -10,7 +10,7 @@ export function getList(params) { export function setDel(data) { return request({ - url: `/adminlogs`, + url: `/adminlogs/delete`, method: 'delete', data }) diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/admins.js b/app/Modules/Admin/Resources/vue-element-admin/api/admins.js index 6ef7f82a3e65874fdf2ea0bbb84fa9148f62ec90..201bbe3451f0e5874739e9ad5abe3f08b2de6f47 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/admins.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/admins.js @@ -26,7 +26,7 @@ export function getList(params) { export function create(data) { return request({ - url: '/admins', + url: '/admins/create', method: 'post', data }) @@ -34,7 +34,7 @@ export function create(data) { export function update(data) { return request({ - url: `/admins`, + url: `/admins/update`, method: 'put', data }) @@ -42,7 +42,7 @@ export function update(data) { export function setDel(data) { return request({ - url: `/admins`, + url: `/admins/delete`, method: 'delete', data }) diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js b/app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js index b3914ff948505cc880cbc71f40e5d651ced4269d..99b3a5d6ba213a7112f16b63587021537d195e30 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js @@ -2,14 +2,14 @@ import request from '@/utils/request' export function getCategorySelect() { return request({ - url: '/article_categorys/getSelectLists', + url: '/article_categories/getSelectLists', method: 'get' }) } export function getList(params) { return request({ - url: 'article_categorys', + url: 'article_categories', method: 'get', params }) @@ -17,7 +17,7 @@ export function getList(params) { export function create(data) { return request({ - url: '/article_categorys', + url: '/article_categories/create', method: 'post', data }) @@ -25,7 +25,7 @@ export function create(data) { export function update(data) { return request({ - url: `/article_categorys`, + url: `/article_categories/update`, method: 'put', data }) @@ -33,7 +33,7 @@ export function update(data) { export function setDel(data) { return request({ - url: `/article_categorys`, + url: `/article_categories/delete`, method: 'delete', data }) @@ -41,7 +41,7 @@ export function setDel(data) { export function changeFiledStatus(data) { return request({ - url: `/article_categorys/changeFiledStatus`, + url: `/article_categories/changeFiledStatus`, method: 'put', data }) diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/articles.js b/app/Modules/Admin/Resources/vue-element-admin/api/articles.js index f020954a620c770eb07c259909f9c503077db2bd..74cc0609b1164390c044ec44598088f84f03352d 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/articles.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/articles.js @@ -25,7 +25,7 @@ export function detail(id) { export function create(data) { return request({ - url: '/articles', + url: '/articles/create', method: 'post', data }) @@ -33,7 +33,7 @@ export function create(data) { export function update(data) { return request({ - url: `/articles`, + url: `/articles/update`, method: 'put', data }) @@ -41,7 +41,7 @@ export function update(data) { export function setDel(data) { return request({ - url: `/articles`, + url: `/articles/delete`, method: 'delete', data }) diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/banners.js b/app/Modules/Admin/Resources/vue-element-admin/api/banners.js index 6804acb09bb4387df745a3b3f23e5512f0a0ded7..188f87d583b16875db4d23b0a4764bf3e22c3495 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/banners.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/banners.js @@ -10,7 +10,7 @@ export function getList(params) { export function create(data) { return request({ - url: '/banners', + url: '/banners/create', method: 'post', data }); @@ -18,7 +18,7 @@ export function create(data) { export function update(data) { return request({ - url: '/banners', + url: '/banners/update', method: 'put', data }); @@ -26,7 +26,7 @@ export function update(data) { export function setDel(data) { return request({ - url: '/banners', + url: '/banners/delete', method: 'delete', data }); diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/configs.js b/app/Modules/Admin/Resources/vue-element-admin/api/configs.js index 0316ce4012c376be098a20f1b2a6c6ee544c3a23..92ea787c68a869a30fc2bed20dd0cc35f16834b5 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/configs.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/configs.js @@ -10,7 +10,7 @@ export function getList(query) { export function create(data) { return request({ - url: '/configs', + url: '/configs/create', method: 'post', data }) @@ -18,7 +18,7 @@ export function create(data) { export function update(data) { return request({ - url: '/configs', + url: '/configs/update', method: 'put', data }) @@ -26,7 +26,7 @@ export function update(data) { export function setDel(data) { return request({ - url: '/configs', + url: '/configs/delete', method: 'delete', data }) diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js b/app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js index e06be8a420e11bec8b1b20c67d65a5ba800a81e8..d4804eeea2af2255d2f2984b7453c82e178ca9ce 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js @@ -10,7 +10,7 @@ export function getList(params) { export function create(data) { return request({ - url: '/friendlinks', + url: '/friendlinks/create', method: 'post', data }) @@ -19,7 +19,7 @@ export function create(data) { export function update(data) { console.log(data) return request({ - url: '/friendlinks', + url: '/friendlinks/update', method: 'put', data }) @@ -27,7 +27,7 @@ export function update(data) { export function setDel(data) { return request({ - url: '/friendlinks', + url: '/friendlinks/delete', method: 'delete', data }) diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/login.js b/app/Modules/Admin/Resources/vue-element-admin/api/login.js index 1e694b109a3cdd0dcaeb55e268bd14f6ebd0605c..13124efabd22c77bc0907f7ff6a5688a3bf54315 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/login.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/login.js @@ -1,30 +1,30 @@ import request from '@/utils/request' export function login(data) { - return request({ - url: '/auth/login', - method: 'post', - data - }) + return request({ + url: '/auth/login', + method: 'post', + data + }) } export function getInfo() { - return request({ - url: '/auth/me', - method: 'post' - }) + return request({ + url: '/auth/me', + method: 'post' + }) } export function getMenus() { - return request({ - url: '/auth/getRabcList', - method: 'post' - }) + return request({ + url: '/auth/getRabcList', + method: 'post' + }) } export function logout() { - return request({ - url: '/auth/logout', - method: 'post' - }) + return request({ + url: '/auth/logout', + method: 'post' + }) } diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/remote-search.js b/app/Modules/Admin/Resources/vue-element-admin/api/remote-search.js deleted file mode 100644 index 02e42b46e56ac4dbb0bf6e4afb341562cc66eca5..0000000000000000000000000000000000000000 --- a/app/Modules/Admin/Resources/vue-element-admin/api/remote-search.js +++ /dev/null @@ -1,17 +0,0 @@ -import request from '@/utils/request' - -export function searchUser(name) { - return request({ - url: '/vue-element-admin/search/user', - method: 'get', - params: { name } - }) -} - -export function transactionList(query) { - return request({ - url: '/vue-element-admin/transaction/list', - method: 'get', - params: query - }) -} diff --git a/app/Modules/Admin/Routes/web.php b/app/Modules/Admin/Routes/web.php index 88545284b9486e27391c703a2722c90018bc1220..4f398be3674a82d1409ddb6b8a5e72be85dee346 100644 --- a/app/Modules/Admin/Routes/web.php +++ b/app/Modules/Admin/Routes/web.php @@ -13,6 +13,7 @@ use Illuminate\Support\Facades\Route; use App\Modules\Admin\Http\Middleware\CheckAuth; +use App\Modules\Admin\Http\Middleware\CheckRabc; use App\Modules\Admin\Http\Middleware\AdminLog; Route::prefix('admin')->group(function() { @@ -39,107 +40,110 @@ Route::prefix('admin')->group(function() { Route::get('logsStatistics', 'IndexController@logsStatistics'); // 月份表列表 Route::get('get_month_lists', 'IndexController@getMonthList'); - // 文件上传 Route::post('upload_file', 'UploadController@file'); - Route::prefix('banners')->group(function() { - Route::get('/', 'System\BannerController@index'); - Route::post('/', 'System\BannerController@create'); - Route::put('/', 'System\BannerController@update'); - Route::delete('/', 'System\BannerController@delete'); - Route::put('/changeFiledStatus', 'System\BannerController@changeFiledStatus'); - }); - - // 配置管理 - Route::prefix('configs')->group(function() { - Route::get('/', 'System\ConfigController@index'); - Route::post('/', 'System\ConfigController@create'); - Route::put('/', 'System\ConfigController@update'); - Route::delete('/', 'System\ConfigController@delete'); - Route::put('/changeFiledStatus', 'System\ConfigController@changeFiledStatus'); - }); - - // 友情链接 - Route::prefix('friendlinks')->group(function() { - Route::get('/', 'System\FriendlinkController@index'); - Route::post('/', 'System\FriendlinkController@create'); - Route::put('/', 'System\FriendlinkController@update'); - Route::delete('/', 'System\FriendlinkController@delete'); - Route::put('/changeFiledStatus', 'System\FriendlinkController@changeFiledStatus'); - }); - - Route::prefix('protocols')->group(function() { - Route::get('/', 'System\ProtocolController@index'); - Route::post('/', 'System\ProtocolController@create'); - Route::put('/', 'System\ProtocolController@update'); - Route::delete('/', 'System\ProtocolController@delete'); - }); - - Route::prefix('versions')->group(function() { - Route::get('/', 'System\VersionController@index'); - Route::post('/', 'System\VersionController@create'); - Route::put('/', 'System\VersionController@update'); - Route::delete('/', 'System\VersionController@delete'); - Route::put('/changeFiledStatus', 'System\VersionController@changeFiledStatus'); - }); - - Route::prefix('admins')->group(function() { - Route::get('/', 'Rabc\AdminController@index'); - Route::post('/', 'Rabc\AdminController@create'); - Route::put('/', 'Rabc\AdminController@update'); - Route::delete('/', 'Rabc\AdminController@delete'); - Route::get('/getSelectLists', 'Rabc\AdminController@getSelectLists'); - Route::put('/changeFiledStatus', 'Rabc\AdminController@changeFiledStatus'); - }); - - Route::prefix('admin_roles')->group(function() { - Route::get('/', 'Rabc\AdminRoleController@index'); - Route::post('/', 'Rabc\AdminRoleController@create'); - Route::put('/', 'Rabc\AdminRoleController@update'); - Route::delete('/', 'Rabc\AdminRoleController@delete'); - Route::get('/getSelectLists', 'Rabc\AdminRoleController@getSelectLists'); - Route::put('/changeFiledStatus', 'Rabc\AdminRoleController@changeFiledStatus'); - }); - - Route::prefix('admin_menus')->group(function() { - Route::get('/', 'Rabc\AdminMenuController@index'); - Route::post('/', 'Rabc\AdminMenuController@create'); - Route::put('/', 'Rabc\AdminMenuController@update'); - Route::delete('/', 'Rabc\AdminMenuController@delete'); - Route::get('/getSelectLists', 'Rabc\AdminMenuController@getSelectLists'); - Route::put('/changeFiledStatus', 'Rabc\AdminMenuController@changeFiledStatus'); - }); - - // 管理员日志 - Route::prefix('adminlogs')->group(function() { - Route::get('/', 'Log\AdminLogController@index'); - Route::delete('/', 'Log\AdminLogController@delete'); - }); - - // 管理员登录日志 - Route::prefix('adminloginlogs')->group(function() { - Route::get('/', 'Log\AdminLoginLogController@index'); - Route::delete('/', 'Log\AdminLoginLogController@delete'); - }); - - // 文章分类 - Route::prefix('article_categorys')->group(function() { - Route::get('/', 'Article\ArticleCategoryController@index'); - Route::post('/', 'Article\ArticleCategoryController@create'); - Route::put('/', 'Article\ArticleCategoryController@update'); - Route::delete('/', 'Article\ArticleCategoryController@delete'); - Route::get('/getSelectLists', 'Article\ArticleCategoryController@getSelectLists'); - Route::put('/changeFiledStatus', 'Article\ArticleCategoryController@changeFiledStatus'); - }); - - // 文章管理 - Route::prefix('articles')->group(function() { - Route::get('/', 'Article\ArticleController@index'); - Route::get('/detail', 'Article\ArticleController@detail'); - Route::post('/', 'Article\ArticleController@create'); - Route::put('/', 'Article\ArticleController@update'); - Route::delete('/', 'Article\ArticleController@delete'); + // 权限中间件 + Route::middleware([CheckRabc::class])->group(function () { + Route::prefix('banners')->group(function() { + Route::get('/', 'System\BannerController@index'); + Route::post('/create', 'System\BannerController@create'); + Route::put('/update', 'System\BannerController@update'); + Route::delete('/delete', 'System\BannerController@delete'); + Route::put('/changeFiledStatus', 'System\BannerController@changeFiledStatus'); + }); + + // 配置管理 + Route::prefix('configs')->group(function() { + Route::get('/', 'System\ConfigController@index'); + Route::post('/create', 'System\ConfigController@create'); + Route::put('/update', 'System\ConfigController@update'); + Route::delete('/delete', 'System\ConfigController@delete'); + Route::put('/changeFiledStatus', 'System\ConfigController@changeFiledStatus'); + }); + + // 友情链接 + Route::prefix('friendlinks')->group(function() { + Route::get('/', 'System\FriendlinkController@index'); + Route::post('/create', 'System\FriendlinkController@create'); + Route::put('/update', 'System\FriendlinkController@update'); + Route::delete('/delete', 'System\FriendlinkController@delete'); + Route::put('/changeFiledStatus', 'System\FriendlinkController@changeFiledStatus'); + }); + + Route::prefix('protocols')->group(function() { + Route::get('/', 'System\ProtocolController@index'); + Route::post('/create', 'System\ProtocolController@create'); + Route::put('/update', 'System\ProtocolController@update'); + Route::delete('/delete', 'System\ProtocolController@delete'); + }); + + Route::prefix('versions')->group(function() { + Route::get('/', 'System\VersionController@index'); + Route::post('/create', 'System\VersionController@create'); + Route::put('/update', 'System\VersionController@update'); + Route::delete('/delete', 'System\VersionController@delete'); + Route::put('/changeFiledStatus', 'System\VersionController@changeFiledStatus'); + }); + + Route::prefix('admins')->group(function() { + Route::get('/', 'Rabc\AdminController@index'); + Route::post('/create', 'Rabc\AdminController@create'); + Route::put('/update', 'Rabc\AdminController@update'); + Route::delete('/delete', 'Rabc\AdminController@delete'); + Route::get('/getSelectLists', 'Rabc\AdminController@getSelectLists'); + Route::put('/changeFiledStatus', 'Rabc\AdminController@changeFiledStatus'); + }); + + Route::prefix('admin_roles')->group(function() { + Route::get('/', 'Rabc\AdminRoleController@index'); + Route::post('/create', 'Rabc\AdminRoleController@create'); + Route::put('/update', 'Rabc\AdminRoleController@update'); + Route::delete('/delete', 'Rabc\AdminRoleController@delete'); + Route::get('/getSelectLists', 'Rabc\AdminRoleController@getSelectLists'); + Route::put('/changeFiledStatus', 'Rabc\AdminRoleController@changeFiledStatus'); + }); + + Route::prefix('admin_menus')->group(function() { + Route::get('/', 'Rabc\AdminMenuController@index'); + Route::post('/create', 'Rabc\AdminMenuController@create'); + Route::put('/update', 'Rabc\AdminMenuController@update'); + Route::delete('/delete', 'Rabc\AdminMenuController@delete'); + Route::get('/getSelectLists', 'Rabc\AdminMenuController@getSelectLists'); + Route::put('/changeFiledStatus', 'Rabc\AdminMenuController@changeFiledStatus'); + }); + + // 管理员日志 + Route::prefix('adminlogs')->group(function() { + Route::get('/', 'Log\AdminLogController@index'); + Route::delete('/delete', 'Log\AdminLogController@delete'); + }); + + // 管理员登录日志 + Route::prefix('adminloginlogs')->group(function() { + Route::get('/', 'Log\AdminLoginLogController@index'); + Route::delete('/delete', 'Log\AdminLoginLogController@delete'); + }); + + // 文章分类 + Route::prefix('article_categories')->group(function() { + Route::get('/', 'Article\ArticleCategoryController@index'); + Route::post('/create', 'Article\ArticleCategoryController@create'); + Route::put('/update', 'Article\ArticleCategoryController@update'); + Route::delete('/delete', 'Article\ArticleCategoryController@delete'); + Route::get('/getSelectLists', 'Article\ArticleCategoryController@getSelectLists'); + Route::put('/changeFiledStatus', 'Article\ArticleCategoryController@changeFiledStatus'); + }); + + // 文章管理 + Route::prefix('articles')->group(function() { + Route::get('/', 'Article\ArticleController@index'); + Route::get('/detail', 'Article\ArticleController@detail'); + Route::post('/create', 'Article\ArticleController@create'); + Route::put('/update', 'Article\ArticleController@update'); + Route::delete('/delete', 'Article\ArticleController@delete'); + Route::put('/changeFiledStatus', 'Article\ArticleController@changeFiledStatus'); + }); }); }); }); diff --git a/app/Modules/Admin/Services/IndexService.php b/app/Modules/Admin/Services/IndexService.php index 16867215d3f2ed06e702e129009b06dfe5ed43a0..d41e49a0f08d4c710c7202b73ae0d8c3ddee3bc0 100644 --- a/app/Modules/Admin/Services/IndexService.php +++ b/app/Modules/Admin/Services/IndexService.php @@ -7,6 +7,7 @@ use App\Modules\Admin\Entities\Log\AdminLog; use App\Modules\Admin\Entities\Rabc\Admin; use App\Modules\Admin\Entities\System\Banner; use App\Modules\Admin\Entities\System\Friendlink; +use Illuminate\Support\Facades\Cache; class IndexService extends BaseService { @@ -58,73 +59,82 @@ class IndexService extends BaseService */ public function logsStatistics() { - $default_data = [ - 'xAxis' => [ - 'data' => [ - + $default_time_interval = 300; + // 时段间隔:5分钟,自己调整 + $time_interval_key = "logs-statistics's-time-interval"; + $time_interval = Cache::get($time_interval_key, $default_time_interval); + // 通过缓存进行读写 + return Cache::remember('logs-statistics', $time_interval, function() use ($time_interval, $time_interval_key){ + $default_data = [ + 'xAxis' => [ + 'data' => [], ], - ], - 'list_name' => [ - // 'GET', - 'POST', - 'PUT', - 'DELETE', - ], - 'data_lists' => [ - // 'GET' => [], - 'POST' => [ - + 'list_name' => [ + // 'GET', + 'POST', + 'PUT', + 'DELETE', ], - 'PUT' => [ - + 'data_lists' => [ + // 'GET' => [], + 'POST' => [], + 'PUT' => [], + 'DELETE' => [], ], - 'DELETE' => [ + ]; + $adminLogInstance = AdminLog::getInstance(); + $interval_nums = 100; // 时段次数:100个时间段,自己调整 + $hours = ceil($time_interval / 3600); // 时间间隔设置,超过几小时:查询时的开始时间需要加上才有意义 + $time = strtotime(date('Y-m-d H:i', strtotime('+' . $hours . ' hour')) . ':00'); - ], - ], - ]; - $adminLogInstance = AdminLog::getInstance(); - $interval_nums = 100; // 时段次数:100个时间段,自己调整 - $time_interval = 300; // 时段间隔:5分钟,自己调整 - $hours = ceil($time_interval / 3600); // 时间间隔设置,超过几小时:查询时的开始时间需要加上才有意义 - $time = strtotime(date('Y-m-d H:i', strtotime('+' . $hours . ' hour')) . ':00'); + // 数据查询 + $list = $adminLogInstance->whereBetWeen('created_time', [ + $time - $interval_nums * $time_interval, + $time, + ])->get(); - // 数据查询 - $list = $adminLogInstance->whereBetWeen('created_time', [ - $time - $interval_nums * $time_interval, - $time, - ])->get(); - for ($i = 0; $i < $interval_nums; $i++) { - $end_time = $time - $time_interval; - // 默认X轴的时段 - $default_data['xAxis']['data'][$i] = date('Y-m-d H:i', $end_time); + // 是否存在区间有效的日志记录 + $has_records = false; - // $default_data['data_lists']['GET'][$i] = - $default_data['data_lists']['POST'][$i] - = $default_data['data_lists']['PUT'][$i] - = $default_data['data_lists']['DELETE'][$i] - = 0; + for ($i = 0; $i < $interval_nums; $i++) { + $end_time = $time - $time_interval; + // 默认X轴的时段 + $default_data['xAxis']['data'][$i] = date('Y-m-d H:i', $end_time); - if ( $list ) { - foreach ($list as $v) { - if ($v->created_time >= $end_time && $v->created_time <= $time){ - if ( $v->log_method == 'GET' ) { - // ++$default_data['data_lists']['GET'][$i]; - } elseif ( $v->log_method == 'POST' ) { - ++$default_data['data_lists']['POST'][$i]; - } elseif ( $v->log_method == 'PUT' ) { - ++$default_data['data_lists']['PUT'][$i]; - } elseif ( $v->log_method == 'DELETE' ) { - ++$default_data['data_lists']['DELETE'][$i]; + // $default_data['data_lists']['GET'][$i] = + $default_data['data_lists']['POST'][$i] + = $default_data['data_lists']['PUT'][$i] + = $default_data['data_lists']['DELETE'][$i] + = 0; + + if ( $list ) { + foreach ($list as $v) { + if ($v->created_time >= $end_time && $v->created_time <= $time){ + $has_records = true; + if ( $v->log_method == 'GET' ) { + // ++$default_data['data_lists']['GET'][$i]; + } elseif ( $v->log_method == 'POST' ) { + ++$default_data['data_lists']['POST'][$i]; + } elseif ( $v->log_method == 'PUT' ) { + ++$default_data['data_lists']['PUT'][$i]; + } elseif ( $v->log_method == 'DELETE' ) { + ++$default_data['data_lists']['DELETE'][$i]; + } } } } + + // 把当前的结束时间设置为下一次的开始时间 + $time = $end_time; } - // 把当前的结束时间设置为下一次的开始时间 - $time = $end_time; - } - return (array)$default_data; + // 当没有记录是,时间间隔慢慢往上扩大两倍,实现统计图效果 + if (!$has_records){ + Cache::put($time_interval_key, $time_interval * 2); + } + + return (array)$default_data; + }); } /** diff --git a/composer.lock b/composer.lock index 31c707e98932f5efe99f3dec52ce2a1fdabcff54..10876da8d1c412559f0c2bcc130ffc2cdc30fa15 100644 --- a/composer.lock +++ b/composer.lock @@ -405,16 +405,16 @@ }, { "name": "egulias/email-validator", - "version": "2.1.24", + "version": "2.1.25", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ca90a3291eee1538cd48ff25163240695bd95448" + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ca90a3291eee1538cd48ff25163240695bd95448", - "reference": "ca90a3291eee1538cd48ff25163240695bd95448", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", "shasum": "", "mirrors": [ { @@ -471,7 +471,7 @@ "type": "github" } ], - "time": "2020-11-14T15:56:27+00:00" + "time": "2020-12-29T14:50:06+00:00" }, { "name": "fideloper/proxy", @@ -5576,7 +5576,13 @@ "type": "zip", "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/233c10688f4c1a6e66ed2ef123038b1363d1bedc", "reference": "233c10688f4c1a6e66ed2ef123038b1363d1bedc", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "illuminate/routing": "^6|^7|^8", @@ -5719,7 +5725,13 @@ "type": "zip", "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1 || ^8.0" @@ -5784,7 +5796,13 @@ "type": "zip", "url": "https://api.github.com/repos/facade/flare-client-php/zipball/fd688d3c06658f2b3b5f7bb19f051ee4ddf02492", "reference": "fd688d3c06658f2b3b5f7bb19f051ee4ddf02492", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "facade/ignition-contracts": "~1.0", @@ -5835,17 +5853,23 @@ }, { "name": "facade/ignition", - "version": "2.5.3", + "version": "2.5.8", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "d8dc4f90ed469f9f9313b976fb078c20585d5c99" + "reference": "8e907d81244649c5ea746e2ec30c32c5f59df472" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/d8dc4f90ed469f9f9313b976fb078c20585d5c99", - "reference": "d8dc4f90ed469f9f9313b976fb078c20585d5c99", - "shasum": "" + "url": "https://api.github.com/repos/facade/ignition/zipball/8e907d81244649c5ea746e2ec30c32c5f59df472", + "reference": "8e907d81244649c5ea746e2ec30c32c5f59df472", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-json": "*", @@ -5902,7 +5926,7 @@ "laravel", "page" ], - "time": "2020-12-09T20:25:45+00:00" + "time": "2020-12-29T09:12:55+00:00" }, { "name": "facade/ignition-contracts", @@ -5916,7 +5940,13 @@ "type": "zip", "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.3|^8.0" @@ -6019,7 +6049,13 @@ "type": "zip", "url": "https://api.github.com/repos/filp/whoops/zipball/307fb34a5ab697461ec4c9db865b20ff2fd40771", "reference": "307fb34a5ab697461ec4c9db865b20ff2fd40771", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.5.9 || ^7.0 || ^8.0", @@ -6080,7 +6116,13 @@ "type": "zip", "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^5.3|^7.0|^8.0" @@ -6127,7 +6169,13 @@ "type": "zip", "url": "https://api.github.com/repos/laravel/sail/zipball/d9b0575ece889a35b9741789452c1c7abca5bc2f", "reference": "d9b0575ece889a35b9741789452c1c7abca5bc2f", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "illuminate/contracts": "^8.0|^9.0", @@ -6182,7 +6230,13 @@ "type": "zip", "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/c86c717e4bf3c6d98422da5c38bfa7b0f494b04c", "reference": "c86c717e4bf3c6d98422da5c38bfa7b0f494b04c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1|^8", @@ -6243,7 +6297,13 @@ "type": "zip", "url": "https://api.github.com/repos/mockery/mockery/zipball/20cab678faed06fac225193be281ea0fddb43b93", "reference": "20cab678faed06fac225193be281ea0fddb43b93", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "hamcrest/hamcrest-php": "^2.0.1", @@ -6311,7 +6371,13 @@ "type": "zip", "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.1 || ^8.0" @@ -6365,7 +6431,13 @@ "type": "zip", "url": "https://api.github.com/repos/nunomaduro/collision/zipball/7c2b95589bf81e274e61e47f7672a1b2c3e06eaa", "reference": "7c2b95589bf81e274e61e47f7672a1b2c3e06eaa", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "facade/ignition-contracts": "^1.0", @@ -6449,7 +6521,13 @@ "type": "zip", "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-dom": "*", @@ -6558,7 +6636,13 @@ "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0" @@ -6607,7 +6691,13 @@ "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-filter": "*", @@ -6659,7 +6749,13 @@ "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": "^7.2 || ^8.0", @@ -6773,7 +6869,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-dom": "*", @@ -6846,7 +6948,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -6902,7 +7010,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -6961,7 +7075,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -7016,7 +7136,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -7071,7 +7197,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e16c225d57c3d6808014df6b1dd7598d0a5bbbe", "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "doctrine/instantiator": "^1.3.1", @@ -7170,7 +7302,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -7222,7 +7360,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -7274,7 +7418,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -7325,7 +7475,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3", @@ -7395,7 +7551,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "nikic/php-parser": "^4.7", @@ -7448,7 +7610,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -7510,7 +7678,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -7569,7 +7743,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3", @@ -7642,7 +7822,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3", @@ -7702,7 +7888,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "nikic/php-parser": "^4.6", @@ -7755,7 +7947,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3", @@ -7808,7 +8006,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -7859,7 +8063,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -7918,7 +8128,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -7969,7 +8185,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8021,7 +8243,13 @@ "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "php": ">=7.3" @@ -8142,7 +8370,13 @@ "type": "zip", "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", "reference": "75a63c33a8577608444246075ea0af0d052e452a", - "shasum": "" + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] }, "require": { "ext-dom": "*",