<?php namespace app\admin\model; use think\Model; use think\Db; use fast\Tree; class User extends Model { // 表名 protected $table = 'user'; // 自动写入时间戳字段 protected $autoWriteTimestamp = 'integer'; // 定义时间戳字段名 protected $createTime = 'createtime'; protected $updateTime = 'updatetime'; protected $deleteTime = false; // 追加属性 protected $append = [ 'gender_text', 'prevtime_text', 'logintime_text', 'jointime_text', 'status_text', 'idcard_status_text' ]; public function getGenderList() { return ['1' => __('Gender 1'), '0' => __('Gender 0')]; } public function getStatusList() { return ['1' => __('Status 1'), '0' => __('Status 0'), '-1' => __('Status -1')]; } public function getIdcardStatusList() { return ['-1' => __('Idcard_status -1'), '0' => __('Idcard_status 0'), '1' => __('Idcard_status 1'), '2' => __('Idcard_status 2')]; } public function getGenderTextAttr($value, $data) { $value = $value ? $value : (isset($data['gender']) ? $data['gender'] : ''); $list = $this->getGenderList(); return isset($list[$value]) ? $list[$value] : ''; } public function getPrevtimeTextAttr($value, $data) { $value = $value ? $value : (isset($data['prevtime']) ? $data['prevtime'] : ''); return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } public function getLogintimeTextAttr($value, $data) { $value = $value ? $value : (isset($data['logintime']) ? $data['logintime'] : ''); return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } public function getJointimeTextAttr($value, $data) { $value = $value ? $value : (isset($data['jointime']) ? $data['jointime'] : ''); return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } public function getStatusTextAttr($value, $data) { $value = $value ? $value : (isset($data['status']) ? $data['status'] : ''); $list = $this->getStatusList(); return isset($list[$value]) ? $list[$value] : ''; } public function getIdcardStatusTextAttr($value, $data) { $value = $value ? $value : (isset($data['idcard_status']) ? $data['idcard_status'] : ''); $list = $this->getIdcardStatusList(); return isset($list[$value]) ? $list[$value] : ''; } protected function setPrevtimeAttr($value) { return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value); } protected function setLogintimeAttr($value) { return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value); } protected function setJointimeAttr($value) { return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value); } public function gangwei() { return $this->belongsTo('app\admin\model\user\Gangwei', 'gangwei_id', 'id', [], 'LEFT')->setEagerlyType(0); } public function jigou() { return $this->belongsTo('app\admin\model\user\Jigou', 'jigou_id', 'id', [], 'LEFT')->setEagerlyType(0); } public static function getTreeList($selected = []) { //用户列表,重置id,防止和岗位表的id重复 $userlist = Db::name('user')->field('id,gangwei_id as pid,nickname as name')->select(); foreach($userlist as $key => $user){ $userlist[$key]['id'] = 'u_'.$user['id']; $userlist[$key]['spacer'] = ''; $userlist[$key]['haschild'] = 0; } //岗位树 $ruleList = Db::name('user_gangwei')->field('id,pid,name')->select(); Tree::instance()->init($ruleList); Tree::instance()->icon = ['','','']; Tree::instance()->nbsp = ''; $ruleList = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0), 'name'); //修改haschild //拿到hasChildrens $hasChildrens = []; foreach ($ruleList as $k => $v) { foreach($userlist as $key => $user){ if($user['pid'] == $v['id']){ $v['haschild'] = 1; } } $ruleList[$k] = $v; if ($v['haschild']){ $hasChildrens[] = $v['id']; } } //合并 $ruleList = array_merge($ruleList,$userlist); //最终数据 $nodeList = []; foreach ($ruleList as $k => $v) { $state = array('selected' => in_array($v['id'], $selected) && !in_array($v['id'], $hasChildrens)); $nodeList[] = array('id' => $v['id'], 'parent' => $v['pid'] ? $v['pid'] : '#', 'text' => $v['name'], 'type' => 'menu', 'state' => $state); } return $nodeList; } }