123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- <?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;
- }
- }
|