123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Administrator
- * Date: 2019/4/9 0009
- * Time: 14:05
- */
- namespace App\Http\Controllers\Admin;
- use App\Http\Models\Permission;
- use App\Http\Models\Role;
- use App\Http\Models\Site;
- use App\Http\Models\User;
- use App\Http\Requests\CustomerUser\CustomerUserSaveRequest;
- use App\Http\Traits\HasSites;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\DB;
- /**
- * 客户用户管理
- * Class CustomerUserController
- * @package App\Http\Controllers\Admin
- */
- class CustomerUserController extends Controller
- {
- use HasSites;
- //用户列表
- public function index(Request $request)
- {
- $oneSite = $this->hasUserOneSite();
- if (!$request->ajax()) {
- return view('admin/customer_user/user', [
- 'roles' => Role::all()
- ]);
- }
- if ($keyword = $request->input('keyword')) {
- $filter[] = ['username', 'like', '%' . $keyword . '%'];
- }
- $filter[] = ['role_id', '=', Role::TYPE_TYPE_CUSTOMER_STAFF];
- $select = ['id', 'username', 'email', 'created_at', 'role_id', 'status', 'is_super', 'nickname'];
- $roles = User::query()->with('role')->select($select)
- ->where($filter ?? [])->whereHas('sites', function (Builder $builder) use ($oneSite) {
- $builder->where('id', $oneSite->id);
- })->orderByDesc('id')
- ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
- $items = $roles->items();
- array_walk($items, function ($item) {
- $item->role_name = '客户雇员';
- $item->status_title = $item->status_with_css;
- unset($item->role);
- });
- return response()->json([
- 'rows' => $items,
- 'total' => $roles->total()
- ]);
- }
- //用户权限
- public function userPermission(Request $request)
- {
- $userIds = $request->input('userIds');
- if (!$request->ajax()) {
- $selects = [];
- if (count($userIds) == 1) {
- $user = User::query()->where(['id' => $userIds[0]])->first();
- if (!$user) {
- return response()->json(['message' => '参数错误'], 400);
- }
- $selects = $user->permissions->pluck('id')->toArray();
- }
- /* $nowUser = auth()->user();
- $permissions = $nowUser->permissions()
- ->select(['title as name', 'id', 'parent_id', 'type'])->get()->toArray();*/
- $permissionsIds = DB::table('role_has_permissions')->where('role_id', Role::TYPE_CUSTOMER)->pluck('permission_id');
- $permissions = Permission::query()->whereIn('id', $permissionsIds)->get()->toArray();
- array_walk($permissions, function (&$item) use ($selects) {
- $item['open'] = true;
- $item['name'] = $item['title'] . ($item['type'] == 1 ? '【菜单】' : '【功能】');
- if (in_array($item['id'], $selects)) {
- $item['checked'] = true;
- }
- });
- $trees = list_to_tree($permissions, 'id', 'parent_id', 'children');
- return view('admin/customer_user/user_permission', [
- 'trees' => $trees,
- 'userIds' => $userIds
- ]);
- }
- $permissionIds = $request->input('permissionIds');
- $records = User::query()->whereIn('id', $userIds)->get();
- foreach ($records as $record) {
- $record->permissions()->sync($permissionIds);
- }
- return response()->json(['message' => '操作成功']);
- }
- //保存
- public function store(CustomerUserSaveRequest $request)
- {
- $validated = $request->validated();
- $validated['password'] = bcrypt($validated['password']);
- $validated['profile_img'] = asset('img/social_round_github_64px_1196568_easyicon.net.png');
- $validated['role_id'] = Role::TYPE_TYPE_CUSTOMER_STAFF;//公司雇员
- $user = User::query()->create($validated);
- /**@var \App\Http\Models\User $user * */
- $oneSite = $this->hasUserOneSite();
- if (!$oneSite) {
- return response()->json(['message' => '当前用户未分配站点'], 400);
- }
- $user->sites()->sync([$oneSite->id]);
- $nowUserPermissions = auth()->user()->permissions->pluck('id')->toArray();
- //剔除用户管理的权限
- $searchIndex = array_search(39, $nowUserPermissions);
- if ($searchIndex !== false) {
- unset($nowUserPermissions[$searchIndex]);
- }
- $user->permissions()->sync(array_values($nowUserPermissions));
- return response()->json(['message' => '操作成功']);
- }
- //修改
- public function update(CustomerUserSaveRequest $request, $id)
- {
- $user = User::query()->where(['id' => $id])->first();
- /**@var \App\Http\Models\User $user * */
- if (!$user) return response()->json(['message' => '数据不存在']);
- $validated = $request->validated();
- $user->update($validated);
- return response()->json(['message' => '操作成功']);
- }
- public function show($id)
- {
- if ($id > 0) {
- $user = User::query()->with('sites')->where(['id' => $id])->first();
- $hasSiteIds = $user->sites->pluck('id')->toArray(); //用户所关联的站点
- }
- return view('admin/customer_user/user_show', [
- 'user' => $user ?? null,
- 'roles' => Role::query()->select(['id', 'name'])->get(),
- 'sites' => Site::all(),
- 'hasSiteIds' => $hasSiteIds ?? []
- ]);
- }
- public function detail($id)
- {
- $user = User::query()->select()->find($id);
- return view('/admin/customer_user/user_detail', [
- 'user' => $user
- ]);
- }
- public function destroy($id)
- {
- User::destroy($id);
- return response()->json(['message' => '操作成功']);
- }
- public function batchDestroy(Request $request)
- {
- $ids = $request->input('ids');
- User::destroy($ids);
- return response()->json(['message' => '操作成功']);
- }
- //用户状态切换 启用
- public function on(Request $request)
- {
- $ids = $request->input('ids');
- User::query()->whereIn('id', $ids)->update(['status' => 1]);
- return response()->json(['message' => '操作成功']);
- }
- //用户状态切换 禁用
- public function off(Request $request)
- {
- $ids = $request->input('ids');
- User::query()->whereIn('id', $ids)->update(['status' => 0]);
- return response()->json(['message' => '操作成功']);
- }
- }
|