UsersController.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: qiuzijian
  5. * Date: 2021-04-15
  6. * Time: 17:28
  7. */
  8. namespace Modules\Admin\Http\Controllers;
  9. use App\User;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Support\Facades\Hash;
  12. use Modules\Admin\Auxiliary\View\FromAuxiliary;
  13. use Modules\Admin\Auxiliary\View\TableAuxiliary;
  14. use Modules\Admin\Enum\UserEnum;
  15. use Modules\Admin\Services\AdminService;
  16. use Modules\Admin\Services\UsersService;
  17. use Spatie\Permission\Models\Permission;
  18. use DB;
  19. use Illuminate\Support\Facades\Log;
  20. class UsersController extends BaseController
  21. {
  22. public function __construct()
  23. {
  24. parent::__construct();
  25. $this->menusActive[0] = 'adminUsers';
  26. $this->menusActive[1] = 'adminUsersList';
  27. }
  28. //用户列表
  29. public function userList(Request $request)
  30. {
  31. $this->menusActive[0] = 'adminUsers';
  32. $this->menusActive[1] = 'adminUsersList';
  33. $query = User::where('id', '>', 0);
  34. if ($request->has('name_staffNum_mobile')) {
  35. $query = $query->where('staff_num', 'like', '%' . $request->input('name_staffNum_mobile') . '%')
  36. ->orWhere('mobile', 'like', '%' . $request->input('name_staffNum_mobile') . '%')
  37. ->orWhere('name', 'like', '%' . $request->input('name_staffNum_mobile') . '%');
  38. }
  39. $users = $query->paginate(50);
  40. $tableObj = new TableAuxiliary('users/list', $users);
  41. $tableObj->primaryKey = 'staff_num';
  42. // $tableObj->topActions = ['add', 'export', 'import', 'importTemplate'];
  43. $tableObj->topActions = ['add'];
  44. $tableObj->displayActionOthers = [
  45. [
  46. 'name' => '更改权限',
  47. 'path' => 'users/roles/edit',
  48. 'class' => 'layui-btn-warm',
  49. 'isShow' => function ($item) {
  50. return true;
  51. },
  52. ],
  53. [
  54. 'name' => '重置密码',
  55. 'path' => 'users/list/resetpassword',
  56. 'class' => 'layui-btn-warm',
  57. 'isShow' => function ($item) {
  58. return true;
  59. },
  60. 'isJump' => 'confirm',
  61. ]
  62. ];
  63. $tableObj->search('input', 'name_staffNum_mobile', '姓名、编号或手机号');
  64. $tableObj->column('name', '姓名')
  65. ->column('staff_num', '用户名')
  66. ->column('mobile', '手机号');
  67. return $this->tableList($tableObj);
  68. }
  69. //查看用户详情
  70. public function userDetail(Request $request)
  71. {
  72. $staff_num = $request->input('staff_num');
  73. if (empty($staff_num)) {
  74. return redirect('/users/list/view');
  75. }
  76. $user = User::where('staff_num', $staff_num)->first();
  77. $tableObj = new TableAuxiliary('', $user);
  78. $tableObj->column("name", "姓名")
  79. ->column("mobile", "手机号")
  80. ->column("staff_num", "用户名");
  81. $tableObj->title = '用户详情';
  82. return $this->tableView($tableObj);
  83. }
  84. //添加用户
  85. public function add(Request $request)
  86. {
  87. $fromObj = new FromAuxiliary('users/list/add');
  88. $fromObj->input("name", "姓名")
  89. ->input("mobile", "手机号")
  90. ->input("staff_num", "用户名");
  91. $fromObj->title = '添加职员';
  92. return $this->from($fromObj);
  93. }
  94. public function resetpass(Request $request)
  95. {
  96. if ($request->isMethod('post')) {
  97. if (!$request->has(['old_password', 'password', 'confirm_password'])) {
  98. return $this->error(1, '缺少必要参数');
  99. }
  100. $admin_password = DB::table('users')->where('id', $request->user()->id)->first();
  101. if (!Hash::check(strval($request->input('old_password')), $admin_password->password)) {
  102. return $this->error(1, '原始密码错误');
  103. }
  104. if ($request->input('password') !== $request->input('confirm_password')) {
  105. return $this->error(1, '新密码和确认密码不一致');
  106. }
  107. $valid = validPass($request->input('password'));
  108. if (is_string($valid)) {
  109. return $this->error(1, $valid);
  110. }
  111. $password = bcrypt($request->input('password'));
  112. DB::table('users')->where('id',$request->user()->id)->update(['password'=>$password]);
  113. return $this->success('', '修改成功!');
  114. }
  115. $fromObj = new FromAuxiliary('welcome/resetpassword');
  116. $fromObj->title = '重设密码';
  117. $fromObj->password('old_password', '原始密码');
  118. $fromObj->password('password', '新密码');
  119. $fromObj->password('confirm_password', '确认密码');
  120. return $this->from($fromObj);
  121. }
  122. //添加用户操作
  123. public function addPost(Request $request)
  124. {
  125. if (!$request->has('staff_num') || $request->input('staff_num') == 'admin' || empty($request->input('staff_num'))) {
  126. return $this->error(1, '用户编码错误');
  127. }
  128. if (!$request->has('name') || empty($request->input('name'))) {
  129. return $this->error(1, '姓名不能为空');
  130. }
  131. $result = UsersService::addAdminUser($request->all());
  132. if (!$result['status']) {
  133. return $this->error(1, $result['msg']);
  134. }
  135. return redirect('/admin/users/list');
  136. }
  137. //编辑用户
  138. public function edit(Request $request)
  139. {
  140. $staff_num = $request->input('staff_num');
  141. if (empty($staff_num)) {
  142. return redirect('/admin/users/list');
  143. }
  144. $user = User::where('staff_num', $staff_num)->first();
  145. $fromObj = new FromAuxiliary('users/list/edit', $user);
  146. $fromObj->input("name", "姓名")
  147. ->input("mobile", "手机号")
  148. ->input("staff_num", "用户名");
  149. $fromObj->title = '修改用户信息';
  150. $fromObj->primaryKey = 'staff_num';
  151. return $this->from($fromObj);
  152. }
  153. //编辑用户操作
  154. public function editPost(Request $request)
  155. {
  156. if (!$request->has('staff_num') || $request->input('staff_num') == 'admin' || empty($request->input('staff_num'))) {
  157. return $this->error(1, '用户名错误');
  158. }
  159. if (!$request->has('name') || empty($request->input('name'))) {
  160. return $this->error(1, '姓名不能为空');
  161. }
  162. $result = UsersService::editAdminUser($request->all());
  163. if (!$result['status']) {
  164. return $this->error(1, $result['msg']);
  165. }
  166. return redirect('/admin/users/list');
  167. }
  168. //删除用户
  169. public function delPost(Request $request)
  170. {
  171. if (!$request->has('staff_num')) {
  172. return $this->error(1, '缺少必要参数');
  173. }
  174. if ($request->input('staff_num') == 'admin') {
  175. return $this->error(1, '用户名错误');
  176. }
  177. if ($request->input('staff_num') == $request->user()['staff_num']) {
  178. return $this->error(1, '不能删除自己');
  179. }
  180. $result = UsersService::delAdminUser($request->all());
  181. if (!$result['status']) {
  182. return $this->error(1, $result['msg']);
  183. }
  184. return $this->success();
  185. }
  186. //重置用户密码
  187. public function resetPassword(Request $request)
  188. {
  189. if (!$request->has('staff_num')) {
  190. return $this->error(1, '缺少必要参数');
  191. }
  192. $result = UsersService::resetPassword($request->all());
  193. if (!$result['status']) {
  194. return $this->error(1, $result['msg']);
  195. }
  196. return $this->success();
  197. }
  198. //权限修改
  199. public function roles(Request $request)
  200. {
  201. $params = $request->all();
  202. if ($request->isMethod('post')) {
  203. $res['mine_role'] = "";
  204. if(isset($params['mine_id'])){
  205. foreach($params['mine_id'] as $k=>$v){
  206. $res['mine_role'] = $res['mine_role'] . $v . ';';
  207. }
  208. $res['mine_role'] = substr($res['mine_role'], 0, strlen($res['mine_role']) - 1);
  209. }
  210. DB::table('users')->where('staff_num',$params['staff_num'])->update($res);
  211. $data['code'] = 0;
  212. return $data;
  213. }
  214. $mine_parent = DB::table('mine_list')->where('parent_id',0)->where('deleted_at',null)->get();
  215. $data['menusAll'] = $mine_parent;
  216. $data['title'] = '更改权限';
  217. $user = DB::table('users')->where('staff_num',$params['staff_num'])->first();
  218. $checkedId = explode(';',$user->mine_role);
  219. foreach($checkedId as $k=>$v){
  220. $checkedId[$k] = (int)$v;
  221. }
  222. $data['checkedId'] = $checkedId;
  223. $data['staff_num'] = $params['staff_num'];
  224. return $this->view('admin::roles', $data);
  225. }
  226. }