123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- <?php
- namespace app\model;
- // 引入框架内置类
- use think\facade\Request;
- use think\facade\Session;
- use app\model\SysLoginFail;
- use app\model\SysLogin;
- use app\model\Base;
- class SysUser extends Base
- {
- protected $pk = 'userid';
- public function sysRole()
- {
- return $this->belongsTo('SysRole', 'roleid')->bind(['rolename' => 'name']);
- }
- public static function queryList()
- {
- return self::field('userid,roleid,username,nickname,truename,email,status,per_time,per_ip,login_num,create_time')->with('sysRole')->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;
- }
- }
- }
-
- // 状态修改 1,正常; 2,非正常
- public static function state(int $id)
- {
- try {
- $info = self::find($id);
- $info->status = -1 - $info['status'];
- $info->save();
- return json(['code' => 0, 'msg' => '修改成功!', 'status'=>$info->status]);
- } catch (\Exception $e) {
- return json(['code' => 1, 'msg' => $e->getMessage()]);
- }
- }
- 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' => '用户名/密码不正确1']);
- }
- 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 === 0) {
- // 更新登录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' => '用户已被禁用!']);
- }
- }
- }
|