| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | <?phpnamespace app\common\model;// 引入框架内置类use think\Model;use think\facade\Db;use think\facade\Request;use think\facade\Event;use app\common\model\SysLoginFail;use app\common\model\SysLogin;use app\common\model\SysRole;use think\facade\Session;class SysUser extends Model{    protected $pk = 'userid';    public static function queryList($roleid)    {        if ($roleid == 1) {            return Db::table('phome_sys_user')->alias('u')                ->join('phome_sys_role r', 'u.roleid = r.roleid')                ->field('u.userid,u.username,u.nickname,u.truename,u.email,u.status,u.per_time,u.per_ip,u.login_num,u.create_time,r.name as rolename')                ->select();        } else {            return Db::table('phome_sys_user')->alias('u')                ->join('phome_sys_role r', 'u.roleid = r.roleid')                ->where('u.roleid', '<>', 1)                ->field('u.userid,u.username,u.nickname,u.truename,u.email,u.status,u.per_time,u.per_ip,u.login_num,u.create_time,r.name as rolename')                ->select();        }    }    public function getUsernames($role_id = null)    {        if ($role_id == null) {            return $this->column('id, username');        } else {            $data = $this->where('role_id', $role_id)->column('username');            if ($data) {                return implode(',', $data);            } else {                return null;            }        }    }    public static function checkLogin()    {        $ip = Request::ip();        $time = time();        $datetime = date('Y-m-d H:i:s', $time);        if (!SysLoginFail::checkIp($ip, $time)) {            return json(['code' => 1, 'msg' => '登录次数超过10次, 请等1小时后再试']);        }        $username  = Request::param("username", '', 'strip_tags');        $password  = Request::param("password", '', 'strip_tags');        if (!$username || !$password) {            return json(['code' => 1, 'msg' => '用户名/密码/验证码不能为空']);        }        if (false === Request::checkToken('__token__')) {            return json(['error' => 1, 'msg' => '验证有误']);        }        $info = self::where('username', $username)->find();        if (!$info) {            SysLoginFail::saveFail($ip, $time);            return json(['code' => 2, 'msg' => '用户名/密码不正确']);        }        if (md5($password . $info->salt) != $info->password) {            // 记录失败            SysLoginFail::saveFail($ip, $time);            SysLogin::record($info->userid, $info->username, $datetime, $ip, 1);            return json(['code' => 2, 'msg' => '用户名/密码不正确']);        }        if ($info->status == 1) {            // 更新登录IP,登录时间和更新次数            $perTime = $info->per_time;            $perIp = $info->per_ip;            $info->per_time = date('Y-m-d H:i:s', $time);            $info->per_ip = $ip;            $info->login_num += 1;            $info->save();            Session::set('adminuser', [                'userid'   => $info->userid,                'username' => $info->username,                'perTime'  => $perTime,                'perIp'    => $perIp,                'nickname' => $info->nickname,                'avatar'   => $info->avatar,                'loginNum' => $info->loginNum,                'roleid'   => $info->roleid            ]);            // 记录登录            SysLogin::record($info->userid, $info->username, $datetime, $ip);            return json(['code' => 0, 'msg' => '登录成功']);        } else {            // 记录失败            SysLogin::record($info->userid, $info->username, $datetime, $ip, 1);            return json(['code' => 2, 'msg' => '用户已被禁用!']);        }    }}
 |