id ?? null) { case Role::TYPE_TYPE_CUSTOMER_STAFF: $url = '/admin/meter/single'; return ['title' => '控制台', 'src' => $url]; case Role::TYPE_BID: return ['title' => '竞价仪表', 'src' => '/admin/bid/dashboard']; case Role::TYPE_CUSTOMER: $menuIds = array_column($menusArr, 'id'); $url = '/admin/meter/single'; if (!in_array(32, $menuIds)) { $url = '/admin/rank/keyword'; } return ['title' => '控制台', 'src' => $url]; default: return ['title' => '首页', 'src' => '/admin/flow/home']; } } //后台首页 public function main() { $user = auth()->user(); $menusArr = $this->menus($user); $menus = list_to_tree($menusArr, 'id', 'parent_id'); $role = $user->role ?? null; $roleName = $role->name ?? ''; if (!empty($user->is_super)) { $roleName = '超级管理员'; } $addition = []; if (in_array(($role->id ?? null), [Role::TYPE_CUSTOMER, Role::TYPE_TYPE_CUSTOMER_STAFF])) { $userSite = $user->sites->first(); $addition['site'] = $userSite; $addition['masterUrl'] = sprintf('http://%s/admincp', ($userSite->domain ?? '')); } if (in_array($role->id, [Role::TYPE_LINK_PART, Role::TYPE_LINK_PART_CHONGQING])) { return redirect('/admin/link/hall'); } if ($role->id == Role::TYPE_ARTICLE_PART) { return redirect('/admin/articles-hall'); } $statusMap = Site::query()->selectRaw('COUNT(id) as num,status')->whereIn('status', [1, 2, 3, 7]) ->groupBy('status')->get()->keyBy('status')->toArray(); $buildSiteNum = $statusMap[1]['num'] ?? 0; $srvSiteNum = $statusMap[3]['num'] ?? 0; $impSiteNum = $statusMap[2]['num'] ?? 0; $doneSiteNum = $statusMap[7]['num'] ?? 0; $totalSite = Site::query()->count(); $numInfo = DB::table('num') ->selectRaw('SUM(traffic) AS traffic,SUM(inquire) AS inquire,SUM(top10) AS top10,ymd') ->where('ymd', date('Ymd', strtotime('-1 day'))) ->groupBy('ymd')->first(); $roles = auth()->user(); if ($roles->is_super == 1) { $taskNum = ProjectFlowMemo::query()->where('status', '=', '0')->count() ?? 0; $mailboxNum = Mailbox::query()->where('is_read', 0)->count() ?? 0; } else { $memoIdList = ProjectFlowMemoRelation::query()->where('user_id', $roles->id)->pluck('memo_id'); $taskNum = ProjectFlowMemo::query()->where('status', '=', '0')->whereIn('id', $memoIdList)->count() ?? 0; $mailboxNum = Mailbox::query()->where('user_id', $roles->id)->count() ?? 0; } //续费客户 $renewalCount = Site::query()->where('status', 3)->whereNotNull('renewal_at')->count() ?? 0; $taskCount = WeekTaskInfo::query()->count() ?? 0; return view('admin/index/main', [ 'mailboxNum' => $mailboxNum, 'renewalCount' => $renewalCount, 'taskNum' => $taskNum, 'buildSiteNum' => $buildSiteNum, 'srvSiteNum' => $srvSiteNum, 'customerNum' => $totalSite - $doneSiteNum, 'impSiteNum' => $impSiteNum, 'menus' => $menus, 'user' => $user, 'roleName' => $roleName, 'indexPage' => $this->indexPage($role, $menusArr), 'top10' => $numInfo->top10 ?? 0, 'inquire' => $numInfo->inquire ?? 0, 'taskCount' => $taskCount ] + $addition); } //获取菜单 protected function menus($user) { /** @var \App\Http\Models\User $user */ if (!empty($user->is_super)) return Permission::query()->where(['type' => 1])->orderByDesc('sort') ->get()->toArray(); if (in_array($user->role_id, [Role::TYPE_CUSTOMER, Role::TYPE_TYPE_CUSTOMER_STAFF])) { //客户人员菜单独自配置 return $user->permissions()->orderByDesc('sort')->get()->toArray(); } return ($role = $user->role ?? null) ? $menus = $role->permissions()->where('type', 1)->orderByDesc('sort')->get()->toArray() : []; } //个人信息 public function profile(ProfilerRequest $request) { if (!$request->ajax()) { return view('admin/index/profile', [ 'data' => Auth::user() ]); } $user = Auth::user(); /** @var \App\Http\Models\User $user * */ $validated = $request->validated(); if (!empty($validated['password'])) { $validated['password'] = bcrypt($validated['password']); } else { unset($validated['password']); } if (empty($validated['profile_img'])) { $validated['profile_img'] = asset('img/social_round_github_64px_1196568_easyicon.net.png'); } $user->update($validated); return response()->json(['message' => '操作成功']); } }