From b12364a5a21032cff5d35d071d07d58287803e01 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: Sat, 9 Jan 2021 23:10:50 +0800 Subject: [PATCH 01/15] update. --- .../views/articles/components/ArticleDetail.vue | 2 +- .../vue-element-admin/views/versions/components/detail.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/articles/components/ArticleDetail.vue b/app/Modules/Admin/Resources/vue-element-admin/views/articles/components/ArticleDetail.vue index a0f5918..9127643 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/articles/components/ArticleDetail.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/articles/components/ArticleDetail.vue @@ -10,7 +10,7 @@
联系我们
', + 'register_agreement' => '# 注册协议 + + 1. + 2. + 3.
', + 'start_admin_log' => '1', +); -- Gitee From 5ef159e21894e0158c6252ae50865383218d6142 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: Sun, 10 Jan 2021 01:27:34 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=9A=E5=90=8C=E6=AD=A5=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Modules/Admin/Entities/System/Config.php | 81 +++++++++++++++++++ .../Controllers/System/ConfigController.php | 11 +++ .../vue-element-admin/api/configs.js | 9 +++ .../vue-element-admin/views/configs/index.vue | 28 ++++++- app/Modules/Admin/Routes/web.php | 1 + app/Modules/Admin/Services/ConfigService.php | 10 +++ config/cnpscy.php | 72 ++++++++++++----- 7 files changed, 190 insertions(+), 22 deletions(-) diff --git a/app/Modules/Admin/Entities/System/Config.php b/app/Modules/Admin/Entities/System/Config.php index 5d3f328..91b85bf 100644 --- a/app/Modules/Admin/Entities/System/Config.php +++ b/app/Modules/Admin/Entities/System/Config.php @@ -8,4 +8,85 @@ class Config extends Model { protected $primaryKey = 'config_id'; protected $is_delete = 0; + + /** + * 配置同步到config文件中 + * + * @return false|int + */ + public function pushRefreshConfig() + { + $config_data = $this->where('is_check', 1) + ->select('config_value', 'config_name', 'config_type') + ->get() + ->toArray();//字段进行过滤 + $_data = $data_list = []; + array_walk($config_data, function ($value) use (&$data_list) { + /** + * 对于数组格式的处理 + * + * in_array(strtoupper($value['config_name']), ['CONFIG_GROUP_LIST', 'CONFIG_TYPE_LIST', 'MENU_TYPE_LIST']) || + */ + if ($value['config_type'] == 3) { + $value_ary = array_filter(explode('|', str_replace(["\r", "\r\n", "\n"], '|', $value['config_value']))); + foreach ($value_ary as $k => $v) { + if (empty($value['config_name'])) continue; + $array = explode(':', str_replace(["'", '"', "\r", "\r\n", "\n"], '', $v)); + $_data[$array[0]] = $array[1]; + } + $data_list[$value['config_name']] = $_data; + }else{ + /** + * 配置项的值,对于不同字符类型的格式进行处理 + */ + switch ($value['config_type']){ + case 2: // 数字 + $config_value = floatval($value['config_value']); + break; + default: + $config_value = $value['config_value']; + break; + } + /** + * 如果存在某一类的设置项: + * 如:user.login_days、user.pass 这一类,自动设置为数据格式数据,便于使用config的 . 找到数组下坐标 + */ + if (strstr($value['config_name'], '.')){ + $ary = explode('.', $value['config_name']); + if (count($ary) > 2){ + list($key, $val, $third) = $ary; + $data_list[$key][$val][$third] = $config_value; + }else{ + list($key, $val) = $ary; + $data_list[$key][$val] = $config_value; + } + }else{ + $data_list[$value['config_name']] = $config_value; + } + } + }); + // 文件写入 + $res = file_put_contents( config_path() . '/cnpscy.php', 'select()->toArray(); + if (!empty($configs)) { + foreach ($configs as &$v) { + if (in_array($v['config_type'], [4])){ + if (!empty($v['config_extra'])) $v['config_extra'] = config_array_analysis($v['config_extra']); + } + } + } + $configs = array_field_group($configs, 'config_group');//按照配置进行分组 + if (empty($configs[0])) $configs[0] = []; + return $configs; + } } diff --git a/app/Modules/Admin/Http/Controllers/System/ConfigController.php b/app/Modules/Admin/Http/Controllers/System/ConfigController.php index 5ce8e8f..3ab6f30 100644 --- a/app/Modules/Admin/Http/Controllers/System/ConfigController.php +++ b/app/Modules/Admin/Http/Controllers/System/ConfigController.php @@ -45,4 +45,15 @@ class ConfigController extends BaseController 'config_type_list' => $config_type_list, ]); } + + /** + * 同步配置 + * + * @return \Illuminate\Http\JsonResponse + */ + public function pushRefreshConfig() + { + $this->service->pushRefreshConfig(); + return $this->successJson([], '配置文件已同步成功!'); + } } 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 673589a..4a9b2fa 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/api/configs.js +++ b/app/Modules/Admin/Resources/vue-element-admin/api/configs.js @@ -8,6 +8,7 @@ export function getList(query) { }) } +// 获取配置分组与配置类型 export function getConfigGroupType() { return request({ url: '/configs/getConfigGroupType', @@ -54,3 +55,11 @@ export function changeFiledStatus(data) { data }) } + +// 同步配置文件 +export function pushRefreshConfig() { + return request({ + url: '/configs/pushRefreshConfig', + method: 'put', + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/views/configs/index.vue b/app/Modules/Admin/Resources/vue-element-admin/views/configs/index.vue index 50c7859..4448674 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/views/configs/index.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/views/configs/index.vue @@ -36,12 +36,22 @@ v-waves :loading="downloadLoading" class="filter-item" - type="primary" + type="success" icon="el-icon-download" @click="handleDownload" > {{ $t('table.export') }} +联系我们
', - 'register_agreement' => '# 注册协议 - - 1. - 2. - 3.
', - 'start_admin_log' => '1', -); + 'forbiddenip' => '', + 'languages' => '', + 'admin_menu_session_unique' => 'rabc_menus_list', + 'admin_info_session_unique' => 'admin_info', + 'admin_rabc_session_unique' => 'admin_rabc', +); \ No newline at end of file -- Gitee From 38160ad6dbfb8f843a785620684283e6947d9e12 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: Sun, 10 Jan 2021 16:58:47 +0800 Subject: [PATCH 05/15] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=A0=8F=E7=9B=AE=EF=BC=8C=E4=B8=8D=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E5=AF=B9=E5=BA=94=E9=A1=B6=E9=83=A8=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E7=9A=84bug=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/vue-element-admin/store/modules/permission.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Modules/Admin/Resources/vue-element-admin/store/modules/permission.js b/app/Modules/Admin/Resources/vue-element-admin/store/modules/permission.js index cb8714b..00a3b5f 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/store/modules/permission.js +++ b/app/Modules/Admin/Resources/vue-element-admin/store/modules/permission.js @@ -57,7 +57,7 @@ export function generaMenu(routes, data) { path: item.vue_path, component: (item.vue_component === 'Layout') ? Layout : (resolve) => require([`@/views/${item.vue_component}`], resolve), children: [], - // name: item.vue_name, + name: item.vue_name, }; // console.log(item); -- Gitee From 7a009c17a1ec931cf2cc9dbbc093cabf14943a10 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: Sun, 10 Jan 2021 17:49:43 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=AD=E9=97=B4?= =?UTF-8?q?=E4=BB=B6=EF=BC=9A=E7=A9=BA=E5=AD=97=E7=AC=A6=E4=B8=B2=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E8=BD=AC=E6=8D=A2=E4=B8=BAnull=E7=9A=84=E4=B8=AD?= =?UTF-8?q?=E9=97=B4=E4=BB=B6=EF=BC=88=E7=B3=BB=E7=BB=9F=E8=87=AA=E5=B8=A6?= =?UTF-8?q?=E7=9A=84=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=85=B3=E9=97=AD=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E7=9A=84=EF=BC=9A=E6=96=B0=E5=A2=9E=E4=B8=8E=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=95=B0=E6=8D=AE=E6=97=B6=EF=BC=8C=E7=A6=81=E6=AD=A2?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=BD=AC=E6=8D=A2=E7=9A=84=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E6=89=8B=E5=8A=A8=E8=AE=BE=E5=AE=9A=E4=BD=95=E6=97=B6?= =?UTF-8?q?=E5=87=BA=E5=8F=91=E8=BD=AC=E6=8D=A2=EF=BC=89=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Middleware/ConvertEmptyStringsToNull.php | 27 +++++++++++++++++++ app/Modules/Admin/Routes/web.php | 4 ++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 app/Modules/Admin/Http/Middleware/ConvertEmptyStringsToNull.php diff --git a/app/Modules/Admin/Http/Middleware/ConvertEmptyStringsToNull.php b/app/Modules/Admin/Http/Middleware/ConvertEmptyStringsToNull.php new file mode 100644 index 0000000..99ce90d --- /dev/null +++ b/app/Modules/Admin/Http/Middleware/ConvertEmptyStringsToNull.php @@ -0,0 +1,27 @@ +getMethod() == 'GET'){ + // 空字符串自动转换为null的中间件:只有在GET请求时,筛选数据还是需要自动转换的;其余提交时,一律不做过滤 + // 原本只是希望在POST、PUT时,新增与更新数据时,移除自动转换效果。 + (new \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull)->handle($request, $next); + } + + return $next($request); + } +} diff --git a/app/Modules/Admin/Routes/web.php b/app/Modules/Admin/Routes/web.php index 27eeeb5..96f80bc 100644 --- a/app/Modules/Admin/Routes/web.php +++ b/app/Modules/Admin/Routes/web.php @@ -16,7 +16,9 @@ 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() { +Route::middleware([\App\Modules\Admin\Http\Middleware\ConvertEmptyStringsToNull::class]) + ->prefix('admin') + ->group(function() { // Route::get('/', 'AdminController@index'); //后台管理路由 Route::get('/', function(){ -- Gitee From 3d0f16d7e9b50776b01dc17846ebf81d8ead7e38 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: Sun, 10 Jan 2021 18:01:53 +0800 Subject: [PATCH 07/15] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=EF=BC=9A?= =?UTF-8?q?=E7=A9=BA=E5=AD=97=E7=AC=A6=E4=B8=B2=E8=87=AA=E5=8A=A8=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E4=B8=BAnull=E7=9A=84=E2=80=98=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E2=80=99=E4=B8=AD=E9=97=B4=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Kernel.php | 5 +++++ .../Http/Middleware/ConvertEmptyStringsToNull.php | 13 +++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) rename app/{Modules/Admin => }/Http/Middleware/ConvertEmptyStringsToNull.php (56%) diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index b321676..6c5659d 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -2,6 +2,7 @@ namespace App\Http; +use App\Http\Middleware\ConvertEmptyStringsToNull; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel @@ -20,8 +21,12 @@ class Kernel extends HttpKernel \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, + // 空字符串自动转换为null的中间件 // \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + + // 自定义的:空字符串自动转换为null的中间件 + ConvertEmptyStringsToNull::class, ]; /** diff --git a/app/Modules/Admin/Http/Middleware/ConvertEmptyStringsToNull.php b/app/Http/Middleware/ConvertEmptyStringsToNull.php similarity index 56% rename from app/Modules/Admin/Http/Middleware/ConvertEmptyStringsToNull.php rename to app/Http/Middleware/ConvertEmptyStringsToNull.php index 99ce90d..386c627 100644 --- a/app/Modules/Admin/Http/Middleware/ConvertEmptyStringsToNull.php +++ b/app/Http/Middleware/ConvertEmptyStringsToNull.php @@ -1,6 +1,6 @@ getMethod() == 'GET'){ - // 空字符串自动转换为null的中间件:只有在GET请求时,筛选数据还是需要自动转换的;其余提交时,一律不做过滤 - // 原本只是希望在POST、PUT时,新增与更新数据时,移除自动转换效果。 + $method = strtoupper($request->getMethod()); + if ( + $method == 'POST' + || + $method == 'PUT' + ){ + // 希望在POST、PUT时,新增与更新数据时,移除[空字符串自动转换为null的中间件]效果。 + }else{ (new \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull)->handle($request, $next); } -- Gitee From 6535d1779551e6b7c6067ebfa6aecda8cf8777a9 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: Sun, 10 Jan 2021 18:02:40 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E6=96=87=E7=AB=A0=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Article/ArticleLabelController.php | 25 +++ .../Requests/Article/ArticleLabelRequest.php | 39 ++++ .../vue-element-admin/api/article_labels.js | 33 +++ .../Resources/vue-element-admin/lang/en.js | 3 + .../Resources/vue-element-admin/lang/es.js | 3 + .../Resources/vue-element-admin/lang/ja.js | 3 + .../Resources/vue-element-admin/lang/zh.js | 3 + .../layout/components/Navbar.vue | 3 - .../layout/components/Sidebar/Logo.vue | 133 ++++++------ .../article_labels/components/detail.vue | 87 ++++++++ .../views/article_labels/index.vue | 198 ++++++++++++++++++ app/Modules/Admin/Routes/web.php | 12 +- .../Admin/Services/ArticleLabelService.php | 25 +++ 13 files changed, 496 insertions(+), 71 deletions(-) create mode 100644 app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php create mode 100644 app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php create mode 100644 app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/article_labels/components/detail.vue create mode 100644 app/Modules/Admin/Resources/vue-element-admin/views/article_labels/index.vue create mode 100644 app/Modules/Admin/Services/ArticleLabelService.php diff --git a/app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php b/app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php new file mode 100644 index 0000000..7aaf19d --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php @@ -0,0 +1,25 @@ +service = $articleLabelService; + } + + public function create(ArticleLabelRequest $request) + { + return $this->createService($request); + } + + public function update(ArticleLabelRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php b/app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php new file mode 100644 index 0000000..cc7dd14 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php @@ -0,0 +1,39 @@ +instance = ArticleLabel::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'label_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',label_name' . $this->validate_id + ], + ]; + } + + public function messages() + { + return [ + 'label_name.required' => '请输入标签名称!', + 'label_name.max' => '标签名称字数不可超过 256!', + 'label_name.unique' => '标签名称已存在,请更换!', + ]; + } +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js b/app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js new file mode 100644 index 0000000..af643d1 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js @@ -0,0 +1,33 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: '/article_labels', + method: 'get', + params + }); +} + +export function create(data) { + return request({ + url: '/article_labels/create', + method: 'post', + data + }); +} + +export function update(data) { + return request({ + url: '/article_labels/update', + method: 'put', + data + }); +} + +export function setDel(data) { + return request({ + url: '/article_labels/delete', + method: 'delete', + data + }); +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/lang/en.js b/app/Modules/Admin/Resources/vue-element-admin/lang/en.js index 9598bf9..1273e0b 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/lang/en.js +++ b/app/Modules/Admin/Resources/vue-element-admin/lang/en.js @@ -3,8 +3,11 @@ export default { admin: 'Admin', banner: 'Banner', article: 'Article', + friendlinks: 'Friendly link', number: 'Number', route: { + articleLabels: '文章标签', + articleLabelDetail: '标签详情', systemSettings: 'System settings', bannerManage: 'Banner Manage', permissionManage: 'Permission Manage', diff --git a/app/Modules/Admin/Resources/vue-element-admin/lang/es.js b/app/Modules/Admin/Resources/vue-element-admin/lang/es.js index cab54ec..3532a33 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/lang/es.js +++ b/app/Modules/Admin/Resources/vue-element-admin/lang/es.js @@ -3,8 +3,11 @@ export default { admin: 'Administrador', banner: 'Banner', article: 'Artículo', + friendlinks: '友情链接', number: 'Cantidad', route: { + articleLabels: '文章标签', + articleLabelDetail: '标签详情', systemSettings: 'Configuración del sistema', bannerManage: 'Gestión de Banner', permissionManage: 'Gestión de permisos', diff --git a/app/Modules/Admin/Resources/vue-element-admin/lang/ja.js b/app/Modules/Admin/Resources/vue-element-admin/lang/ja.js index bbd4fb4..7629bc6 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/lang/ja.js +++ b/app/Modules/Admin/Resources/vue-element-admin/lang/ja.js @@ -3,8 +3,11 @@ export default { admin: '管理者', banner: 'Banner', article: '文章', + friendlinks: '友情链接', number: '数', route: { + articleLabels: '文章标签', + articleLabelDetail: '标签详情', systemSettings: 'システム設定', bannerManage: 'Banner管理', permissionManage: '権限管理', diff --git a/app/Modules/Admin/Resources/vue-element-admin/lang/zh.js b/app/Modules/Admin/Resources/vue-element-admin/lang/zh.js index afbb583..99d2ecb 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/lang/zh.js +++ b/app/Modules/Admin/Resources/vue-element-admin/lang/zh.js @@ -2,8 +2,11 @@ export default { admin: '管理员', banner: 'Banner', article: '文章', + friendlinks: '友情链接', number: '数量', route: { + articleLabels: '文章标签', + articleLabelDetail: '标签详情', systemSettings: '系统设置', bannerManage: 'Banner管理', permissionManage: '权限管理', diff --git a/app/Modules/Admin/Resources/vue-element-admin/layout/components/Navbar.vue b/app/Modules/Admin/Resources/vue-element-admin/layout/components/Navbar.vue index 0ec8f52..f90cac1 100644 --- a/app/Modules/Admin/Resources/vue-element-admin/layout/components/Navbar.vue +++ b/app/Modules/Admin/Resources/vue-element-admin/layout/components/Navbar.vue @@ -7,7 +7,6 @@