AdminController.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Models\Admin;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. use Illuminate\Support\Facades\Auth;
  7. use App\Http\Controllers\Controller;
  8. use Illuminate\Support\Facades\Validator;
  9. class AdminController extends Controller
  10. {
  11. //获取管理员列表
  12. public function index(Request $request){
  13. $input=$request->all();
  14. $search_name=$input['search_name'];
  15. $page_size=$input['page_size'];
  16. $page_index=$input['page_index'];
  17. $num=($page_index-1)*$page_size;
  18. $count=DB::table('admins')
  19. ->join('roles','admins.roleid','=','roles.id')
  20. ->select('admins.id','admins.name','roles.name as rolename','roles.id as rid','admins.status')
  21. ->where('admins.name','like','%'.$search_name.'%')
  22. ->count();
  23. if($count>0){
  24. $admins = DB::table('admins')
  25. ->join('roles','admins.roleid','=','roles.id')
  26. ->select('admins.id','admins.name','roles.name as rolename','roles.id as rid','admins.status','admins.is_team','admins.team_id')
  27. ->where('admins.name','like','%'.$search_name.'%')
  28. ->orderBy('admins.id','desc')
  29. ->skip($num)->take($page_size)->get();
  30. if($admins){
  31. return response()->json([
  32. 'error_code'=>200,
  33. 'msg'=>'获取成功',
  34. 'data'=> $admins,
  35. 'count'=>$count
  36. ]);
  37. }else{
  38. return response()->json([
  39. 'error_code'=>0,
  40. 'msg'=>'获取失败'
  41. ]);
  42. }
  43. }else{
  44. return response()->json([
  45. 'error_code'=>200,
  46. 'msg'=>'没有获取到数据',
  47. 'data'=> [],
  48. 'count'=>$count
  49. ]);
  50. }
  51. }
  52. //禁用管理员
  53. public function disable(Request $request){
  54. $input=$request->all();
  55. $n=($input['status']=='1')?'3':'1'; //1为启用 3为禁用
  56. $row=DB::table('admins')->where("id",$input['id'])->update(['status'=>$n]);
  57. if($row){
  58. return response()->json([
  59. 'error_code'=>200,
  60. 'msg'=>'已修改'
  61. ]);
  62. }else{
  63. return response()->json([
  64. 'error_code'=>0,
  65. 'msg'=>'修改失败'
  66. ]);
  67. }
  68. }
  69. //获取角色信息
  70. public function getRoles(){
  71. $roles = DB::table('roles')
  72. ->where('is_del','0')
  73. ->select("id","name")->get();
  74. if($roles){
  75. return response()->json([
  76. 'error_code'=>200,
  77. 'msg'=>'获取成功',
  78. 'data'=> $roles
  79. ]);
  80. }else{
  81. return response()->json([
  82. 'error_code'=>0,
  83. 'msg'=>'获取失败'
  84. ]);
  85. }
  86. }
  87. //管理员编辑页面
  88. public function edit(Request $request){
  89. $input=$request->all();
  90. $admins =DB::table('admins')->where("id",$input['id'])->first();
  91. if($admins){
  92. return response()->json([
  93. 'error_code'=>200,
  94. 'msg'=>'获取成功',
  95. 'data'=> $admins
  96. ]);
  97. }else{
  98. return response()->json([
  99. 'error_code'=>0,
  100. 'msg'=>'获取失败'
  101. ]);
  102. }
  103. }
  104. //管理员信息修改
  105. public function update(Request $request){
  106. $rules=[
  107. 'name'=>'required|max:16',
  108. 'roleid'=>'required'
  109. ];
  110. $messages=[
  111. 'name.required'=>'管理员名称不能为空.',
  112. 'name.max'=>'管理员名称不能超过16个字符.',
  113. 'roleid.required'=>'请选择角色'
  114. ];
  115. $validator = Validator::make($request->all(), $rules, $messages);
  116. if($validator->fails()){
  117. return response()->json([
  118. 'error_code'=>'41113',
  119. 'msg'=>$validator->errors()->first()
  120. ]);
  121. }
  122. $adminId=$request->post('id');
  123. $aId=DB::table('admins')->where('name',$request->post('name'))->value('id');
  124. if($request->post('password')){
  125. $len=strlen($request->post('password'));
  126. if($len<6 || $len>12){
  127. return response()->json([
  128. 'error_code'=>'41113',
  129. 'msg'=>'密码长度为6 至 12个字符'
  130. ]);
  131. }
  132. $admin['password'] = md5($request->post('password'));
  133. }
  134. $admin['name'] = $request->post('name');
  135. $admin['roleid'] = $request->post('roleid');
  136. $admin['updated_at']=date("Y-m-d H:i:s");
  137. if($request->post('is_captain')=='0'){
  138. return response()->json([
  139. 'error_code'=>'41113',
  140. 'msg'=>'请选择是否为支部长'
  141. ]);
  142. }elseif($request->post('is_captain')=='1'){
  143. $admin['is_team'] =1;
  144. $admin['team_id'] =0;
  145. }elseif($request->post('is_captain')=='2'){
  146. $admin['is_team'] = $request->post('is_captain');
  147. if(!$request->has('captain') || !$request->post('captain')){
  148. return response()->json([
  149. 'error_code'=>'41113',
  150. 'msg'=>'请选择支部'
  151. ]);
  152. }
  153. $admin['team_id'] = $request->post('captain');
  154. }
  155. if($aId){
  156. if($adminId==$aId){
  157. $row=DB::table('admins')->where("id",$adminId)->update($admin);
  158. if($row){
  159. return response()->json([
  160. 'error_code'=>200,
  161. 'msg'=>'修改成功'
  162. ]);
  163. }else{
  164. return response()->json([
  165. 'error_code'=>0,
  166. 'msg'=>'修改失败'
  167. ]);
  168. }
  169. }else{
  170. return response()->json([
  171. 'error_code'=>40001,
  172. 'msg'=>'用户名已存在'
  173. ]);
  174. }
  175. }else{
  176. $row=DB::table('admins')->where("id",$adminId)->update($admin);
  177. if($row){
  178. return response()->json([
  179. 'error_code'=>200,
  180. 'msg'=>'修改成功'
  181. ]);
  182. }else{
  183. return response()->json([
  184. 'error_code'=>0,
  185. 'msg'=>'修改失败'
  186. ]);
  187. }
  188. }
  189. }
  190. //添加管理员
  191. public function upload(Request $request){
  192. $input = $request->all();
  193. $rules=[
  194. 'password'=>'required|min:6|max:12',
  195. 'name'=>'required|max:16',
  196. 'roleid'=>'required'
  197. ];
  198. $messages=[
  199. 'name.required'=>'管理员名称不能为空.',
  200. 'name.max'=>'管理员名称不能超过16个字符.',
  201. 'password.required'=>'密码不能为空.',
  202. 'password.min'=>'密码长度为6 到 12个字符.',
  203. 'password.max'=>'密码长度为6 到 12个字符.',
  204. 'roleid.required'=>'请选择角色'
  205. ];
  206. $validator = Validator::make($input, $rules, $messages);
  207. if($validator->fails()){
  208. return response()->json([
  209. 'error_code'=>'41113',
  210. 'msg'=>$validator->errors()->first()
  211. ]);
  212. }
  213. $adminInfo=DB::table('admins')->where('name',$input['name'])->first();
  214. if($adminInfo){
  215. return response()->json([
  216. 'error_code'=>'41115',
  217. 'msg'=>'账户名已存在'
  218. ]);
  219. }
  220. if($input['is_captain']=='0'){
  221. return response()->json([
  222. 'error_code'=>'41113',
  223. 'msg'=>'请选择是否为支部长'
  224. ]);
  225. }elseif($input['is_captain']=='1'){
  226. $data['is_team']=$input['is_captain'];
  227. }elseif($input['is_captain']=='2'){
  228. $data['is_team']=$input['is_captain'];
  229. if(!$request->has('captain')){
  230. return response()->json([
  231. 'error_code'=>'41113',
  232. 'msg'=>'请选择支部'
  233. ]);
  234. }
  235. $data['team_id']=$input['captain'];
  236. }
  237. $data['password']=md5($input['password']);
  238. $data['name']=$input['name'];
  239. $data['roleid']=$input['roleid'];
  240. $data['status']=1;
  241. $data['created_at']=date("Y-m-d H:i:s");
  242. $data['updated_at']=date("Y-m-d H:i:s");
  243. $row= DB::table('admins')->insert($data);
  244. if($row){
  245. return response()->json([
  246. 'error_code'=>200,
  247. 'msg'=>'添加成功'
  248. ]);
  249. }else{
  250. return response()->json([
  251. 'error_code'=>0,
  252. 'msg'=>'添加失败'
  253. ]);
  254. }
  255. }
  256. //删除管理员
  257. public function destroy(Request $request){
  258. $input=$request->all();
  259. $adminId=$input['id'];
  260. $adminName =DB::table('admins')
  261. ->join('roles','admins.roleid','=','roles.id')
  262. ->where("admins.id",$adminId)->value('roles.name');
  263. if($adminName=="超级管理员"){
  264. return response()->json([
  265. 'error_code'=>111,
  266. 'msg'=>'不能删除超级管理员'
  267. ]);
  268. }
  269. $row=DB::table('admins')->where("id",$adminId)->delete();
  270. if($row){
  271. return response()->json([
  272. 'error_code'=>200,
  273. 'msg'=>'删除成功'
  274. ]);
  275. }else{
  276. return response()->json([
  277. 'error_code'=>0,
  278. 'msg'=>'删除失败'
  279. ]);
  280. }
  281. }
  282. /* 管理员修改密码 */
  283. public function editPassword(Request $request){
  284. $adminId=Auth::guard('admin')->user()->id;
  285. $input=$request->all();
  286. $oldPass=DB::table('admins')->where('id',$adminId)->value('password');
  287. if($oldPass==md5($input['password'])){
  288. return response()->json([
  289. 'error_code'=>40014,
  290. 'msg'=>'新密码与旧密码相同'
  291. ]);
  292. }
  293. $row=DB::table('admins')->where('id',$adminId)->update(['password'=>md5($input['password'])]);
  294. if($row){
  295. return response()->json([
  296. 'error_code'=>200,
  297. 'msg'=>'修改成功'
  298. ]);
  299. }else{
  300. return response()->json([
  301. 'error_code'=>0,
  302. 'msg'=>'修改失败',
  303. ]);
  304. }
  305. }
  306. //管理员登录
  307. public function login(Request $request){
  308. $rules=[
  309. 'password'=>'required|min:6|max:12',
  310. 'name'=>'required|max:16',
  311. ];
  312. $messages=[
  313. 'name.required'=>'管理员名称不能为空.',
  314. 'name.max'=>'管理员名称不能超过16个字符.',
  315. 'password.required'=>'密码不能为空.',
  316. 'password.min'=>'密码长度为6 到 12个字符.',
  317. 'password.max'=>'密码长度为6 到 12个字符.',
  318. ];
  319. $validator = Validator::make($request->all(), $rules, $messages);
  320. if($validator->fails()){
  321. return response()->json([
  322. 'error_code'=>'41113',
  323. 'msg'=>$validator->errors()->first()
  324. ]);
  325. }
  326. $where['password']=md5($request->post('password'));
  327. $where['name']=$request->post('name');
  328. $admin = Admin::where($where)->first();
  329. if(isset($admin)){
  330. if($admin->status==1){
  331. if($token=Auth::guard('admin')->fromUser($admin)){
  332. return response()->json([
  333. 'error_code'=>200,
  334. 'msg'=>'登录成功',
  335. 'data'=> $token,
  336. ]);
  337. }else{
  338. return response()->json([
  339. 'error_code'=>0,
  340. 'msg'=>'登录失败'
  341. ]);
  342. }
  343. }else{
  344. return response()->json([
  345. 'error_code'=>40015,
  346. 'msg'=>'管理员已禁用'
  347. ]);
  348. }
  349. }else{
  350. return response()->json([
  351. 'error_code'=>0,
  352. 'msg'=>'用户信息有误'
  353. ]);
  354. }
  355. }
  356. public function getAdminInfo(){
  357. $adminId=Auth::guard('admin')->user()->id;
  358. $adminInfo=DB::table('admins')
  359. ->join('roles','admins.roleid','=','roles.id')
  360. ->where('admins.id','=',$adminId)
  361. ->select('admins.name','roles.permissions','admins.is_team','admins.team_id')
  362. ->first();
  363. if( $adminInfo){
  364. return response()->json([
  365. 'error_code'=>200,
  366. 'msg'=>'成功',
  367. 'data'=>$adminInfo
  368. ]);
  369. }else{
  370. return response()->json([
  371. 'error_code'=>0,
  372. 'msg'=>'失败'
  373. ]);
  374. }
  375. }
  376. public function me()
  377. {
  378. return response()->json($this->guard()->user());
  379. }
  380. public function logout()
  381. {
  382. $this->guard()->logout();
  383. return response()->json([
  384. 'error_code' => 200,
  385. 'msg' => '退出成功'
  386. ]);
  387. }
  388. public function refresh()
  389. {
  390. return $this->respondWithToken($this->guard()->refresh());
  391. }
  392. protected function respondWithToken($token)
  393. {
  394. return response()->json([
  395. 'access_token' => $token,
  396. 'token_type' => 'bearer',
  397. 'expires_in' => $this->guard()->factory()->getTTL() * 60
  398. ]);
  399. }
  400. public function guard()
  401. {
  402. return Auth::guard();
  403. }
  404. }