149 lines
4.1 KiB
PHP
149 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Admin;
|
|
use Spatie\Permission\Models\Permission;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
|
|
class AdminController extends BaseDefaultController
|
|
{
|
|
public function setPagesInfo()
|
|
{
|
|
$this->pages = [
|
|
'name' => '管理员'
|
|
];
|
|
}
|
|
public function indexData(){
|
|
|
|
return $this->shareData();
|
|
}
|
|
public function shareData($show='')
|
|
{
|
|
$permissions = Role::where('guard_name',$this->guard_name)->get();
|
|
return ['role'=>$permissions];
|
|
|
|
}
|
|
|
|
public function checkRule( $id='')
|
|
{
|
|
if (!$id) {
|
|
return [
|
|
'account' => 'required|unique:admins,account',
|
|
'password' =>'required',
|
|
'mobile' =>'required',
|
|
'realname' =>'required',
|
|
];
|
|
}
|
|
return [
|
|
'account' => 'required|unique:admins,account,' . $id,
|
|
'mobile' =>'required',
|
|
'realname' =>'required'
|
|
|
|
];
|
|
}
|
|
public function setErrorMsg(){
|
|
$messages = [
|
|
'name.required' => ':attribute必填',
|
|
'permissions.required' => '权限规则必填',
|
|
];
|
|
return $messages;
|
|
}
|
|
public function setModel()
|
|
{
|
|
return new Admin();
|
|
}
|
|
public function saveAfter($request,$model,$id='')
|
|
{
|
|
$roles = $request->input('roles');
|
|
if($id)
|
|
{
|
|
// 检查是否某个角色被选中
|
|
if (isset($roles)) {
|
|
$model->roles()->sync($roles);
|
|
//$admin->syncRoles($roles);
|
|
}else
|
|
{
|
|
$model->roles()->detach(); // 如果没有选择任何与用户关联的角色则将之前关联角色解除
|
|
}
|
|
}else
|
|
{
|
|
|
|
if (!empty($roles)) { // 如果选择了角色
|
|
// 检查是否某个角色被选中
|
|
$role_r = Role::whereIn('id', $roles)->pluck('id');
|
|
$model->assignRole($role_r); //Assigning role to user
|
|
}
|
|
}
|
|
|
|
}
|
|
protected function postDataDb($request,$id=''){
|
|
|
|
$data=$request->all();
|
|
if(!$request->input('password'))
|
|
{
|
|
unset($data['password']);
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
|
|
public function apiJson(Request $request)
|
|
{
|
|
$offset = $request->input('page', 1);
|
|
$pagesize = $request->input('limit', 1);
|
|
$offset = ($offset - 1) * $pagesize;
|
|
$mobile = $request->input('mobile', '');
|
|
$account = $request->input('account', '');
|
|
$order_id = $request->input('sort', 'id');
|
|
$order_type = $request->input('order', 'desc');
|
|
$debug = $request->input('debug', 0);
|
|
$model = $this->setModel();
|
|
$role=$request->input('role','');
|
|
|
|
$search_arr=[
|
|
'mobile'=>[
|
|
'type'=>'like',
|
|
'value'=>$mobile
|
|
],
|
|
'account'=>[
|
|
'type'=>'like',
|
|
'value'=>$account
|
|
]
|
|
];
|
|
$model=$this->searchKey($model,$search_arr);
|
|
if($role)
|
|
{
|
|
|
|
$model=$model->whereHas('roles', function ($query) use($role) {
|
|
$query->where('id', $role);
|
|
});
|
|
}
|
|
|
|
$total = $model->count();
|
|
$result = $model->skip($offset)->orderBy($order_id, $order_type)->orderBy('id', 'desc')->take($pagesize)->get();;
|
|
$narr = array();
|
|
|
|
foreach ($result as $k => $v) {
|
|
$v['edit_url']=action($this->route['controller_name'] . '@edit', ['id' => $v->id]);
|
|
$v['edit_post_url']=action($this->route['controller_name'] . '@update', ['id' => $v->id]);
|
|
$v['roles_name']=$v->roles()->pluck('name');
|
|
$narr[] = $v;
|
|
}
|
|
$json = [
|
|
"status"=>1,
|
|
'code'=>$total>0?0:1,
|
|
'msg'=>$total>0?'请求数据成功':'暂无数据',
|
|
'count' => $total,
|
|
'data' => $narr
|
|
];
|
|
|
|
if ($debug) {
|
|
return $this->jsonDebug($json);
|
|
}
|
|
return response()->json($json);
|
|
}
|
|
}
|