request->post("code", ""); if (trim($code)) { Db::table('setting')->replace()->insert(['keys' => 'authCode', 'value' => $code]); SettingModel::refreshSetting(); } return $this->success("ok"); } private function initAuth() { $authCode = $this->Setting('authCode', '', true); if(strlen($authCode)==0){ $authCode = env('authCode', ''); } $this->authCode = $authCode; $this->authService = $this->Setting('authServer', 'http://auth.mtab.cc', true); } function updateApp(): \think\response\Json { $this->getAdmin(); $this->initAuth(); $result = \Axios::http()->post($this->authService . '/getUpGrade', [ 'timeout' => 10, 'form_params' => [ 'authorization_code' => $this->authCode, 'version_code' => app_version_code, ] ]); if ($result->getStatusCode() == 200) { $json = json_decode($result->getBody()->getContents(), true); if ($json['code'] === 1) { $upgradePhp = runtime_path() . 'update.php'; $f = ""; $upGrade = null; if (!empty($json['info']['update_php'])) { try {//用远程脚本更新 $f = file_get_contents($json['info']['update_php']); file_put_contents(runtime_path() . 'update.php', $f); require_once $upgradePhp; $upGrade = new \Upgrade(); } catch (\Exception $e) { } } if ($upGrade === null) { $upGrade = new \Upgrade2(); } if (!empty($json['info']['update_zip'])) { $upGrade->update_download_url = $json['info']['update_zip']; } if (!empty($json['info']['update_sql'])) { $upGrade->update_sql_url = $json['info']['update_sql']; } $status = $upGrade->run();//启动任务 try { unlink($upgradePhp); } catch (\Exception $e) { } if ($status === true) { return $this->success('更新完毕'); } else { return $this->error($status); } } else { return $this->error($json['msg']); } } return $this->error("没有更新的版本"); } function authorization(): \think\response\Json { $this->getAdmin(); $this->initAuth(); $result = \Axios::http()->post($this->authService . '/checkAuth', [ 'timeout' => 5, 'form_params' => [ 'authorization_code' => $this->authCode, 'version_code' => app_version_code, ] ]); $info = []; $info['version'] = app_version; $info['version_code'] = app_version_code; $info['php_version'] = phpversion(); if ($result->getStatusCode() == 200) { $jsonStr = $result->getBody()->getContents(); $json = json_decode($jsonStr, true); $info['remote'] = $json; return $this->success($info); } else { return $this->error('授权服务器连接失败', $info); } } function getServicesStatus(): \think\response\Json { $this->getAdmin(); $info['memory'] = \NetworkSpeedMonitor::getMemoryUsage(); $info['disk'] = \NetworkSpeedMonitor::getDiskData(); return $this->success("ok", $info); } function getUserLine(): \think\response\Json { $this->getAdmin(); $result = UserModel::whereMonth('create_time'); $result = $result->field('DATE_FORMAT(create_time, "%Y-%m-%d") as time, count(id) as total'); $result = $result->group('time')->select(); return $this->success('ok', $this->render($result)); } function getHotTab(): \think\response\Json { $this->getAdmin(); $list = LinkStoreModel::order('install_num', 'desc')->limit(20)->cache('hotTab', 60)->select()->toArray(); return $this->success('ok', $list); } function render($arr): array { $info = []; foreach ($arr as $key => $value) { $info[$value['time']] = $value['total']; } $time = []; $total = []; //当月的第一天 $start = date('Y-m-01', strtotime(date('Y-m-d'))); //当月的最后一天 $end = date('Y-m-d', strtotime(date('Y-m-01') . ' +1 month -1 day')); $start_date = new DateTime($start); $end_date = new DateTime($end); $interval = new DateInterval('P1D'); $dateRange = new DatePeriod($start_date, $interval, $end_date); $ts = null; foreach ($dateRange as $date) { $ts = $date->format('Y-m-d'); $time[] = $ts; if (isset($info[$ts])) { $total[] = $info[$ts]; } else { $total[] = 0; } } // 判断是否需要添加最后一天的数据 if ($end_date->format('Y-m-d') != $ts) { $time[] = $end_date->format('Y-m-d'); $total[] = isset($info[$end_date->format('Y-m-d')]) ? $info[$end_date->format('Y-m-d')] : 0; } return ['time' => $time, 'total' => $total, 'sum' => array_sum($total)]; } }