| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 | <?phpnamespace app\admin\model;use think\Model;class User extends Model{            // 表名    protected $name = 'user';        // 自动写入时间戳字段    protected $autoWriteTimestamp = 'int';    // 定义时间戳字段名    protected $createTime = 'createtime';    protected $updateTime = 'updatetime';    protected $deleteTime = false;    // 追加属性    protected $append = [        'real_status_text',        'gender_text',        'idcard_status_text',        'prevtime_text',        'logintime_text',        'jointime_text',        'status_text',        'open_match_video_text',        'open_match_audio_text',        'open_match_typing_text',        'free_video_text',        'free_audio_text',        'free_typing_text'    ];    protected static function init()    {        self::beforeUpdate(function ($row) {            $changed = $row->getChangedData();            //如果有修改密码            if (isset($changed['password'])) {                if ($changed['password']) {                    $salt = \fast\Random::alnum();                    $row->password = \app\common\library\Auth::instance()->getEncryptPassword($changed['password'], $salt);                    $row->salt = $salt;                } else {                    unset($row->password);                }            }            //手机去重            if (isset($changed['mobile'])) {                if($changed['mobile']){                    $exists = db('user')->where('mobile', $changed['mobile'])->where('id', '<>', $row->id)->find();                    if ($exists) {                        abort(500,'手机号已经被使用');                    }                }            }        });        self::beforeInsert(function ($row){            if (isset($row['password'])) {                if ($row['password']) {                    $salt = \fast\Random::alnum();                    $row->password = \app\common\library\Auth::instance()->getEncryptPassword($row['password'], $salt);                    $row->salt = $salt;                } else {                    unset($row->password);                }            }            //判断用户名,手机号重复            /*if($row['username']){                $exists = db('user')->where('username', $row['username'])->find();                if ($exists) {                    abort(500,'用户名已经被使用');                }            }else{                abort(500,'用户名不能为空');            }*/            if($row['mobile']){                $exists = db('user')->where('mobile', $row['mobile'])->find();                if ($exists) {                    abort(500,'手机号已经被使用');                }            }else{                abort(500,'手机号不能为空');            }            //判断用户名,手机号重复        });        self::afterInsert(function ($row){            $data = [                'user_id' => $row['id'],            ];            db('user_wallet')->insertGetId($data);            $username = 'u' . (10000 + $row['id']);            db('user')->where('id',$row['id'])->update(['username'=>$username]);        });    }        public function getRealStatusList()    {        return ['-1' => __('Real_status -1'), '0' => __('Real_status 0'), '1' => __('Real_status 1'), '2' => __('Real_status 2')];    }    public function getGenderList()    {        return ['1' => __('Gender 1'), '0' => __('Gender 0')];    }    public function getIdcardStatusList()    {        return ['-1' => __('Idcard_status -1'), '0' => __('Idcard_status 0'), '1' => __('Idcard_status 1'), '2' => __('Idcard_status 2')];    }    public function getStatusList()    {        return ['1' => __('Status 1'), '0' => __('Status 0')];    }    public function getOpenMatchVideoList()    {        return ['1' => __('Open_match_video 1'), '0' => __('Open_match_video 0')];    }    public function getOpenMatchAudioList()    {        return ['1' => __('Open_match_audio 1'), '0' => __('Open_match_audio 0')];    }    public function getOpenMatchTypingList()    {        return ['1' => __('Open_match_typing 1'), '0' => __('Open_match_typing 0')];    }    public function getFreeVideoList()    {        return ['1' => __('Free_video 1'), '0' => __('Free_video 0')];    }    public function getFreeAudioList()    {        return ['1' => __('Free_audio 1'), '0' => __('Free_audio 0')];    }    public function getFreeTypingList()    {        return ['1' => __('Free_typing 1'), '0' => __('Free_typing 0')];    }    public function getRealStatusTextAttr($value, $data)    {        $value = $value ? $value : (isset($data['real_status']) ? $data['real_status'] : '');        $list = $this->getRealStatusList();        return isset($list[$value]) ? $list[$value] : '';    }    public function getGenderTextAttr($value, $data)    {        $value = $value ? $value : (isset($data['gender']) ? $data['gender'] : '');        $list = $this->getGenderList();        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] : '';    }    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 getOpenMatchVideoTextAttr($value, $data)    {        $value = $value ? $value : (isset($data['open_match_video']) ? $data['open_match_video'] : '');        $list = $this->getOpenMatchVideoList();        return isset($list[$value]) ? $list[$value] : '';    }    public function getOpenMatchAudioTextAttr($value, $data)    {        $value = $value ? $value : (isset($data['open_match_audio']) ? $data['open_match_audio'] : '');        $list = $this->getOpenMatchAudioList();        return isset($list[$value]) ? $list[$value] : '';    }    public function getOpenMatchTypingTextAttr($value, $data)    {        $value = $value ? $value : (isset($data['open_match_typing']) ? $data['open_match_typing'] : '');        $list = $this->getOpenMatchTypingList();        return isset($list[$value]) ? $list[$value] : '';    }    public function getFreeVideoTextAttr($value, $data)    {        $value = $value ? $value : (isset($data['free_video']) ? $data['free_video'] : '');        $list = $this->getFreeVideoList();        return isset($list[$value]) ? $list[$value] : '';    }    public function getFreeAudioTextAttr($value, $data)    {        $value = $value ? $value : (isset($data['free_audio']) ? $data['free_audio'] : '');        $list = $this->getFreeAudioList();        return isset($list[$value]) ? $list[$value] : '';    }    public function getFreeTypingTextAttr($value, $data)    {        $value = $value ? $value : (isset($data['free_typing']) ? $data['free_typing'] : '');        $list = $this->getFreeTypingList();        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 gonghui()    {        return $this->belongsTo('Gonghui', 'gh_id', 'id', [], 'LEFT')->setEagerlyType(0);    }}
 |