gorden 1 éve
szülő
commit
09eff0e79f

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

@@ -0,0 +1,109 @@
+<?php
+
+namespace app\admin\controller\sys_manage;
+
+use app\admin\service\sys_manage\FieldService;
+use app\admin\validate\sys_manage\FieldValidate;
+use support\Request;
+
+class Field
+{
+    /**
+     * @Desc 字段列表
+     * @Author Gorden
+     * @Date 2024/2/22 14:49
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function fieldList(Request $request)
+    {
+        $page = $request->get('page', 1);
+        $limit = $request->get('limit', 10);
+        $keywords = $request->get('keywords', '');
+
+        return FieldService::fieldList($page, $limit, $keywords);
+    }
+
+    /**
+     * @Desc 字段详情
+     * @Author Gorden
+     * @Date 2024/2/22 14:54
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public function fieldInfo($id)
+    {
+        return FieldService::fieldInfo($id);
+    }
+
+    /**
+     * @Desc 新建字段
+     * @Author Gorden
+     * @Date 2024/2/22 14:32
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function addField(Request $request)
+    {
+        $validate = new FieldValidate();
+        if (!$validate->scene('add')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return FieldService::addField($request->post());
+    }
+
+    /**
+     * @Desc 修改字段
+     * @Author Gorden
+     * @Date 2024/2/22 14:41
+     *
+     * @param $id
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function updateField($id, Request $request)
+    {
+        $validate = new FieldValidate();
+        if (!$validate->scene('update')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return FieldService::updateField($id, $request->post());
+    }
+
+    /**
+     * @Desc 修改字段状态
+     * @Author Gorden
+     * @Date 2024/2/22 15:05
+     *
+     * @param $id
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function updateStatus($id, Request $request)
+    {
+        $validate = new FieldValidate();
+        if (!$validate->scene('update_status')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return FieldService::updateStatus($id, $request->post());
+    }
+
+    /**
+     * @Desc 删除字段
+     * @Author Gorden
+     * @Date 2024/2/22 15:08
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public function delField($id)
+    {
+        return FieldService::delField($id);
+    }
+}

+ 162 - 0
app/admin/service/sys_manage/FieldService.php

@@ -0,0 +1,162 @@
+<?php
+
+namespace app\admin\service\sys_manage;
+
+use app\model\SysField;
+
+class FieldService
+{
+    /**
+     * @Desc 字段列表
+     * @Author Gorden
+     * @Date 2024/2/22 14:49
+     *
+     * @param $page
+     * @param $limit
+     * @param $keywords
+     * @return \support\Response
+     */
+    public static function fieldList($page, $limit, $keywords)
+    {
+        $list = SysField::select('*')
+            ->when($keywords != '', function ($query) use ($keywords) {
+                $query->where('field_name', 'like', '%' . $keywords . '%');
+            })
+            ->orderBy('field_addtimes', 'DESC')
+            ->forPage($page, $limit)
+            ->get()
+            ->toArray();
+        $count = SysField::when($keywords != '', function ($query) use ($keywords) {
+            $query->where('field_name', 'like', '%' . $keywords . '%');
+        })->count();
+
+        return json_success('', compact('list', 'page', 'limit', 'count'));
+    }
+
+    /**
+     * @Desc 字段详情
+     * @Author Gorden
+     * @Date 2024/2/22 14:55
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public static function fieldInfo($id)
+    {
+        $field = SysField::where('field_id', $id)->first();
+        if (!$field) {
+            return json_fail('字段不存在');
+        }
+
+        return json_success('', $field->toArray());
+    }
+
+    /**
+     * @Desc 新建字段
+     * @Author Gorden
+     * @Date 2024/2/22 14:31
+     *
+     * @param $params
+     * @return \support\Response
+     */
+    public static function addField($params)
+    {
+        try {
+            $data = [
+                'field_status' => $params['field_status'],
+                'field_category' => $params['field_category'],
+                'field_name' => $params['field_name'],
+                'field_table' => $params['field_table'],
+                'field_column_key' => $params['field_column_key'],
+                'field_column_datatype' => $params['field_column_datatype'],
+                'field_column_default' => $params['field_column_default'],
+                'field_form_key' => $params['field_form_key'],
+                'field_form_type' => $params['field_form_type'],
+                'field_form_default' => $params['field_form_default'],
+                'field_refer_json' => !!empty($params['field_refer_json']) ? $params['field_refer_json'] : '{}',
+                'field_remark' => $params['field_remark'],
+                'field_extend_json' => !empty($params['field_extend_json']) ? $params['field_extend_json'] : '{}',
+                'field_addtimes' => time()
+            ];
+            SysField::insert($data);
+        } catch (\Exception $e) {
+            return json_fail('创建字段失败');
+        }
+
+        return json_success('创建字段成功');
+    }
+
+    /**
+     * @Desc 修改字段
+     * @Author Gorden
+     * @Date 2024/2/22 14:40
+     *
+     * @param $id
+     * @param $params
+     * @return \support\Response
+     */
+    public static function updateField($id, $params)
+    {
+        try {
+            $data = [
+                'field_category' => $params['field_category'],
+                'field_name' => $params['field_name'],
+                'field_table' => $params['field_table'],
+                'field_column_key' => $params['field_column_key'],
+                'field_column_datatype' => $params['field_column_datatype'],
+                'field_column_default' => $params['field_column_default'],
+                'field_form_key' => $params['field_form_key'],
+                'field_form_type' => $params['field_form_type'],
+                'field_form_default' => $params['field_form_default'],
+                'field_refer_json' => !empty($params['field_refer_json']) ? $params['field_refer_json'] : '{}',
+                'field_remark' => $params['field_remark'],
+                'field_extend_json' => !empty($params['field_extend_json']) ? $params['field_extend_json'] : '{}'
+            ];
+
+            SysField::where('field_id', $id)->update($data);
+        } catch (\Exception $e) {
+            return json_fail('修改字段失败');
+        }
+
+        return json_success('修改字段成功');
+    }
+
+    /**
+     * @Desc 修改字段状态
+     * @Author Gorden
+     * @Date 2024/2/22 15:06
+     *
+     * @param $id
+     * @param $params
+     * @return \support\Response
+     */
+    public static function updateStatus($id, $params)
+    {
+        try {
+            SysField::where('field_id', $id)->update(['field_status' => $params['field_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 delField($id)
+    {
+        try {
+            SysField::where('field_id', $id)->delete();
+        } catch (\Exception $e) {
+            return json_fail('字段删除失败');
+        }
+
+        return json_success('字段删除成功');
+    }
+}

+ 54 - 0
app/admin/validate/sys_manage/FieldValidate.php

@@ -0,0 +1,54 @@
+<?php
+
+namespace app\admin\validate\sys_manage;
+
+use think\Validate;
+
+class FieldValidate extends Validate
+{
+    protected $rule = [
+        'field_status' => 'require|in:ACTIVED,DISABLED',
+        'field_category' => 'in:NORMAL,OTHER',
+        'field_name' => 'require|chsDash',
+        'field_table' => 'require|alphaDash',
+        'field_column_key' => 'alphaDash',
+        'field_column_datatype' => 'in:VARCHAR,DECIMAL,TEXT,DATE,DATETIME',
+//        'field_column_default' => 'chsDash',
+        'field_form_key' => 'in:id,name',
+        'field_form_type' => 'alphaDash',
+//        'field_form_default' => 'chsDash',
+        'field_refer_json' => 'isJson',
+//        'field_remark' => 'chsDash',
+        'field_extend_json' => 'isJson'
+    ];
+
+    protected $message = [];
+
+    protected $scene = [
+        'add' => ['field_status', 'field_category', 'field_name', 'field_table', 'field_column_key', 'field_column_datatype', 'field_form_key', 'field_form_type', 'field_refer_json', 'field_extend_json'],
+        'update' => ['field_category', 'field_name', 'field_table', 'field_column_key', 'field_column_datatype', 'field_form_key', 'field_form_type', 'field_refer_json', 'field_extend_json'],
+        'update_status' => ['field_status']
+    ];
+
+    /**
+     * @Desc 验证json
+     * @Author Gorden
+     * @Date 2024/2/22 14:09
+     *
+     * @param $value
+     * @return string|true
+     */
+    protected function isJson($value)
+    {
+        if (!is_string($value)) {
+            return '数据格式错误~';
+        }
+        json_decode($value);
+        if (json_last_error() === JSON_ERROR_NONE) {
+            return true;
+        }
+        return '数据格式错误~';
+
+
+    }
+}

+ 2 - 0
app/model/SysField.php

@@ -9,4 +9,6 @@ class SysField extends Model
     public $table = 'sys_field';
 
     public $primaryKey = 'field_id';
+
+    public const UPDATED_AT = null;
 }

+ 9 - 0
route/api.php

@@ -61,5 +61,14 @@ Route::group('/admin', function () {
         })->middleware([
             \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']);
+            Route::post('/add', [\app\admin\controller\sys_manage\Field::class, 'addField']);
+            Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\Field::class, 'updateField']);
+            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']);
+        });
     });
 });