CustomerUserController.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/4/9 0009
  6. * Time: 14:05
  7. */
  8. namespace App\Http\Controllers\Admin;
  9. use App\Http\Models\Permission;
  10. use App\Http\Models\Role;
  11. use App\Http\Models\Site;
  12. use App\Http\Models\User;
  13. use App\Http\Requests\CustomerUser\CustomerUserSaveRequest;
  14. use App\Http\Traits\HasSites;
  15. use Illuminate\Database\Eloquent\Builder;
  16. use Illuminate\Http\Request;
  17. use App\Http\Controllers\Controller;
  18. use Illuminate\Support\Facades\DB;
  19. /**
  20. * 客户用户管理
  21. * Class CustomerUserController
  22. * @package App\Http\Controllers\Admin
  23. */
  24. class CustomerUserController extends Controller
  25. {
  26. use HasSites;
  27. //用户列表
  28. public function index(Request $request)
  29. {
  30. $oneSite = $this->hasUserOneSite();
  31. if (!$request->ajax()) {
  32. return view('admin/customer_user/user', [
  33. 'roles' => Role::all()
  34. ]);
  35. }
  36. if ($keyword = $request->input('keyword')) {
  37. $filter[] = ['username', 'like', '%' . $keyword . '%'];
  38. }
  39. $filter[] = ['role_id', '=', Role::TYPE_TYPE_CUSTOMER_STAFF];
  40. $select = ['id', 'username', 'email', 'created_at', 'role_id', 'status', 'is_super', 'nickname'];
  41. $roles = User::query()->with('role')->select($select)
  42. ->where($filter ?? [])->whereHas('sites', function (Builder $builder) use ($oneSite) {
  43. $builder->where('id', $oneSite->id);
  44. })->orderByDesc('id')
  45. ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
  46. $items = $roles->items();
  47. array_walk($items, function ($item) {
  48. $item->role_name = '客户雇员';
  49. $item->status_title = $item->status_with_css;
  50. unset($item->role);
  51. });
  52. return response()->json([
  53. 'rows' => $items,
  54. 'total' => $roles->total()
  55. ]);
  56. }
  57. //用户权限
  58. public function userPermission(Request $request)
  59. {
  60. $userIds = $request->input('userIds');
  61. if (!$request->ajax()) {
  62. $selects = [];
  63. if (count($userIds) == 1) {
  64. $user = User::query()->where(['id' => $userIds[0]])->first();
  65. if (!$user) {
  66. return response()->json(['message' => '参数错误'], 400);
  67. }
  68. $selects = $user->permissions->pluck('id')->toArray();
  69. }
  70. /* $nowUser = auth()->user();
  71. $permissions = $nowUser->permissions()
  72. ->select(['title as name', 'id', 'parent_id', 'type'])->get()->toArray();*/
  73. $permissionsIds = DB::table('role_has_permissions')->where('role_id', Role::TYPE_CUSTOMER)->pluck('permission_id');
  74. $permissions = Permission::query()->whereIn('id', $permissionsIds)->get()->toArray();
  75. array_walk($permissions, function (&$item) use ($selects) {
  76. $item['open'] = true;
  77. $item['name'] = $item['title'] . ($item['type'] == 1 ? '【菜单】' : '【功能】');
  78. if (in_array($item['id'], $selects)) {
  79. $item['checked'] = true;
  80. }
  81. });
  82. $trees = list_to_tree($permissions, 'id', 'parent_id', 'children');
  83. return view('admin/customer_user/user_permission', [
  84. 'trees' => $trees,
  85. 'userIds' => $userIds
  86. ]);
  87. }
  88. $permissionIds = $request->input('permissionIds');
  89. $records = User::query()->whereIn('id', $userIds)->get();
  90. foreach ($records as $record) {
  91. $record->permissions()->sync($permissionIds);
  92. }
  93. return response()->json(['message' => '操作成功']);
  94. }
  95. //保存
  96. public function store(CustomerUserSaveRequest $request)
  97. {
  98. $validated = $request->validated();
  99. $validated['password'] = bcrypt($validated['password']);
  100. $validated['profile_img'] = asset('img/social_round_github_64px_1196568_easyicon.net.png');
  101. $validated['role_id'] = Role::TYPE_TYPE_CUSTOMER_STAFF;//公司雇员
  102. $user = User::query()->create($validated);
  103. /**@var \App\Http\Models\User $user * */
  104. $oneSite = $this->hasUserOneSite();
  105. if (!$oneSite) {
  106. return response()->json(['message' => '当前用户未分配站点'], 400);
  107. }
  108. $user->sites()->sync([$oneSite->id]);
  109. $nowUserPermissions = auth()->user()->permissions->pluck('id')->toArray();
  110. //剔除用户管理的权限
  111. $searchIndex = array_search(39, $nowUserPermissions);
  112. if ($searchIndex !== false) {
  113. unset($nowUserPermissions[$searchIndex]);
  114. }
  115. $user->permissions()->sync(array_values($nowUserPermissions));
  116. return response()->json(['message' => '操作成功']);
  117. }
  118. //修改
  119. public function update(CustomerUserSaveRequest $request, $id)
  120. {
  121. $user = User::query()->where(['id' => $id])->first();
  122. /**@var \App\Http\Models\User $user * */
  123. if (!$user) return response()->json(['message' => '数据不存在']);
  124. $validated = $request->validated();
  125. $user->update($validated);
  126. return response()->json(['message' => '操作成功']);
  127. }
  128. public function show($id)
  129. {
  130. if ($id > 0) {
  131. $user = User::query()->with('sites')->where(['id' => $id])->first();
  132. $hasSiteIds = $user->sites->pluck('id')->toArray(); //用户所关联的站点
  133. }
  134. return view('admin/customer_user/user_show', [
  135. 'user' => $user ?? null,
  136. 'roles' => Role::query()->select(['id', 'name'])->get(),
  137. 'sites' => Site::all(),
  138. 'hasSiteIds' => $hasSiteIds ?? []
  139. ]);
  140. }
  141. public function detail($id)
  142. {
  143. $user = User::query()->select()->find($id);
  144. return view('/admin/customer_user/user_detail', [
  145. 'user' => $user
  146. ]);
  147. }
  148. public function destroy($id)
  149. {
  150. User::destroy($id);
  151. return response()->json(['message' => '操作成功']);
  152. }
  153. public function batchDestroy(Request $request)
  154. {
  155. $ids = $request->input('ids');
  156. User::destroy($ids);
  157. return response()->json(['message' => '操作成功']);
  158. }
  159. //用户状态切换 启用
  160. public function on(Request $request)
  161. {
  162. $ids = $request->input('ids');
  163. User::query()->whereIn('id', $ids)->update(['status' => 1]);
  164. return response()->json(['message' => '操作成功']);
  165. }
  166. //用户状态切换 禁用
  167. public function off(Request $request)
  168. {
  169. $ids = $request->input('ids');
  170. User::query()->whereIn('id', $ids)->update(['status' => 0]);
  171. return response()->json(['message' => '操作成功']);
  172. }
  173. }