206 lines
6.9 KiB
PHP
206 lines
6.9 KiB
PHP
<?php
|
|
|
|
namespace app\admin\controller;
|
|
|
|
use app\common\controller\Admin;
|
|
use app\common\model\Groups;
|
|
use app\common\model\Users;
|
|
use think\Exception;
|
|
|
|
class User extends Admin
|
|
{
|
|
|
|
public function index(){
|
|
if($this->request->isAjax()){
|
|
$page = input('get.page',1);
|
|
$limit = input('get.limit',10);
|
|
$search_type = input('get.search_type','');
|
|
$search_value = input('get.search_value','');
|
|
$map = [];
|
|
|
|
if(!empty($search_type) && !empty($search_value)){
|
|
$map[] = [$search_type,'like','%'.$search_value.'%'];
|
|
}
|
|
|
|
$groups = Groups::column('group_name','id');
|
|
$default_group = config('register.default_group');
|
|
|
|
$list = Users::where($map)
|
|
->page($page,$limit)
|
|
->field('id,nickname,username,group,is_auth,amount,email,avatar,status,create_time')
|
|
->select()->each(function ($item) use ($groups,$default_group){
|
|
$group_name = $groups[$item['group']] ?? '未知';
|
|
|
|
if($item['group'] == 1){
|
|
$item['group'] = '<span class="layui-badge layui-bg-blue">'. $group_name .'</span>';
|
|
}elseif ($item['group'] == $default_group){
|
|
$item['group'] = '<span class="layui-badge layui-bg-gray">'. $group_name .'</span>';
|
|
}else{
|
|
$item['group'] = '<span class="layui-badge layui-bg-red">'. $group_name .'</span>';
|
|
}
|
|
|
|
$item['avatar'] = getUserHead($item['avatar']);
|
|
|
|
return $item;
|
|
});
|
|
|
|
$count = Users::count();
|
|
|
|
return json([
|
|
'code' => 0,
|
|
'msg' => '加载成功',
|
|
'count' => $count,
|
|
'data' => $list->toArray()
|
|
]);
|
|
}else{
|
|
return $this->fetch();
|
|
}
|
|
}
|
|
|
|
public function add(){
|
|
|
|
$default_group = config('register.default_group');
|
|
|
|
if($this->request->isPost()){
|
|
$data = input('post.');
|
|
$result = $this->validate($data,[
|
|
'username|用户帐号' => 'require|alphaNum|length:6,26',
|
|
'group|用户组' => 'require|number',
|
|
'password|登录密码' => 'require|alphaNum|length:6,18',
|
|
'repassword|重复密码' => 'require|confirm:password',
|
|
'email|安全邮箱' => 'require|email'
|
|
]);
|
|
|
|
if($result !== true) return json(['code' => 502,'msg' => $result]);
|
|
|
|
if(empty($data['group'])){
|
|
$data['group'] = $default_group;
|
|
}
|
|
|
|
//处理用户的VIP时间
|
|
if(!empty($data['group_expire'])){
|
|
$group_expire = strtotime($data['group_expire']);
|
|
}
|
|
|
|
try {
|
|
(new Users)->register($data['username'],$data['email'],$data['password'],$data['group'],[],$group_expire);
|
|
return json(['code' => 200,'msg' => '账号新增成功']);
|
|
}catch (Exception $e){
|
|
return json(['code' => 503,'msg' => $e->getMessage()]);
|
|
}
|
|
}else{
|
|
$group = Groups::field('id,group_name')->select()->toArray();
|
|
$this->assign('default_group',$default_group);
|
|
$this->assign('group',$group);
|
|
return $this->fetch();
|
|
}
|
|
}
|
|
|
|
public function del(){
|
|
$ids = input('get.ids');
|
|
|
|
if(count(explode(',',$ids)) > 20){
|
|
$this->returnError('删除失败,不能一次删除20条以上的数据');
|
|
}
|
|
|
|
$delete_users = Users::where('id','in',$ids)->field('id,group')->select()->toArray();
|
|
|
|
foreach ($delete_users as $item){
|
|
if($item['id'] == 1){
|
|
$this->returnError('删除失败,删除帐号中包含总管理员帐号');
|
|
break;
|
|
}
|
|
|
|
/**
|
|
* 待完成功能:删除用户后删除相关数据,如:上传储存的数据,订单数据,目录数据,分享数据等
|
|
*/
|
|
|
|
Users::where('id',$item['id'])->delete();
|
|
}
|
|
|
|
return json(['code' => 200,'msg' => '删除成功']);
|
|
}
|
|
|
|
public function edit(){
|
|
$id = input('get.id');
|
|
$info = Users::get($id);
|
|
|
|
if(empty($info)){
|
|
$this->error('用户数据不存在');
|
|
}
|
|
|
|
if($this->request->isPost()){
|
|
$data = input('post.');
|
|
$result = $this->validate($data,[
|
|
'email|安全邮箱' => 'email',
|
|
'password|登录密码' => 'alphaNum|length:6,18',
|
|
'group|用户组' => 'require|number'
|
|
]);
|
|
|
|
if($result !== true) return json(['code' => 502,'msg' => $result]);
|
|
|
|
$update = [];
|
|
|
|
if(!empty($data['email'])){
|
|
$update['email'] = $data['email'];
|
|
}
|
|
|
|
if(!empty($data['password'])){
|
|
$en_password = md5($data['password'] . config('app.pass_salt'));
|
|
$update['password'] = $en_password;
|
|
}
|
|
|
|
if($info['group'] == 1 && $info['id'] != $this->adminInfo['id'] && !empty($data['password']) && $this->adminInfo['id'] != 1){
|
|
$this->returnError('操作失败,您不能更改其他管理员组用户的密码');
|
|
}
|
|
|
|
if($info['id'] == $this->adminInfo['id'] && $data['group'] != $info['group']){
|
|
$this->returnError('操作失败,您不能更改自己的用户组');
|
|
}
|
|
|
|
if($info['id'] == 1 && $data['group'] != $info['group']){
|
|
$this->returnError('操作失败,您不能更改总管理员的用户组');
|
|
}
|
|
|
|
$update['group'] = $data['group'];
|
|
|
|
//处理用户的VIP时间
|
|
if($info['group_expire']<time()&&strtotime($data['group_expire'])>$info['group_expire']){
|
|
$update['group_expire'] = strtotime($data['group_expire']);
|
|
}
|
|
Users::where('id',$id)->update($update);
|
|
|
|
return json(['code' => 200,'msg' => '用户信息修改成功']);
|
|
|
|
}else{
|
|
$group = Groups::field('id,group_name')->select()->toArray();
|
|
$this->assign('group',$group);
|
|
$this->assign('info',$info);
|
|
return $this->fetch();
|
|
}
|
|
}
|
|
|
|
public function change_status(){
|
|
$id = input('get.id');
|
|
$status = input('get.status');
|
|
|
|
$info = Users::get($id);
|
|
|
|
if($info->isEmpty()){
|
|
$this->returnError('用户数据不存在');
|
|
}
|
|
|
|
if($info['id'] == 1){
|
|
$this->returnError('操作失败,您不能封禁总管理员的帐号');
|
|
}
|
|
|
|
if($info['id'] == $this->adminInfo['id']){
|
|
$this->returnError('操作失败,您不能封禁自己的帐号');
|
|
}
|
|
|
|
Users::where('id',$id)->update(['status' => $status]);
|
|
|
|
return json(['code' => 200,'msg' => '用户状态切换成功']);
|
|
}
|
|
|
|
} |