You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

179 lines
5.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace app\admin\logic;
use \think\Model;
use app\common\CommonConstant;
use app\common\util\JwtUtil;
/**
* 管理员相关操作
*/
class Admin extends Model
{
/** 通过ID获取用户信息
* @param $uid 用户id
*/
public function getAdminById($uid)
{
return my_model('Admin', 'model', 'admin')->getAdminById($uid);
}
/**
* 登录。
* 此时客户端的用户认证方式是JWT
* @param string $userName 登录主名称:用户名
* @param string $password 未加密的密码
* @return array 对象数组包含字段userToken已编码的用户访问令牌user用户信息。
* @throws Exception my_error抛出
*/
public function login($userName, $password)
{
// 查找身份,验证身份
$user = my_model('Admin', 'model', 'admin')->getAdminByName($userName);
if (empty($user)) {
my_exception('', CommonConstant::e_user_miss);
}
//密码验证
if ($user['password'] !== encrypt_pass($password)) {
my_exception('', CommonConstant::e_user_pass_wrong);
}
// 检测用户状态
if ($user ['isEnabled'] != CommonConstant::db_true) {
my_exception('', CommonConstant::e_user_disabled);
}
//权限检测
$group = model('AuthGroup')->getGroupById($user['groupId']);
if (empty($group) || $group['status'] != 1) {
my_exception('用户组不存在或被禁用!', CommonConstant::e_user_role_disabled);
}
// 数据处理和令牌获取
$time = time();
// 记录登录日志
model('LoginLog')->add([
'uid' => $user['id'],
'userName' => $user['userName'],
'roles' => $group['title'],
'loginTime' => $time,
'loginIp' => request()->ip()
]);
my_model('Admin', 'model', 'admin')->modify($user['id'], ['loginTime' => $time]);
// 令牌生成
$payload['uid'] = $user['id'];
$payload['loginTime'] = $time;
$userToken = think_encrypt(JwtUtil::encode($payload));
// 返回
return array('userToken' => $userToken);
}
/**获取管理员列表
* @param string $userName
* @param string $phone
* @param string $realName
* @param string $startTime
* @param string $endTime
* @param int $isEnabled
* @param string $myorder
* @param int $page
* @param int $psize
* @return mixed
*/
public function getLists($userName = '', $phone = '', $realName = '', $startTime = '', $endTime = '', $isEnabled = -1, $myorder = 'a.id desc', $page = 1, $psize = 10)
{
return my_model('Admin', 'model', 'admin')->getLists($userName, $phone, $realName, $startTime, $endTime, $isEnabled, $myorder, $page, $psize);
}
/**获取管理员数量
* @param string $userName
* @param string $phone
* @param string $realName
* @param string $startTime
* @param string $endTime
* @param int $isEnabled
* @return mixed
*/
public function getTotal($userName = '', $phone = '', $realName = '', $startTime = '', $endTime = '', $isEnabled = -1)
{
return my_model('Admin', 'model', 'admin')->getTotal($userName, $phone, $realName, $startTime, $endTime, $isEnabled);
}
/** 保存
* @param $uid
* @param $data
*/
public function modify($uid, $data)
{
if (empty($data['password'])) {
unset($data['password']);
} else {
$data['password'] = encrypt_pass($data['password']);
}
if ($uid) {
$data['updateTime'] = time();
unset($data['regTime']);
if (isset($data['userName']) && my_model('Admin', 'model', 'admin')->checkAdmin($data['userName']) && $uid != my_model('Admin', 'model', 'admin')->checkAdmin($data['userName'])) {
my_exception('该账号已存在');
}
$res = my_model('Admin', 'model', 'admin')->modify($uid, $data);
if ($res) {
return $uid;
} else {
return false;
}
} else {
$data['regIp'] = request()->ip();
if (isset($data['userName']) && my_model('Admin', 'model', 'admin')->checkAdmin($data['userName'])) {
my_exception('该账号已存在');
}
return my_model('Admin', 'model', 'admin')->add($data);
}
}
/** 删除
* @param $uid
* @return int
*/
public function del($uid)
{
return my_model('Admin', 'model', 'admin')->del($uid);
}
/** 批量删除
* @param $uids
* @return int
*/
public function delall($uids)
{
return my_model('Admin', 'model', 'admin')->delall($uids);
}
/**修改密码
* @param $uid
* @param $newPwd
*/
public function setPwd($uid, $newPwd, $oldPwd)
{
$password = my_model('Admin', 'model', 'admin')->getPwd($uid);
if ($password !== encrypt_pass($oldPwd)) {
my_exception('原始密码错误');
}
return my_model('Admin', 'model', 'admin')->setPwd($uid, $newPwd);
}
/**
* @param $val id 值
* @param $field 修改字段
* @param $value 字段值
*/
public function change($val, $field, $value)
{
$table = 'admin';
$id = 'id';
return my_model('Admin', 'model', 'admin')->change($table, $id, $val, $field, $value);
}
}