gorden 1 anno fa
parent
commit
30f2645d6c

+ 109 - 0
app/admin/controller/sys_manage/Config.php

@@ -0,0 +1,109 @@
+<?php
+
+namespace app\admin\controller\sys_manage;
+
+use app\admin\service\sys_manage\ConfigService;
+use app\admin\validate\sys_manage\ConfigValidate;
+use support\Request;
+
+class Config
+{
+    /**
+     * @Desc 配置列表
+     * @Author Gorden
+     * @Date 2024/2/22 16:35
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function configList(Request $request)
+    {
+        $page = $request->get('page', 1);
+        $limit = $request->get('limit', 10);
+        $keywords = $request->get('keywords', '');
+
+        return ConfigService::configList($page, $limit, $keywords);
+    }
+
+    /**
+     * @Desc 配置详情
+     * @Author Gorden
+     * @Date 2024/2/22 16:36
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public function configInfo($id)
+    {
+        return ConfigService::configInfo($id);
+    }
+
+    /**
+     * @Desc 添加配置
+     * @Author Gorden
+     * @Date 2024/2/22 15:57
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function addConfig(Request $request)
+    {
+        $validate = new ConfigValidate();
+        if (!$validate->scene('add')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return ConfigService::addConfig($request->post());
+    }
+
+    /**
+     * @Desc 修改配置
+     * @Author Gorden
+     * @Date 2024/2/22 16:24
+     *
+     * @param $id
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function updateConfig($id, Request $request)
+    {
+        $validate = new ConfigValidate();
+        if (!$validate->scene('update')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return ConfigService::updateConfig($id, $request->post());
+    }
+
+    /**
+     * @Desc 修改配置状态
+     * @Author Gorden
+     * @Date 2024/2/22 16:38
+     *
+     * @param $id
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function updateStatus($id, Request $request)
+    {
+        $validate = new ConfigValidate();
+        if (!$validate->scene('update_status')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return ConfigService::updateStatus($id, $request->post());
+    }
+
+    /**
+     * @Desc 删除配置
+     * @Author Gorden
+     * @Date 2024/2/22 16:39
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public function delConfig($id)
+    {
+        return ConfigService::delConfig($id);
+    }
+}

+ 140 - 0
app/admin/service/sys_manage/ConfigService.php

@@ -0,0 +1,140 @@
+<?php
+
+namespace app\admin\service\sys_manage;
+
+use app\model\SysConfig;
+
+class ConfigService
+{
+    public static function configList($page, $limit, $keywords)
+    {
+        $list = SysConfig::select('*')
+            ->when($keywords != '', function ($query) use ($keywords) {
+                $query->where('config_name', 'like', '%' . $keywords . '%');
+            })
+            ->orderBy('config_addtimes', 'DESC')
+            ->forPage($page, $limit)
+            ->get()
+            ->toArray();
+        $count = SysConfig::when($keywords != '', function ($query) use ($keywords) {
+            $query->where('config_name', 'like', '%' . $keywords . '%');
+        })->count();
+
+        return json_success('', compact('list', 'page', 'limit', 'count'));
+    }
+
+    public static function configInfo($id)
+    {
+        $config = SysConfig::where('config_id', $id)->first();
+        if (!$config) {
+            return json_fail('配置不存在');
+        }
+
+        return json_success('', $config->toArray());
+    }
+
+    /**
+     * @Desc 添加配置
+     * @Author Gorden
+     * @Date 2024/2/22 15:57
+     *
+     * @param $params
+     * @return \support\Response
+     */
+    public static function addConfig($params)
+    {
+        try {
+            $data = [
+                'config_status' => $params['config_status'],
+                'config_category' => $params['config_category'],
+                'config_key' => $params['config_key'],
+                'config_name' => $params['config_name'],
+                'config_alias' => $params['config_alias'],
+                'config_value' => $params['config_value'],
+                'config_value_json' => !empty($params['config_value_json']) ? $params['config_value_json'] : '{}',
+                'config_sort' => $params['config_sort'],
+                'config_groupby' => $params['config_groupby'],
+                'config_remark' => format_string($params['config_remark']),
+                'config_extend_json' => !empty($params['config_extend_json']) ? $params['config_extend_json'] : '{}',
+                'config_addtimes' => time()
+            ];
+
+            SysConfig::insert($data);
+        } catch (\Exception $e) {
+            return json_fail('添加配置失败');
+        }
+
+        return json_success('添加配置成功');
+    }
+
+    /**
+     * @Desc 修改配置
+     * @Author Gorden
+     * @Date 2024/2/22 16:24
+     *
+     * @param $id
+     * @param $params
+     * @return \support\Response
+     */
+    public static function updateConfig($id, $params)
+    {
+        try {
+            $data = [
+                'config_category' => $params['config_category'],
+                'config_key' => $params['config_key'],
+                'config_name' => $params['config_name'],
+                'config_alias' => $params['config_alias'],
+                'config_value' => $params['config_value'],
+                'config_value_json' => !empty($params['config_value_json']) ? $params['config_value_json'] : '{}',
+                'config_sort' => $params['config_sort'],
+                'config_groupby' => $params['config_groupby'],
+                'config_remark' => format_string($params['config_remark']),
+                'config_extend_json' => !empty($params['config_extend_json']) ? $params['config_extend_json'] : '{}',
+            ];
+            SysConfig::where('config_id', $id)->update($data);
+        } catch (\Exception $e) {
+            return json_fail('修改配置失败');
+        }
+
+        return json_success('修改配置成功');
+    }
+
+    /**
+     * @Desc 配置修改
+     * @Author Gorden
+     * @Date 2024/2/22 16:38
+     *
+     * @param $id
+     * @param $params
+     * @return \support\Response
+     */
+    public static function updateStatus($id, $params)
+    {
+        try {
+            SysConfig::where('config_id', $id)->update(['config_status' => $params['config_status']]);
+        } catch (\Exception $e) {
+            return json_fail('配置状态修改失败');
+        }
+
+        return json_success('配置状态修改成功');
+    }
+
+    /**
+     * @Desc 删除字段
+     * @Author Gorden
+     * @Date 2024/2/22 15:08
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public static function delConfig($id)
+    {
+        try {
+            SysConfig::where('config_id', $id)->delete();
+        } catch (\Exception $e) {
+            return json_fail('配置删除失败');
+        }
+
+        return json_success('配置删除成功');
+    }
+}

+ 37 - 0
app/admin/validate/sys_manage/ConfigValidate.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace app\admin\validate\sys_manage;
+
+use think\Validate;
+
+class ConfigValidate extends Validate
+{
+    protected $rule = [
+        'config_status' => 'require|in:ACTIVED,DISABLED',
+        'config_category' => 'require|in:SYSTEM,APP',
+        'config_key' => 'require|alphaDash',
+        'config_name' => 'chsDash',
+        'config_alias' => 'chsDash',
+        'config_value_json' => 'isJson',
+        'config_sort' => 'integer',
+        'config_groupby' => 'chsDash',
+        'config_extend_json' => 'isJson'
+    ];
+
+    protected $message = [];
+
+    protected $scene = [
+        'add' => ['config_status', 'config_category', 'config_key', 'config_name', 'config_alias', 'config_value_json', 'config_sort', 'config_groupby', 'config_extend_json'],
+        'update' => ['config_category', 'config_key', 'config_name', 'config_alias', 'config_value_json', 'config_sort', 'config_groupby', 'config_extend_json'],
+        'update_status' => ['config_status']
+    ];
+
+    protected function isJson($value)
+    {
+        if (is_json($value)) {
+            return true;
+        }
+
+        return '数据格式错误~';
+    }
+}

+ 2 - 7
app/admin/validate/sys_manage/FieldValidate.php

@@ -40,15 +40,10 @@ class FieldValidate extends Validate
      */
     protected function isJson($value)
     {
-        if (!is_string($value)) {
-            return '数据格式错误~';
-        }
-        json_decode($value);
-        if (json_last_error() === JSON_ERROR_NONE) {
+        if (is_json($value)){
             return true;
         }
-        return '数据格式错误~';
-
 
+        return '数据格式错误~';
     }
 }

+ 14 - 0
app/model/SysConfig.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace app\model;
+
+use support\Model;
+
+class SysConfig extends Model
+{
+    public $table = 'sys_config';
+
+    public $primaryKey = 'config_id';
+
+    public const UPDATED_AT = null;
+}

+ 11 - 0
route/api.php

@@ -62,6 +62,7 @@ Route::group('/admin', function () {
             \app\middleware\AdminAuthCheck::class
         ]);
 
+        /* 字段管理 */
         Route::group('/field', function () {
             Route::get('/list', [\app\admin\controller\sys_manage\Field::class, 'fieldList']);
             Route::get('/info/{id:\d+}', [\app\admin\controller\sys_manage\Field::class, 'fieldInfo']);
@@ -70,5 +71,15 @@ Route::group('/admin', function () {
             Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\Field::class, 'updateStatus']);
             Route::delete('/delete/{id:\d+}', [\app\admin\controller\sys_manage\Field::class, 'delField']);
         });
+
+        /* 配置管理 */
+        Route::group('/config', function () {
+            Route::get('/list', [\app\admin\controller\sys_manage\Config::class, 'configList']);
+            Route::get('/info/{id:\d+}', [\app\admin\controller\sys_manage\Config::class, 'configInfo']);
+            Route::post('/add', [\app\admin\controller\sys_manage\Config::class, 'addConfig']);
+            Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\Config::class, 'updateConfig']);
+            Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\Config::class, 'updateStatus']);
+            Route::delete('/delete/{id:\d+}', [\app\admin\controller\sys_manage\Config::class, 'delConfig']);
+        });
     });
 });

+ 20 - 0
support/helpers.php

@@ -581,3 +581,23 @@ function random_string($length, $type = 'all')
 
     return $return;
 }
+
+/**
+ * @Desc 验证是否是json数据
+ * @Author Gorden
+ * @Date 2024/2/22 15:37
+ *
+ * @param $string
+ * @return bool
+ */
+function is_json($string)
+{
+    if (!is_string($string)) {
+        return false;
+    }
+    json_decode($string);
+    if (json_last_error() === JSON_ERROR_NONE) {
+        return true;
+    }
+    return false;
+}