|
@@ -0,0 +1,642 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace app\common\library;
|
|
|
+
|
|
|
+use app\common\model\Worker;
|
|
|
+use fast\Random;
|
|
|
+use think\Config;
|
|
|
+use think\Db;
|
|
|
+use think\Exception;
|
|
|
+use think\Hook;
|
|
|
+use think\Request;
|
|
|
+use think\Validate;
|
|
|
+
|
|
|
+class Authworker
|
|
|
+{
|
|
|
+ protected static $instance = null;
|
|
|
+ protected $_error = '';
|
|
|
+ protected $_logined = false;
|
|
|
+ protected $_user = null;
|
|
|
+ protected $_token = '';
|
|
|
+ //Token默认有效时长
|
|
|
+ protected $keeptime = 2592000;
|
|
|
+ protected $requestUri = '';
|
|
|
+ protected $rules = [];
|
|
|
+ //默认配置
|
|
|
+ protected $config = [];
|
|
|
+ protected $options = [];
|
|
|
+ protected $allowFields = [
|
|
|
+ 'id', 'ruletype', 'nickname', 'avatar', 'gender','mobile',
|
|
|
+ 'realname',
|
|
|
+ 'idcard',
|
|
|
+ 'idcard_z_image',
|
|
|
+ 'idcard_f_image',
|
|
|
+ 'idcard_status',
|
|
|
+ 'worker_image',
|
|
|
+ 'worker_status',
|
|
|
+ 'english_status',
|
|
|
+ 'keshi_id',
|
|
|
+ 'hospital',
|
|
|
+ 'goodat',
|
|
|
+ 'level_id',
|
|
|
+ 'info',
|
|
|
+ 'job_status'
|
|
|
+ ];
|
|
|
+
|
|
|
+
|
|
|
+ public function __construct($options = [])
|
|
|
+ {
|
|
|
+ if ($config = Config::get('worker')) {
|
|
|
+ $this->config = array_merge($this->config, $config);
|
|
|
+ }
|
|
|
+ $this->options = array_merge($this->config, $options);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param array $options 参数
|
|
|
+ * @return Auth
|
|
|
+ */
|
|
|
+ public static function instance($options = [])
|
|
|
+ {
|
|
|
+ if (is_null(self::$instance)) {
|
|
|
+ self::$instance = new static($options);
|
|
|
+ }
|
|
|
+
|
|
|
+ return self::$instance;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成不重复的随机数字字母组合
|
|
|
+ */
|
|
|
+ function getUinqueNo($length = 8, $nos = [])
|
|
|
+ {
|
|
|
+ $newid = Random::build("alnum", $length);
|
|
|
+ if (in_array($newid, $nos)) {
|
|
|
+ $newid = $this->getUinqueNo($length, $nos);
|
|
|
+ }
|
|
|
+ return $newid;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取User模型
|
|
|
+ * @return User
|
|
|
+ */
|
|
|
+ public function getUser()
|
|
|
+ {
|
|
|
+ return $this->_user;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 兼容调用user模型的属性
|
|
|
+ *
|
|
|
+ * @param string $name
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function __get($name)
|
|
|
+ {
|
|
|
+ return $this->_user ? $this->_user->$name : null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 兼容调用user模型的属性
|
|
|
+ */
|
|
|
+ public function __isset($name)
|
|
|
+ {
|
|
|
+ return isset($this->_user) ? isset($this->_user->$name) : false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据Token初始化
|
|
|
+ *
|
|
|
+ * @param string $token Token
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ public function init($token)
|
|
|
+ {
|
|
|
+ if ($this->_logined) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ if ($this->_error) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $data = Tokenworker::get($token);
|
|
|
+ if (!$data) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $user_id = intval($data['user_id']);
|
|
|
+ if ($user_id > 0) {
|
|
|
+ $user = Worker::get($user_id);
|
|
|
+ if (!$user) {
|
|
|
+ $this->setError('Account not exist');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if ($user->status != 1) {
|
|
|
+ $this->setError('Account is locked');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $this->_user = $user;
|
|
|
+ $this->_logined = true;
|
|
|
+ $this->_token = $token;
|
|
|
+
|
|
|
+ //初始化成功的事件
|
|
|
+// Hook::listen("company_init_successed", $this->_user);
|
|
|
+
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ $this->setError('You are not logged in');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 注册用户
|
|
|
+ *
|
|
|
+ * @param string $username 用户名
|
|
|
+ * @param string $password 密码
|
|
|
+ * @param string $email 邮箱
|
|
|
+ * @param string $mobile 手机号
|
|
|
+ * @param array $extend 扩展参数
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ public function register($username, $password, $email = '', $mobile = '', $extend = [])
|
|
|
+ {
|
|
|
+ // 检测用户名、昵称、邮箱、手机号是否存在
|
|
|
+ /*if (User::getByUsername($username)) {
|
|
|
+ $this->setError('Username already exist');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (User::getByNickname($username)) {
|
|
|
+ $this->setError('Nickname already exist');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if ($email && User::getByEmail($email)) {
|
|
|
+ $this->setError('Email already exist');
|
|
|
+ return false;
|
|
|
+ }*/
|
|
|
+
|
|
|
+ if(empty($mobile)){
|
|
|
+ $this->setError('手机号必填');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($mobile && Worker::getByMobile($mobile)) {
|
|
|
+ $this->setError('Mobile already exist');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $ip = request()->ip();
|
|
|
+ $time = time();
|
|
|
+
|
|
|
+ $data = [
|
|
|
+// 'username' => $username,
|
|
|
+// 'password' => $password,
|
|
|
+// 'email' => $email,
|
|
|
+ 'mobile' => $mobile,
|
|
|
+// 'level' => 1,
|
|
|
+// 'score' => 0,
|
|
|
+ 'avatar' => config('site.worker_default_avatar'),
|
|
|
+ ];
|
|
|
+ $params = array_merge($data, [
|
|
|
+// 'nickname' => preg_match("/^1[3-9]{1}\d{9}$/", $username) ? substr_replace($username, '****', 3, 4) : $username,
|
|
|
+ 'nickname' => get_rand_nick_name(),
|
|
|
+// 'salt' => Random::alnum(),
|
|
|
+// 'jointime' => $time,
|
|
|
+// 'joinip' => $ip,
|
|
|
+// 'logintime' => $time,
|
|
|
+// 'loginip' => $ip,
|
|
|
+// 'prevtime' => $time,
|
|
|
+ 'status' => 1
|
|
|
+ ]);
|
|
|
+// $params['password'] = $this->getEncryptPassword($password, $params['salt']);
|
|
|
+ $params = array_merge($params, $extend);
|
|
|
+
|
|
|
+ //账号注册时需要开启事务,避免出现垃圾数据
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+ $user = Worker::create($params, true);
|
|
|
+
|
|
|
+ $this->_user = Worker::get($user->id);
|
|
|
+ /*$this->_user->username = 'd' . (10000 + $user->id);
|
|
|
+ $this->_user->save();*/
|
|
|
+
|
|
|
+ //设置Token
|
|
|
+ $this->_token = Random::uuid();
|
|
|
+ Tokenworker::set($this->_token, $user->id, $this->keeptime);
|
|
|
+
|
|
|
+ //设置登录状态
|
|
|
+ $this->_logined = true;
|
|
|
+
|
|
|
+ //注册钱包
|
|
|
+ $wallet_id = Db::name('worker_wallet')->insertGetId(['worker_id'=>$user->id]);
|
|
|
+ if(!$wallet_id){
|
|
|
+ $this->setError('注册用户失败');
|
|
|
+ Db::rollback();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //注册info
|
|
|
+ $info_id = Db::name('worker_info')->insertGetId(['worker_id'=>$user->id]);
|
|
|
+ if(!$info_id){
|
|
|
+ $this->setError('注册用户失败');
|
|
|
+ Db::rollback();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ //[环信]注册用户。忽略失败
|
|
|
+ /*$easemob = new Easemob();
|
|
|
+ $rs = $easemob->user_create('worker'.$user->id);
|
|
|
+ if($rs === false){
|
|
|
+ $this->setError('注册用户失败');
|
|
|
+ Db::rollback();
|
|
|
+ return false;
|
|
|
+ }*/
|
|
|
+
|
|
|
+ //腾讯im注册用户
|
|
|
+ $tenim = new Tenim();
|
|
|
+ $rs = $tenim->register('worker'.$user->id,$params['nickname'],'');
|
|
|
+ if($rs !== true){
|
|
|
+ $this->setError($rs);
|
|
|
+ Db::rollback();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ //注册成功的事件
|
|
|
+ Db::commit();
|
|
|
+ } catch (Exception $e) {
|
|
|
+ $this->setError($e->getMessage());
|
|
|
+ Db::rollback();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 用户登录
|
|
|
+ *
|
|
|
+ * @param string $account 账号,用户名、邮箱、手机号
|
|
|
+ * @param string $password 密码
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ /*public function login($account, $password)
|
|
|
+ {
|
|
|
+ $field = 'mobile';
|
|
|
+ $user = Worker::get([$field => $account]);
|
|
|
+ if (!$user) {
|
|
|
+ $this->setError('Account is incorrect');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($user->status != 1) {
|
|
|
+ $this->setError('Account is locked');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if ($user->password != $this->getEncryptPassword($password, $user->salt)) {
|
|
|
+ $this->setError('Password is incorrect');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ //直接登录员工
|
|
|
+ return $this->direct($user->id);
|
|
|
+ }*/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 退出
|
|
|
+ *
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ public function logout()
|
|
|
+ {
|
|
|
+ if (!$this->_logined) {
|
|
|
+ $this->setError('You are not logged in');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //设置登录标识
|
|
|
+ $this->_logined = false;
|
|
|
+ //删除Token
|
|
|
+ Tokenworker::delete($this->_token);
|
|
|
+ //退出成功的事件
|
|
|
+ Hook::listen("user_logout_successed", $this->_user);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改密码
|
|
|
+ * @param string $newpassword 新密码
|
|
|
+ * @param string $oldpassword 旧密码
|
|
|
+ * @param bool $ignoreoldpassword 忽略旧密码
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ public function changepwd($newpassword, $oldpassword = '', $ignoreoldpassword = false)
|
|
|
+ {
|
|
|
+ if (!$this->_logined) {
|
|
|
+ $this->setError('You are not logged in');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //判断旧密码是否正确
|
|
|
+ if ($this->_user->password == $this->getEncryptPassword($oldpassword, $this->_user->salt) || $ignoreoldpassword) {
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+ $salt = Random::alnum();
|
|
|
+ $newpassword = $this->getEncryptPassword($newpassword, $salt);
|
|
|
+ $this->_user->save(['loginfailure' => 0, 'password' => $newpassword, 'salt' => $salt]);
|
|
|
+
|
|
|
+ Token::delete($this->_token);
|
|
|
+ //修改密码成功的事件
|
|
|
+ Hook::listen("user_changepwd_successed", $this->_user);
|
|
|
+ Db::commit();
|
|
|
+ } catch (Exception $e) {
|
|
|
+ Db::rollback();
|
|
|
+ $this->setError($e->getMessage());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ $this->setError('Password is incorrect');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 直接登录账号
|
|
|
+ * @param int $user_id
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ public function direct($user_id)
|
|
|
+ {
|
|
|
+ $user = Worker::get($user_id);
|
|
|
+ if ($user) {
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+ $ip = request()->ip();
|
|
|
+ $time = time();
|
|
|
+
|
|
|
+ //判断连续登录和最大连续登录
|
|
|
+ /*if ($user->logintime < \fast\Date::unixtime('day')) {
|
|
|
+ $user->successions = $user->logintime < \fast\Date::unixtime('day', -1) ? 1 : $user->successions + 1;
|
|
|
+ $user->maxsuccessions = max($user->successions, $user->maxsuccessions);
|
|
|
+ }*/
|
|
|
+
|
|
|
+// $user->prevtime = $user->logintime;
|
|
|
+ //记录本次登录的IP和时间
|
|
|
+// $user->loginip = $ip;
|
|
|
+// $user->logintime = $time;
|
|
|
+ //重置登录失败次数
|
|
|
+// $user->loginfailure = 0;
|
|
|
+
|
|
|
+// $user->save();
|
|
|
+
|
|
|
+ $this->_user = $user;
|
|
|
+
|
|
|
+ $this->_token = Random::uuid();
|
|
|
+ Tokenworker::set($this->_token, $user->id, $this->keeptime);
|
|
|
+
|
|
|
+ $this->_logined = true;
|
|
|
+
|
|
|
+ //登录成功的事件
|
|
|
+ Hook::listen("user_login_successed", $this->_user);
|
|
|
+ Db::commit();
|
|
|
+ } catch (Exception $e) {
|
|
|
+ Db::rollback();
|
|
|
+ $this->setError($e->getMessage());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断是否登录
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ public function isLogin()
|
|
|
+ {
|
|
|
+ if ($this->_logined) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前Token
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public function getToken()
|
|
|
+ {
|
|
|
+ return $this->_token;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getUserinfo_simple(){
|
|
|
+ $userinfo = Tokenworker::get($this->_token);
|
|
|
+
|
|
|
+ //是否完成用户资料
|
|
|
+ $data = $this->_user->toArray();
|
|
|
+ if(empty($data['idcard'])){
|
|
|
+ $userinfo['finish_profile'] = 0;
|
|
|
+ }else{
|
|
|
+ $userinfo['finish_profile'] = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ return $userinfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取会员基本信息
|
|
|
+ */
|
|
|
+ public function getUserinfo()
|
|
|
+ {
|
|
|
+ $data = $this->_user->toArray();
|
|
|
+ $allowFields = $this->getAllowFields();
|
|
|
+ $userinfo = array_intersect_key($data, array_flip($allowFields));
|
|
|
+ $userinfo = array_merge($userinfo, Tokenworker::get($this->_token));
|
|
|
+
|
|
|
+ //追加
|
|
|
+ $userinfo['avatar'] = one_domain_image($userinfo['avatar']);
|
|
|
+ $userinfo['keshi_name'] = Db::name('keshi')->where('id',$userinfo['keshi_id'])->value('name');
|
|
|
+ $userinfo['level_name'] = Db::name('worker_level')->where('id',$userinfo['level_id'])->value('name');
|
|
|
+
|
|
|
+ //info
|
|
|
+ $userinfo['worker_info'] = Db::name('worker_info')->where('worker_id',$this->id)->find();
|
|
|
+
|
|
|
+ $userinfo['wallet'] = Db::name('worker_wallet')->where('worker_id',$this->id)->find();
|
|
|
+
|
|
|
+ //是否完成用户资料
|
|
|
+ if(empty($data['idcard'])){
|
|
|
+ $userinfo['finish_profile'] = 0;
|
|
|
+ }else{
|
|
|
+ $userinfo['finish_profile'] = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ //待接图文订单
|
|
|
+ $where = [
|
|
|
+ 'worker_id'=>$this->id,
|
|
|
+ 'ordertype'=>1,
|
|
|
+ 'status'=>10,
|
|
|
+ ];
|
|
|
+ $userinfo['wenzhen_text_noaccept_num'] = Db::name('wenzhen_order')->where($where)->count();
|
|
|
+
|
|
|
+ //待接视频订单
|
|
|
+ $where = [
|
|
|
+ 'worker_id'=>$this->id,
|
|
|
+ 'ordertype'=>2,
|
|
|
+ 'status'=>10,
|
|
|
+ ];
|
|
|
+ $userinfo['wenzhen_video_noaccept_num'] = Db::name('wenzhen_order')->where($where)->count();
|
|
|
+
|
|
|
+ //待接订单
|
|
|
+ $userinfo['wenzhen_noaccept_num'] = $userinfo['wenzhen_text_noaccept_num'] + $userinfo['wenzhen_video_noaccept_num'];
|
|
|
+
|
|
|
+
|
|
|
+ return $userinfo;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前请求的URI
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public function getRequestUri()
|
|
|
+ {
|
|
|
+ return $this->requestUri;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置当前请求的URI
|
|
|
+ * @param string $uri
|
|
|
+ */
|
|
|
+ public function setRequestUri($uri)
|
|
|
+ {
|
|
|
+ $this->requestUri = $uri;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取允许输出的字段
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getAllowFields()
|
|
|
+ {
|
|
|
+ return $this->allowFields;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置允许输出的字段
|
|
|
+ * @param array $fields
|
|
|
+ */
|
|
|
+ public function setAllowFields($fields)
|
|
|
+ {
|
|
|
+ $this->allowFields = $fields;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取密码加密后的字符串
|
|
|
+ * @param string $password 密码
|
|
|
+ * @param string $salt 密码盐
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public function getEncryptPassword($password, $salt = '')
|
|
|
+ {
|
|
|
+ return md5(md5($password) . $salt);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检测当前控制器和方法是否匹配传递的数组
|
|
|
+ *
|
|
|
+ * @param array $arr 需要验证权限的数组
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ public function match($arr = [])
|
|
|
+ {
|
|
|
+ $request = Request::instance();
|
|
|
+ $arr = is_array($arr) ? $arr : explode(',', $arr);
|
|
|
+ if (!$arr) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $arr = array_map('strtolower', $arr);
|
|
|
+ // 是否存在
|
|
|
+ if (in_array(strtolower($request->action()), $arr) || in_array('*', $arr)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 没找到匹配
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置会话有效时间
|
|
|
+ * @param int $keeptime 默认为永久
|
|
|
+ */
|
|
|
+ public function keeptime($keeptime = 0)
|
|
|
+ {
|
|
|
+ $this->keeptime = $keeptime;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 渲染用户数据
|
|
|
+ * @param array $datalist 二维数组
|
|
|
+ * @param mixed $fields 加载的字段列表
|
|
|
+ * @param string $fieldkey 渲染的字段
|
|
|
+ * @param string $renderkey 结果字段
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ /*public function render(&$datalist, $fields = [], $fieldkey = 'user_id', $renderkey = 'userinfo')
|
|
|
+ {
|
|
|
+ $fields = !$fields ? ['id', 'nickname', 'level', 'avatar'] : (is_array($fields) ? $fields : explode(',', $fields));
|
|
|
+ $ids = [];
|
|
|
+ foreach ($datalist as $k => $v) {
|
|
|
+ if (!isset($v[$fieldkey])) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $ids[] = $v[$fieldkey];
|
|
|
+ }
|
|
|
+ $list = [];
|
|
|
+ if ($ids) {
|
|
|
+ if (!in_array('id', $fields)) {
|
|
|
+ $fields[] = 'id';
|
|
|
+ }
|
|
|
+ $ids = array_unique($ids);
|
|
|
+ $selectlist = User::where('id', 'in', $ids)->column($fields);
|
|
|
+ foreach ($selectlist as $k => $v) {
|
|
|
+ $list[$v['id']] = $v;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ foreach ($datalist as $k => &$v) {
|
|
|
+ $v[$renderkey] = isset($list[$v[$fieldkey]]) ? $list[$v[$fieldkey]] : null;
|
|
|
+ }
|
|
|
+ unset($v);
|
|
|
+ return $datalist;
|
|
|
+ }*/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置错误信息
|
|
|
+ *
|
|
|
+ * @param string $error 错误信息
|
|
|
+ * @return Auth
|
|
|
+ */
|
|
|
+ public function setError($error)
|
|
|
+ {
|
|
|
+ $this->_error = $error;
|
|
|
+ return $this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取错误信息
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public function getError()
|
|
|
+ {
|
|
|
+ return $this->_error ? __($this->_error) : '';
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|