SystemAdmin.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\model\system;
  4. use library\basic\BaseModel;
  5. use library\traits\JwtAuthModelTrait;
  6. use library\traits\ModelTrait;
  7. use think\facade\Cache;
  8. use think\Model;
  9. /**
  10. * @mixin \think\Model
  11. */
  12. class SystemAdmin extends BaseModel
  13. {
  14. use ModelTrait;
  15. use JwtAuthModelTrait;
  16. /**
  17. * 后台管理人员登录
  18. * @param $username
  19. * @param $pwd
  20. */
  21. public static function login($username, $pwd){
  22. $adminInfo = self::get(compact('username'));
  23. if(empty($adminInfo)) return self::setErrorInfo('登录的账号不存在');
  24. if (!$adminInfo['status']) return self::setErrorInfo('账户以后被停用!');
  25. // if (!password_verify($pwd, $adminInfo['pwd'])) return self::setErrorInfo('账号或密码错误,请重新输入');
  26. //发生事件
  27. event('SystemAdminLoginAfter', [$adminInfo]);
  28. return $adminInfo;
  29. }
  30. /**
  31. * 管理注册写入
  32. * @param $post
  33. */
  34. public static function saveAdmin($post) {
  35. $save = ['name' => $post['name'],
  36. 'role_id' => $post['role_id'],
  37. 'avatar' => $post['avatar'],
  38. 'status' => $post['status']];
  39. //是否密码写入
  40. if(!empty($post['password'])) {
  41. $save['password'] = password_hash($post['password'],PASSWORD_BCRYPT);
  42. }
  43. if($post['id']) {
  44. //
  45. $info = self::where("username",$post['username'])->find();
  46. if(!empty($info) && $info['id'] != $post['id'] ) {
  47. return self::setErrorInfo('登录的账号已存在');
  48. }
  49. //判断密码
  50. if(empty($save['password'])) {
  51. unset($post['password']);
  52. }
  53. self::where('id',$post['id'])->save($save);
  54. } else {
  55. $save['time'] = time();
  56. $save['last_time'] = time();
  57. $save['username'] = $post['username'];
  58. $count = self::where("username",$post['username'])->count();
  59. if($count > 0) {
  60. return self::setErrorInfo('登录的账号已存在');
  61. }
  62. if(empty($save['password'])) {
  63. return self::setErrorInfo('请输入登录密码');
  64. }
  65. self::insert($save);
  66. }
  67. return true;
  68. }
  69. /**
  70. * 验证密码
  71. * @param $id 管理ID
  72. * @param $pwd 旧密码
  73. * @return bool
  74. */
  75. public static function checkPassowrd($id,$pwd) {
  76. $adminInfo = self::get(compact('id'));
  77. if(empty($adminInfo)) return self::setErrorInfo('登录的账号不存在');
  78. if (!password_verify($pwd, $adminInfo['password'])){
  79. return false;
  80. }
  81. return true;
  82. }
  83. /**
  84. * 生成token存放令牌 | 存放redis
  85. * @param SystemAdmin $adminInfo
  86. * @param $type
  87. * @return array|bool
  88. */
  89. public static function createToken(SystemAdmin $adminInfo,$type)
  90. {
  91. $tokenInfo = $adminInfo->getToken($type, []);
  92. $exp = (int)bcadd((string)($tokenInfo['params']['exp'] - $tokenInfo['params']['iat']), "60", 0);
  93. try {
  94. $res = Cache::store('redis')->set($tokenInfo['token'], ['token' => $tokenInfo['token'], 'exp' => $exp], (int)$exp);
  95. } catch (\Throwable $e) {
  96. return self::setErrorInfo('保存token失败');
  97. }
  98. return $tokenInfo;
  99. }
  100. }