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

142 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\EditAuthInput;
use App\Models\Auth;
use Yo;
use Login;
class AuthController extends Controller
{
public function list()
{
Login::admin();
$group = Auth::select('*')
->where('type', 1)->where('del', 2)
->orderBy('order', 'desc')->get();
$list = [];
foreach ($group as $item) {
$auth_list = Auth::select('*')->where('pid', $item->id)
->where('type', 2)->where('del', 2)
->orderBy('order', 'desc')->get();
$item['children'] = $auth_list;
$list[] = $item;
}
return Yo::echo([
'list' => $list,
]);
}
public function delete()
{
Login::admin([9]);
$id = request()->post('id');
$auth = Auth::where('id', $id)->where('del', 2)->first();
if (!$auth) Yo::error_echo(100000, ['路由']);
$auth->del = 1;
$auth->save();
if ($auth->pid == 0) {
Auth::where('pid', $id)->where('del', 2)->update([
'del' => 1
]);
}
return Yo::delete_echo($id);
}
public function update(EditAuthInput $request)
{
Login::admin([9]);
$id = $request->post('id');
$name = $request->post('name');
$title = $request->post('title');
$icon = $request->post('icon');
$pid = $request->post('pid');
$check_type = $request->post('check_type');
$show = $request->post('show');
$status = $request->post('status');
$order = $request->post('order');
$auth = Auth::where('id', $id)->where('del', 2)->first();
if (!$auth) Yo::error_echo(100000, ['路由']);
$type = $auth->type;
if ($pid === $id) Yo::error_echo(100029);
if ($auth->pid != $pid) {
if ($auth->pid == 0) {
$s_auth = Auth::where('pid', $id)->where('del', 2)->count();
if ($s_auth > 0) Yo::error_echo(100023);
$type = 2;
} else {
if ($pid != 0) {
$p_auth = Auth::where('id', $pid)->where('pid', 0)->where('del', 2)->first();
if (!$p_auth) Yo::error_echo(100000, ['分组']);
$type = 2;
}
}
}
$auth->name = $name;
$auth->title = $title;
$auth->icon = $icon ?? '';
$auth->pid = $pid;
$auth->type = $type;
$auth->check_type = $check_type;
$auth->show = $show;
$auth->status = $status;
$auth->order = $order;
$auth->save();
return Yo::update_echo($auth->id);
}
public function create(EditAuthInput $request)
{
Login::admin([9]);
$name = $request->post('name');
$title = $request->post('title');
$icon = $request->post('icon');
$pid = $request->post('pid');
$check_type = $request->post('check_type');
$show = $request->post('show');
$status = $request->post('status');
$order = $request->post('order');
$type = 1;
if ($pid != 0) {
$p_auth = Auth::where('id', $pid)->where('pid', 0)->where('del', 2)->first();
if (!$p_auth) Yo::error_echo(100000, ['路由']);
$type = 2;
}
$auth = new Auth();
$auth->name = $name;
$auth->title = $title;
$auth->icon = $icon ?? '';
$auth->pid = $pid;
$auth->type = $type;
$auth->check_type = $check_type;
$auth->show = $show;
$auth->status = $status;
$auth->order = $order;
$auth->save();
return Yo::create_echo($auth->id);
}
public function select()
{
Login::admin();
$group = Auth::select('id', 'title')
->where('type', 1)->where('del', 2)
->orderBy('order', 'desc')->get();
$list = [];
foreach ($group as $item) {
$auth_list = Auth::select('id', 'title')->where('pid', $item->id)
->where('type', 2)->where('check_type', 2)->where('del', 2)
->orderBy('order', 'desc')->get();
if (count($auth_list) !== 0) $list[] = [
"id" => $item->id,
"title" => $item->title,
"children" => $auth_list
];
}
return Yo::echo([
'list' => $list,
]);
}
}