From 654419deec0b6518d9d7bfe3e4ec7dfc6d9d3113 Mon Sep 17 00:00:00 2001 From: xiaomlove Date: Fri, 30 Apr 2021 01:27:29 +0800 Subject: [PATCH] improve admin details --- _db/dbstructure_v1.6.sql | 185 +++++++++++++++++++- admin/src/components/Header.vue | 21 +-- admin/src/utils/axios.js | 20 ++- admin/src/views/exam/index.vue | 1 + admin/src/views/login.vue | 10 +- admin/src/views/user/dialog-assign-exam.vue | 4 +- admin/src/views/user/index.vue | 1 + app/Console/Commands/Test.php | 6 +- app/Repositories/ExamRepository.php | 4 +- nexus/Install/install/install.php | 4 +- nexus/Install/settings.default.php | 28 +-- nexus/Install/update/update.php | 4 +- 12 files changed, 237 insertions(+), 51 deletions(-) diff --git a/_db/dbstructure_v1.6.sql b/_db/dbstructure_v1.6.sql index c58ab3e9..b1d4281e 100644 --- a/_db/dbstructure_v1.6.sql +++ b/_db/dbstructure_v1.6.sql @@ -662,6 +662,133 @@ INSERT INTO `downloadspeed` VALUES (1,'64kbps'),(2,'128kbps'),(3,'256kbps'),(4,' /*!40000 ALTER TABLE `downloadspeed` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `exam_progress` +-- + +DROP TABLE IF EXISTS `exam_progress`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `exam_progress` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `exam_user_id` int(11) NOT NULL, + `exam_id` int(11) NOT NULL, + `uid` int(11) NOT NULL, + `torrent_id` int(11) NOT NULL, + `index` int(11) NOT NULL, + `value` bigint(20) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `exam_progress_created_at_index` (`created_at`), + KEY `exam_progress_exam_user_id_index` (`exam_user_id`), + KEY `exam_progress_exam_id_index` (`exam_id`), + KEY `exam_progress_uid_index` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `exam_progress` +-- + +LOCK TABLES `exam_progress` WRITE; +/*!40000 ALTER TABLE `exam_progress` DISABLE KEYS */; +/*!40000 ALTER TABLE `exam_progress` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `exam_users` +-- + +DROP TABLE IF EXISTS `exam_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `exam_users` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `uid` int(11) NOT NULL, + `exam_id` int(11) NOT NULL, + `status` int(11) NOT NULL DEFAULT '0', + `begin` datetime DEFAULT NULL, + `end` datetime DEFAULT NULL, + `progress` text COLLATE utf8mb4_unicode_ci, + `is_done` tinyint(4) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `exam_users_uid_index` (`uid`), + KEY `exam_users_exam_id_index` (`exam_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `exam_users` +-- + +LOCK TABLES `exam_users` WRITE; +/*!40000 ALTER TABLE `exam_users` DISABLE KEYS */; +/*!40000 ALTER TABLE `exam_users` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `exams` +-- + +DROP TABLE IF EXISTS `exams`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `exams` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `description` text COLLATE utf8mb4_unicode_ci, + `begin` datetime DEFAULT NULL, + `end` datetime DEFAULT NULL, + `filters` text COLLATE utf8mb4_unicode_ci, + `indexes` text COLLATE utf8mb4_unicode_ci NOT NULL, + `status` tinyint(4) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `exams` +-- + +LOCK TABLES `exams` WRITE; +/*!40000 ALTER TABLE `exams` DISABLE KEYS */; +/*!40000 ALTER TABLE `exams` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `failed_jobs` +-- + +DROP TABLE IF EXISTS `failed_jobs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `failed_jobs` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `uuid` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `connection` text COLLATE utf8mb4_unicode_ci NOT NULL, + `queue` text COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `exception` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `failed_jobs` +-- + +LOCK TABLES `failed_jobs` WRITE; +/*!40000 ALTER TABLE `failed_jobs` DISABLE KEYS */; +/*!40000 ALTER TABLE `failed_jobs` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `faq` -- @@ -1128,6 +1255,30 @@ LOCK TABLES `messages` WRITE; /*!40000 ALTER TABLE `messages` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `migrations` +-- + +DROP TABLE IF EXISTS `migrations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `migrations` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `batch` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `migrations` +-- + +LOCK TABLES `migrations` WRITE; +/*!40000 ALTER TABLE `migrations` DISABLE KEYS */; +/*!40000 ALTER TABLE `migrations` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `modpanel` -- @@ -1309,6 +1460,38 @@ LOCK TABLES `peers` WRITE; /*!40000 ALTER TABLE `peers` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `personal_access_tokens` +-- + +DROP TABLE IF EXISTS `personal_access_tokens`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `personal_access_tokens` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `tokenable_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `tokenable_id` bigint(20) unsigned NOT NULL, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, + `abilities` text COLLATE utf8mb4_unicode_ci, + `last_used_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `personal_access_tokens_token_unique` (`token`), + KEY `personal_access_tokens_tokenable_type_tokenable_id_index` (`tokenable_type`,`tokenable_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `personal_access_tokens` +-- + +LOCK TABLES `personal_access_tokens` WRITE; +/*!40000 ALTER TABLE `personal_access_tokens` DISABLE KEYS */; +/*!40000 ALTER TABLE `personal_access_tokens` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `pmboxes` -- @@ -2484,4 +2667,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2021-03-18 20:25:39 +-- Dump completed on 2021-04-30 1:17:11 diff --git a/admin/src/components/Header.vue b/admin/src/components/Header.vue index 069e674c..11bb13cf 100644 --- a/admin/src/components/Header.vue +++ b/admin/src/components/Header.vue @@ -38,9 +38,6 @@ import api from "../utils/api"; export default { name: 'Header', props: { - userInfo: { - type: Object - } }, setup(props, context) { const router = useRouter() @@ -54,14 +51,10 @@ export default { onMounted(async () => { console.log("Head onMounted!") console.log(props) - // let userInfo = localGet(userInfoKey); - // if (userInfo) { - // state.userInfo = userInfo; - // } else { - // let res = await api.getUserBase() - // state.userInfo = res.data - // localSet(userInfoKey, res.data) - // } + let userInfo = localGet(userInfoKey); + if (userInfo) { + state.userInfo = userInfo; + } }) const logout = () => { api.logout().then(() => { @@ -74,13 +67,9 @@ export default { router.back() } router.afterEach((to) => { - console.log("Head afterEach to", to) + // console.log("Head afterEach to", to) const { id } = to.query state.name = pathMap[to.name] - if (id && to.name == 'add') { - state.name = '编辑商品' - } - state.hasBack = ['level2', 'level3', 'order_detail'].includes(to.name) }) return { ...toRefs(state), diff --git a/admin/src/utils/axios.js b/admin/src/utils/axios.js index ccfcb7f2..ecc3cb36 100644 --- a/admin/src/utils/axios.js +++ b/admin/src/utils/axios.js @@ -1,6 +1,7 @@ import axios from 'axios' import { ElMessage } from 'element-plus' -import {localGet} from "./index"; +import {localGet} from "./index" +import router from '../router/index' axios.defaults.baseURL = 'http://nexus-php8.tinyhd.net/api' axios.defaults.withCredentials = true @@ -9,8 +10,14 @@ axios.defaults.headers['Content-Type'] = 'application/json' axios.defaults.headers['Accept'] = 'application/json' axios.defaults.headers['Authorization'] = 'Bearer ' + localGet('token') -// 请求拦截器,内部根据返回值,重新组装,统一管理。 +// axios.interceptors.request.use(config => { +// // console.log('before request', config) +// config.headers['Authorization'] = 'Bearer ' + localGet('token') +// return config +// }) + axios.interceptors.response.use(res => { + console.log(res) if (typeof res.data !== 'object') { ElMessage.error('Server Error 1') return Promise.reject(res) @@ -21,7 +28,14 @@ axios.interceptors.response.use(res => { } return res.data }, error => { - ElMessage.error(error.response.data.msg || 'Server Error 2') + let res = error.response; + console.log(res) + if (res.status == 401) { + router.push({ + name: 'login' + }) + } + ElMessage.error(res.data.msg || 'Server Error 2') return Promise.reject(error) }) diff --git a/admin/src/views/exam/index.vue b/admin/src/views/exam/index.vue index 9c391fd4..14ffe7f7 100644 --- a/admin/src/views/exam/index.vue +++ b/admin/src/views/exam/index.vue @@ -122,6 +122,7 @@ export default { const state = useTable() onMounted(() => { + console.log('ExamTable onMounted') fetchTableData() }) // 获取轮播图列表 diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue index 145156e8..048647c2 100644 --- a/admin/src/views/login.vue +++ b/admin/src/views/login.vue @@ -5,15 +5,15 @@
NexusPHP
-
Management system - v1.6
+
Management system
- + - + @@ -56,8 +56,12 @@ export default { loginForm.value.validate((valid) => { if (valid) { api.login(state.ruleForm).then(res => { + console.log(res) localSet('token', res.data.token) router.push({name: 'dashboard'}) + // api.getUserBase().then(res => { + // localSet('userInfo', res.data) + // }) }) } else { console.log('error submit!!') diff --git a/admin/src/views/user/dialog-assign-exam.vue b/admin/src/views/user/dialog-assign-exam.vue index 3a12e771..f9a50b92 100644 --- a/admin/src/views/user/dialog-assign-exam.vue +++ b/admin/src/views/user/dialog-assign-exam.vue @@ -35,8 +35,8 @@ diff --git a/admin/src/views/user/index.vue b/admin/src/views/user/index.vue index f6dc1495..22f93756 100644 --- a/admin/src/views/user/index.vue +++ b/admin/src/views/user/index.vue @@ -118,6 +118,7 @@ export default { const state = useTable() onMounted(() => { + console.log('UserTable onMounted'); fetchTableData() }) const fetchTableData = async () => { diff --git a/app/Console/Commands/Test.php b/app/Console/Commands/Test.php index 937c9690..f73e876a 100644 --- a/app/Console/Commands/Test.php +++ b/app/Console/Commands/Test.php @@ -44,14 +44,12 @@ class Test extends Command */ public function handle() { - $user = User::query()->findOrFail(1); - dd(nexus_trans('exam.checkout_pass_message_content', ['exam_name' => '年中考核', 'begin' => 1, 'end' => 2])); $rep = new ExamRepository(); // $r = $rep->assignToUser(1, 1); - $r = $rep->addProgress(3, 1, [ + $r = $rep->addProgress(1, 1, [ 1 => 25*1024*1024*1024, 2 => 55*3600, - 3 => 100*1024*1024*1024, + 3 => 10*1024*1024*1024, 4 => 1252 ]); dd($r); diff --git a/app/Repositories/ExamRepository.php b/app/Repositories/ExamRepository.php index a4a2f9c9..17f0c84f 100644 --- a/app/Repositories/ExamRepository.php +++ b/app/Repositories/ExamRepository.php @@ -148,8 +148,8 @@ class ExamRepository extends BaseRepository } $added = $user->added->toDateTimeString(); - $registerTimeBegin = $filters->register_time_range[0] ? Carbon::parse($filters->register_time_range[0])->toDateString() : ''; - $registerTimeEnd = $filters->register_time_range[1] ? Carbon::parse($filters->register_time_range[1])->toDateString() : ''; + $registerTimeBegin = isset($filters->register_time_range[0]) ? Carbon::parse($filters->register_time_range[0])->toDateString() : ''; + $registerTimeEnd = isset($filters->register_time_range[1]) ? Carbon::parse($filters->register_time_range[1])->toDateString() : ''; if (empty($registerTimeBegin)) { do_log("$logPrefix, exam: {$exam->id} no register_time_begin"); return false; diff --git a/nexus/Install/install/install.php b/nexus/Install/install/install.php index 61c8cd28..b59a41ff 100644 --- a/nexus/Install/install/install.php +++ b/nexus/Install/install/install.php @@ -5,8 +5,6 @@ $rootpath = dirname(dirname(__DIR__)) . '/'; define('ROOT_PATH', $rootpath); $isPost = $_SERVER['REQUEST_METHOD'] == 'POST'; require $rootpath . 'vendor/autoload.php'; -require $rootpath . 'include/globalfunctions.php'; -require $rootpath . 'include/functions.php'; require $rootpath . 'nexus/Database/helpers.php'; $install = new \Nexus\Install\Install(); @@ -216,4 +214,4 @@ if ($currentStep == 5) { window.location.search="step=" } - \ No newline at end of file + diff --git a/nexus/Install/settings.default.php b/nexus/Install/settings.default.php index b42b9a21..672910b1 100644 --- a/nexus/Install/settings.default.php +++ b/nexus/Install/settings.default.php @@ -1,10 +1,10 @@ + 'basic' => array ( 'SITENAME' => 'NexusPHP', ), - 'main' => + 'main' => array ( 'site_online' => 'yes', 'max_torrent_size' => '1048576', @@ -82,7 +82,7 @@ 'enable_pt_gen_system' => 'no', 'enable_technical_info' => 'no', ), - 'smtp' => + 'smtp' => array ( 'smtptype' => 'advanced', 'emailnotify' => 'no', @@ -94,7 +94,7 @@ 'accountname' => '', 'accountpassword' => '', ), - 'security' => + 'security' => array ( 'securelogin' => 'no', 'securetracker' => 'no', @@ -114,7 +114,7 @@ 'login_secret_deadline' => '2021-02-03 18:55:46', 'login_secret' => '8e19c6a796602bda113fb2f5bc9da2b0', ), - 'authority' => + 'authority' => array ( 'defaultclass' => '1', 'staffmem' => '13', @@ -162,7 +162,7 @@ 'againstoffer' => '1', 'userbar' => '2', ), - 'tweak' => + 'tweak' => array ( 'where' => 'no', 'iplog1' => 'yes', @@ -179,7 +179,7 @@ 'prolinkimg' => 'pic/prolink.png', 'analyticscode' => '', ), - 'bonus' => + 'bonus' => array ( 'donortimes' => '2', 'perseeding' => '1', @@ -213,7 +213,7 @@ 'prolinkpoint' => '1', 'prolinktime' => '600', ), - 'account' => + 'account' => array ( 'neverdelete' => '6', 'neverdeletepacked' => '3', @@ -264,7 +264,7 @@ 'nmdl' => '3072', 'nmprratio' => '4.55', 'nmderatio' => '4.45', - 'getInvitesByPromotion' => + 'getInvitesByPromotion' => array ( 2 => '1', 3 => '0', @@ -276,7 +276,7 @@ 9 => '10', ), ), - 'torrent' => + 'torrent' => array ( 'prorules' => 'no', 'randomhalfleech' => '5', @@ -307,7 +307,7 @@ 'expirethirtypercentleech' => '0', 'minvotes' => '10', ), - 'attachment' => + 'attachment' => array ( 'enableattach' => 'yes', 'classone' => '1', @@ -340,7 +340,7 @@ 'altthumbwidth' => '180', 'altthumbheight' => '135', ), - 'advertisement' => + 'advertisement' => array ( 'enablead' => 'yes', 'enablenoad' => 'yes', @@ -351,11 +351,11 @@ 'bonusnoadtime' => '15', 'adclickbonus' => '0', ), - 'code' => + 'code' => array ( 'mainversion' => 'NexusPHP', 'subversion' => 'v1.6.0-beta4', 'releasedate' => '2021-03-19', 'website' => 'https://nexusphp.org', ), -); \ No newline at end of file +); diff --git a/nexus/Install/update/update.php b/nexus/Install/update/update.php index a6dddede..15563d33 100644 --- a/nexus/Install/update/update.php +++ b/nexus/Install/update/update.php @@ -5,8 +5,6 @@ $rootpath = dirname(dirname(__DIR__)) . '/'; define('ROOT_PATH', $rootpath); $isPost = $_SERVER['REQUEST_METHOD'] == 'POST'; require $rootpath . 'vendor/autoload.php'; -require $rootpath . 'include/globalfunctions.php'; -require $rootpath . 'include/functions.php'; require $rootpath . 'nexus/Database/helpers.php'; $update = new \Nexus\Install\Update(); @@ -252,4 +250,4 @@ if ($currentStep == 4) { window.location.search="step=" } - \ No newline at end of file +