179 lines
5.7 KiB
PHP
179 lines
5.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\MenuModel;
|
|
use App\Models\User;
|
|
use App\Models\UserMenuLineModel;
|
|
use App\Models\UserNodeLine;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
|
class UserController extends Controller
|
|
{
|
|
//查看用户列表
|
|
public function index(Request $request){
|
|
$map = function (Builder $builder) use ($request) {
|
|
$keywords = $request->get('keywords');
|
|
if (!$keywords) {
|
|
return;
|
|
}
|
|
$reg = "%" . $keywords . "%";
|
|
$builder->where('nickname', 'like', $reg);
|
|
$builder->orWhere('account', '=', $keywords);
|
|
};
|
|
$model = User::withTrashed()->where($map)->orderByDesc('id');
|
|
if ($request->get('size')) {
|
|
$user = $model->paginate($request->get("size",10));
|
|
} else {
|
|
$user = $model->get();
|
|
}
|
|
if (!$user) {
|
|
$user = [];
|
|
} else {
|
|
$user = $user->toArray();
|
|
}
|
|
return $this->success($user);
|
|
}
|
|
|
|
//查看用户所拥有的权限组
|
|
public function show($uid) {
|
|
if (!is_numeric($uid)) {
|
|
return $this->error(ERROR_CODE_PARAM_INVALID, '参数格式不对');
|
|
}
|
|
$user = User::withTrashed()->with('nodeGroup')->find($uid);
|
|
if (!$user) {
|
|
$user = [];
|
|
} else {
|
|
$user = $user->toArray();
|
|
}
|
|
return $this->success($user);
|
|
}
|
|
|
|
//查看用户所拥有的菜单
|
|
public function showMenu($uid) {
|
|
if (!is_numeric($uid)) {
|
|
return $this->error(ERROR_CODE_PARAM_INVALID, '参数格式不对');
|
|
}
|
|
$user = User::withTrashed()->with('menu')->find($uid);
|
|
if (!$user) {
|
|
$user = [];
|
|
} else {
|
|
$user = $user->toArray();
|
|
}
|
|
return $this->success($user);
|
|
}
|
|
|
|
// 给用户配权限组
|
|
public function allotNodeGroup($id,Request $request) {
|
|
if (!is_numeric($id)) {
|
|
return $this->error(ERROR_CODE_PARAM_INVALID, '参数格式不对');
|
|
}
|
|
$validator = Validator::make($request->all(),[
|
|
'node_group_id' => 'array',
|
|
], [
|
|
'node_group_id.array' => '权限组id必须为数组'
|
|
]);
|
|
if ($validator->fails()){
|
|
return $this->error(ERROR_CODE_PARAM_INVALID,$validator->errors()->first());
|
|
}
|
|
$arr = $request->all();
|
|
if (!$arr){
|
|
UserNodeLine::where('user_id',$id)->delete();
|
|
return $this->success([]);
|
|
}
|
|
$user = User::find($id);
|
|
$user->nodeGroup()->sync($arr['node_group_id']);
|
|
return $this->success();
|
|
}
|
|
|
|
// 给用户配菜单
|
|
public function allotMenu($id, Request $request) {
|
|
if (!is_numeric($id)) {
|
|
return $this->error(ERROR_CODE_PARAM_INVALID, '参数格式不对');
|
|
}
|
|
$validator = Validator::make($request->all(),[
|
|
'menu_ids' => 'array',
|
|
], [
|
|
'menu_ids.array' => '菜单id必须为数组'
|
|
]);
|
|
if ($validator->fails()){
|
|
return $this->error(ERROR_CODE_PARAM_INVALID,$validator->errors()->first());
|
|
}
|
|
$arr = $request->all();
|
|
if (! $arr){
|
|
UserMenuLineModel::where('user_id',$id)->delete();
|
|
return $this->success([]);
|
|
}
|
|
$user = User::find($id);
|
|
$user->menu()->sync($arr['menu_ids']);
|
|
return $this->success();
|
|
}
|
|
|
|
//修改昵称
|
|
public function update(Request $request){
|
|
|
|
$validator = Validator::make($request->all(),[
|
|
'nickname' => 'required',
|
|
], [
|
|
'nickname.required' => '用户昵称不能为空',
|
|
]);
|
|
if ($validator->fails()){
|
|
return $this->error(ERROR_CODE_PARAM_INVALID,$validator->errors()->first());
|
|
}
|
|
$account = auth()->user()->account;
|
|
$res = User::where('account',$account)->update($request->input());
|
|
if (! $res){
|
|
return $this->error(ERROR_CODE_NO,'系统繁忙,稍后再试');
|
|
}
|
|
return $this->success([],'修改成功');
|
|
}
|
|
|
|
//修改昵称
|
|
public function updateEmail($id,Request $request){
|
|
|
|
$validator = Validator::make($request->all(),[
|
|
'email' => 'required',
|
|
], [
|
|
'nickname.required' => '用户邮箱不能为空',
|
|
]);
|
|
if ($validator->fails()){
|
|
return $this->error(ERROR_CODE_PARAM_INVALID,$validator->errors()->first());
|
|
}
|
|
$res = User::where('id',$id)->update($request->input());
|
|
if (! $res){
|
|
return $this->error(ERROR_CODE_NO,'系统繁忙,稍后再试');
|
|
}
|
|
return $this->success([],'修改成功');
|
|
}
|
|
|
|
public function myMenu() {
|
|
$user = User::with([
|
|
'menu' => function ($query) {
|
|
$query->where('state', 1);
|
|
},
|
|
'nodeGroup'
|
|
])->find(auth()->id())->toArray();
|
|
|
|
if ($user['node_group'] && in_array('超级管理员',array_column($user['node_group'],'name'))){
|
|
$arr = MenuModel::orderByDesc('id')->get()->toArray();
|
|
$menu = getTreeList($arr);
|
|
return $this->success($menu);
|
|
}
|
|
$pid = [];
|
|
if (!empty($user['menu'])) {
|
|
foreach ($user['menu'] as $k => $v) {
|
|
unset($user['menu'][$k]['pivot']);
|
|
$pid[] = $v['pid'];
|
|
}
|
|
}
|
|
$pid = array_unique($pid);
|
|
$arr = MenuModel::whereIn('id', $pid)->orderByDesc('id')->get()->toArray();
|
|
$arr = array_unique(array_merge($arr, $user['menu']), SORT_REGULAR);
|
|
$menu = getTreeList($arr);
|
|
return $this->success($menu);
|
|
}
|
|
}
|