AdminController.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Admin;
  5. use App\Models\User;
  6. use App\Models\Role;
  7. use Illuminate\Support\Facades\Auth;
  8. use Illuminate\Support\Facades\Hash;
  9. use Illuminate\Validation\Rule;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Support\Facades\Log;
  12. use Illuminate\Support\Facades\Validator;
  13. class AdminController extends Controller
  14. {
  15. //管理员列表
  16. public function index(Request $request){
  17. $page_index=$request->input('page_index');
  18. $page_size=$request->input('page_size');
  19. $num=$page_size*($page_index-1);
  20. $count=Admin::count();
  21. $list=Admin::with('role:id,name')->skip($num)->take($page_size)->get();
  22. return $this->success_list($list,'',$count);
  23. }
  24. //添加管理员
  25. public function add(Request $request){
  26. $rules=[
  27. 'name'=>[
  28. 'required',
  29. Rule::unique('admins')
  30. ->where(function ($query) {
  31. $query->where('deleted_at', null);
  32. }),
  33. 'between:5,12'
  34. ],
  35. 'password'=>'required|between:6,12',
  36. 'role_id'=>'required',
  37. 'mobile'=>'required_if:role_id,23|size:11',
  38. ];
  39. $messages=[
  40. 'name.required'=>'账号不能为空.',
  41. 'name.between'=>'账号长度应为5-12个字符.',
  42. 'name.unique'=>'账号名已存在.',
  43. 'password.required'=>'密码不能为空.',
  44. 'password.between'=>'密码长度应为6 -12个字符.',
  45. 'role_id.required'=>'请选择角色.',
  46. 'mobile.size'=>'手机号长度应为11个字符.',
  47. 'mobile.required_if'=>'政委手机号必填'
  48. ];
  49. $validator = Validator::make($request->input(),$rules,$messages);
  50. if($validator->fails()){
  51. return $this->error('400013',$validator->errors()->first());
  52. }
  53. if(Admin::where('name',$request->input('name'))->first()){
  54. return $this->error('450001','管理员名称已存在');
  55. }
  56. $res=Admin::create([
  57. 'name'=>$request->input('name'),
  58. 'role_id'=>$request->input('role_id'),
  59. 'password'=>Hash::make($request->input('password')),
  60. 'mobile'=>$request->input('mobile'),
  61. 'status' => 1
  62. ]);
  63. if($res){
  64. if(empty(User::find($res->id))){
  65. User::create(['id'=>$res->id,
  66. 'name'=>'user_'.$res->id.'(关键用户勿动)',
  67. 'nickname'=>'user_'.$res->id,
  68. 'store_id'=>0,
  69. 'status'=>1
  70. ]);
  71. }
  72. return $this->success([]);
  73. }else{
  74. return $this->error();
  75. }
  76. }
  77. //修改管理员
  78. public function edit(Request $request){
  79. $rules=[
  80. 'name'=>'required|max:32',
  81. 'password'=>'sometimes|required|min:6|max:18',
  82. 'role_id'=>'required',
  83. 'mobile'=>'required_if:role_id,23|size:11'
  84. ];
  85. $message=[
  86. 'name.required'=>'用户名不能为空.',
  87. 'name.max'=>'用户名不能大于32个字符.',
  88. 'password.required'=>'密码不能为空.',
  89. 'password.min'=>'密码小于6个字符.',
  90. 'password.max'=>'密码不能大于18个字符.',
  91. 'role_id.required'=>'请选择角色.',
  92. 'mobile.size'=>'手机号长度应为11个字符.',
  93. 'mobile.required_if'=>'政委手机号必填'
  94. ];
  95. $validator = Validator::make($request->input(),$rules,$message);
  96. if($validator->fails()){
  97. return $this->error('400013',$validator->errors()->first());
  98. }
  99. $admin_id=Admin::where('name',$request->input('name'))->value('id');
  100. if($admin_id && $admin_id!=$request->input('id')){
  101. return $this->error('450001','管理员名称已存在');
  102. }
  103. $admin=Admin::find($request->input('id'));
  104. $admin->name=$request->input('name');
  105. $admin->role_id=$request->input('role_id');
  106. $admin->mobile=$request->input('mobile');
  107. if($request->has('password') && !empty($request->input('password'))){
  108. $admin->password=Hash::make($request->input('password'));
  109. }
  110. $res=$admin->save();
  111. if($res){
  112. return $this->success([]);
  113. }else{
  114. return $this->error();
  115. }
  116. }
  117. //删除管理员
  118. public function destroy(Request $request){
  119. $res=Admin::where('id',$request->input('id'))->delete();
  120. if($res){
  121. return $this->success([]);
  122. }else{
  123. return $this->error();
  124. }
  125. }
  126. //禁用管理员
  127. public function disabled(Request $request){
  128. $id=$request->input('id');
  129. $status=Admin::where('id',$id)->value('status');
  130. $status=$status==1?2:1;
  131. $res=Admin::where('id',$id)->update(['status'=>$status]);
  132. if($res){
  133. return $this->success([]);
  134. }else{
  135. return $this->error();
  136. }
  137. }
  138. //获取角色
  139. public function getAllRoles(){
  140. $role=Role::select('id','name')->orderBy('id','desc')->get();
  141. return $this->success($role);
  142. }
  143. /*添加 角色*/
  144. public function uploadRole(Request $request){
  145. $rules=[
  146. 'name' => 'required|max:32|unique:roles',
  147. 'permissions' => 'required',
  148. ];
  149. $messages=[
  150. 'name.required'=>'角色名称不能为空.',
  151. 'name.max'=>'角色名称不能超过32个字符.',
  152. 'name.unique'=>'角色名称已存在.',
  153. 'permissions.required'=>'请选择角色权限.',
  154. ];
  155. $validator = Validator::make($request->all(),$rules,$messages);
  156. if ($validator->fails()) {
  157. return $this->error('400013',$validator->errors()->first());
  158. }
  159. $result=Role::create([
  160. 'name'=>$request->post('name'),
  161. 'permissions'=>$request->post('permissions'),
  162. 'desc'=>$request->post('desc'),
  163. 'disable'=>0,
  164. ]);
  165. if($result->id){
  166. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')添加('.$request->post('name').')角色成功');
  167. return $this->success([]);
  168. }
  169. return $this->error();
  170. }
  171. /* 角色禁用 */
  172. public function disableRole(Request $request){
  173. $role=Role::find($request->post('id'));
  174. $role->disable=($role->disable==0)?'1':'0';
  175. $row=$role->save();
  176. if($row){
  177. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')禁用了('.$role->name.')角色');
  178. return $this->success([]);
  179. }
  180. return $this->error();
  181. }
  182. /*修改角色*/
  183. public function updateRole(Request $request){
  184. $input=$request->all();
  185. $rules=[
  186. 'name' => 'required|max:32',
  187. 'permissions' => 'required',
  188. ];
  189. $messages=[
  190. 'name.required'=>'角色名称不能为空.',
  191. 'name.max'=>'角色名称不能超过32个字符.',
  192. 'permissions.required'=>'请选择角色权限.',
  193. ];
  194. $validator = Validator::make($input,$rules,$messages);
  195. if ($validator->fails()) {
  196. return $this->error('400013',$validator->errors()->first());
  197. }
  198. $role=Role::where('name',$input['name'])->first();
  199. if($role){
  200. if($role->id!=$input['id']){
  201. return $this->error('400012','角色名称已存在.');
  202. }
  203. }
  204. $roles=Role::find($request->id);
  205. $roles->name=$request->name;
  206. $roles->permissions=$request->permissions;
  207. $roles->desc=$request->desc;
  208. $result=$roles->save();
  209. if($result){
  210. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')修改了('.$role->name.')角色');
  211. return $this->success([]);
  212. }
  213. return $this->error();
  214. }
  215. }