123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Models\Admin;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Auth;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\Validator;
- class AdminController extends Controller
- {
- //获取管理员列表
- public function index(Request $request){
- $input=$request->all();
- $search_name=$input['search_name'];
- $page_size=$input['page_size'];
- $page_index=$input['page_index'];
- $num=($page_index-1)*$page_size;
- $count=DB::table('admins')
- ->join('roles','admins.roleid','=','roles.id')
- ->select('admins.id','admins.name','roles.name as rolename','roles.id as rid','admins.status')
- ->where('admins.name','like','%'.$search_name.'%')
- ->count();
- if($count>0){
- $admins = DB::table('admins')
- ->join('roles','admins.roleid','=','roles.id')
- ->select('admins.id','admins.name','roles.name as rolename','roles.id as rid','admins.status','admins.is_team','admins.team_id')
- ->where('admins.name','like','%'.$search_name.'%')
- ->orderBy('admins.id','desc')
- ->skip($num)->take($page_size)->get();
- if($admins){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'获取成功',
- 'data'=> $admins,
- 'count'=>$count
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'获取失败'
- ]);
- }
- }else{
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'没有获取到数据',
- 'data'=> [],
- 'count'=>$count
- ]);
- }
- }
- //禁用管理员
- public function disable(Request $request){
- $input=$request->all();
- $n=($input['status']=='1')?'3':'1'; //1为启用 3为禁用
- $row=DB::table('admins')->where("id",$input['id'])->update(['status'=>$n]);
- if($row){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'已修改'
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'修改失败'
- ]);
- }
- }
- //获取角色信息
- public function getRoles(){
- $roles = DB::table('roles')
- ->where('is_del','0')
- ->select("id","name")->get();
- if($roles){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'获取成功',
- 'data'=> $roles
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'获取失败'
- ]);
- }
- }
- //管理员编辑页面
- public function edit(Request $request){
- $input=$request->all();
- $admins =DB::table('admins')->where("id",$input['id'])->first();
- if($admins){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'获取成功',
- 'data'=> $admins
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'获取失败'
- ]);
- }
- }
- //管理员信息修改
- public function update(Request $request){
- $rules=[
- 'name'=>'required|max:16',
- 'roleid'=>'required'
- ];
- $messages=[
- 'name.required'=>'管理员名称不能为空.',
- 'name.max'=>'管理员名称不能超过16个字符.',
- 'roleid.required'=>'请选择角色'
- ];
- $validator = Validator::make($request->all(), $rules, $messages);
- if($validator->fails()){
- return response()->json([
- 'error_code'=>'41113',
- 'msg'=>$validator->errors()->first()
- ]);
- }
- $adminId=$request->post('id');
- $aId=DB::table('admins')->where('name',$request->post('name'))->value('id');
- if($request->post('password')){
- $len=strlen($request->post('password'));
- if($len<6 || $len>12){
- return response()->json([
- 'error_code'=>'41113',
- 'msg'=>'密码长度为6 至 12个字符'
- ]);
- }
- $admin['password'] = md5($request->post('password'));
- }
- $admin['name'] = $request->post('name');
- $admin['roleid'] = $request->post('roleid');
- $admin['updated_at']=date("Y-m-d H:i:s");
- if($request->post('is_captain')=='0'){
- return response()->json([
- 'error_code'=>'41113',
- 'msg'=>'请选择是否为支部长'
- ]);
- }elseif($request->post('is_captain')=='1'){
- $admin['is_team'] =1;
- $admin['team_id'] =0;
- }elseif($request->post('is_captain')=='2'){
- $admin['is_team'] = $request->post('is_captain');
- if(!$request->has('captain') || !$request->post('captain')){
- return response()->json([
- 'error_code'=>'41113',
- 'msg'=>'请选择支部'
- ]);
- }
- $admin['team_id'] = $request->post('captain');
- }
- if($aId){
- if($adminId==$aId){
- $row=DB::table('admins')->where("id",$adminId)->update($admin);
- if($row){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'修改成功'
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'修改失败'
- ]);
- }
- }else{
- return response()->json([
- 'error_code'=>40001,
- 'msg'=>'用户名已存在'
- ]);
- }
- }else{
- $row=DB::table('admins')->where("id",$adminId)->update($admin);
- if($row){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'修改成功'
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'修改失败'
- ]);
- }
- }
- }
- //添加管理员
- public function upload(Request $request){
- $input = $request->all();
- $rules=[
- 'password'=>'required|min:6|max:12',
- 'name'=>'required|max:16',
- 'roleid'=>'required'
- ];
- $messages=[
- 'name.required'=>'管理员名称不能为空.',
- 'name.max'=>'管理员名称不能超过16个字符.',
- 'password.required'=>'密码不能为空.',
- 'password.min'=>'密码长度为6 到 12个字符.',
- 'password.max'=>'密码长度为6 到 12个字符.',
- 'roleid.required'=>'请选择角色'
- ];
- $validator = Validator::make($input, $rules, $messages);
- if($validator->fails()){
- return response()->json([
- 'error_code'=>'41113',
- 'msg'=>$validator->errors()->first()
- ]);
- }
- $adminInfo=DB::table('admins')->where('name',$input['name'])->first();
- if($adminInfo){
- return response()->json([
- 'error_code'=>'41115',
- 'msg'=>'账户名已存在'
- ]);
- }
- if($input['is_captain']=='0'){
- return response()->json([
- 'error_code'=>'41113',
- 'msg'=>'请选择是否为支部长'
- ]);
- }elseif($input['is_captain']=='1'){
- $data['is_team']=$input['is_captain'];
- }elseif($input['is_captain']=='2'){
- $data['is_team']=$input['is_captain'];
- if(!$request->has('captain')){
- return response()->json([
- 'error_code'=>'41113',
- 'msg'=>'请选择支部'
- ]);
- }
- $data['team_id']=$input['captain'];
- }
- $data['password']=md5($input['password']);
- $data['name']=$input['name'];
- $data['roleid']=$input['roleid'];
- $data['status']=1;
- $data['created_at']=date("Y-m-d H:i:s");
- $data['updated_at']=date("Y-m-d H:i:s");
- $row= DB::table('admins')->insert($data);
- if($row){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'添加成功'
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'添加失败'
- ]);
- }
- }
- //删除管理员
- public function destroy(Request $request){
- $input=$request->all();
- $adminId=$input['id'];
- $adminName =DB::table('admins')
- ->join('roles','admins.roleid','=','roles.id')
- ->where("admins.id",$adminId)->value('roles.name');
- if($adminName=="超级管理员"){
- return response()->json([
- 'error_code'=>111,
- 'msg'=>'不能删除超级管理员'
- ]);
- }
- $row=DB::table('admins')->where("id",$adminId)->delete();
- if($row){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'删除成功'
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'删除失败'
- ]);
- }
- }
- /* 管理员修改密码 */
- public function editPassword(Request $request){
- $adminId=Auth::guard('admin')->user()->id;
- $input=$request->all();
- $oldPass=DB::table('admins')->where('id',$adminId)->value('password');
- if($oldPass==md5($input['password'])){
- return response()->json([
- 'error_code'=>40014,
- 'msg'=>'新密码与旧密码相同'
- ]);
- }
- $row=DB::table('admins')->where('id',$adminId)->update(['password'=>md5($input['password'])]);
- if($row){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'修改成功'
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'修改失败',
- ]);
- }
- }
- //管理员登录
- public function login(Request $request){
- $rules=[
- 'password'=>'required|min:6|max:12',
- 'name'=>'required|max:16',
- ];
- $messages=[
- 'name.required'=>'管理员名称不能为空.',
- 'name.max'=>'管理员名称不能超过16个字符.',
- 'password.required'=>'密码不能为空.',
- 'password.min'=>'密码长度为6 到 12个字符.',
- 'password.max'=>'密码长度为6 到 12个字符.',
- ];
- $validator = Validator::make($request->all(), $rules, $messages);
- if($validator->fails()){
- return response()->json([
- 'error_code'=>'41113',
- 'msg'=>$validator->errors()->first()
- ]);
- }
- $where['password']=md5($request->post('password'));
- $where['name']=$request->post('name');
- $admin = Admin::where($where)->first();
- if(isset($admin)){
- if($admin->status==1){
- if($token=Auth::guard('admin')->fromUser($admin)){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'登录成功',
- 'data'=> $token,
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'登录失败'
- ]);
- }
- }else{
- return response()->json([
- 'error_code'=>40015,
- 'msg'=>'管理员已禁用'
- ]);
- }
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'用户信息有误'
- ]);
- }
- }
- public function getAdminInfo(){
- $adminId=Auth::guard('admin')->user()->id;
- $adminInfo=DB::table('admins')
- ->join('roles','admins.roleid','=','roles.id')
- ->where('admins.id','=',$adminId)
- ->select('admins.name','roles.permissions','admins.is_team','admins.team_id')
- ->first();
- if( $adminInfo){
- return response()->json([
- 'error_code'=>200,
- 'msg'=>'成功',
- 'data'=>$adminInfo
- ]);
- }else{
- return response()->json([
- 'error_code'=>0,
- 'msg'=>'失败'
- ]);
- }
- }
- public function me()
- {
- return response()->json($this->guard()->user());
- }
- public function logout()
- {
- $this->guard()->logout();
- return response()->json([
- 'error_code' => 200,
- 'msg' => '退出成功'
- ]);
- }
- public function refresh()
- {
- return $this->respondWithToken($this->guard()->refresh());
- }
- protected function respondWithToken($token)
- {
- return response()->json([
- 'access_token' => $token,
- 'token_type' => 'bearer',
- 'expires_in' => $this->guard()->factory()->getTTL() * 60
- ]);
- }
- public function guard()
- {
- return Auth::guard();
- }
- }
|