From 64096aefbde06d1d4a2d05ba9aca7b45646f9000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Thu, 17 Dec 2020 00:05:29 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=A4=9A=E6=A8=A1=E5=9D=97=E7=9A=84=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Kernel.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 69914e9..fe7c1b5 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -36,6 +36,17 @@ class Kernel extends ConsoleKernel { $this->load(__DIR__.'/Commands'); + /** + * 自动加载多模块的自定义命令行 + */ + $modules_path = config('modules.paths.modules'); + if ($dirs = get_dir_files($modules_path)){ + foreach ($dirs as $dir){ + if (is_dir($console_path = $modules_path . '/' . $dir . '/Console')) + $this->load($console_path = $modules_path . '/' . $dir . '/Console'); + } + } + require base_path('routes/console.php'); } } -- Gitee From fb92a23bb148c4cee94befe73724a8837d36cd6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Thu, 17 Dec 2020 00:08:17 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=96=87=E4=BB=B6=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=B8=8E=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 2 ++ .../Http/Controllers/UploadController.php | 31 +++++++++++++++++++ config/filesystems.php | 11 ++++++- 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 app/Modules/Admin/Http/Controllers/UploadController.php diff --git a/.env.example b/.env.example index 35c727e..7492cb4 100644 --- a/.env.example +++ b/.env.example @@ -51,6 +51,8 @@ PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" +#filesystem +FILESYSTEM_DRIVER=public APP_TIMEZONE=Asia/Shanghai APP_LOCALE=zh-CN diff --git a/app/Modules/Admin/Http/Controllers/UploadController.php b/app/Modules/Admin/Http/Controllers/UploadController.php new file mode 100644 index 0000000..5277dc1 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/UploadController.php @@ -0,0 +1,31 @@ +file($file))){ + return $this->errorJson('请上传文件!'); + } + + $path = $request->file($file)->storePublicly( + date('Ym'), + config('filesystems') + ); + + return $this->successJson($path, '上传成功', ['path_url' => Storage::url($path)]); + } +} diff --git a/config/filesystems.php b/config/filesystems.php index 10c9d9b..207714b 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -29,10 +29,19 @@ return [ */ 'disks' => [ - 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), + 'permissions' => [ + 'file' => [ + 'public' => 0664, + 'private' => 0600, + ], + 'dir' => [ + 'public' => 0775, + 'private' => 0700, + ], + ], ], 'public' => [ -- Gitee From 1a0702033ffb5d9c773d4995fd77c2bff74bc8f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Thu, 17 Dec 2020 00:08:49 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=EF=BC=9A=E6=8C=89=E6=9C=88=E5=88=86=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/Model.php | 5 +- app/Models/MonthModel.php | 92 ++++++++++++++++++++ app/Modules/Admin/Console/AutoTableBuild.php | 77 ++++++++++++++++ app/Traits/MysqlTable.php | 29 ++++++ 4 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 app/Modules/Admin/Console/AutoTableBuild.php create mode 100644 app/Traits/MysqlTable.php diff --git a/app/Models/Model.php b/app/Models/Model.php index 80ad5f6..4faebdc 100644 --- a/app/Models/Model.php +++ b/app/Models/Model.php @@ -3,14 +3,15 @@ namespace App\Models; use App\Scopes\DeleteScope; -use App\Traits\Error; use App\Traits\Instance; +use App\Traits\MysqlTable; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model as EloquentModel; +use Illuminate\Support\Facades\Schema; class Model extends EloquentModel { - use Error; + use MysqlTable; use Instance; use HasFactory; diff --git a/app/Models/MonthModel.php b/app/Models/MonthModel.php index cb97432..e79223f 100644 --- a/app/Models/MonthModel.php +++ b/app/Models/MonthModel.php @@ -4,5 +4,97 @@ namespace App\Models; class MonthModel extends Model { + const MIN_TABLE = '2020_12';// 表名最小的月份 + const MONTH_FORMAT = 'Y_m'; + /** + * @var 当前指定表的月份 + */ + protected $month; + + public function __construct(array $attributes = []) + { + parent::__construct($attributes); + + // 自动设置当月表名 + $this->setMonthTable(); + } + + public function getMonth(): string + { + return $this->month; + } + + + /** + * 设置按月分表 + * + * @param string $month + * + * @return $this + */ + public function setMonthTable(string $month = '') + { + $month = empty($month) ? date(self::MONTH_FORMAT) : date(self::MONTH_FORMAT, strtotime($month)); + // 替换为日期格式,否则将无法转化为时间戳(有效的日期格式 - 拼接才可以) + $month = str_replace('_', '-', $month); + + // 当表名大于最小表名时,设置表名。 + if ( $month >= str_replace('_', '-', self::MIN_TABLE) ) { + $this->month = date(self::MONTH_FORMAT, strtotime($month)); + $this->table = $this->getOldTableName() . '_' . $this->month; + } + + return $this; + } + + /** + * 获取从开始分表到今天为止,所有的月份 + * + * @return array + */ + public function getAllMonthes() : array + { + $monthes = get_month_range(str_replace('_', '-', self::MIN_TABLE), date('Y-m')); + krsort($monthes); + return $monthes; + } + + /** + * 获取原始表名(移除月份表的后缀)【包含前缀】 + * + * @return string + */ + public function getOldTableName():string + { + $table_name = $this->getTable(); + $suffix_len = strlen(self::MIN_TABLE); + $suffix = substr($table_name, -$suffix_len, $suffix_len); + // 检测当前表名是否为按月分表的表名 + if (preg_match ("/^([0-9]{4})_([0-9]{2})$/", $suffix, $parts)){ + // 减1是因为默认还有一个下划线 + $table_name = substr($table_name, 0, -$suffix_len - 1); + } + return $table_name; + } + + /** + * 生成新表 + * + * @param string $new_table + * @param string $time + * @param string $format + * @param string $old_table + * + * @return bool + */ + public function createMonthTable(string $new_table = '', $time = '', $format = self::MONTH_FORMAT, string $old_table = '') + { + $new_table = empty($new_table) ? $this->getOldTableName() . '_' . date($format, empty($time) ? time() : $time) : $new_table; + + // 数据表前缀 + $db_prefix = env('DB_PREFIX'); + + return $this->setCopyTable($db_prefix . $new_table, $db_prefix . $this->getOldTableName()); + } } diff --git a/app/Modules/Admin/Console/AutoTableBuild.php b/app/Modules/Admin/Console/AutoTableBuild.php new file mode 100644 index 0000000..7d47e73 --- /dev/null +++ b/app/Modules/Admin/Console/AutoTableBuild.php @@ -0,0 +1,77 @@ +model_lists as $model){ + (new $model)->createMonthTable('', strtotime('+0 month')); + } + } + + /** + * Get the console command arguments. + * + * @return array + */ + protected function getArguments() + { + return [ + ['example', InputArgument::REQUIRED, 'An example argument.'], + ]; + } + + /** + * Get the console command options. + * + * @return array + */ + protected function getOptions() + { + return [ + ['example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null], + ]; + } +} diff --git a/app/Traits/MysqlTable.php b/app/Traits/MysqlTable.php new file mode 100644 index 0000000..914e439 --- /dev/null +++ b/app/Traits/MysqlTable.php @@ -0,0 +1,29 @@ +setError('请先设置要生成的新表名'); + return false; + } + return DB::select("CREATE TABLE IF NOT EXISTS `{$new_table}` LIKE `{$old_table}`"); + } +} -- Gitee From 46e9a670de23e571c12973670a48d37c03947adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Thu, 17 Dec 2020 00:12:12 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=EF=BC=9A=E8=8E=B7=E5=8F=96=E8=AF=A6=E6=83=85=E3=80=81=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=9D=9E=E8=A1=A8=E5=BD=A2=E5=8F=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/Model.php | 28 +++++++++++++++++++ app/Modules/Admin/Entities/Log/AdminLog.php | 2 ++ .../Admin/Entities/Log/AdminLoginLog.php | 3 +- app/Modules/Admin/Entities/Rabc/AdminMenu.php | 5 ++++ .../Http/Controllers/IndexController.php | 13 +++++++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 app/Modules/Admin/Http/Controllers/IndexController.php diff --git a/app/Models/Model.php b/app/Models/Model.php index 4faebdc..e62ea79 100644 --- a/app/Models/Model.php +++ b/app/Models/Model.php @@ -95,4 +95,32 @@ class Model extends EloquentModel { return self::where($where)->first(); } + + public function detail(int $id, string $filed = '*', bool $lock = false, array $with = [], array $withCount = []) + { + return $this->field($filed) + ->lock($lock) + ->with($with) + ->withCount($withCount) + ->find($id); + } + + /** + * 过滤移除非当前表的字段参数 + * + * @param array $params + * + * @return array + */ + public function setFilterFields(array $params) : array + { + $fields = Schema::getColumnListing($this->getTable()); + foreach ($params as $key => $param) { + if ( !in_array($key, $fields) ) unset($params[$key]); + } + // 同时过滤时间戳字段【时间戳只允许自动更改,不允许手动设置】 + if ( $this->timestamps === true && isset($params[self::CREATED_AT]) ) unset($params[self::CREATED_AT]); + if ( $this->timestamps === true && isset($params[self::UPDATED_AT]) ) unset($params[self::UPDATED_AT]); + return $params; + } } diff --git a/app/Modules/Admin/Entities/Log/AdminLog.php b/app/Modules/Admin/Entities/Log/AdminLog.php index a3e1aa1..6c42c48 100644 --- a/app/Modules/Admin/Entities/Log/AdminLog.php +++ b/app/Modules/Admin/Entities/Log/AdminLog.php @@ -6,4 +6,6 @@ use App\Models\MonthModel; class AdminLog extends MonthModel { + protected $primaryKey = 'log_id'; + protected $is_delete = 0; } diff --git a/app/Modules/Admin/Entities/Log/AdminLoginLog.php b/app/Modules/Admin/Entities/Log/AdminLoginLog.php index 224e7eb..0b2285a 100644 --- a/app/Modules/Admin/Entities/Log/AdminLoginLog.php +++ b/app/Modules/Admin/Entities/Log/AdminLoginLog.php @@ -6,5 +6,6 @@ use App\Models\MonthModel; class AdminLoginLog extends MonthModel { - + protected $primaryKey = 'log_id'; + protected $is_delete = 0; } diff --git a/app/Modules/Admin/Entities/Rabc/AdminMenu.php b/app/Modules/Admin/Entities/Rabc/AdminMenu.php index 5e38c19..411599d 100644 --- a/app/Modules/Admin/Entities/Rabc/AdminMenu.php +++ b/app/Modules/Admin/Entities/Rabc/AdminMenu.php @@ -8,4 +8,9 @@ class AdminMenu extends Model { protected $primaryKey = 'menu_id'; protected $is_delete = 0; + + public static function getAllMenus() + { + return self::orderBy('menu_sort', 'ASC')->get(); + } } diff --git a/app/Modules/Admin/Http/Controllers/IndexController.php b/app/Modules/Admin/Http/Controllers/IndexController.php new file mode 100644 index 0000000..a936e00 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/IndexController.php @@ -0,0 +1,13 @@ +successJson([]); + } +} -- Gitee From ab504281a0d4de1766f6c9c01303165e95b9075e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Thu, 17 Dec 2020 00:14:09 +0800 Subject: [PATCH 5/7] =?UTF-8?q?request=E9=AA=8C=E8=AF=81=E5=99=A8=EF=BC=9A?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=94=AF=E4=B8=80=E5=B1=9E=E6=80=A7=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E6=97=B6=EF=BC=8C=E8=A1=A8=E5=90=8D=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E6=A8=A1=E5=9E=8B=E6=9D=A5=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=EF=BC=8C=E4=BB=A5=E5=85=8D=E8=A1=A8=E5=90=8D=E5=8F=98=E5=8A=A8?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/Http/Requests/Rabc/AdminMenuRequest.php | 9 ++++----- app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php | 7 ++++--- .../Admin/Http/Requests/Rabc/AdminRoleRequest.php | 8 ++++---- app/Modules/Admin/Http/Requests/System/BannerRequest.php | 5 +++-- app/Modules/Admin/Http/Requests/System/ConfigRequest.php | 6 +++--- .../Admin/Http/Requests/System/FriendlinkRequest.php | 6 +++--- .../Admin/Http/Requests/System/ProtocolRequest.php | 8 +++----- .../Admin/Http/Requests/System/VersionRequest.php | 7 +++---- 8 files changed, 27 insertions(+), 29 deletions(-) diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php index 3f6b457..4ae6689 100644 --- a/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php @@ -2,9 +2,7 @@ namespace App\Modules\Admin\Http\Requests\Rabc; -use App\Modules\Admin\Entities\Rabc\Admin; use App\Modules\Admin\Entities\Rabc\AdminMenu; -use App\Modules\Admin\Entities\Rabc\AdminRole; use App\Modules\Admin\Http\Requests\BaseRequest; class AdminMenuRequest extends BaseRequest @@ -16,14 +14,15 @@ class AdminMenuRequest extends BaseRequest */ public function rules() { - $primarykey = AdminMenu::getInstance()->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; + $instance = AdminMenu::getInstance(); + $primarykey = $instance->getKeyName(); + $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; return [ 'menu_name' => [ 'required', 'max:256', - 'unique:admin_menus,menu_name' . $validate_id + 'unique:' . $instance->getTable() . ',menu_name' . $validate_id ], 'is_check' => [ 'required', diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php index 04bab90..8affc4e 100644 --- a/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php @@ -14,14 +14,15 @@ class AdminRequest extends BaseRequest */ public function rules() { - $primarykey = Admin::getInstance()->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; + $instance = Admin::getInstance(); + $primarykey = $instance->getKeyName(); + $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; return [ 'admin_name' => [ 'required', 'max:256', - 'unique:admins,admin_name' . $validate_id + 'unique:' . $instance->getTable() . ',admin_name' . $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 9024904..9d191f3 100644 --- a/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php @@ -2,7 +2,6 @@ namespace App\Modules\Admin\Http\Requests\Rabc; -use App\Modules\Admin\Entities\Rabc\Admin; use App\Modules\Admin\Entities\Rabc\AdminRole; use App\Modules\Admin\Http\Requests\BaseRequest; @@ -15,14 +14,15 @@ class AdminRoleRequest extends BaseRequest */ public function rules() { - $primarykey = AdminRole::getInstance()->getKeyName(); - $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; + $instance = AdminRole::getInstance(); + $primarykey = $instance->getKeyName(); + $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; return [ 'role_name' => [ 'required', 'max:256', - 'unique:admin_roles,role_name' . $validate_id + 'unique:' . $instance->getTable() . ',role_name' . $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 dad6e1b..e89679f 100644 --- a/app/Modules/Admin/Http/Requests/System/BannerRequest.php +++ b/app/Modules/Admin/Http/Requests/System/BannerRequest.php @@ -14,14 +14,15 @@ class BannerRequest extends BaseRequest */ public function rules() { - $primarykey = Banner::getInstance()->getKeyName(); + $instance = Banner::getInstance(); + $primarykey = $instance->getKeyName(); $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; return [ 'banner_title' => [ 'required', 'max:256', - 'unique:banners,banner_title' . $validate_id + 'unique:' . $instance->getTable() . ',banner_title' . $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 5cb7d0d..7a0387d 100644 --- a/app/Modules/Admin/Http/Requests/System/ConfigRequest.php +++ b/app/Modules/Admin/Http/Requests/System/ConfigRequest.php @@ -2,7 +2,6 @@ namespace App\Modules\Admin\Http\Requests\System; -use App\Modules\Admin\Entities\System\Banner; use App\Modules\Admin\Entities\System\Config; use App\Modules\Admin\Http\Requests\BaseRequest; @@ -15,7 +14,8 @@ class ConfigRequest extends BaseRequest */ public function rules() { - $primarykey = Config::getInstance()->getKeyName(); + $instance = Config::getInstance(); + $primarykey = $instance->getKeyName(); $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; return [ @@ -26,7 +26,7 @@ class ConfigRequest extends BaseRequest 'config_name' => [ 'required', 'max:256', - 'unique:configs,config_name' . $validate_id + 'unique:' . $instance->getTable() . ',config_name' . $validate_id ] ]; } diff --git a/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php b/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php index 065bc41..fb09d2b 100644 --- a/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php +++ b/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php @@ -2,7 +2,6 @@ namespace App\Modules\Admin\Http\Requests\System; -use App\Modules\Admin\Entities\System\Banner; use App\Modules\Admin\Entities\System\Friendlink; use App\Modules\Admin\Http\Requests\BaseRequest; @@ -15,14 +14,15 @@ class FriendlinkRequest extends BaseRequest */ public function rules() { - $primarykey = Friendlink::getInstance()->getKeyName(); + $instance = Friendlink::getInstance(); + $primarykey = $instance->getKeyName(); $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; return [ 'link_name' => [ 'required', 'max:256', - 'unique:friendlinks,link_name' . $validate_id + 'unique:' . $instance->getTable() . ',link_name' . $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 a9e98fa..324cd54 100644 --- a/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php +++ b/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php @@ -2,10 +2,7 @@ namespace App\Modules\Admin\Http\Requests\System; -use App\Modules\Admin\Entities\System\Banner; -use App\Modules\Admin\Entities\System\Friendlink; use App\Modules\Admin\Entities\System\Protocol; -use App\Modules\Admin\Entities\System\Version; use App\Modules\Admin\Http\Requests\BaseRequest; class ProtocolRequest extends BaseRequest @@ -17,14 +14,15 @@ class ProtocolRequest extends BaseRequest */ public function rules() { - $primarykey = Protocol::getInstance()->getKeyName(); + $instance = Protocol::getInstance(); + $primarykey = $instance->getKeyName(); $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; return [ 'protocol_name' => [ 'required', 'max:256', - 'unique:protocols,protocol_name' . $validate_id + 'unique:' . $instance->getTable() . ',protocol_name' . $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 14a2cc9..25fdc37 100644 --- a/app/Modules/Admin/Http/Requests/System/VersionRequest.php +++ b/app/Modules/Admin/Http/Requests/System/VersionRequest.php @@ -2,8 +2,6 @@ namespace App\Modules\Admin\Http\Requests\System; -use App\Modules\Admin\Entities\System\Banner; -use App\Modules\Admin\Entities\System\Friendlink; use App\Modules\Admin\Entities\System\Version; use App\Modules\Admin\Http\Requests\BaseRequest; @@ -16,14 +14,15 @@ class VersionRequest extends BaseRequest */ public function rules() { - $primarykey = Version::getInstance()->getKeyName(); + $instance = Version::getInstance(); + $primarykey = $instance->getKeyName(); $validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey; return [ 'version_name' => [ 'required', 'max:256', - 'unique:versions,version_name' . $validate_id + 'unique:' . $instance->getTable() . ',version_name' . $validate_id ], 'version_number' => [ 'required', -- Gitee From 2494b970b262a56ea6422f77cdef5901601df8c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Thu, 17 Dec 2020 00:16:19 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=8E=A7=E5=88=B6=E4=B8=8Eservice=E5=B1=82?= =?UTF-8?q?=EF=BC=9A=E6=96=B0=E5=A2=9E=E8=AF=A6=E6=83=85=E3=80=81=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=8A=B6=E6=80=81=E5=8F=98=E6=9B=B4=E3=80=81=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=88=A0=E9=99=A4=E6=B5=81=E7=A8=8B=E3=80=81=E6=8C=89?= =?UTF-8?q?=E6=9C=88=E5=88=86=E8=A1=A8=E6=A8=A1=E5=9E=8B=E7=9A=84=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E7=AD=9B=E9=80=89=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/Http/Controllers/AuthController.php | 9 ++- .../Admin/Http/Controllers/BaseController.php | 60 ++++++++----------- app/Modules/Admin/Services/BaseService.php | 52 ++++++++++++++-- 3 files changed, 81 insertions(+), 40 deletions(-) diff --git a/app/Modules/Admin/Http/Controllers/AuthController.php b/app/Modules/Admin/Http/Controllers/AuthController.php index e46b84b..0b765b6 100644 --- a/app/Modules/Admin/Http/Controllers/AuthController.php +++ b/app/Modules/Admin/Http/Controllers/AuthController.php @@ -2,10 +2,11 @@ namespace App\Modules\Admin\Http\Controllers; +use App\Modules\Admin\Entities\Rabc\AdminMenu; use App\Modules\Admin\Http\Requests\LoginRequest; use App\Modules\Admin\Services\AuthService; -class AuthController extends AdminController +class AuthController extends BaseController { public function __construct(AuthService $authService) { @@ -54,4 +55,10 @@ class AuthController extends AdminController { return $this->successJson($this->service->logout()); } + + public function getRabcList() + { + // 临时测试数据 + return $this->successJson(list_to_tree(AdminMenu::getAllMenus()->toArray())); + } } diff --git a/app/Modules/Admin/Http/Controllers/BaseController.php b/app/Modules/Admin/Http/Controllers/BaseController.php index cdd57c7..d39a0aa 100644 --- a/app/Modules/Admin/Http/Controllers/BaseController.php +++ b/app/Modules/Admin/Http/Controllers/BaseController.php @@ -21,17 +21,18 @@ class BaseController extends Controller */ public function index(Request $request) { + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } return $this->successJson($this->service->lists($request->all())); } - /** - * Show the specified resource. - * @param int $id - * @return Renderable - */ - public function show($id) + public function detail($id = 0) { - return $this->successJson(); + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + return $this->successJson(empty($id) ? [] : $this->service->detail($id)); } public function createService($request) @@ -40,6 +41,9 @@ class BaseController extends Controller $request->validated(); } + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } if ($this->service->create($request->all())){ return $this->successJson([], $this->service->getError()); }else{ @@ -53,6 +57,9 @@ class BaseController extends Controller $request->validated(); } + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } if ($this->service->update($request->all())){ return $this->successJson([], $this->service->getError()); }else{ @@ -62,6 +69,9 @@ class BaseController extends Controller public function delete(Request $request) { + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } if ($this->service->delete($request->all())){ return $this->successJson([], $this->service->getError()); }else{ @@ -69,34 +79,16 @@ class BaseController extends Controller } } - /** - * Store a newly created resource in storage. - * @param Request $request - * @return Renderable - */ - public function store(BaseRequest $request) - { - // - } - - - /** - * Show the form for editing the specified resource. - * @param int $id - * @return Renderable - */ - public function edit($id) + public function changeFiledStatus(Request $request) { - return view('admin::edit'); - } + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } - /** - * Remove the specified resource from storage. - * @param int $id - * @return Renderable - */ - public function destroy($id) - { - // + if ($this->service->changeFiledStatus($request->all())){ + return $this->successJson([], $this->service->getError()); + }else{ + return $this->errorJson($this->service->getError()); + } } } diff --git a/app/Modules/Admin/Services/BaseService.php b/app/Modules/Admin/Services/BaseService.php index 7829864..8589eb9 100644 --- a/app/Modules/Admin/Services/BaseService.php +++ b/app/Modules/Admin/Services/BaseService.php @@ -2,14 +2,19 @@ namespace App\Modules\Admin\Services; +use App\Models\MonthModel; use App\Services\Service; class BaseService extends Service { protected $model; - public function lists(array $params) + public function lists(array $params): array { + // 如果是按月分表的模型,设置按月份查询的月份表 + if ($this->model instanceof MonthModel){ + $this->model = $this->model->setMonthTable(request()->input('search_month', '')); + } $lists = $this->model->orderBy($this->model->getKeyName(), 'DESC')->paginate($this->getLimit($params['limit'] ?? 10)); return [ @@ -21,24 +26,61 @@ class BaseService extends Service ]; } + public function detail($id) + { + return $this->model->detail($id); + } + public function create(array $params) { - return $this->model->create($params); + return $this->model->create($this->model->setFilterFields($params)); } public function update(array $params) { $primaryKey = $this->model->getKeyName(); - return $this->model->where($primaryKey, $params[$primaryKey])->update($params); + return $this->model->where($primaryKey, $params[$primaryKey])->update($this->model->setFilterFields($params)); } public function delete(array $params) { $primaryKey = $this->model->getKeyName(); + if ( empty($params[$primaryKey]) && empty($params['is_batch'])) { + $this->setError('请指定删除标识!'); + return false; + } + // 是否为批量删除 + if (isset($params['is_batch']) && $params['is_batch'] == 1){ + $ids = $params['ids'] ?? $params[$primaryKey]; + }else{ + $ids = [$params[$primaryKey]]; + } + /** + * 如果是月份表进行删除的话,那么需要指定表名 + */ + if ($this->model instanceof MonthModel && isset($params['month'])){ + $this->model = $this->model->setMonthTable($params['month']); + } if ($this->model->getIsDelete() == 0){ - return $this->model->where($primaryKey, $params[$primaryKey])->update([$this->model->getDeleteField() => 1]); + return $this->model->where($primaryKey, 'IN', $ids)->update([$this->model->getDeleteField() => 1]); }else{ - return $this->model->where($primaryKey, $params[$primaryKey])->delete(); + return $this->model->where($primaryKey, 'IN', $ids)->delete(); + } + } + + public function changeFiledStatus(array $params) + { + $primaryKey = $this->model->getKeyName(); + if (empty($params[$primaryKey])) { + $this->setError('请指定删除标识!'); + return false; + } + if ( $this->model->where([$primaryKey => $params[$primaryKey]])->update([$params['change_field'] => $params['change_value']]) ) { + $this->setError('设置成功!'); + return true; + } else { + $this->setError('设置失败!'); + return false; } } } -- Gitee From f6d1a1a20b3a8eff661b33525c1fe59d0728427b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E4=B8=91=E8=B7=AF=E4=BA=BA?= <2278757482@qq.com> Date: Thu, 17 Dec 2020 00:17:02 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=B8=AD=E9=97=B4=E4=BB=B6=EF=BC=9A?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E7=99=BB=E5=BD=95=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E4=B8=8E=E7=AE=A1=E7=90=86=E5=91=98=E6=93=8D=E4=BD=9C=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/Http/Middleware/AdminLog.php | 40 ++++++ .../Admin/Http/Middleware/CheckAuth.php | 45 ++++++ app/Modules/Admin/Routes/web.php | 133 ++++++++++-------- 3 files changed, 157 insertions(+), 61 deletions(-) create mode 100644 app/Modules/Admin/Http/Middleware/AdminLog.php create mode 100644 app/Modules/Admin/Http/Middleware/CheckAuth.php diff --git a/app/Modules/Admin/Http/Middleware/AdminLog.php b/app/Modules/Admin/Http/Middleware/AdminLog.php new file mode 100644 index 0000000..5093e5b --- /dev/null +++ b/app/Modules/Admin/Http/Middleware/AdminLog.php @@ -0,0 +1,40 @@ +getMethod()) != 'GET'){ + \App\Modules\Admin\Entities\Log\AdminLog::getInstance()->create([ + 'request_data' => json_encode($request->all()), + 'admin_id' => !empty(auth($guard)->user()) ? auth($guard)->user()->admin_id : 0, + 'created_ip' => $ip_agent['ip'] ?? get_ip(), + 'browser_type' => $ip_agent['agent'] ?? $_SERVER['HTTP_USER_AGENT'], + 'created_time' => time(), + 'log_action' => request()->route()->getActionName(), + 'log_method' => request()->getMethod(), + 'log_duration' => microtime(true) - LARAVEL_START, + 'request_url' => URL::full() ?? get_this_url(), + ]); + } + + return $resource; + } +} diff --git a/app/Modules/Admin/Http/Middleware/CheckAuth.php b/app/Modules/Admin/Http/Middleware/CheckAuth.php new file mode 100644 index 0000000..55b67d3 --- /dev/null +++ b/app/Modules/Admin/Http/Middleware/CheckAuth.php @@ -0,0 +1,45 @@ +guard = 'admin'; + + try { + if ( !Auth()->guard($this->guard)->check() ) { //未登录踢回,给予错误返回提示 + return $this->errorJson('认证失败,请重新登录!'); + } + } catch (TokenExpiredException $e) { + return $this->errorJson($e->getMessage()); + } catch (TokenInvalidException $e) { + return $this->errorJson($e->getMessage()); + } catch (JWTException $e) { + return $this->errorJson($e->getMessage()); + } + + return $next($request); + } +} diff --git a/app/Modules/Admin/Routes/web.php b/app/Modules/Admin/Routes/web.php index 369be7d..79c4d6b 100644 --- a/app/Modules/Admin/Routes/web.php +++ b/app/Modules/Admin/Routes/web.php @@ -11,6 +11,10 @@ | */ +use Illuminate\Support\Facades\Route; +use App\Modules\Admin\Http\Middleware\CheckAuth; +use App\Modules\Admin\Http\Middleware\AdminLog; + Route::prefix('admin')->group(function() { // Route::get('/', 'AdminController@index'); //后台管理路由 @@ -20,77 +24,84 @@ Route::prefix('admin')->group(function() { Route::prefix('auth')->group(function() { Route::any('login', 'AuthController@login'); - Route::any('me', 'AuthController@me'); - Route::any('logout', 'AuthController@logout'); + Route::any('me', 'AuthController@me')->middleware(CheckAuth::class); + Route::any('logout', 'AuthController@logout')->middleware(CheckAuth::class); + Route::any('getRabcList', 'AuthController@getRabcList')->middleware(CheckAuth::class); }); - Route::prefix('banners')->group(function() { - Route::any('/', 'System\BannerController@index'); - Route::any('/create', 'System\BannerController@create'); - Route::any('/update', 'System\BannerController@update'); - Route::any('/delete', 'System\BannerController@delete'); - }); + Route::middleware([CheckAuth::class, AdminLog::class])->group(function () { - Route::prefix('configs')->group(function() { - Route::any('/', 'System\ConfigController@index'); - Route::any('/create', 'System\ConfigController@create'); - Route::any('/update', 'System\ConfigController@update'); - Route::any('/delete', 'System\ConfigController@delete'); - }); + // 首页 + Route::post('indexs', 'IndexController@index'); - Route::prefix('friendlinks')->group(function() { - Route::any('/', 'System\FriendlinkController@index'); - Route::any('/create', 'System\FriendlinkController@create'); - Route::any('/update', 'System\FriendlinkController@update'); - Route::any('/delete', 'System\FriendlinkController@delete'); - }); + // 文件上传 + Route::post('upload_file', 'UploadController@file'); - Route::prefix('protocols')->group(function() { - Route::any('/', 'System\ProtocolController@index'); - Route::any('/create', 'System\ProtocolController@create'); - Route::any('/update', 'System\ProtocolController@update'); - Route::any('/delete', 'System\ProtocolController@delete'); - }); + Route::prefix('banners')->group(function() { + Route::any('/', 'System\BannerController@index'); + Route::any('/create', 'System\BannerController@create'); + Route::any('/create', 'System\BannerController@create'); + Route::any('/update', 'System\BannerController@update'); + Route::any('/delete', 'System\BannerController@delete'); + }); - Route::prefix('versions')->group(function() { - Route::any('/', 'System\VersionController@index'); - Route::any('/create', 'System\VersionController@create'); - Route::any('/update', 'System\VersionController@update'); - Route::any('/delete', 'System\VersionController@delete'); - }); + Route::prefix('configs')->group(function() { + Route::any('/', 'System\ConfigController@index'); + Route::any('/create', 'System\ConfigController@create'); + Route::any('/update', 'System\ConfigController@update'); + Route::any('/delete', 'System\ConfigController@delete'); + }); - Route::prefix('admins')->group(function() { - Route::any('/', 'Rabc\AdminController@index'); - Route::any('/create', 'Rabc\AdminController@create'); - Route::any('/update', 'Rabc\AdminController@update'); - Route::any('/delete', 'Rabc\AdminController@delete'); - }); + Route::prefix('friendlinks')->group(function() { + Route::any('/', 'System\FriendlinkController@index'); + Route::any('/create', 'System\FriendlinkController@create'); + Route::any('/update', 'System\FriendlinkController@update'); + Route::any('/delete', 'System\FriendlinkController@delete'); + }); - Route::prefix('roles')->group(function() { - Route::any('/', 'Rabc\AdminRoleController@index'); - Route::any('/create', 'Rabc\AdminRoleController@create'); - Route::any('/update', 'Rabc\AdminRoleController@update'); - Route::any('/delete', 'Rabc\AdminRoleController@delete'); - }); + Route::prefix('protocols')->group(function() { + Route::any('/', 'System\ProtocolController@index'); + Route::any('/create', 'System\ProtocolController@create'); + Route::any('/update', 'System\ProtocolController@update'); + Route::any('/delete', 'System\ProtocolController@delete'); + }); - Route::prefix('menus')->group(function() { - Route::any('/', 'Rabc\AdminMenuController@index'); - Route::any('/create', 'Rabc\AdminMenuController@create'); - Route::any('/update', 'Rabc\AdminMenuController@update'); - Route::any('/delete', 'Rabc\AdminMenuController@delete'); - }); + Route::prefix('versions')->group(function() { + Route::any('/', 'System\VersionController@index'); + Route::any('/create', 'System\VersionController@create'); + Route::any('/update', 'System\VersionController@update'); + Route::any('/delete', 'System\VersionController@delete'); + }); - Route::prefix('adminlogs')->group(function() { - Route::any('/', 'Log\AdminLogController@index'); - Route::any('/create', 'System\AdminLogController@create'); - Route::any('/update', 'System\AdminLogController@update'); - Route::any('/delete', 'System\AdminLogController@delete'); - }); + Route::prefix('admins')->group(function() { + Route::any('/', 'Rabc\AdminController@index'); + Route::any('/create', 'Rabc\AdminController@create'); + Route::any('/update', 'Rabc\AdminController@update'); + Route::any('/delete', 'Rabc\AdminController@delete'); + }); + + Route::prefix('roles')->group(function() { + Route::any('/', 'Rabc\AdminRoleController@index'); + Route::any('/create', 'Rabc\AdminRoleController@create'); + Route::any('/update', 'Rabc\AdminRoleController@update'); + Route::any('/delete', 'Rabc\AdminRoleController@delete'); + }); + + Route::prefix('menus')->group(function() { + Route::any('/', 'Rabc\AdminMenuController@index'); + Route::any('/create', 'Rabc\AdminMenuController@create'); + Route::any('/update', 'Rabc\AdminMenuController@update'); + Route::any('/delete', 'Rabc\AdminMenuController@delete'); + }); + + Route::prefix('adminlogs')->group(function() { + Route::any('/', 'Log\AdminLogController@index'); + Route::any('/delete', 'System\AdminLogController@delete'); + }); - Route::prefix('adminloginlogs')->group(function() { - Route::any('/', 'Log\AdminLoginLogController@index'); - Route::any('/create', 'System\AdminLoginLogController@create'); - Route::any('/update', 'System\AdminLoginLogController@update'); - Route::any('/delete', 'System\AdminLoginLogController@delete'); + Route::prefix('adminloginlogs')->group(function() { + Route::any('/', 'Log\AdminLoginLogController@index'); + Route::any('/delete', 'System\AdminLoginLogController@delete'); + }); }); }); -- Gitee