123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Http\Models\Mailbox;
- use App\Http\Models\Permission;
- use App\Http\Models\ProjectFlowMemo;
- use App\Http\Models\ProjectFlowMemoRelation;
- use App\Http\Models\Role;
- use App\Http\Models\Site;
- use App\Http\Models\WeekTaskInfo;
- use App\Http\Requests\Index\ProfilerRequest;
- use App\Http\Requests\Request;
- use Illuminate\Support\Facades\Auth;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\DB;
- /** 后台首页
- * Class IndexController
- * @package App\Http\Controllers\Admin
- */
- class IndexController extends Controller
- {
- protected function indexPage($role, $menusArr)
- {
- switch ($role->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' => '操作成功']);
- }
- }
|