RoleController.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Models\Role;
  4. use App\Services\PermissionService;
  5. use Illuminate\Support\Facades\DB;
  6. use Illuminate\Support\Facades\Auth;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. use Illuminate\Support\Facades\Validator;
  10. class RoleController extends Controller
  11. {
  12. //获取角色列表
  13. public function index(Request $request){
  14. $input=$request->all();
  15. $search_name=$input['search_name'];
  16. $page_size=$input['page_size'];
  17. $page_index=$input['page_index'];
  18. $count=($page_index-1)*$page_size;
  19. $roles = DB::table('roles')
  20. ->select('id','name','permissions')
  21. ->where('name','like','%'.$search_name.'%')
  22. ->where('is_del','0')
  23. ->orderBy('id','desc')
  24. ->skip($count)->take($page_size)->get();
  25. if($roles){
  26. return response()->json([
  27. 'error_code'=>200,
  28. 'msg'=>'角色列表',
  29. 'data'=> $roles,
  30. ]);
  31. }else{
  32. return response()->json([
  33. 'error_code'=>0,
  34. 'msg'=>'获取失败',
  35. ]);
  36. }
  37. }
  38. //获取权限信息
  39. public function permission(){
  40. $routes_groups = PermissionService::getPermissionGroupsMap();
  41. if($routes_groups){
  42. return response()->json([
  43. 'error_code'=>200,
  44. 'msg'=>'权限列表',
  45. 'data'=>$routes_groups,
  46. ]);
  47. }else{
  48. return response()->json([
  49. 'error_code'=>0,
  50. 'msg'=>'获取失败',
  51. ]);
  52. }
  53. }
  54. //验证添加角色
  55. public function upload(Request $request){
  56. $input = $request->all();
  57. //验证判断
  58. $rules = [
  59. 'name'=>'required|unique:roles|max:16',
  60. 'permissions'=>'required',
  61. ];
  62. $messages=[
  63. 'name.required'=>'角色名称不能为空.',
  64. 'name.max'=>'角色名称不能超过16个字符.',
  65. // 'name.unique'=>'角色名称已存在.',
  66. 'permissions.required'=>'角色权限不能为空.',
  67. ];
  68. $validator = Validator::make($input, $rules, $messages);
  69. if($validator->fails()){
  70. return response()->json([
  71. 'error_code'=>'41113',
  72. 'msg'=>$validator->errors()->first()
  73. ]);
  74. }
  75. $count=DB::table('roles')->where('name',$input['name'])->where('is_del','0')->count();
  76. if($count>0){
  77. return response()->json([
  78. 'error_code'=>419,
  79. 'msg'=>'角色名称已存在',
  80. ]);
  81. }
  82. $row= Role::create([
  83. 'name'=>$input['name'],
  84. 'permissions'=>$input['permissions'],
  85. 'is_del'=>'0',
  86. 'created_at'=>date("Y-m-d H:i:s"),
  87. 'updated_at'=>date("Y-m-d H:i:s"),
  88. ]);
  89. if($row){
  90. return response()->json([
  91. 'error_code'=>200,
  92. 'msg'=>'添加成功',
  93. ]);
  94. }else{
  95. return response()->json([
  96. 'error_code'=>0,
  97. 'msg'=>'添加失败',
  98. ]);
  99. }
  100. }
  101. //编辑角色
  102. public function edit(Request $request){
  103. $input=$request->all();
  104. $roleid=$input['id'];
  105. $roles =DB::table('roles')->where("id",$roleid)->get();
  106. if($roles){
  107. return response()->json([
  108. 'error_code'=>200,
  109. 'msg'=>'获取成功',
  110. 'data'=>$roles
  111. ]);
  112. }else{
  113. return response()->json([
  114. 'error_code'=>0,
  115. 'msg'=>'获取失败'
  116. ]);
  117. }
  118. }
  119. //更新角色
  120. public function update(Request $request){
  121. $input = $request->all();
  122. $rules = [
  123. 'name'=>'required|max:16',
  124. 'permissions'=>'required',
  125. ];
  126. $messages=[
  127. 'name.required'=>'角色名称不能为空.',
  128. 'name.max'=>'角色名称不能超过16个字符.',
  129. 'permissions.required'=>'角色权限不能为空.',
  130. ];
  131. $validator = Validator::make($input, $rules, $messages);
  132. if($validator->fails()){
  133. return response()->json([
  134. 'error_code'=>'41113',
  135. 'msg'=>$validator->errors()->first()
  136. ]);
  137. }
  138. $role=DB::table('roles')->where('id',$input['id'])->first();
  139. if($role->name!=$input['name'] && $input['name']!=''){
  140. $count=DB::table('roles')->where('name',$input['name'])->count();
  141. if($count==0){
  142. $data['name'] = $input['name'];
  143. }else{
  144. return response()->json([
  145. 'error_code'=>419,
  146. 'msg'=>'角色名称已存在',
  147. ]);
  148. }
  149. }
  150. if($input['permissions']!=$role->permissions && $input['permissions']!=''){
  151. $data['permissions'] = $input['permissions'];
  152. }
  153. $data['updated_at']=date("Y-m-d H:i:s");
  154. $row=DB::table('roles')->where("id",$input['id'])->update($data);
  155. if($row){
  156. return response()->json([
  157. 'error_code'=>200,
  158. 'msg'=>'修改成功',
  159. ]);
  160. }else{
  161. return response()->json([
  162. 'error_code'=>0,
  163. 'msg'=>'修改失败',
  164. ]);
  165. }
  166. }
  167. //删除角色
  168. public function destroy(Request $request)
  169. {
  170. $input=$request->all();
  171. $roleid=$input['id'];
  172. $n=DB::table('admins')->where('roleid',$roleid)->count();
  173. if($n>0){
  174. $data['is_del']='1'; //删除角色
  175. $data['del_aid']=Auth::guard('admin')->user()->id;
  176. $data['deleted_at']=date("Y-m-d H:i:s");
  177. $row=DB::table('roles')->where('id',$roleid)->update($data);
  178. if($row){
  179. return response()->json([
  180. 'error_code'=>200,
  181. 'msg'=>'删除成功',
  182. ]);
  183. }else{
  184. return response()->json([
  185. 'error_code'=>0,
  186. 'msg'=>'删除失败',
  187. ]);
  188. }
  189. }else{
  190. return response()->json([
  191. 'error_code'=>201,
  192. 'msg'=>'管理员正在使用该角色,不能删除',
  193. ]);
  194. }
  195. }
  196. }