lcly-data-admin/app/Http/Controllers/AdminUserController.php

120 lines
3.9 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\AdminUser;
use App\Helpers\Paginator;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\Requestes\AdminUserRequest;
use App\Http\Resources\AdminUserResource;
use App\Http\Requestes\RestPasswordRequest;
use App\Http\Requestes\AdminUserUpdateRequest;
class AdminUserController extends Controller
{
public function index(Request $request)
{
$query = AdminUser::filter($request->all())->where('id', '>', 1);
$list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)) ;
return $this->json(AdminUserResource::collection($list));
}
public function store(AdminUserRequest $request)
{
$baseIds = $request->input('base_ids', []);
if(AdminUser::where('username', $request->input('username'))->exists()){
return $this->error('该登录名已存在');
}
try{
DB::beginTransaction();
//添加管理员信息
$input = $request->input();
$input['password'] = bcrypt($request->input('password'));
$user = AdminUser::create($input);
//添加管理员查看基地的数据权限;
$user->bases()->sync($baseIds);
//添加管理员角色关联;
$user->roles()->sync($request->input('role_id'));
DB::commit();
}catch(\Throwable $th){
DB::rollBack();
report($th);
return $this->error('添加失败,请稍后再试');
}
return $this->success('添加成功');
}
public function show(AdminUser $adminUser){
return $this->json(AdminUserResource::make($adminUser));
}
public function update(AdminUser $adminUser, AdminUserUpdateRequest $request)
{
$baseIds = $request->input('base_ids', []);
if(AdminUser::where('username', $request->input('username'))->where('id', '<>', $adminUser->id)->exists()){
return $this->error('该登录名已存在');
}
try{
DB::beginTransaction();
//添加管理员信息
$adminUser->update($request->input());
//添加管理员查看基地的数据权限;
$adminUser->crops()->sync($baseIds);
//添加管理员角色关联;
$adminUser->roles()->sync($request->input('role_id'));
DB::commit();
}catch(\Throwable $th){
DB::rollBack();
report($th);
return $this->error('修改失败,请稍后再试');
}
return $this->success('修改成功!');
}
public function destroy(AdminUser $adminUser){
if($adminUser->id == 1){
return $this->error('删除失败,请稍后再试');
}
try{
DB::beginTransaction();
$adminUser->crops()->sync([]);
$adminUser->roles()->sync([]);
$adminUser->delete();
DB::commit();
}catch(\Throwable $th){
DB::rollBack();
report($th);
return $this->error('删除失败,请稍后再试');
}
return $this->success('删除成功!');
}
/**
* 启用/禁用
*
* @param AdminUser $adminUser
* @return void
*/
public function endable(AdminUser $adminUser){
if($adminUser->id == 1){
return $this->error('操作失败,请稍后再试');
}
$adminUser->update([
'is_enable' => (int) !$adminUser->is_enable
]);
return $this->success('操作成功!');
}
public function editPassword(AdminUser $adminUser, RestPasswordRequest $request){
if($adminUser->id == 1){
return $this->error('操作失败,请稍后再试');
}
$adminUser->update([
'password' => bcrypt($request->input('password'))
]);
return $this->success('修改成功!');
}
}