self::today(), // 快捷入口 'menu' => self::menu(), // 图表数据 'chart_data' => self::chartData(), ]; } /** * @notes 快捷入口 * @return array[] * @author 段誉 * @date 2021/12/29 16:40 */ public static function menu(): array { return [ [ 'name' => '基地列表', 'image' => FileService::getFileUrl(config('project.default_image.menu_dict')), 'url' => '/land/farm' ], [ 'name' => '产品列表', 'image' => FileService::getFileUrl(config('project.default_image.menu_file')), 'url' => '/land/product' ], [ 'name' => '设备列表', 'image' => FileService::getFileUrl(config('project.default_image.menu_web')), 'url' => '/device/device' ], [ 'name' => '监控报警', 'image' => FileService::getFileUrl(config('project.default_image.menu_auth')), 'url' => '/device/monitor_alarm' ] ]; } /** * @notes 今日数据 * @return int[] * @author 段誉 * @date 2021/12/29 16:15 */ public static function today(): array { $todayStart = strtotime(date('Y-m-d 00:00:00')); $todayEnd = strtotime(date('Y-m-d 23:59:59')); $userWhere['user_id'] = -1; // 超级管理员数据 if ((request()->adminInfo)['root'] && !(request()->adminInfo)['user_id']) { unset($userWhere['user_id']); } // 普通用户数据 if (!(request()->adminInfo)['root'] && (request()->adminInfo)['user_id']) { $userWhere['user_id'] = (request()->adminInfo)['user_id']; } $totalLand = Db::name('farm')->where($userWhere)->count(); $todayLand = Db::name('farm')->where($userWhere)->where('create_time', 'between', [$todayStart, $todayEnd])->count(); $totalProduct = Db::name('product')->where($userWhere)->count(); $todayProduct = Db::name('product')->where($userWhere)->where('create_time', 'between', [$todayStart, $todayEnd])->count(); $totalDevice = Db::name('device')->where($userWhere)->count(); $todayDevice = Db::name('device')->where($userWhere)->where('create_time', 'between', [$todayStart, $todayEnd])->count(); $totalAlarm = Db::name('monitor_alarm')->where($userWhere)->count(); $todayAlarm = Db::name('monitor_alarm')->where($userWhere)->where('create_time', 'between', [$todayStart, $todayEnd])->count(); return [ 'time' => date('Y-m-d H:i:s'), 'today_land' => $todayLand, 'total_land' => $totalLand, 'today_product' => $todayProduct, 'total_product' => $totalProduct, 'today_device' => $todayDevice, 'total_device' => $totalDevice, 'today_alarm' => $todayAlarm, 'total_alarm' => $totalAlarm ]; } /** * @notes 图表数据 * @return array * @author 段誉 * @date 2021/12/29 16:57 */ public static function chartData(): array { $land = $device = $product = $alarm = []; $date = []; $userWhere['user_id'] = -1; if ((request()->adminInfo)['root'] && !(request()->adminInfo)['user_id']) { unset($userWhere['user_id']); } if (!(request()->adminInfo)['root'] && (request()->adminInfo)['user_id']) { $userWhere['user_id'] = (request()->adminInfo)['user_id']; } for ($i = 0; $i < 7; $i++) { $where_start = strtotime(date('Y-m-d 00:00:00', strtotime('-' . $i . ' day'))); $date[] = date('Y-m-d', $where_start); $todayStart = $where_start; $todayEnd = $where_start + 86400 -1; $todayLand = Db::name('farm')->where($userWhere)->where('create_time', 'between', [$todayStart, $todayEnd])->count(); $land[$i] = $todayLand; $todayProduct = Db::name('product')->where($userWhere)->where('create_time', 'between', [$todayStart, $todayEnd])->count(); $product[$i] = $todayProduct; $todayDevice = Db::name('device')->where($userWhere)->where('create_time', 'between', [$todayStart, $todayEnd])->count(); $device[$i] = $todayDevice; $todayAlarm = Db::name('monitor_alarm')->where($userWhere)->where('create_time', 'between', [$todayStart, $todayEnd])->count(); $alarm[$i] = $todayAlarm; } return [ 'date' => $date, 'list' => [ ['name' => '土地数', 'data' => $land], ['name' => '产品数', 'data' => $product], ['name' => '设备数', 'data' => $device], ['name' => '报警数', 'data' => $alarm] ] ]; } /** * @notes 服务支持 * @return array[] * @author 段誉 * @date 2022/7/18 11:18 */ public static function support() { return [ [ 'image' => FileService::getFileUrl(config('project.default_image.qq_group')), 'title' => '官方公众号', 'desc' => '关注官方公众号', ], [ 'image' => FileService::getFileUrl(config('project.default_image.customer_service')), 'title' => '添加企业客服微信', 'desc' => '想了解更多请添加客服', ] ]; } }