From ed35d06208ce6da5ce865bb99ebe252e92d8399a Mon Sep 17 00:00:00 2001 From: tensent Date: Sat, 9 May 2020 17:52:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/api/Base.php | 8 ++-- app/http/middleware/ApiAuth.php | 4 +- app/http/middleware/Validate.php | 2 +- app/model/Attribute.php | 66 ++++++++++++++++---------------- app/model/Member.php | 27 ++++++++++--- extend/com/Datatable.php | 4 +- 6 files changed, 64 insertions(+), 47 deletions(-) diff --git a/app/controller/api/Base.php b/app/controller/api/Base.php index f18f4f5a..15444421 100644 --- a/app/controller/api/Base.php +++ b/app/controller/api/Base.php @@ -45,15 +45,15 @@ class Base { protected function success($msg, $url = '') { $this->data['code'] = 1; - $this->data['msg'] = $msg; - $this->data['url'] = $url ? $url->__toString() : ''; + $this->data['msg'] = $msg; + $this->data['url'] = $url ? $url->__toString() : ''; return $this->data; } protected function error($msg, $url = '') { $this->data['code'] = 0; - $this->data['msg'] = $msg; - $this->data['url'] = $url ? $url->__toString() : ''; + $this->data['msg'] = $msg; + $this->data['url'] = $url ? $url->__toString() : ''; return $this->data; } } \ No newline at end of file diff --git a/app/http/middleware/ApiAuth.php b/app/http/middleware/ApiAuth.php index f7d01cb4..a5a55287 100644 --- a/app/http/middleware/ApiAuth.php +++ b/app/http/middleware/ApiAuth.php @@ -34,11 +34,11 @@ class ApiAuth { } catch (TokenExpiredException $e) { $this->data['msg'] = $e->getMessage(); $this->data['code'] = 2001; - return json($this->data)->code($this->data['code']); + return json($this->data); } catch (JWTException $e) { $this->data['code'] = 2000; $this->data['msg'] = $e->getMessage(); - return json($this->data)->code($this->data['code']); + return json($this->data); } return $next($request); diff --git a/app/http/middleware/Validate.php b/app/http/middleware/Validate.php index 683958bb..08bebdc1 100755 --- a/app/http/middleware/Validate.php +++ b/app/http/middleware/Validate.php @@ -31,7 +31,7 @@ class Validate { $scene = strtolower($controller[0]) . $request->action(); $validate = "app\\http\\validate\\" . ucfirst($controller[1]); //仅当验证器存在时 进行校验 - if (class_exists($validate) && (strtolower($controller[0]) == 'admin' && $request->isPost())) { + if (class_exists($validate) && $request->isPost()) { $v = new $validate; //仅当存在验证场景才校验 if ($v->hasScene($scene)) { diff --git a/app/model/Attribute.php b/app/model/Attribute.php index a6875b11..a0391ce2 100644 --- a/app/model/Attribute.php +++ b/app/model/Attribute.php @@ -8,10 +8,10 @@ // +---------------------------------------------------------------------- namespace app\model; -use app\model\Model as Models; -use sent\tree\Tree; use think\facade\Config; use think\facade\Db; +use sent\tree\Tree; +use app\model\Model as Models; /** * 设置模型 @@ -25,7 +25,7 @@ class Attribute extends \think\Model { /** * @title 新增后事件 */ - protected static function onAfterInsert($data) { + protected static function onAfterInsert($data){ $data = $data->toArray(); if ($data['model_id']) { $db = new \com\Datatable(); @@ -38,7 +38,7 @@ class Attribute extends \think\Model { /** * @title 更新后事件 */ - protected static function onAfterUpdate($data) { + protected static function onAfterUpdate($data){ $data = $data->toArray(); if (isset($data['model_id']) && isset($data['name'])) { $tablename = Models::where('id', $data['model_id'])->value('name'); @@ -50,7 +50,7 @@ class Attribute extends \think\Model { $data['after'] = self::where('name', '<>', $data['name'])->where('model_id', $data['model_id'])->order('sort asc, id asc')->value('name'); $result = $db->columField(strtolower($tablename), $data)->query(); return $result; - } else { + }else{ return false; } } @@ -58,7 +58,7 @@ class Attribute extends \think\Model { /** * @title 删除后事件 */ - protected static function onAfterDelete($data) { + protected static function onAfterDelete($data){ $data = $data->toArray(); if ($data['model_id']) { $tablename = Models::where('id', $data['model_id'])->value('name'); @@ -67,11 +67,11 @@ class Attribute extends \think\Model { $db = new \com\Datatable(); if (!$db->CheckField($tablename, $data['name'])) { $result = true; - } else { + }else{ $result = $db->delField($tablename, $data['name'])->query(); } return $result; - } else { + }else{ return false; } } @@ -85,7 +85,7 @@ class Attribute extends \think\Model { return isset($type[$data['type']]) ? $type[$data['type']] : ''; } - protected function getOptionAttr($value, $data) { + protected function getOptionAttr($value, $data){ $list = []; if ($data == '') { return $list; @@ -96,13 +96,13 @@ class Attribute extends \think\Model { if (strrpos($val, ":")) { list($key, $label) = explode(":", $val); $list[] = ['key' => $key, 'label' => $label]; - } else { + }else{ $list[] = ['key' => $k, 'label' => $val]; } } - } elseif ($data['type'] == 'bool') { - $list = [['key' => 0, 'label' => '禁用'], ['key' => 1, 'label' => '启用']]; - } elseif ($data['type'] == 'bind') { + }elseif($data['type'] == 'bool'){ + $list = [['key'=>0,'label'=>'禁用'],['key'=>1,'label'=>'启用']]; + }elseif($data['type'] == 'bind'){ $map = []; $db = new \com\Datatable(); if (strrpos($data['extra'], ":")) { @@ -110,34 +110,34 @@ class Attribute extends \think\Model { if ($db->CheckField($extra[0], 'model_id')) { $map[] = ['model_id', '=', $data['model_id']]; } - $row = Db::name($extra[0])->where($map)->select()->toArray(); - if (empty($row)) { + $row = Db::name($extra[0])->where($map)->select()->toArray(); + if(empty($row)){ return []; } if ($extra[1] == 'tree') { $row = (new Tree())->toFormatTree($row); foreach ($row as $val) { - $list[] = ['key' => $val['id'], 'label' => $val['title_show']]; + $list[] = ['key'=>$val['id'], 'label'=>$val['title_show']]; } - } else { + }else{ foreach ($row as $val) { - $list[] = ['key' => $val['id'], 'label' => $val['title']]; + $list[] = ['key'=>$val['id'], 'label'=>$val['title']]; } } - } else { + }else{ if ($db->CheckField($data['extra'], 'model_id')) { $map[] = ['model_id', '=', $data['model_id']]; } - $row = Db::name($data['extra'])->where($map)->select()->toArray(); + $row = Db::name($data['extra'])->select($map)->toArray(); foreach ($row as $val) { - $list[] = ['key' => $val['id'], 'label' => $val['title']]; + $list[] = ['key'=>$val['id'], 'label'=>$val['title']]; } } } return $list; } - public static function getField($model, $ac = "add") { + public static function getField($model, $ac = "add"){ $list = []; $group = $model['attr_group']; @@ -145,7 +145,7 @@ class Attribute extends \think\Model { $map[] = ['model_id', '=', $model['id']]; if ($ac == 'add') { $map[] = ['is_show', 'IN', [1, 2]]; - } else if ($ac == 'edit') { + }else if ($ac == 'edit') { $map[] = ['is_show', 'IN', [1, 3]]; } @@ -156,7 +156,7 @@ class Attribute extends \think\Model { foreach ($row as $key => $value) { if (isset($group[$value['group_id']])) { $list[$group[$value['group_id']]['label']][] = $value; - } else { + }else{ $list[$value['group_id']][] = $value; } } @@ -164,26 +164,26 @@ class Attribute extends \think\Model { return $list; } - public static function getfieldList() { + public static function getfieldList(){ $config = \think\facade\Cache::get('system_config_data'); - $time = [['key' => 1, 'label' => '新增'], ['key' => 2, 'label' => '编辑'], ['key' => 3, 'label' => '始终']]; - $auto_type = [['key' => 'function', 'label' => '函数'], ['key' => 'field', 'label' => '字段'], ['key' => 'string', 'label' => '字符串']]; - $validate_type = [['key' => 'thinkphp', 'label' => 'thinkphp内置'], ['key' => 'regex', 'label' => '正则验证']]; + $time = [['key'=>1, 'label'=>'新增'],['key'=>2, 'label'=>'编辑'],['key'=>3, 'label'=>'始终']]; + $auto_type = [['key'=>'function', 'label'=>'函数'],['key'=>'field', 'label'=>'字段'],['key'=>'string', 'label'=>'字符串']]; + $validate_type = [['key'=>'thinkphp', 'label'=>'thinkphp内置'],['key'=>'regex', 'label'=>'正则验证']]; return [ '基础' => [ ['name' => 'id', 'title' => 'id', 'help' => '', 'type' => 'hidden'], ['name' => 'model_id', 'title' => 'model_id', 'help' => '', 'type' => 'hidden'], - ['name' => 'name', 'title' => '字段名', 'help' => '英文字母开头,长度不超过30', 'is_must' => true, 'type' => 'text'], - ['name' => 'title', 'title' => '字段标题', 'help' => '请输入字段标题,用于表单显示', 'is_must' => true, 'type' => 'text'], + ['name' => 'name', 'title' => '字段名', 'help' => '英文字母开头,长度不超过30', 'is_must'=> true, 'type' => 'text'], + ['name' => 'title', 'title' => '字段标题', 'help' => '请输入字段标题,用于表单显示', 'is_must'=> true, 'type' => 'text'], ['name' => 'type', 'title' => '字段类型', 'help' => '用于表单中的展示方式', 'type' => 'select', 'option' => $config['config_type_list'], 'help' => ''], ['name' => 'length', 'title' => '字段长度', 'help' => '字段的长度值', 'type' => 'text'], ['name' => 'extra', 'title' => '参数', 'help' => '布尔、枚举、多选字段类型的定义数据', 'type' => 'textarea'], ['name' => 'value', 'title' => '默认值', 'help' => '字段的默认值', 'type' => 'text'], ['name' => 'remark', 'title' => '字段备注', 'help' => '用于表单中的提示', 'type' => 'text'], ['name' => 'is_show', 'title' => '是否显示', 'help' => '是否显示在表单中', 'type' => 'select', 'option' => [ - ['key' => '1', 'label' => '始终显示'], ['key' => '2', 'label' => '新增显示'], ['key' => '3', 'label' => '编辑显示'], ['key' => '0', 'label' => '不显示'], - ], 'value' => 1], - ['name' => 'is_must', 'title' => '是否必填', 'help' => '用于自动验证', 'type' => 'select', 'option' => [['key' => '0', 'label' => '否'], ['key' => '1', 'label' => '是']]], + ['key'=>'1', 'label' => '始终显示'], ['key'=>'2', 'label' => '新增显示'], ['key'=>'3', 'label' => '编辑显示'], ['key'=>'0', 'label' => '不显示'] + ], 'value' => 1], + ['name' => 'is_must', 'title' => '是否必填', 'help' => '用于自动验证', 'type' => 'select', 'option' => [['key'=>'0', 'label' => '否'], ['key'=>'1', 'label' => '是']]], ], '高级' => [ // ['name' => 'validate_type', 'title' => '验证方式', 'type' => 'select', 'option' => $validate_type, 'help' => ''], diff --git a/app/model/Member.php b/app/model/Member.php index 0fcf7780..d397537e 100644 --- a/app/model/Member.php +++ b/app/model/Member.php @@ -74,7 +74,7 @@ class Member extends Model { } protected function getAvatarAttr($value, $data) { - return avatar($data['uid']); + return $value ? $value : request()->domain() . '/static/common/images/default_avatar.jpg'; } protected function setPasswordAttr($value, $data) { @@ -90,6 +90,10 @@ class Member extends Model { return JWTAuth::builder($token); //参数为用户认证的信息,请自行添加 } + protected function getNicknameAttr($value, $data){ + return $value ? $value : $data['username']; + } + /** * 用户登录 */ @@ -191,17 +195,26 @@ class Member extends Model { }]; } - $list = self::with(['role'])->field('uid,username,nickname,status,email,mobile,department,reg_time')->where($map)->order($order)->paginate($request->pageConfig); - return $list->append(['avatar', 'status_text']); + $res = self::with(['role', 'group'])->field('uid,username,nickname,status,email,mobile,department,reg_time')->where($map)->order($order)->paginate($request->pageConfig); + $list = $res->append(['avatar', 'status_text'])->each(function($item){ + if($item['group'] === null){ + $item['group'] = ['title' => '未定义']; + $item['group_title'] = '未定义'; + }else{ + $item['group_title'] = $item['group']['title']; + } + return $item; + }); + return $list; } /** * @title: 获取用户列表 */ public function getUserDetail($request) { - $uid = $request->param('uid', $request->user['uid']); + $uid = $request->param('uid'); if (!$uid) { - return false; + $uid = $request->user['uid']; } $info = $this->where('uid', $uid)->find(); @@ -255,4 +268,8 @@ class Member extends Model { public function role() { return $this->hasOne('RoleAccess', 'uid', 'uid'); } + + public function group(){ + return $this->hasOneThrough(AuthGroup::class, AuthGroupAccess::class, 'uid', 'id', 'uid', 'group_id'); + } } \ No newline at end of file diff --git a/extend/com/Datatable.php b/extend/com/Datatable.php index cb0b3f15..4fc18111 100644 --- a/extend/com/Datatable.php +++ b/extend/com/Datatable.php @@ -114,8 +114,8 @@ class Datatable { } else { $field_attr['length'] = ""; } - $field_attr['is_null'] = $attr['is_must'] ? 'NOT NULL' : 'NULL'; - $field_attr['default'] = $attr['value'] != '' ? 'DEFAULT "' . $attr['value'] . '"' : ''; + $field_attr['is_null'] = (isset($attr['is_must']) && $attr['is_must']) ? 'NOT NULL' : 'NULL'; + $field_attr['default'] = (isset($attr['is_must']) && $attr['is_must'] !== '') ? 'DEFAULT "' . $attr['value'] . '"' : ''; $field_attr['comment'] = (isset($attr['remark']) && $attr['remark']) ? $attr['remark'] : $attr['title']; $field_attr['after'] = (isset($attr['after']) && $attr['after']) ? ' AFTER `' . $attr['after'] . '`' : ' AFTER `id`';