diff --git a/.gitignore b/.gitignore index 4cd4b9a..f521362 100755 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ npm-debug.log yarn-error.log /.idea /.vscode +/.snapshots diff --git a/app/Console/Commands/GenerateSupplyDemandDemo.php b/app/Console/Commands/GenerateSupplyDemandDemo.php new file mode 100644 index 0000000..646d8b3 --- /dev/null +++ b/app/Console/Commands/GenerateSupplyDemandDemo.php @@ -0,0 +1,30 @@ +option('count'); + $users = (int)$this->option('users'); + + $this->info("开始生成:供需 {$count} 条,最少用户 {$users} 个..."); + $generator = new SupplyDemandTestDataGenerator(); + $generator->generate($count, $users, function (string $msg) { + $this->line($msg); + }); + + $this->info('生成完成'); + return self::SUCCESS; + } +} + + diff --git a/app/Console/Commands/LinkCoursesToCalendar.php b/app/Console/Commands/LinkCoursesToCalendar.php new file mode 100644 index 0000000..e661984 --- /dev/null +++ b/app/Console/Commands/LinkCoursesToCalendar.php @@ -0,0 +1,302 @@ +info("开始将课程关联到calendars日历表..."); + $this->info("总共需要处理 " . count($this->courseList) . " 个课程"); + + $linkedCount = 0; + $notFoundCourses = []; + $alreadyLinkedCourses = []; + + DB::beginTransaction(); + + try { + foreach ($this->courseList as $courseName) { + $this->info("正在处理课程: {$courseName}"); + + // 查找匹配的课程 + $course = $this->findCourse($courseName); + + if (!$course) { + $this->warn("✗ 未找到匹配的课程: {$courseName}"); + $notFoundCourses[] = $courseName; + continue; + } + + $this->info("✓ 找到匹配课程: {$course->name} (ID: {$course->id})"); + + // 检查是否已经存在日历记录 + $existingCalendar = Calendar::where('course_id', $course->id) + ->where('type', 1) // 类型1为课程 + ->first(); + + if ($existingCalendar) { + $this->warn("⚠ 课程已存在日历记录: {$course->name}"); + $alreadyLinkedCourses[] = $course->name; + continue; + } + + // 创建日历记录 + $calendarData = $this->createCalendarData($course); + $calendar = Calendar::create($calendarData); + + $this->info("✓ 成功创建日历记录 (ID: {$calendar->id}) 关联课程: {$course->name}"); + $linkedCount++; + } + + DB::commit(); + + $this->info("\n" . str_repeat('=', 60)); + $this->info("处理完成!"); + $this->info("成功关联课程数量: {$linkedCount}"); + $this->info("已存在日历记录: " . count($alreadyLinkedCourses)); + $this->info("未找到匹配课程: " . count($notFoundCourses)); + + // 显示未找到的课程 + if (!empty($notFoundCourses)) { + $this->warn("\n未找到匹配的课程列表:"); + foreach ($notFoundCourses as $course) { + $this->warn(" - {$course}"); + } + } + + // 显示已存在日历记录的课程 + if (!empty($alreadyLinkedCourses)) { + $this->warn("\n已存在日历记录的课程列表:"); + foreach ($alreadyLinkedCourses as $course) { + $this->warn(" - {$course}"); + } + } + + } catch (\Exception $e) { + DB::rollback(); + $this->error("处理过程中发生错误: " . $e->getMessage()); + $this->error("已回滚所有更改"); + return; + } + + $this->info("\n所有操作已完成!"); + } + + /** + * 查找匹配的课程 + */ + private function findCourse($courseName) + { + // 1. 精确匹配 + $course = Course::where('name', $courseName) + ->whereNull('deleted_at') + ->first(); + + if ($course) { + return $course; + } + + // 2. 模糊匹配 + $course = Course::where('name', 'like', "%{$courseName}%") + ->whereNull('deleted_at') + ->first(); + + if ($course) { + $this->info("通过模糊匹配找到课程: '{$course->name}'"); + return $course; + } + + // 3. 相似度匹配 + $courses = Course::whereNull('deleted_at') + ->whereNotNull('name') + ->where('name', '!=', '') + ->get(); + + $bestMatch = null; + $highestSimilarity = 0; + + foreach ($courses as $course) { + $similarity = $this->calculateSimilarity($courseName, $course->name); + if ($similarity > $highestSimilarity) { + $highestSimilarity = $similarity; + $bestMatch = $course; + } + } + + if ($bestMatch && $highestSimilarity > 0.3) { // 设置最低相似度阈值 + $this->info("通过相似度匹配找到课程 (相似度: " . round($highestSimilarity * 100, 2) . "%): '{$bestMatch->name}'"); + return $bestMatch; + } + + return null; + } + + /** + * 创建日历数据 + */ + private function createCalendarData($course) + { + return [ + 'type' => 1, // 类型1为课程 + 'course_id' => $course->id, + 'date' => $course->start_date ?? now()->format('Y-m-d'), + 'title' => $course->name, + 'content' => $course->content ?? '', + 'start_time' => $course->start_date ? $course->start_date . ' 09:00:00' : null, + 'end_time' => $course->end_date ? $course->end_date . ' 17:00:00' : null, + 'url' => $course->url ?? '', + 'created_at' => now(), + 'updated_at' => now(), + ]; + } + + /** + * 计算字符串相似度 + */ + private function calculateSimilarity($str1, $str2) + { + // 移除空格并转换为小写 + $str1 = strtolower(preg_replace('/\s+/', '', $str1)); + $str2 = strtolower(preg_replace('/\s+/', '', $str2)); + + if ($str1 === $str2) { + return 1.0; + } + + if (empty($str1) || empty($str2)) { + return 0.0; + } + + // 使用Levenshtein距离计算相似度 + $maxLen = max(strlen($str1), strlen($str2)); + if ($maxLen == 0) { + return 1.0; + } + + $distance = levenshtein($str1, $str2); + $similarity = 1 - ($distance / $maxLen); + + // 如果其中一个字符串包含另一个,提高相似度 + if (strpos($str1, $str2) !== false || strpos($str2, $str1) !== false) { + $containsSimilarity = min(strlen($str1), strlen($str2)) / $maxLen; + $similarity = max($similarity, $containsSimilarity); + } + + return max(0, $similarity); + } +} diff --git a/app/Console/Commands/SeedCourseContentEvaluations.php b/app/Console/Commands/SeedCourseContentEvaluations.php new file mode 100644 index 0000000..b96d42e --- /dev/null +++ b/app/Console/Commands/SeedCourseContentEvaluations.php @@ -0,0 +1,58 @@ +option('evaluations'); + $minUsers = (int) $this->option('users'); + + $this->info("开始生成课程内容评价测试数据..."); + $this->info("计划生成 {$evaluationCount} 个评价问卷,确保至少 {$minUsers} 个用户"); + + $generator = new CourseContentEvaluationTestDataGenerator(); + + $startTime = microtime(true); + + try { + $generator->generate($evaluationCount, $minUsers, function (string $message) { + $this->line(" → {$message}"); + }); + + $duration = round(microtime(true) - $startTime, 2); + $this->info("✅ 数据生成完成!耗时 {$duration} 秒"); + + return Command::SUCCESS; + + } catch (\Exception $e) { + $this->error("❌ 数据生成失败:" . $e->getMessage()); + return Command::FAILURE; + } + } +} diff --git a/app/Console/Commands/UpdateBookIsbnData.php b/app/Console/Commands/UpdateBookIsbnData.php new file mode 100644 index 0000000..1336ed4 --- /dev/null +++ b/app/Console/Commands/UpdateBookIsbnData.php @@ -0,0 +1,331 @@ +option('book_id'); + + // 获取所有有ISBN的书籍 + $books = Book::whereNotNull('isbn') + ->where(function ($query) use ($book_id) { + if ($book_id) { + $query->where('id', $book_id); + } + })->where('isbn', '!=', '') + ->where(function ($query) { + // 如果没有封面或者缺少基本信息字段,都需要处理 + $query->whereNull('cover_id') + ->orWhereNull('publisher') + ->orWhereNull('author') + ->orWhereNull('publish_year') + ->orWhereNull('description') + ->orWhere('publisher', '') + ->orWhere('author', '') + ->orWhere('publish_year', '') + ->orWhere('description', ''); + })->get(); + + if ($books->isEmpty()) { + $this->info('没有找到需要更新数据的书籍'); + return 0; + } + + $this->info("找到 {$books->count()} 本书需要处理"); + $this->info("API限制:每秒最多10次请求,预计耗时约 " . ceil($books->count() / 10) . " 秒"); + + $bar = $this->output->createProgressBar($books->count()); + $bar->start(); + + $successCount = 0; + $failCount = 0; + $requestCount = 0; + $startTime = microtime(true); + $lastResetTime = $startTime; + + foreach ($books as $book) { + try { + // 每秒重置请求计数器 + $currentTime = microtime(true); + if ($currentTime - $lastResetTime >= 1.0) { + $requestCount = 0; + $lastResetTime = $currentTime; + } + + // API频率限制控制:每秒最多10次请求 + if ($requestCount >= 10) { + $waitTime = 1.0 - ($currentTime - $lastResetTime); + if ($waitTime > 0) { + usleep(intval($waitTime * 1000000)); + $requestCount = 0; + $lastResetTime = microtime(true); + } + } + + $result = $this->processBook($book, $apiKey); + $requestCount++; + + if ($result) { + $successCount++; + $this->line("\n✓ 成功处理书籍: {$book->title} (ISBN: {$book->isbn})"); + } else { + $failCount++; + $this->line("\n✗ 处理失败: {$book->title} (ISBN: {$book->isbn})"); + } + } catch (\Exception $e) { + $failCount++; + $this->line("\n✗ 处理异常: {$book->title} - {$e->getMessage()}"); + + // 如果是API相关错误,增加等待时间 + if (strpos($e->getMessage(), 'API') !== false || strpos($e->getMessage(), 'HTTP') !== false) { + $this->line("检测到API错误,等待2秒后继续..."); + sleep(2); + $requestCount = 0; + $lastResetTime = microtime(true); + } + } + + $bar->advance(); + } + + $bar->finish(); + + $totalTime = microtime(true) - $startTime; + $avgTimePerBook = $totalTime / $books->count(); + $actualRequestsPerSecond = $books->count() / $totalTime; + + $this->line(''); + $this->info("处理完成!"); + $this->info("成功: {$successCount}, 失败: {$failCount}"); + $this->info("总耗时: " . round($totalTime, 2) . " 秒"); + $this->info("平均每本书耗时: " . round($avgTimePerBook, 2) . " 秒"); + $this->info("实际请求频率: " . round($actualRequestsPerSecond, 2) . " 次/秒"); + + return 0; + } + + /** + * 处理单本书籍 + * + * @param Book $book + * @param string $apiKey + * @return bool + */ + private function processBook(Book $book, string $apiKey): bool + { + $attempt = 0; + $maxRetries = 3; + + while ($attempt < $maxRetries) { + try { + $attempt++; + + // 调用ISBN接口 + $response = Http::timeout(30)->get('https://api.tanshuapi.com/api/isbn/v2/index', [ + 'key' => $apiKey, + 'isbn' => $book->isbn + ]); + + if (!$response->successful()) { + throw new \Exception("API请求失败: HTTP {$response->status()}"); + } + + $data = $response->json(); + + if (!$data || $data['code'] !== 1) { + // 如果是API密钥错误或其他不可重试的错误,直接返回失败 + if (isset($data['code']) && in_array($data['code'], [10001, 10002, 10003])) { + $this->error("API返回不可重试错误: " . ($data['msg'] ?? '未知错误')); + return false; + } + throw new \Exception("API返回错误: " . ($data['msg'] ?? '未知错误')); + } + + $bookData = $data['data']; + + // 更新书籍的基本信息字段 + if (!empty($bookData['publisher'])) { + $book->publisher = $bookData['publisher']; + } + + if (!empty($bookData['author'])) { + $book->author = $bookData['author']; + } + + if (!empty($bookData['pubdate'])) { + $book->publish_year = $bookData['pubdate']; + } + + if (!empty($bookData['summary'])) { + $book->description = $bookData['summary']; + } + + // 更新书籍的other_data字段(保存完整的API响应数据) + $book->other_data = $bookData; + + // 如果有图片URL,下载图片 + if (!empty($bookData['img'])) { + $coverId = $this->downloadAndSaveImage($bookData['img'], $book); + if ($coverId) { + $book->cover_id = $coverId; + } + } + + $book->save(); + return true; + + } catch (\Exception $e) { + if ($attempt >= $maxRetries) { + $this->error("重试 {$maxRetries} 次后仍然失败: {$e->getMessage()}"); + return false; + } + + // 指数退避:第1次重试等待1秒,第2次等待2秒,第3次等待4秒 + $waitTime = pow(2, $attempt - 1); + $this->line("第 {$attempt} 次尝试失败,{$waitTime} 秒后重试: {$e->getMessage()}"); + sleep($waitTime); + } + } + + return false; + } + + /** + * 下载图片并保存到本地 + * + * @param string $imageUrl + * @param Book $book + * @return int|null + */ + private function downloadAndSaveImage(string $imageUrl, Book $book): ?int + { + try { + // 下载图片 + $response = Http::timeout(30)->get($imageUrl); + + if (!$response->successful()) { + $this->error("图片下载失败: {$imageUrl}"); + return null; + } + + $imageContent = $response->body(); + + // 获取文件扩展名 + $extension = $this->getImageExtension($imageUrl, $response->header('Content-Type')); + + // 生成文件名 + $filename = 'book_cover_' . $book->id . '_' . time() . '.' . $extension; + + // 定义存储目录 + $folder = 'uploads/book_covers'; + + // 确保目录存在 + $fullPath = public_path($folder); + if (!file_exists($fullPath)) { + mkdir($fullPath, 0755, true); + } + + // 保存文件 + $filePath = $folder . '/' . $filename; + file_put_contents(public_path($filePath), $imageContent); + + // 获取文件大小 + $fileSize = strlen($imageContent); + + // 创建uploads记录 + $upload = Upload::create([ + 'belongs_type' => 'App\\Models\\Book', + 'belongs_id' => $book->id, + 'original_name' => basename($imageUrl), + 'folder' => $folder, + 'name' => $filename, + 'extension' => $extension, + 'size' => $fileSize, + 'creator_type' => 'console', + 'creator_id' => null, + ]); + + return $upload->id; + + } catch (\Exception $e) { + $this->error("保存图片时出错: {$e->getMessage()}"); + return null; + } + } + + /** + * 获取图片扩展名 + * + * @param string $url + * @param string|null $contentType + * @return string + */ + private function getImageExtension(string $url, ?string $contentType = null): string + { + // 首先尝试从URL获取扩展名 + $pathInfo = pathinfo(parse_url($url, PHP_URL_PATH)); + if (!empty($pathInfo['extension'])) { + return strtolower($pathInfo['extension']); + } + + // 从Content-Type获取扩展名 + if ($contentType) { + $mimeToExt = [ + 'image/jpeg' => 'jpg', + 'image/jpg' => 'jpg', + 'image/png' => 'png', + 'image/gif' => 'gif', + 'image/webp' => 'webp', + 'image/bmp' => 'bmp', + ]; + + $contentType = strtolower(trim(explode(';', $contentType)[0])); + if (isset($mimeToExt[$contentType])) { + return $mimeToExt[$contentType]; + } + } + + // 默认返回jpg + return 'jpg'; + } +} diff --git a/app/Console/Commands/UpdateCompany.php b/app/Console/Commands/UpdateCompany.php index fbfb4a9..5366835 100755 --- a/app/Console/Commands/UpdateCompany.php +++ b/app/Console/Commands/UpdateCompany.php @@ -60,7 +60,7 @@ class UpdateCompany extends Command $users = User::where('id', $user_id)->get(); } else { // 批量更新 - $users = User::whereDoesntHave('company')->get(); + $users = User::whereDoesntHave('company')->whereNotNull('company_name')->get(); } $YuanheRepository = new YuanheRepository(); foreach ($users as $user) { diff --git a/app/Console/Commands/UpdateCourseUrls.php b/app/Console/Commands/UpdateCourseUrls.php new file mode 100644 index 0000000..d238d21 --- /dev/null +++ b/app/Console/Commands/UpdateCourseUrls.php @@ -0,0 +1,313 @@ +argument('file'); + $filePath = base_path($fileName); + + if (!file_exists($filePath)) { + $this->error("文件不存在: {$filePath}"); + return; + } + + $this->info("开始处理文件: {$fileName}"); + + try { + // 读取Excel文件 + $spreadsheet = IOFactory::load($filePath); + $sheetCount = $spreadsheet->getSheetCount(); + + $this->info("Excel文件包含 {$sheetCount} 个工作表"); + + $totalUpdated = 0; + + // 处理每个工作表 + for ($sheetIndex = 0; $sheetIndex < $sheetCount; $sheetIndex++) { + $worksheet = $spreadsheet->getSheet($sheetIndex); + $sheetName = $worksheet->getTitle(); + + $this->info("正在处理工作表: {$sheetName}"); + + $updated = $this->processWorksheet($worksheet, $sheetName); + $totalUpdated += $updated; + } + + $this->info("处理完成,总共更新了 {$totalUpdated} 条记录"); + + } catch (\Exception $e) { + $this->error("处理Excel文件时发生错误: " . $e->getMessage()); + return; + } + } + + /** + * 处理单个工作表 + */ + private function processWorksheet($worksheet, $sheetName) + { + $highestRow = $worksheet->getHighestRow(); + $highestColumn = $worksheet->getHighestColumn(); + + $this->info("工作表 {$sheetName} 有 {$highestRow} 行,最高列为 {$highestColumn}"); + + // 读取第一行作为表头 + $headers = []; + $highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); + + for ($col = 1; $col <= $highestColumnIndex; $col++) { + $cellValue = $worksheet->getCellByColumnAndRow($col, 1)->getCalculatedValue(); + $headers[$col] = trim($cellValue); + } + + $this->info("表头: " . implode(', ', $headers)); + + // 找到"课程"和"跳转链接"列的位置 + $courseColumn = null; + $linkColumn = null; + + foreach ($headers as $colIndex => $header) { + if (strpos($header, '课程') !== false) { + $courseColumn = $colIndex; + } + if (strpos($header, '跳转链接') !== false) { + $linkColumn = $colIndex; + } + } + + if (!$courseColumn || !$linkColumn) { + $this->warn("工作表 {$sheetName} 中未找到'课程'或'跳转链接'列"); + return 0; + } + + $this->info("找到课程列: {$courseColumn},跳转链接列: {$linkColumn}"); + + $updated = 0; + $failedCourses = []; + + // 处理数据行 + for ($row = 2; $row <= $highestRow; $row++) { + $courseName = trim($worksheet->getCellByColumnAndRow($courseColumn, $row)->getCalculatedValue()); + $jumpLink = trim($worksheet->getCellByColumnAndRow($linkColumn, $row)->getCalculatedValue()); + + if (empty($courseName) || empty($jumpLink)) { + continue; + } + + $this->info("处理行 {$row}: 课程='{$courseName}', 跳转链接='{$jumpLink}'"); + + // 从phome_ecms_news表获取titleurl + $titleUrl = $this->getTitleUrlFromNews($jumpLink); + + if ($titleUrl) { + // 更新courses表 + $updateCount = $this->updateCourseUrl($courseName, $titleUrl); + $updated += $updateCount; + + if ($updateCount > 0) { + $this->info("✓ 成功更新课程 '{$courseName}' 的URL为: {$titleUrl}"); + } else { + $this->warn("✗ 未找到匹配的课程: '{$courseName}'"); + $failedCourses[] = $courseName; + } + } else { + $this->warn("✗ 未找到匹配的新闻标题: '{$jumpLink}'"); + } + } + + // 显示匹配失败的课程 + if (!empty($failedCourses)) { + $this->warn("工作表 {$sheetName} 中匹配失败的课程:"); + foreach ($failedCourses as $failedCourse) { + $this->warn(" - {$failedCourse}"); + } + } + + return $updated; + } + + /** + * 从phome_ecms_news表获取titleurl + */ + private function getTitleUrlFromNews($title) + { + try { + // 直接匹配 + $news = DB::table('phome_ecms_news') + ->where('title', $title) + ->first(); + + if ($news && !empty($news->titleurl)) { + return $news->titleurl; + } + + // 模糊匹配 + $news = DB::table('phome_ecms_news') + ->where('title', 'like', "%{$title}%") + ->first(); + + if ($news && !empty($news->titleurl)) { + $this->info("通过模糊匹配找到: '{$news->title}' -> '{$news->titleurl}'"); + return $news->titleurl; + } + + // 使用相似度匹配 + $allNews = DB::table('phome_ecms_news') + ->whereNotNull('title') + ->whereNotNull('titleurl') + ->where('title', '!=', '') + ->where('titleurl', '!=', '') + ->get(); + + $bestMatch = null; + $highestSimilarity = 0; + + foreach ($allNews as $news) { + $similarity = $this->calculateSimilarity($title, $news->title); + if ($similarity > $highestSimilarity) { + $highestSimilarity = $similarity; + $bestMatch = $news; + } + } + + if ($bestMatch && $highestSimilarity > 0) { + $this->info("通过相似度匹配找到 (相似度: " . round($highestSimilarity * 100, 2) . "%): '{$bestMatch->title}' -> '{$bestMatch->titleurl}'"); + return $bestMatch->titleurl; + } + + } catch (\Exception $e) { + $this->error("查询phome_ecms_news表时发生错误: " . $e->getMessage()); + } + + return null; + } + + /** + * 更新courses表的url字段 + */ + private function updateCourseUrl($courseName, $titleUrl) + { + try { + // 直接匹配 + $updateCount = Course::where('name', $courseName) + ->whereNull('deleted_at') + ->update(['url' => $titleUrl]); + + if ($updateCount > 0) { + return $updateCount; + } + + // 模糊匹配 + $updateCount = Course::where('name', 'like', "%{$courseName}%") + ->whereNull('deleted_at') + ->update(['url' => $titleUrl]); + + if ($updateCount > 0) { + $this->info("通过模糊匹配更新了课程"); + return $updateCount; + } + + // 使用相似度匹配 + $courses = Course::whereNull('deleted_at') + ->whereNotNull('name') + ->where('name', '!=', '') + ->get(); + + $bestMatch = null; + $highestSimilarity = 0; + + foreach ($courses as $course) { + $similarity = $this->calculateSimilarity($courseName, $course->name); + if ($similarity > $highestSimilarity) { + $highestSimilarity = $similarity; + $bestMatch = $course; + } + } + + if ($bestMatch && $highestSimilarity > 0) { + $bestMatch->url = $titleUrl; + $bestMatch->save(); + $this->info("通过相似度匹配更新了课程 (相似度: " . round($highestSimilarity * 100, 2) . "%): '{$bestMatch->name}'"); + return 1; + } + + } catch (\Exception $e) { + $this->error("更新courses表时发生错误: " . $e->getMessage()); + } + + return 0; + } + + /** + * 计算字符串相似度 + */ + private function calculateSimilarity($str1, $str2) + { + // 移除空格并转换为小写 + $str1 = strtolower(preg_replace('/\s+/', '', $str1)); + $str2 = strtolower(preg_replace('/\s+/', '', $str2)); + + if ($str1 === $str2) { + return 1.0; + } + + if (empty($str1) || empty($str2)) { + return 0.0; + } + + // 使用Levenshtein距离计算相似度 + $maxLen = max(strlen($str1), strlen($str2)); + if ($maxLen == 0) { + return 1.0; + } + + $distance = levenshtein($str1, $str2); + $similarity = 1 - ($distance / $maxLen); + + // 如果其中一个字符串包含另一个,提高相似度 + if (strpos($str1, $str2) !== false || strpos($str2, $str1) !== false) { + $containsSimilarity = min(strlen($str1), strlen($str2)) / $maxLen; + $similarity = max($similarity, $containsSimilarity); + } + + return max(0, $similarity); + } +} diff --git a/app/Console/Commands/UpdateUserNo.php b/app/Console/Commands/UpdateUserNo.php index b3ed7d5..2981c2e 100755 --- a/app/Console/Commands/UpdateUserNo.php +++ b/app/Console/Commands/UpdateUserNo.php @@ -2,6 +2,8 @@ namespace App\Console\Commands; +use App\Models\Course; +use App\Models\CourseSign; use App\Models\User; use App\Repositories\MeetRepository; use Illuminate\Console\Command; @@ -40,13 +42,40 @@ class UpdateUserNo extends Command */ public function handle() { - $users = User::whereNull('no')->get(); - foreach ($users as $user) { - $no = User::updateNo($user->id); - $this->info($no . '更新成功'); + // 已经开始的课程日期(所有历史数据处理) +// $dateList = Course::whereNotNull('start_date') +// ->where('start_date', '<=', date('Y-m-d')) +// ->orderBy('start_date') +// ->groupBy('start_date') +// ->pluck('start_date') +// ->toArray(); + // 当日数据处理(日常定时任务) + $dateList = [date('Y-m-d')]; + foreach ($dateList as $date) { + $courses = Course::with(['courseSigns' => function ($query) { + $query->where('status', 1); + }])->where('start_date', $date) + ->orderBy('start_date') + ->get(); + $i = 1; + // 编号前缀 + $prefix = date('Ymd', strtotime($date)); + foreach ($courses as $course) { + foreach ($course->courseSigns as $sign) { + $user = User::find($sign->user_id); + if ($user->no) { + continue; + } + $no = $prefix . str_pad($i, 3, '0', STR_PAD_LEFT); + // 更新用户编号 + $user->no = $no; + $user->save(); + $this->info($no); + $i++; + } + } } return $this->info('更新完成'); } - } diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 4d120d6..1be6ee8 100755 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -26,6 +26,8 @@ class Kernel extends ConsoleKernel $schedule->command('send_email')->everyMinute(); // 推送课程人员信息 $schedule->command('push_courses')->dailyAt('23:00'); + // 更新学员编号 + $schedule->command('update_user_no')->dailyAt('00:05'); } /** diff --git a/app/Http/Controllers/Admin/BookController.php b/app/Http/Controllers/Admin/BookController.php index 08ea480..9409d48 100644 --- a/app/Http/Controllers/Admin/BookController.php +++ b/app/Http/Controllers/Admin/BookController.php @@ -9,6 +9,7 @@ use App\Models\Book; use App\Models\CustomForm; use App\Models\CustomFormField; use App\Models\SupplyDemand; +use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; use Maatwebsite\Excel\Facades\Excel; @@ -206,6 +207,8 @@ class BookController extends BaseController * @OA\Parameter(name="category", in="query", @OA\Schema(type="string"), required=false, description="分类"), * @OA\Parameter(name="description", in="query", @OA\Schema(type="string"), required=false, description="图书简介"), * @OA\Parameter(name="cover_id", in="query", @OA\Schema(type="integer"), required=false, description="图书封面ID"), + * @OA\Parameter(name="total", in="query", @OA\Schema(type="integer"), required=false, description="数量"), + * @OA\Parameter(name="bookshelf", in="query", @OA\Schema(type="integer"), required=false, description="书架"), * @OA\Parameter(name="status", in="query", @OA\Schema(type="integer"), required=false, description="状态0可借阅1已借出2维护中"), * @OA\Response( * response="200", @@ -215,7 +218,33 @@ class BookController extends BaseController */ public function save() { - return parent::save(); + $all = \request()->all(); + DB::beginTransaction(); + try { + if (isset($all['id'])) { + $model = $this->model->find($all['id']); + if (empty($model)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '数据不存在']); + } + } else { + $model = $this->model; + $all['admin_id'] = $this->getUserId(); + $all['department_id'] = $this->getUser()->department_id; + } + $original = $model->getOriginal(); + $model->fill($all); + $model->save(); + DB::commit(); + // 写封面和其他信息 + // 调用命令行更新 + Artisan::call("book:update-isbn-data --book_id={$model->id}"); + // 记录日志 + $this->saveLogs($original, $model); + return $this->success($model); + } catch (\Exception $exception) { + DB::rollBack(); + return $this->fail([$exception->getCode(), $exception->getMessage()]); + } } /** diff --git a/app/Http/Controllers/Admin/CalendarsController.php b/app/Http/Controllers/Admin/CalendarsController.php index ac063bb..79b3d33 100644 --- a/app/Http/Controllers/Admin/CalendarsController.php +++ b/app/Http/Controllers/Admin/CalendarsController.php @@ -54,7 +54,7 @@ class CalendarsController extends BaseController if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - $list = Calendar::with('course', 'courseContent')->where('date', 'like', $all['month'] . '%')->orderBy('date')->get(); + $list = Calendar::with('course', 'courseContent')->where('start_time', 'like', $all['month'] . '%')->orderBy('date')->get(); return $this->success($list); } diff --git a/app/Http/Controllers/Admin/CourseController.php b/app/Http/Controllers/Admin/CourseController.php index 04b30e3..f771f17 100755 --- a/app/Http/Controllers/Admin/CourseController.php +++ b/app/Http/Controllers/Admin/CourseController.php @@ -191,6 +191,7 @@ class CourseController extends BaseController * @OA\Parameter(name="total", in="query", @OA\Schema(type="integer"), description="开课人数"), * @OA\Parameter(name="class", in="query", @OA\Schema(type="string"), description="所在班级"), * @OA\Parameter(name="price", in="query", @OA\Schema(type="string"), description="价格"), + * @OA\Parameter(name="url", in="query", @OA\Schema(type="string"), description="过期后链接"), * @OA\Parameter(name="supply_wechat_pay", in="query", @OA\Schema(type="string"), description="是否支持微信支付0否1是"), * @OA\Parameter(name="is_arrange", in="query", @OA\Schema(type="integer"), description="是否排课-0否1是"), * @OA\Parameter(name="is_fee", in="query", @OA\Schema(type="integer"), description="是否缴费-0否1是"), diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index dd3736a..2c3b0ed 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -41,9 +41,9 @@ class OtherController extends CommonController public function home() { // 校友总数 - $schoolmate['schoolmate_total'] = User::where('is_schoolmate', 1)->count(); + $schoolmate['schoolmate_total'] = User::where('is_schoolmate', 1)->distinct('mobile')->count(); // 2025年校友数 - $schoolmate['schoolmate_year'] = User::where('is_schoolmate', 1)->where('created_at', 'like', '%' . date('Y') . '%')->count(); + $schoolmate['schoolmate_year'] = User::where('is_schoolmate', 1)->where('created_at', 'like', '%' . date('Y') . '%')->distinct('mobile')->count(); // 上市企业总市值 $company['company_market'] = Company::where('company_market', 1)->sum('market_value'); // 校友企业总融资额 @@ -60,11 +60,6 @@ class OtherController extends CommonController 'total' => User::whereIn('company_industry', $level2Names)->count() ]; } - // 追加其他领域 - $industryTotal[] = [ - 'industry' => '其他', - 'total' => User::count() - collect($industryTotal)->sum('total') - ]; // 课程统计 $courseTypes = CourseType::where('is_chart', 1)->get(); foreach ($courseTypes as $courseType) { diff --git a/app/Http/Controllers/Admin/SupplyDemandController.php b/app/Http/Controllers/Admin/SupplyDemandController.php index 29bac40..aeb55d0 100755 --- a/app/Http/Controllers/Admin/SupplyDemandController.php +++ b/app/Http/Controllers/Admin/SupplyDemandController.php @@ -6,6 +6,7 @@ use App\Exports\BaseExport; use App\Helpers\ResponseCode; use App\Models\AppointmentType; use App\Models\CustomForm; +use App\Models\Message; use App\Models\SupplyDemand; use App\Models\SupplyDemandType; use Illuminate\Support\Facades\Validator; @@ -193,6 +194,9 @@ class SupplyDemandController extends BaseController * tags={"供需信息管理"}, * summary="交互统计", * description="", + * @OA\Parameter(name="start_date", in="query", @OA\Schema(type="string"), required=true, description="开始日期"), + * @OA\Parameter(name="end_date", in="query", @OA\Schema(type="string"), required=true, description="结束日期"), + * @OA\Parameter(name="type", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", @@ -202,7 +206,121 @@ class SupplyDemandController extends BaseController */ public function chart() { + $now = date('Y-m-d'); + $startDate = request('start_date', $now); + $endDate = request('end_date', $now); + $type = request('type'); + // 计算上期时间段(与当前时间段长度相同) + $daysDiff = (strtotime($endDate) - strtotime($startDate)) / (60 * 60 * 24) + 1; + $prevEndDate = date('Y-m-d', strtotime($startDate) - 1); + $prevStartDate = date('Y-m-d', strtotime($prevEndDate) - $daysDiff + 1); + + // 当期供需发布数 + $supplyDemand = SupplyDemand::where(function ($query) use ($type) { + if ($type) { + $query->where('type', $type); + } + })->whereBetween('created_at', [$startDate, $endDate]) + ->get(); + $supplyDemandCount = $supplyDemand->count(); + + // 上期供需发布数 + $prevSupplyDemandCount = SupplyDemand::where(function ($query) use ($type) { + if ($type) { + $query->where('type', $type); + } + })->whereBetween('created_at', [$prevStartDate, $prevEndDate]) + ->count(); + + // 当期私信数量 + $messageCount = Message::whereIn('supply_demand_id', $supplyDemand->pluck('id'))->count(); + + // 上期私信数量 + $prevSupplyDemand = SupplyDemand::where(function ($query) use ($type) { + if ($type) { + $query->where('type', $type); + } + })->whereBetween('created_at', [$prevStartDate, $prevEndDate]) + ->get(); + $prevMessageCount = Message::whereIn('supply_demand_id', $prevSupplyDemand->pluck('id'))->count(); + + // 当期交互次数(同一个dialogue_id一来一回算一次交互) + $interactionCount = Message::whereBetween('created_at', [$startDate, $endDate]) + ->whereNotNull('dialogue_id') + ->groupBy('dialogue_id') + ->selectRaw('dialogue_id, COUNT(*) as message_count') + ->having('message_count', '>=', 2) + ->count(); + + // 上期交互次数 + $prevInteractionCount = Message::whereBetween('created_at', [$prevStartDate, $prevEndDate]) + ->whereNotNull('dialogue_id') + ->groupBy('dialogue_id') + ->selectRaw('dialogue_id, COUNT(*) as message_count') + ->having('message_count', '>=', 2) + ->count(); + + // 计算增减比率 + $supplyDemandGrowthRate = $this->calculateGrowthRate($supplyDemandCount, $prevSupplyDemandCount); + $messageGrowthRate = $this->calculateGrowthRate($messageCount, $prevMessageCount); + $interactionGrowthRate = $this->calculateGrowthRate($interactionCount, $prevInteractionCount); + + return $this->success([ + 'supply_demand_count' => $supplyDemandCount, + 'prev_supply_demand_count' => $prevSupplyDemandCount, + 'supply_demand_growth_rate' => $supplyDemandGrowthRate, + 'message_count' => $messageCount, + 'prev_message_count' => $prevMessageCount, + 'message_growth_rate' => $messageGrowthRate, + 'interaction_count' => $interactionCount, + 'prev_interaction_count' => $prevInteractionCount, + 'interaction_growth_rate' => $interactionGrowthRate, + ]); + } + + /** + * 计算增长率 + * @param int $current 当前数值 + * @param int $previous 上期数值 + * @return array 包含增长率和增长状态 + */ + private function calculateGrowthRate($current, $previous) + { + if ($previous == 0) { + if ($current > 0) { + return [ + 'rate' => 100, + 'status' => 'increase', + 'display' => '+100%' + ]; + } else { + return [ + 'rate' => 0, + 'status' => 'stable', + 'display' => '0%' + ]; + } + } + + $rate = round(($current - $previous) / $previous * 100, 2); + + if ($rate > 0) { + $status = 'increase'; + $display = '+' . $rate . '%'; + } elseif ($rate < 0) { + $status = 'decrease'; + $display = $rate . '%'; + } else { + $status = 'stable'; + $display = '0%'; + } + + return [ + 'rate' => $rate, + 'status' => $status, + 'display' => $display + ]; } } diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 6b02290..cce36f9 100755 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -2,12 +2,14 @@ namespace App\Http\Controllers\Admin; +use App\Exports\BaseExport; use App\Exports\CommonExport; use App\Helpers\ResponseCode; use App\Helpers\StarterResponseCode; use App\Models\Course; use App\Models\CourseAppointmentTotal; use App\Models\CourseSign; +use App\Models\CustomForm; use App\Models\CustomFormField; use App\Models\User; use Illuminate\Support\Carbon; @@ -40,7 +42,8 @@ class UserController extends BaseController * @OA\Parameter(name="page_size", in="query", @OA\Schema(type="string"), required=false, description="每页显示的条数"), * @OA\Parameter(name="page", in="query", @OA\Schema(type="string"), required=false, description="页码"), * @OA\Parameter(name="sort_name", in="query", @OA\Schema(type="string"), required=false, description="排序字段名字"), - * @OA\Parameter(name="sort_type", in="query", @OA\Schema(type="string"), required=false, description="排序类型"), + * @OA\Parameter(name="has_course", in="query", @OA\Schema(type="string"), required=false, description="是否有课程0否1是"), + * @OA\Parameter(name="keyword", in="query", @OA\Schema(type="string"), required=true, description="关键词"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", @@ -50,7 +53,92 @@ class UserController extends BaseController */ public function index() { - return parent::index(); + $all = request()->all(); + $list = $this->model->with(underlineToHump($all['show_relation'] ?? [])) + ->with(['courseSigns' => function ($query) use ($all) { + $query->where('status', 1)->with('course.teacher', 'course.typeDetail'); + }])->where(function ($query) use ($all) { + if (isset($all['keyword'])) { + $query->whereHas('courses', function ($q) use ($all) { + $q->where('name', 'like', '%' . $all['keyword'] . '%'); + })->orWhere('name', 'like', '%' . $all['keyword'] . '%'); + } + if (isset($all['has_course']) && $all['has_course'] == 1) { + $query->whereHas('courseSigns', function ($q) { + $q->where('status', 1); + }); + } + if (isset($all['filter']) && !empty($all['filter'])) { + foreach ($all['filter'] as $condition) { + $key = $condition['key'] ?? null; + $op = $condition['op'] ?? null; + $value = $condition['value'] ?? null; + if (!isset($key) || !isset($op) || !isset($value)) { + continue; + } + // 等于 + if ($op == 'eq') { + $query->where($key, $value); + } + // 不等于 + if ($op == 'neq') { + $query->where($key, '!=', $value); + } + // 大于 + if ($op == 'gt') { + $query->where($key, '>', $value); + } + // 大于等于 + if ($op == 'egt') { + $query->where($key, '>=', $value); + } + // 小于 + if ($op == 'lt') { + $query->where($key, '<', $value); + } + // 小于等于 + if ($op == 'elt') { + $query->where($key, '<=', $value); + } + // 模糊搜索 + if ($op == 'like') { + $query->where($key, 'like', '%' . $value . '%'); + } + // 否定模糊搜索 + if ($op == 'notlike') { + $query->where($key, 'not like', '%' . $value . '%'); + } + // null搜索 + if ($op == 'null') { + $query->whereNull($key); + } + // notnull搜索 + if ($op == 'notnull') { + $query->whereNotNull($key); + } + // 范围搜索 + if ($op == 'range') { + list($from, $to) = explode(',', $value); + if (empty($from) || empty($to)) { + continue; + } + $query->whereBetween($key, [$from, $to]); + } + } + } + })->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc'); + if (isset($all['is_export']) && !empty($all['is_export'])) { + $list = $list->get()->toArray(); + $export_fields = $all['export_fields'] ?? []; + // 导出文件名字 + $tableName = $this->model->getTable(); + $filename = (new CustomForm())->getTableComment($tableName); + return Excel::download(new BaseExport($export_fields, $list, $tableName), $filename . date('YmdHis') . '.xlsx'); + } else { + // 输出 + $list = $list->paginate($all['page_size'] ?? 20); + } + return $this->success($list); } /** diff --git a/app/Http/Controllers/Mobile/CourseController.php b/app/Http/Controllers/Mobile/CourseController.php index cf5ed68..baa9074 100755 --- a/app/Http/Controllers/Mobile/CourseController.php +++ b/app/Http/Controllers/Mobile/CourseController.php @@ -484,10 +484,7 @@ class CourseController extends CommonController $content_check_range = Config::getValueByKey('content_check_range'); $courseContent = CourseContent::find($all['course_content_id']); $distance = getDistance($courseContent->longitude, $courseContent->latitude, $all['longitude'], $all['latitude']); - if ($distance > $content_check_range) { - return $this->fail([ResponseCode::ERROR_BUSINESS, '超出打卡范围']); - } - return $this->success('成功'); + return $this->success(compact('distance', 'content_check_range')); } /** @@ -531,6 +528,13 @@ class CourseController extends CommonController if (date('Y-m-d') != $courseContent->date) { return $this->fail([ResponseCode::ERROR_BUSINESS, '不在签到时间']); } + // 不能重复签到 + $courseContentCheck = CourseContentCheck::where('course_content_id', $all['course_content_id']) + ->where('user_id', $this->getUserId()) + ->first(); + if ($courseContentCheck) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '不能重复签到']); + } CourseContentCheck::create([ 'course_content_id' => $all['course_content_id'], 'user_id' => $this->getUserId(), @@ -544,9 +548,7 @@ class CourseController extends CommonController * @OA\Get( * path="/api/mobile/course/content-check-list", * tags={"小程序-课程"}, - * summary="获取签到记录和距离", - * @OA\Parameter(name="longitude", in="query", @OA\Schema(type="string"), required=false, description="longitude"), - * @OA\Parameter(name="latitude", in="query", @OA\Schema(type="string"), required=false, description="latitude"), + * summary="获取签到记录", * @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="string"), required=false, description="课表id"), * @OA\Response( * response=200, @@ -558,27 +560,20 @@ class CourseController extends CommonController { $all = \request()->all(); $messages = [ - 'longitude.required' => '经度必填', - 'latitude.required' => '纬度必填', 'course_content_id.required' => '课程id必填', ]; $validator = Validator::make($all, [ - 'longitude' => 'required', - 'latitude' => 'required', 'course_content_id' => 'required' ], $messages); if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - // 获取打卡范围,千米 - $content_check_range = Config::getValueByKey('content_check_range'); - $courseContent = CourseContent::find($all['course_content_id']); - $distance = getDistance($courseContent->longitude, $courseContent->latitude, $all['longitude'], $all['latitude']); + $list = CourseContentCheck::where('course_content_id', $all['course_content_id']) ->where('user_id', $this->getUserId()) ->orderBy('created_at', 'desc') ->get(); - return $this->success(compact('list', 'content_check_range', 'distance')); + return $this->success(compact('list')); } /** @@ -839,6 +834,7 @@ class CourseController extends CommonController * path="/api/mobile/course/calendars", * tags={"小程序-课程"}, * summary="日历", + * @OA\Parameter(name="type", in="query", @OA\Schema(type="string"), required=false, description="类型"), * @OA\Parameter(name="month", in="query", @OA\Schema(type="string"), required=false, description="月份,例如:2025-01"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( @@ -859,20 +855,29 @@ class CourseController extends CommonController if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - $startDate = $all['month'] . '-01'; - $endDate = date('Y-m-t', strtotime($startDate)); - $range = getDates($startDate, $endDate); - $list = []; - foreach ($range as $date) { - // 查询Calendar模型里start_time和end_time在日期内的数据,其中date是年月日,start_time和end_time是时分秒 - $list[] = [ - 'date' => $date, - 'details' => Calendar::with('course', 'courseContent') - ->whereDate('start_time', '<=', $date) - ->whereDate('end_time', '>=', $date) - ->get() - ]; - } +// $startDate = $all['month'] . '-01'; +// $endDate = date('Y-m-t', strtotime($startDate)); + $list = Calendar::with('course', 'courseContent') + ->where(function ($query) use ($all) { + if (isset($all['type'])) { + $query->where('type', $all['type']); + } + })->where('start_time', 'like', '%' . $all['month'] . '%') + ->orderBy('start_time', 'asc') + ->get(); + +// $range = getDates($startDate, $endDate); +// $list = []; +// foreach ($range as $date) { +// // 查询Calendar模型里start_time和end_time在日期内的数据,其中date是年月日,start_time和end_time是时分秒 +// $list[] = [ +// 'date' => $date, +// 'details' => Calendar::with('course', 'courseContent') +// ->whereDate('start_time', '<=', $date) +// ->whereDate('end_time', '>=', $date) +// ->get() +// ]; +// } return $this->success($list); } diff --git a/app/Http/Controllers/Mobile/OtherController.php b/app/Http/Controllers/Mobile/OtherController.php index 137b970..4b0b48b 100755 --- a/app/Http/Controllers/Mobile/OtherController.php +++ b/app/Http/Controllers/Mobile/OtherController.php @@ -90,7 +90,7 @@ class OtherController extends CommonController return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } $YuanheRepository = new YuanheRepository(); - $result = $YuanheRepository->companyInfo(['enterpriseName' => $all['company_name']]); + $result = $YuanheRepository->companyInfo(['keyword' => $all['company_name']]); if (!$result) { return $this->fail([ResponseCode::ERROR_PARAMETER, '获取失败']); } diff --git a/app/Http/Controllers/Mobile/SupplyDemandController.php b/app/Http/Controllers/Mobile/SupplyDemandController.php index f53a407..9d6b772 100755 --- a/app/Http/Controllers/Mobile/SupplyDemandController.php +++ b/app/Http/Controllers/Mobile/SupplyDemandController.php @@ -15,7 +15,6 @@ use App\Models\Message; use App\Models\SupplyDemand; use App\Models\SupplyDemandKeep; use App\Notifications\BirthdayNotify; -use App\Notifications\SupplyDemandNotify; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Notification; @@ -48,17 +47,18 @@ class SupplyDemandController extends CommonController public function index() { $all = request()->all(); + $status = request('status', 1); $supplyDemands = SupplyDemand::with([ 'user' => function ($query) { $query->select('id', 'nickname', 'name', 'headimgurl', 'username'); } - ])->where(function ($query) use ($all) { + ])->where(function ($query) use ($all, $status) { + if ($status != -1) { + $query->where('status', $status); + } if (isset($all['type'])) { $query->where('type', $all['type']); } - if (isset($all['status'])) { - $query->where('status', $all['status']); - } if (isset($all['keyword'])) { $query->where('content', 'like', '%' . $all['keyword'] . '%'); } @@ -66,12 +66,13 @@ class SupplyDemandController extends CommonController $query->where('user_id', $this->getUserId()); } if (isset($all['expire_type'])) { + $now = date('Y-m-d'); if ($all['expire_type'] == 1) { - $query->where(function ($q) { - $q->whereNull('expire_time')->orWhere('expire_time', '>', Carbon::now()); + $query->where(function ($q) use ($now) { + $q->whereNull('expire_time')->orWhere('expire_time', '')->orWhere('expire_time', '>', $now); }); } else { - $query->where('expire_time', '<', Carbon::now()); + $query->where('expire_time', '<', $now); } } })->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc') @@ -105,7 +106,7 @@ class SupplyDemandController extends CommonController } $detail = SupplyDemand::with([ 'user' => function ($query) { - $query->select('id', 'nickname', 'name', 'headimgurl'); + $query->select('id', 'nickname', 'name', 'headimgurl', 'username'); } ])->find($all['id']); // 增加view_count @@ -237,10 +238,6 @@ class SupplyDemandController extends CommonController if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - if (isset($all['supply_demand_id']) && !empty($all['supply_demand_id'])) { - // 增加view_count - SupplyDemand::where('id', $all['supply_demand_id'])->increment('view_count'); - } // 判断是否有会话,没有则创建 $dialogue = Dialogue::where(function ($query) use ($all) { $query->where('user_id', $this->getUserId())->where('to_user_id', $all['to_user_id']); @@ -248,12 +245,26 @@ class SupplyDemandController extends CommonController $query->where('user_id', $all['to_user_id'])->where('to_user_id', $this->getUserId()); })->first(); if (empty($dialogue)) { + // 不能给自己发信息 + if ($all['to_user_id'] == $this->getUserId()) { + return $this->error('不能给自己发信息'); + } // 创建一条会话 $dialogue = Dialogue::create([ 'user_id' => $this->getUserId(), 'to_user_id' => $all['to_user_id'], 'supply_demand_id' => $all['supply_demand_id'] ?? 0 ]); + // 增加联系次数 + SupplyDemand::where('id', $all['supply_demand_id'])->increment('contact_count'); + } + if (isset($all['supply_demand_id'])) { + $now = date('Y-m-d'); + // 过期数据不能私信 + $supplyDemand = SupplyDemand::find($all['supply_demand_id']); + if ($supplyDemand->expire_time > $now) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '该信息已过期,不能私信']); + } } // 每天限制私信次数限制 $message_limit = Config::getValueByKey('message_limit'); diff --git a/app/Http/Controllers/Mobile/UserController.php b/app/Http/Controllers/Mobile/UserController.php index c1729a3..ce4ad43 100755 --- a/app/Http/Controllers/Mobile/UserController.php +++ b/app/Http/Controllers/Mobile/UserController.php @@ -74,8 +74,6 @@ class UserController extends CommonController $score = Config::getValueByKey('share_score'); ScoreLog::add($pid, $score, '分享获得'); } - // 更新编号 - User::updateNo($user->id); } $token = $user->createToken("mobile-token")->plainTextToken; return $this->success(compact('token')); @@ -176,13 +174,13 @@ class UserController extends CommonController if (isset($all['name']) && !empty($all['name'])) { $all['letter'] = strtoupper(Pinyin::abbr(mb_substr($all['name'], 0, 1))[0]); } - $model->fill($all); - $model->save(); // 如果有公司信息,就更新一下公司 - if (isset($all['company_name']) && !empty($all['company_name'])) { + if (isset($all['company_name']) && !empty($all['company_name']) && $model->company_name != $all['company_name']) { // 调用命令行更新 Artisan::call("update_company --user_id={$model->id}"); } + $model->fill($all); + $model->save(); // 判断下,如果用户新加入车牌号,并且有未开始或者进行中的预约,则直接预约车牌号 $appointmentModel = Appointment::where('user_id', $this->getUserId()) ->where('status', 1) @@ -231,7 +229,6 @@ class UserController extends CommonController }])->find($this->getUserId()); $doorRepository = new DoorRepository(); - $nowDate = date('Y-m-d H:i:s'); $door_appointments = Appointment::where('user_id', $this->getUserId()) ->where('status', 1) ->orderBy('id', 'desc') @@ -247,6 +244,7 @@ class UserController extends CommonController $query->where('start_date', '<=', $nowDate)->where('end_date', '>=', $nowDate); })->first(); if ($course_signs) { + // todo::上线解开注释 //$course_signs->qrcode = $doorRepository->getEmpQrCodeByCourse($course_signs, $out); $course_signs->qrcode = ''; } diff --git a/app/Models/Book.php b/app/Models/Book.php index e40fbf0..f207a66 100644 --- a/app/Models/Book.php +++ b/app/Models/Book.php @@ -5,9 +5,20 @@ namespace App\Models; class Book extends SoftDeletesModel { + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'other_data' => 'json' + ]; + + /** + * Get the cover image for the book. + */ public function cover() { return $this->hasOne(Upload::class, 'id', 'cover_id'); } - } diff --git a/app/Models/Config.php b/app/Models/Config.php index 504c143..bf9bb40 100755 --- a/app/Models/Config.php +++ b/app/Models/Config.php @@ -14,9 +14,7 @@ class Config extends SoftDeletesModel */ public static function getValueByKey($key) { - $config = Cache::remember('config_array', 300, function () { - return self::pluck('value', 'key')->toArray(); - }); + $config = self::pluck('value', 'key')->toArray(); if (isset($config[$key])) { return $config[$key]; } diff --git a/app/Models/Course.php b/app/Models/Course.php index f7a94db..7fd70be 100755 --- a/app/Models/Course.php +++ b/app/Models/Course.php @@ -94,6 +94,11 @@ class Course extends SoftDeletesModel return $this->hasOne(Upload::class, 'id', 'qun_image_id'); } + public function courseContents() + { + return $this->hasMany(CourseContent::class, 'course_id', 'id'); + } + /** * 更新课程报名状态 */ diff --git a/app/Models/CourseContent.php b/app/Models/CourseContent.php index 100fe11..95b0141 100755 --- a/app/Models/CourseContent.php +++ b/app/Models/CourseContent.php @@ -77,9 +77,9 @@ class CourseContent extends SoftDeletesModel 'secret' => \config('app.applet_secret') ]; $app = Factory::miniProgram($config); - $tmp = $app->app_code->get('/packages/surveyFill/index?course_content_id' . $courseContentId, [ - 'env_version' => "release" // 正式版 - // 'env_version' => "trial" // 体验版 + $tmp = $app->app_code->get('/packages/sign/index?course_content_id' . $courseContentId, [ + // 'env_version' => "release" // 正式版 + 'env_version' => "trial" // 体验版 ]); $dir = dirname($path); $fileSys->ensureDirectoryExists($dir, 0755, true); diff --git a/app/Models/SupplyDemand.php b/app/Models/SupplyDemand.php index 8dab203..947a3b2 100755 --- a/app/Models/SupplyDemand.php +++ b/app/Models/SupplyDemand.php @@ -9,6 +9,7 @@ use Illuminate\Support\Facades\Cache; class SupplyDemand extends SoftDeletesModel { + protected $appends = ['files']; protected $casts = ['file_ids' => 'json']; public function getFilesAttribute($value) diff --git a/app/Models/User.php b/app/Models/User.php index 570d36d..3eda1ab 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -182,49 +182,4 @@ class User extends Authenticatable implements Auditable return $user->appointment_total - $useTotal >= 0 ? $user->appointment_total - $useTotal : 0; } - /** - * 更新用户编号 - */ - public static function updateNo($userId) - { - // todo::编号可能回重复,还需要详细排查 - $user = self::find($userId); - if (!empty($user->no)) { - return false; - } - // 获取最早一条审核通过的报名数据 - $courseSigns = CourseSign::with('course') - ->where('user_id', $userId) - ->where('status', 1) - ->orderBy('created_at', 'asc') - ->first(); - if (empty($courseSigns)) { - return false; - } - if (empty($courseSigns->course->start_date)) { - return false; - } - // 编号前缀 - $prefix = date('Ymd', strtotime($courseSigns->course->start_date)); - // 获取同一天开始的所有课程 - $course = Course::where('start_date', $courseSigns->course->start_date)->orderBy('created_at', 'asc')->get(); - // 获取同一天开始所有课程的报名信息 - $courseSignsList = CourseSign::whereIn('id', function ($query) use ($course) { - $query->from('course_signs') - ->where('status', 1) - ->whereIn('course_id', $course->pluck('id')) - ->selectRaw('MIN(id)') - ->groupBy('user_id'); - })->orderBy('created_at', 'asc')->get(); - - // 获取当前用户id在$courseSigns中第几位 - $index = $courseSignsList->search(function ($item) use ($user) { - return $item->user_id == $user->id; - }); - $no = $prefix . str_pad($index + 1, 3, '0', STR_PAD_LEFT); - $user->no = $no; - $user->save(); - return $user->no; - } - } diff --git a/app/Services/TestData/CourseContentEvaluationTestDataGenerator.php b/app/Services/TestData/CourseContentEvaluationTestDataGenerator.php new file mode 100644 index 0000000..ac613c8 --- /dev/null +++ b/app/Services/TestData/CourseContentEvaluationTestDataGenerator.php @@ -0,0 +1,405 @@ +create(); + } + + $allUsers = User::all(); + if ($allUsers->count() < 5) { + throw new \RuntimeException('生成评价数据至少需要5个用户'); + } + + // 2) 确保课程和课程内容存在 + $courses = Course::with('courseContents')->get(); + if ($courses->isEmpty()) { + $log("创建示例课程数据"); + $this->createSampleCoursesAndContents($faker); + $courses = Course::with('courseContents')->get(); + } + + $allCourseContents = CourseContent::all(); + if ($allCourseContents->isEmpty()) { + throw new \RuntimeException('无课程内容数据,无法生成评价'); + } + + // 3) 生成评价问卷主数据 + for ($i = 0; $i < $evaluationCount; $i++) { + $courseContent = $allCourseContents->random(); + $course = $courses->where('id', $courseContent->course_id)->first(); + + if (!$course) { + // 如果找不到课程,跳过这个课程内容 + continue; + } + + $evaluation = $this->createEvaluation($courseContent, $course, $faker); + + // 4) 为每个问卷生成问题字段 + $askCount = $faker->numberBetween(5, 15); + $asks = $this->createEvaluationAsks($evaluation, $courseContent, $course, $askCount, $faker); + + // 5) 生成用户提交的表单数据 + $formCount = $faker->numberBetween(10, min(40, $allUsers->count())); + $submittedUsers = $allUsers->random($formCount); + + foreach ($submittedUsers as $user) { + $this->createEvaluationForm($evaluation, $user, $asks, $faker); + } + + $log(sprintf('评价问卷#%d "%s" 已生成:%d个问题字段,%d份用户提交', + $evaluation->id, + $evaluation->title, + $askCount, + $formCount + )); + } + }); + } + + /** + * 创建评价问卷主数据 + */ + private function createEvaluation(CourseContent $courseContent, Course $course, $faker): CourseContentEvaluation + { + $evaluation = new CourseContentEvaluation(); + $evaluation->course_id = $course->id; + $evaluation->course_content_id = $courseContent->id; + $evaluation->title = $this->generateEvaluationTitle($course, $courseContent, $faker); + $evaluation->desc = $this->generateEvaluationDesc($faker); + $evaluation->type_id = $faker->numberBetween(1, 5); // 问卷类型ID + + // 时间设置:开始时间在课程内容时间前后,截止时间在开始时间之后 + $startTime = $faker->dateTimeBetween('-30 days', '+7 days'); + $endTime = $faker->dateTimeBetween($startTime, $startTime->format('Y-m-d H:i:s') . ' +30 days'); + + $evaluation->start_time = $startTime->format('Y-m-d H:i:s'); + $evaluation->end_time = $endTime->format('Y-m-d H:i:s'); + $evaluation->status = $faker->randomElement([0, 1]); // 0未发布, 1已发布 + $evaluation->save(); + + return $evaluation; + } + + /** + * 创建评价问题字段 + */ + private function createEvaluationAsks(CourseContentEvaluation $evaluation, CourseContent $courseContent, Course $course, int $count, $faker): array + { + $asks = []; + $fieldTemplates = $this->getEvaluationFieldTemplates(); + + for ($i = 0; $i < $count; $i++) { + $template = $faker->randomElement($fieldTemplates); + + $ask = new CourseContentEvaluationAsk(); + $ask->admin_id = $faker->numberBetween(1, 10); + $ask->department_id = $faker->numberBetween(1, 5); + $ask->course_id = $course->id; + $ask->course_content_id = $courseContent->id; + $ask->course_content_evaluation_id = $evaluation->id; + $ask->name = $template['name']; + $ask->field = $template['field'] . '_' . ($i + 1); + $ask->edit_input = $template['edit_input']; + $ask->rule = $template['rule']; + $ask->sort = $i + 1; + $ask->help = $template['help']; + $ask->select_item = $template['select_item']; + $ask->need_fill = $template['need_fill']; + $ask->belong_user = $template['belong_user']; + $ask->allow_input = $template['allow_input']; + $ask->save(); + + $asks[] = $ask; + } + + return $asks; + } + + /** + * 创建用户提交的评价表单 + */ + private function createEvaluationForm(CourseContentEvaluation $evaluation, User $user, array $asks, $faker): void + { + $formData = []; + + foreach ($asks as $ask) { + $formData[$ask->field] = $this->generateFieldValue($ask, $faker); + } + + $form = new CourseContentEvaluationForm(); + $form->course_content_evaluation_id = $evaluation->id; + $form->user_id = $user->id; + $form->time_total = $faker->numberBetween(180, 1800); // 3分钟到30分钟 + $form->data = $formData; + $form->created_at = $faker->dateTimeBetween($evaluation->start_time, $evaluation->end_time ?: 'now'); + $form->save(); + } + + /** + * 生成评价标题 + */ + private function generateEvaluationTitle(Course $course, CourseContent $courseContent, $faker): string + { + $templates = [ + '《%s》课程满意度调查', + '%s 教学效果评价', + '%s 学习体验反馈', + '关于 %s 的教学质量评估', + '%s 课程内容评价问卷', + '%s 授课情况调研', + '%s 学员反馈调查' + ]; + + $courseName = $course->title ?? '课程'; + return sprintf($faker->randomElement($templates), $courseName); + } + + /** + * 生成评价描述 + */ + private function generateEvaluationDesc($faker): string + { + $descriptions = [ + '为了提升教学质量,改进课程内容,请您根据实际学习体验,客观填写本次评价问卷。您的宝贵意见将帮助我们持续优化课程设计。', + '此次评价旨在了解您对本课程的学习感受和建议。问卷采用匿名形式,请放心填写真实想法,感谢您的配合!', + '请根据您的实际学习情况,对本次课程的各个方面进行客观评价。您的反馈对我们改进教学方法具有重要意义。', + '为持续提升课程品质,特设立本次学员满意度调查。请您花费几分钟时间,帮助我们了解课程的优点与不足。', + '感谢您参与本次课程学习!为了给后续学员提供更好的学习体验,恳请您如实填写这份评价问卷。' + ]; + + return $faker->randomElement($descriptions); + } + + /** + * 获取评价字段模板 + */ + private function getEvaluationFieldTemplates(): array + { + return [ + [ + 'name' => '课程内容满意度', + 'field' => 'content_satisfaction', + 'edit_input' => 'radio', + 'rule' => 'required', + 'help' => '请选择您对课程内容的满意程度', + 'select_item' => ['非常满意', '满意', '一般', '不满意', '非常不满意'], + 'need_fill' => true, + 'belong_user' => false, + 'allow_input' => false + ], + [ + 'name' => '授课方式评价', + 'field' => 'teaching_method', + 'edit_input' => 'radio', + 'rule' => 'required', + 'help' => '请评价老师的授课方式', + 'select_item' => ['很好', '好', '一般', '较差', '很差'], + 'need_fill' => true, + 'belong_user' => false, + 'allow_input' => false + ], + [ + 'name' => '课程难度评价', + 'field' => 'difficulty_level', + 'edit_input' => 'radio', + 'rule' => 'required', + 'help' => '您认为课程难度如何', + 'select_item' => ['太简单', '偏简单', '适中', '偏难', '太难'], + 'need_fill' => true, + 'belong_user' => false, + 'allow_input' => false + ], + [ + 'name' => '学习收获评价', + 'field' => 'learning_gain', + 'edit_input' => 'checkbox', + 'rule' => '', + 'help' => '您在本次学习中获得了哪些收获(可多选)', + 'select_item' => ['理论知识', '实践技能', '思维方法', '行业认知', '人际交往', '其他'], + 'need_fill' => false, + 'belong_user' => false, + 'allow_input' => true + ], + [ + 'name' => '课程推荐度', + 'field' => 'recommendation', + 'edit_input' => 'radio', + 'rule' => 'required', + 'help' => '您是否愿意向他人推荐此课程', + 'select_item' => ['非常愿意', '愿意', '无所谓', '不愿意', '绝对不会'], + 'need_fill' => true, + 'belong_user' => false, + 'allow_input' => false + ], + [ + 'name' => '整体评分', + 'field' => 'overall_rating', + 'edit_input' => 'select', + 'rule' => 'required', + 'help' => '请为本次课程打分(10分制)', + 'select_item' => ['10分', '9分', '8分', '7分', '6分', '5分', '4分', '3分', '2分', '1分'], + 'need_fill' => true, + 'belong_user' => false, + 'allow_input' => false + ], + [ + 'name' => '意见建议', + 'field' => 'suggestions', + 'edit_input' => 'textarea', + 'rule' => '', + 'help' => '请提出您的宝贵意见和建议', + 'select_item' => null, + 'need_fill' => false, + 'belong_user' => false, + 'allow_input' => true + ], + [ + 'name' => '您的姓名', + 'field' => 'student_name', + 'edit_input' => 'text', + 'rule' => '', + 'help' => '请填写您的真实姓名(可选)', + 'select_item' => null, + 'need_fill' => false, + 'belong_user' => true, + 'allow_input' => false + ], + [ + 'name' => '联系方式', + 'field' => 'contact_info', + 'edit_input' => 'text', + 'rule' => '', + 'help' => '如需回访,请留下联系方式', + 'select_item' => null, + 'need_fill' => false, + 'belong_user' => true, + 'allow_input' => false + ], + [ + 'name' => '课堂互动评价', + 'field' => 'interaction_rating', + 'edit_input' => 'radio', + 'rule' => '', + 'help' => '您对课堂互动环节的评价', + 'select_item' => ['很活跃', '较活跃', '一般', '较沉闷', '很沉闷'], + 'need_fill' => false, + 'belong_user' => false, + 'allow_input' => false + ] + ]; + } + + /** + * 根据字段类型生成对应的值 + */ + private function generateFieldValue(CourseContentEvaluationAsk $ask, $faker) + { + switch ($ask->edit_input) { + case 'radio': + case 'select': + return $faker->randomElement($ask->select_item ?? []); + + case 'checkbox': + $options = $ask->select_item ?? []; + $selected = $faker->randomElements($options, $faker->numberBetween(1, min(3, count($options)))); + return implode(',', $selected); + + case 'textarea': + $suggestions = [ + '希望增加更多实践环节', + '课程进度可以适当放慢', + '案例分析很有帮助,建议增加', + '老师讲解很清晰,受益良多', + '课程资料很丰富,感谢分享', + '希望提供更多课后练习', + '建议增加小组讨论时间', + '整体非常满意,期待后续课程' + ]; + return $faker->optional(0.7)->randomElement($suggestions) ?: ''; + + case 'text': + if ($ask->field === 'student_name') { + return $faker->optional(0.4)->name ?: ''; + } elseif ($ask->field === 'contact_info') { + return $faker->optional(0.3)->phoneNumber ?: ''; + } + return $faker->optional(0.5)->words(3, true) ?: ''; + + default: + return ''; + } + } + + /** + * 创建示例课程和课程内容数据(如果不存在) + */ + private function createSampleCoursesAndContents($faker): void + { + $courseData = [ + ['title' => 'Python 程序设计基础', 'contents' => ['Python 语言概述', '数据类型与变量', '控制结构', '函数与模块', '面向对象编程']], + ['title' => '数据库原理与应用', 'contents' => ['数据库基础概念', 'SQL 语言基础', '数据库设计', '事务处理', '性能优化']], + ['title' => '项目管理实务', 'contents' => ['项目管理概述', '项目计划制定', '风险管理', '团队管理', '项目收尾']], + ['title' => '市场营销学', 'contents' => ['市场营销概论', '消费者行为分析', '产品策略', '价格策略', '推广策略']], + ['title' => 'Web 前端开发', 'contents' => ['HTML 基础', 'CSS 样式设计', 'JavaScript 编程', 'Vue.js 框架', '项目实战']] + ]; + + foreach ($courseData as $data) { + $course = Course::create([ + 'title' => $data['title'], + 'description' => $data['title'] . '课程', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + + foreach ($data['contents'] as $index => $contentTitle) { + CourseContent::create([ + 'course_id' => $course->id, + 'title' => $contentTitle, + 'description' => $contentTitle . '相关内容', + 'sort' => $index + 1, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ]); + } + } + } +} \ No newline at end of file diff --git a/app/Services/TestData/SupplyDemandTestDataGenerator.php b/app/Services/TestData/SupplyDemandTestDataGenerator.php new file mode 100644 index 0000000..b86b433 --- /dev/null +++ b/app/Services/TestData/SupplyDemandTestDataGenerator.php @@ -0,0 +1,266 @@ +create(); + } + + $allUsers = User::query()->get(['id', 'name', 'nickname', 'username']); + if ($allUsers->count() < 2) { + throw new \RuntimeException('生成对话与消息至少需要2个用户'); + } + + // 2) 生成供需主数据 + for ($i = 0; $i < $supplyDemandCount; $i++) { + $publisher = $allUsers->random(); + + $supplyDemand = new SupplyDemand(); + $supplyDemand->user_id = $publisher->id; + $supplyDemand->title = $this->generateTechBusinessTitle($faker); + $supplyDemand->type = $faker->randomElement([1, 2]); + $supplyDemand->content = $this->generateContentFromTitle($supplyDemand->title, $supplyDemand->type, $faker); + $supplyDemand->tag = implode(',', $this->generateTagsFromTitle($supplyDemand->title, $faker)); + $supplyDemand->wechat = 'wx_' . $faker->bothify('??####'); + $supplyDemand->mobile = $faker->phoneNumber(); + $supplyDemand->email = $faker->safeEmail(); + $supplyDemand->status = $faker->randomElement([0, 1, 2, 3, 4]); + $supplyDemand->view_count = 0; // 稍后回填 + $supplyDemand->contact_count = 0; // 稍后回填 + $supplyDemand->expire_time = $faker->optional(0.6)->dateTimeBetween('now', '+90 days')?->format('Y-m-d H:i:s'); + // public_way 实际业务需要三态(1/2/3),但列类型为 boolean,这里按 0/1 赋值 + $supplyDemand->public_way = $faker->boolean ? 1 : 0; + $supplyDemand->contact_name = $faker->name(); + $supplyDemand->save(); + + // 3) 附件:0~3 个,并同步回填 file_ids + $uploadIds = []; + $attachmentsCount = $faker->numberBetween(0, 3); + for ($k = 0; $k < $attachmentsCount; $k++) { + $originalName = $faker->lexify('file_????') . '.' . $faker->randomElement(['pdf', 'png', 'jpg', 'docx']); + $extension = pathinfo($originalName, PATHINFO_EXTENSION); + $upload = new Upload(); + $upload->belongs_type = SupplyDemand::class; + $upload->belongs_id = $supplyDemand->id; + $upload->original_name = $originalName; + $upload->folder = 'test/' . date('Ymd'); + $upload->name = $faker->uuid . '.' . $extension; + $upload->extension = $extension; + $upload->size = $faker->numberBetween(5 * 1024, 2 * 1024 * 1024); + $upload->creator_type = 'seeder'; + $upload->creator_id = $publisher->id; + $upload->save(); + $uploadIds[] = $upload->id; + } + if (!empty($uploadIds)) { + $supplyDemand->file_ids = $uploadIds; + $supplyDemand->save(); + } + + // 4) 会话与消息:0~2 个会话,每个会话 1~5 条消息,严格交替 + $dialogueCount = $faker->numberBetween(0, 2); + $totalMessages = 0; + $totalContacts = 0; // 统计对发布者的有效联系次数 + + for ($d = 0; $d < $dialogueCount; $d++) { + // 选择一个不同于发布者的用户作为对话方 + $other = $allUsers->where('id', '!=', $publisher->id)->random(); + + $dialogue = new Dialogue(); + $dialogue->user_id = $faker->randomElement([$publisher->id, $other->id]); // 对话发起方随机 + $dialogue->to_user_id = ($dialogue->user_id === $publisher->id) ? $other->id : $publisher->id; + $dialogue->supply_demand_id = $supplyDemand->id; + $dialogue->last_content = null; + $dialogue->last_datetime = null; + $dialogue->save(); + + $messageCount = $faker->numberBetween(1, 5); + $sender = $faker->randomElement([$publisher->id, $other->id]); + $receiver = ($sender === $publisher->id) ? $other->id : $publisher->id; + + $lastContent = null; + $lastDatetime = null; + for ($m = 0; $m < $messageCount; $m++) { + $content = $faker->realText($faker->numberBetween(20, 80)); + $createdAt = Carbon::now()->subDays($faker->numberBetween(0, 10))->addMinutes($faker->numberBetween(0, 1440)); + + $msg = new Message(); + $msg->dialogue_id = $dialogue->id; + $msg->user_id = $sender; + $msg->to_user_id = $receiver; + $msg->supply_demand_id = $supplyDemand->id; + $msg->content = $content; + $msg->is_read = $faker->boolean ? 1 : 0; + $msg->created_at = $createdAt; + $msg->updated_at = $createdAt; + $msg->save(); + + // 统计“对发布者的联系” + if ($receiver === $publisher->id) { + $totalContacts++; + } + + $lastContent = $content; + $lastDatetime = $createdAt->format('Y-m-d H:i:s'); + + // 严格交替:交换 sender/receiver + [$sender, $receiver] = [$receiver, $sender]; + } + + $dialogue->last_content = $lastContent; + $dialogue->last_datetime = $lastDatetime; + $dialogue->save(); + + $totalMessages += $messageCount; + } + + // 5) 收藏:0~5 个 + $keepCount = $faker->numberBetween(0, 5); + if ($keepCount > 0) { + $keeperPool = $allUsers->where('id', '!=', $publisher->id)->pluck('id')->all(); + $keepers = Arr::random($keeperPool, min($keepCount, count($keeperPool))); + foreach ((array)$keepers as $keeperId) { + SupplyDemandKeep::firstOrCreate([ + 'user_id' => $keeperId, + 'supply_demand_id' => $supplyDemand->id, + ]); + } + } + + // 6) 回填统计:浏览量 >= 消息数,联系次数 = 对发布者的消息次数 + $supplyDemand->contact_count = $totalContacts; + $supplyDemand->view_count = $totalMessages + $faker->numberBetween(0, 20); + $supplyDemand->save(); + + $log(sprintf('供需#%d 已生成:附件%s个,会话%s个,消息%s条,收藏%s个', + $supplyDemand->id, + count($uploadIds), + $dialogueCount, + $totalMessages, + $keepCount + )); + } + }); + } + + /** + * 生成科技/商业取向的标题 + */ + private function generateTechBusinessTitle($faker): string + { + $regions = ['华东', '华南', '华北', '西南', '中原', '长三角', '珠三角']; + $industries = ['制造', '零售', '医药', '教育', '金融', '能源', '物流', '政企']; + $materials = ['光刻胶', '硅片', 'CMP 抛光液', '陶瓷基板']; + $domains = ['电商推荐', '客服质检', '金融风控', '工业检测', '内容审核']; + $countries = ['新加坡', '印度尼西亚', '阿联酋', '沙特', '巴西', '墨西哥']; + + $templates = [ + 'SaaS 渠道分销伙伴招募(' . $faker->randomElement($regions) . ')', + '云计算成本优化服务对接(' . $faker->randomElement($industries) . '行业)', + 'AI 数据标注外包合作(' . $faker->randomElement($domains) . ')', + '跨境电商供应链合作(' . $faker->randomElement($countries) . '仓)', + '半导体材料采购需求(' . $faker->randomElement($materials) . ')', + '新能源充电桩 OEM/ODM 代工合作', + '企业私有化部署 DevOps 顾问服务', + '工业物联网传感器批量采购', + '大模型微调服务(' . $faker->randomElement($domains) . ')', + '移动端 SDK 联合推广与结算', + '本地化运营团队招募(' . $faker->randomElement($regions) . ')', + '出海广告投放合作(' . $faker->randomElement($countries) . ')', + '数据中台建设项目外包', + '企业安全渗透测试服务对接', + ]; + + return $faker->randomElement($templates); + } + + /** + * 基于标题生成结构化内容,围绕标题展开 + * @param int $type 1=供应 2=需求 + */ + private function generateContentFromTitle(string $title, int $type, $faker): string + { + $timeframeWeeks = $faker->numberBetween(2, 12); + $budget = $faker->randomElement(['5万-10万', '10万-30万', '30万-80万', '80万以上', '按效果结算']); + $scale = $faker->randomElement(['小规模试点', '区域级铺开', '全国推广', '跨境协同']); + $partner = $faker->randomElement(['渠道商', 'ISV', '系统集成商', '服务外包商', '硬件厂商', '联合营销伙伴']); + $kpi = $faker->randomElement(['留存率', '转化率', '交付周期', '单点成本', '渠道覆盖']); + + $roleLine = $type === 1 + ? '供给能力:我们可提供成熟方案/产品/产能,支持灵活对接与深度合作。' + : '需求说明:我们需要优质方案/资源/产能,期待高效、稳定的交付能力。'; + + $sections = [ + "【项目标题】{$title}", + '项目背景:' . $faker->realText($faker->numberBetween(40, 80)), + $roleLine, + '合作模式:' . $faker->randomElement(['佣金', '代理', '分销', '联合投放', '项目外包', '里程碑结算']), + "目标指标:重点关注{$kpi},预计{$timeframeWeeks}周达到{$scale}阶段性目标。", + "预算与周期:预算 {$budget},计划周期 {$timeframeWeeks} 周。", + "适配伙伴:优先 {$partner},具备行业交付经验者加分。", + '补充信息:' . $faker->realText($faker->numberBetween(40, 80)), + ]; + + return implode("\n", $sections); + } + + /** + * 根据标题提取/生成标签 + * @return array + */ + private function generateTagsFromTitle(string $title, $faker): array + { + $dictionary = ['AI', 'SaaS', '云计算', '大模型', '供应链', '半导体', '新能源', '跨境电商', '营销', '渠道', 'OEM', 'ODM', '物联网', '安全', '出海', '数据中台', 'DevOps']; + $matched = []; + foreach ($dictionary as $keyword) { + if (mb_stripos($title, $keyword) !== false) { + $matched[] = $keyword; + } + } + $extra = $faker->randomElements($dictionary, $faker->numberBetween(0, 2)); + $tags = array_values(array_unique(array_merge($matched, $extra))); + if (empty($tags)) { + $tags = $faker->randomElements($dictionary, $faker->numberBetween(1, 3)); + } + return $tags; + } +} + + diff --git a/composer.json b/composer.json index 3e505c5..8efdc80 100755 --- a/composer.json +++ b/composer.json @@ -19,6 +19,7 @@ "overtrue/pinyin": "^5.0", "overtrue/wechat": "~5.0", "owen-it/laravel-auditing": "^13.6", + "phpoffice/phpspreadsheet": "^1.29", "prettus/l5-repository": "^2.9", "rap2hpoutre/fast-excel": "^5.2", "simplesoftwareio/simple-qrcode": "^4.2", diff --git a/database/migrations/2025_06_23_170000_create_books_table.php b/database/migrations/2025_06_23_170000_create_books_table.php index 41d2cab..9b63fde 100644 --- a/database/migrations/2025_06_23_170000_create_books_table.php +++ b/database/migrations/2025_06_23_170000_create_books_table.php @@ -16,14 +16,17 @@ return new class extends Migration { $table->comment('图书表'); $table->increments('id'); $table->string('title')->comment('书名'); + // 书架 + $table->string('bookshelf')->comment('书架'); $table->string('author')->nullable()->comment('作者'); $table->string('isbn')->nullable()->comment('ISBN'); $table->string('publisher')->nullable()->comment('出版社'); - $table->year('publish_year')->nullable()->comment('出版年份'); + $table->string('publish_year')->nullable()->comment('出版年份'); $table->string('category')->nullable()->comment('分类'); $table->mediumText('description')->nullable()->comment('图书简介'); $table->integer('cover_id')->nullable()->comment('图书封面'); $table->tinyInteger('status')->default(0)->comment('状态0可借阅1已借出2维护中'); + $table->json('other_data')->nullable()->comment('其他数据'); $table->timestamps(); $table->softDeletes(); }); diff --git a/database/migrations/2025_06_24_111502_alert_course_contents_table.php b/database/migrations/2025_06_24_111502_alert_course_contents_table.php index e95daca..97fd29b 100644 --- a/database/migrations/2025_06_24_111502_alert_course_contents_table.php +++ b/database/migrations/2025_06_24_111502_alert_course_contents_table.php @@ -25,8 +25,6 @@ return new class extends Migration $table->json('file_ids')->nullable()->comment('文件id数组'); // 详细地址 $table->string('address_detail')->nullable()->comment('详细地址'); - $table->string('sex')->nullable()->comment('性别'); - $table->string('mobile')->nullable()->comment('联系方式'); }); } diff --git a/database/migrations/2025_08_09_112749_alert_courses_table.php b/database/migrations/2025_08_09_112749_alert_courses_table.php new file mode 100644 index 0000000..50e7c2f --- /dev/null +++ b/database/migrations/2025_08_09_112749_alert_courses_table.php @@ -0,0 +1,32 @@ +string('url')->nullable()->comment('过期后链接'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('courses', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/seeders/SupplyDemandDemoSeeder.php b/database/seeders/SupplyDemandDemoSeeder.php new file mode 100644 index 0000000..334ce73 --- /dev/null +++ b/database/seeders/SupplyDemandDemoSeeder.php @@ -0,0 +1,19 @@ +generate(50, 20, function (string $msg) { + $this->command?->info($msg); + }); + } +} + + diff --git a/docs/supply_demand_module_analysis.md b/docs/supply_demand_module_analysis.md new file mode 100644 index 0000000..da55521 --- /dev/null +++ b/docs/supply_demand_module_analysis.md @@ -0,0 +1,96 @@ +### 供需发布模块数据结构与功能分析 + +#### 一、数据结构 + +- **表:`supply_demands`(供需主表)** + - 字段:`id`, `user_id`, `title`, `type`(1=供应,2=需求), `content`, `tag`, `wechat`, `mobile`, `email`, `status`(0待审核/1通过/2拒绝/3退回修改/4永久隐藏), `view_count`, `contact_count`, `expire_time`, `public_way`(布尔,实际业务含义为1/2/3), `file_ids`(JSON), `contact_name`, `timestamps`, `deleted_at` + - 关系: + - `user`: 发布者(`hasOne User(id=user_id)`) + - `keeps`: 收藏(`hasMany SupplyDemandKeep(supply_demand_id=id)`) + - 虚拟属性:`files`(根据 `file_ids` 关联 `Upload` 列表) + +- **表:`supply_demand_keeps`(收藏表)** + - 字段:`id`, `user_id`, `supply_demand_id`, `timestamps`, `deleted_at` + - 关系: + - `user`: 收藏者(`hasOne User(id=user_id)`) + - `supplyDemand`: 被收藏的供需(`hasOne SupplyDemand(id=supply_demand_id)`) + +- **表:`dialogues`(会话表)** + - 字段:`id`, `user_id`, `to_user_id`, `supply_demand_id`, `last_content`, `last_datetime`, `timestamps`, `deleted_at` + - 关系: + - `user`: 会话发起方(`hasOne User(id=user_id)`) + - `toUser`: 会话接收方(`hasOne User(id=to_user_id)`) + - `supplyDemand`: 关联供需(`hasOne SupplyDemand(id=supply_demand_id)`) + +- **表:`messages`(消息表)** + - 字段:`id`, `dialogue_id`, `user_id`, `to_user_id`, `supply_demand_id`, `content`, `is_read`, `timestamps`, `deleted_at` + - 关系: + - `user`/`toUser`: 发送方/接收方(`hasOne User`) + - `dialogue`: 所属会话(`hasOne Dialogue(id=dialogue_id)`) + - `supplyDemand`: 关联供需(`hasOne SupplyDemand(id=supply_demand_id)`) + +- **表:`uploads`(附件表)** + - 字段:`id`, `belongs_type`, `belongs_id`, `original_name`, `folder`, `name`, `extension`, `size`, `creator_type`, `creator_id`, `timestamps`, `deleted_at` + - 用途:`supply_demands.file_ids` 存放附件 `id` 列表,模型通过 `files` 访问器取回 `Upload` 集合 + +说明:`public_way` 迁移中为 boolean,但注释为 1/2/3 三种模式(1直接公开/2私信后公开/3不公开)。当前以 0/1 存储,若需完整三态应在后续迁移中改为 tinyInteger。 + +#### 二、功能说明(`SupplyDemandController`) + +- **列表 `index`**:按类型、状态、关键词、是否只看自己、有效期(有效/失效)筛选,分页排序;关联返回 `user` 基本信息。 +- **详情 `detail`**:按 `id` 查询,返回 `user`,并自增 `view_count`;附带当前用户对该供需的已发私信次数。 +- **保存 `save`**:新增或更新(新增时绑定当前用户并短信通知管理员),使用事务保存,支持 `file_ids`、`expire_time`、`contact_name` 等字段。 +- **删除 `destroy`**:按 `id` 软删除。 +- **发私信 `sendMessage`**: + - 若带 `supply_demand_id` 则自增浏览量; + - 无会话则创建会话; + - 限流:每天发送条数不超过配置 `message_limit`; + - 反骚扰:自己连续发送后需等待对方回复; + - 保存消息并更新会话最后内容与时间。 +- **消息列表 `messageList`**:按 `to_user_id` 定位当前和对方的会话,分页返回消息(含双方用户信息)。 +- **会话列表 `dialogues`**:返回与当前用户相关的会话(发起或接收),含双方用户与关联供需。 +- **收藏相关**: + - `keepIndex`:我的收藏列表; + - `keepSupplyDemand`:收藏,去重创建; + - `unKeepSupplyDemand`:取消收藏。 + +#### 三、核心业务要点 + +- 审核机制:多状态闭环(待审/通过/拒绝/退回/隐藏)。 +- 私信策略:限流 + 反骚扰(需对方回复后再发)。 +- 有效期:支持有效/失效筛选。 +- 公开模式:当前存储为布尔(0/1),业务含义为三态,后续建议迁移调整。 +- 数据统计:浏览数 `view_count`、联系数 `contact_count`(可按消息交互推导)。 +- 附件:`file_ids` JSON + `files` 访问器联表读取。 + +#### 四、测试数据生成目标 + +以 `supply_demands` 为起点,为每条主记录自动生成: +- 合理的 `uploads` 附件(0~3 个),`file_ids` 同步写入; +- 真实的会话 `dialogues`(0~2 个),双方用户随机; +- 合法的消息序列 `messages`(1~5 条),严格交替往来确保不违反“需对方回复”约束; +- 合理的收藏 `supply_demand_keeps`(0~5 条,去重); +- 统计字段:`view_count` ≥ 消息条数,`contact_count` 依据消息往来推导。 + +#### 五、两种生成方式对比 + +- **方式A:数据库填充(Seeder)** + - 优点: + - 一次性执行、可集成到 CI 或初始化流程; + - 可与 `DatabaseSeeder` 串联; + - 便于多环境批量重置数据。 + - 缺点: + - 运行参数(数量、用户规模)固定或需改代码; + - 无交互,临时性需求需改代码或 env。 + +- **方式B:Artisan 命令(Console Command)** + - 优点: + - 支持运行参数(如 `--count`、`--users`),灵活生成规模; + - 可多次按需执行,便于演示或局部补数; + - 缺点: + - 需要单独维护命令逻辑; + - 不会被自动纳入 `db:seed` 的全局流程。 + +推荐:开发/演示期使用命令(B)灵活试验;集成测试或初始化环境使用 Seeder(A)。 + + diff --git a/public/wx-icon/alumni-benefits-bg.png b/public/wx-icon/alumni-benefits-bg.png new file mode 100755 index 0000000..23a2659 Binary files /dev/null and b/public/wx-icon/alumni-benefits-bg.png differ diff --git a/public/wx-icon/alumni-benefits-icon1.png b/public/wx-icon/alumni-benefits-icon1.png new file mode 100755 index 0000000..0d3298b Binary files /dev/null and b/public/wx-icon/alumni-benefits-icon1.png differ diff --git a/public/wx-icon/alumni-benefits-icon2.png b/public/wx-icon/alumni-benefits-icon2.png new file mode 100755 index 0000000..e85e0df Binary files /dev/null and b/public/wx-icon/alumni-benefits-icon2.png differ diff --git a/public/wx-icon/alumni-benefits-icon3.png b/public/wx-icon/alumni-benefits-icon3.png new file mode 100755 index 0000000..798bb2b Binary files /dev/null and b/public/wx-icon/alumni-benefits-icon3.png differ diff --git a/public/wx-icon/alumni-benefits-icon4.png b/public/wx-icon/alumni-benefits-icon4.png new file mode 100755 index 0000000..8d54804 Binary files /dev/null and b/public/wx-icon/alumni-benefits-icon4.png differ diff --git a/public/wx-icon/alumni-benefits-item1.png b/public/wx-icon/alumni-benefits-item1.png new file mode 100755 index 0000000..9c7d818 Binary files /dev/null and b/public/wx-icon/alumni-benefits-item1.png differ diff --git a/public/wx-icon/alumni-benefits-item2.png b/public/wx-icon/alumni-benefits-item2.png new file mode 100755 index 0000000..0355d9c Binary files /dev/null and b/public/wx-icon/alumni-benefits-item2.png differ diff --git a/public/wx-icon/demand.png b/public/wx-icon/demand.png new file mode 100755 index 0000000..279402c Binary files /dev/null and b/public/wx-icon/demand.png differ diff --git a/public/wx-icon/email.png b/public/wx-icon/email.png new file mode 100755 index 0000000..f622025 Binary files /dev/null and b/public/wx-icon/email.png differ diff --git a/public/wx-icon/phone.png b/public/wx-icon/phone.png new file mode 100755 index 0000000..88d8c37 Binary files /dev/null and b/public/wx-icon/phone.png differ diff --git a/public/wx-icon/publish.png b/public/wx-icon/publish.png new file mode 100755 index 0000000..3b5f0ab Binary files /dev/null and b/public/wx-icon/publish.png differ diff --git a/public/wx-icon/supply.png b/public/wx-icon/supply.png new file mode 100755 index 0000000..ed6e386 Binary files /dev/null and b/public/wx-icon/supply.png differ diff --git a/public/wx-icon/wechat.png b/public/wx-icon/wechat.png new file mode 100755 index 0000000..46a199c Binary files /dev/null and b/public/wx-icon/wechat.png differ diff --git a/storage/api-docs/api-docs.json b/storage/api-docs/api-docs.json new file mode 100755 index 0000000..b7d21ba --- /dev/null +++ b/storage/api-docs/api-docs.json @@ -0,0 +1,11817 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Laravel", + "version": "1.0" + }, + "paths": { + "/api/admin/admin": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "获取后台用户", + "description": "", + "operationId": "8fd1da113086757bc0cc9672b6dbf0db", + "parameters": [ + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "获取后台用户" + } + } + } + }, + "/api/admin/show": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "获取后台用户详情", + "description": "", + "operationId": "86eabe57c0f2f08613e5508af14c3863", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "获取后台用户" + } + } + } + }, + "/api/admin/admin/save": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "保存后台用户", + "description": "", + "operationId": "b861dab00723e315f99ad0da933b90ce", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "菜单ID,为空表示新增,不为空表示更新", + "schema": { + "type": "integer" + } + }, + { + "name": "name", + "in": "query", + "description": "名称", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "username", + "in": "query", + "description": "用户名", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "password", + "in": "query", + "description": "密码,新建时请前端处理为必填,修改时留空表示不修改", + "schema": { + "type": "string" + } + }, + { + "name": "mobile", + "in": "query", + "description": "手机号码", + "schema": { + "type": "string" + } + }, + { + "name": "department_id", + "in": "query", + "description": "所属部门ID", + "schema": { + "type": "integer" + } + }, + { + "name": "position", + "in": "query", + "description": "职位", + "schema": { + "type": "string" + } + }, + { + "name": "sortnumber", + "in": "query", + "description": "同级排序,默认为0", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "保存后台用户" + } + } + } + }, + "/api/admin/admin/delete": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "删除后台用户", + "description": "", + "operationId": "cc166224c2a6f8a3acd7a4b5198e3573", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "删除后台用户" + } + } + } + }, + "/api/admin/admin/set-roles": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "后台用户授权", + "description": "", + "operationId": "1e31da222d2ab67e65588982390279ad", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "ID", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "role_id", + "in": "query", + "description": "角色id,数组形式", + "required": true, + "schema": { + "type": "object" + } + } + ], + "responses": { + "200": { + "description": "后台用户授权" + } + } + } + }, + "/api/admin/admin/set-roles-many": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "后台用户授权批量处理", + "description": "", + "operationId": "9d44dcbfdc79b89f2bd6845fb28bd2ee", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "ids", + "in": "query", + "description": "用户id数组", + "required": true, + "schema": { + "type": "object" + } + }, + { + "name": "role_id", + "in": "query", + "description": "角色id", + "required": true, + "schema": { + "type": "object" + } + } + ], + "responses": { + "200": { + "description": "后台用户授权" + } + } + } + }, + "/api/admin/appointment-configs/index": { + "get": { + "tags": [ + "地点配置管理" + ], + "summary": "列表", + "description": "", + "operationId": "2150f2ca8bb570e6b5da366bc041f7f2", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointment-configs/show": { + "get": { + "tags": [ + "地点配置管理" + ], + "summary": "详情", + "description": "", + "operationId": "e29a50d2335ed08bfeceeefd626f3e2a", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointment-configs/save": { + "post": { + "tags": [ + "地点配置管理" + ], + "summary": "更新或新增", + "operationId": "567158a69a46c18d95f0f49a376fb163", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "配置名字", + "schema": { + "type": "string" + } + }, + { + "name": "no", + "in": "query", + "description": "编号", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "content", + "in": "query", + "description": "内容", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "total", + "in": "query", + "description": "人数", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "file_ids", + "in": "query", + "description": "文件id数组", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "status", + "in": "query", + "description": "状态-0禁用1启用", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "value", + "in": "query", + "description": "会议室id(技术人员填写)", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "room", + "in": "query", + "description": "第三方会议室信息(技术人员填写)", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "door", + "in": "query", + "description": "第三方门禁信息(技术填写)", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "use_student", + "in": "query", + "description": "是否只有学员可以预约0否1是", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "start_time", + "in": "query", + "description": "开始时间", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "end_time", + "in": "query", + "description": "结束时间", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "address", + "in": "query", + "description": "地址", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "appointment_type_id", + "in": "query", + "description": "场地类型id", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "sort", + "in": "query", + "description": "排序", + "schema": { + "type": "string", + "format": "date" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/appointment-configs/destroy": { + "get": { + "tags": [ + "地点配置管理" + ], + "summary": "删除", + "description": "", + "operationId": "99b930f43b86c9229235a619cdd4582a", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointment-configs/excel-show": { + "post": { + "tags": [ + "地点配置管理" + ], + "summary": "导入预览", + "description": "", + "operationId": "1d2f7f5be62c8c5f6fe192cfef917456", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointment-configs/import": { + "post": { + "tags": [ + "地点配置管理" + ], + "summary": "导入", + "description": "", + "operationId": "75f4a6faf26a4d061ff7ffbadd900333", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointments/index": { + "get": { + "tags": [ + "预约管理" + ], + "summary": "列表", + "description": "", + "operationId": "8bb057d0d49b85cb93488dc3842322c3", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods,thirdAppointmentLogs第三方日志记录,thirdPlateLogs第三方车牌预约记录", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "user_name", + "in": "query", + "description": "用户名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointments/show": { + "get": { + "tags": [ + "预约管理" + ], + "summary": "详情", + "description": "", + "operationId": "67ebd2358368b235c256ca7464e37145", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods,thirdAppointmentLogs第三方日志记录,thirdPlateLogs第三方车牌预约记录", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointments/save": { + "post": { + "tags": [ + "预约管理" + ], + "summary": "更新或新增", + "operationId": "879743c2b4755654fab3af74acd1bb77", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "user_id", + "in": "query", + "description": "用户id,创建时多个用户英文逗号分隔", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "date", + "in": "query", + "description": "预约日期", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "start_time", + "in": "query", + "description": "开始时间,例如:2023-01-01 11:11:11", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "end_time", + "in": "query", + "description": "结束时间,例如:2023-01-01 11:11:11", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "content", + "in": "query", + "description": "预约事项", + "schema": { + "type": "string" + } + }, + { + "name": "site", + "in": "query", + "description": "预约地点ID。数字1-6", + "schema": { + "type": "integer" + } + }, + { + "name": "plate", + "in": "query", + "description": "车牌号。多个英文逗号分隔", + "schema": { + "type": "string" + } + }, + { + "name": "accompany_total", + "in": "query", + "description": "陪同人数", + "schema": { + "type": "integer" + } + }, + { + "name": "status", + "in": "query", + "description": "状态 0未审核 1审核通过 2审核不通过3取消", + "schema": { + "type": "integer" + } + }, + { + "name": "reason", + "in": "query", + "description": "审核不通过原因", + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "schema": { + "type": "string" + } + }, + { + "name": "mobile", + "in": "query", + "description": "手机号", + "schema": { + "type": "string" + } + }, + { + "name": "idcard", + "in": "query", + "description": "身份证号码", + "schema": { + "type": "string" + } + }, + { + "name": "accompany", + "in": "query", + "description": "陪同人员,二维数组,包括:name,idcard,mobile", + "schema": { + "type": "string" + } + }, + { + "name": "is_hand", + "in": "query", + "description": "是否手动预约0否1是", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/appointments/destroy": { + "get": { + "tags": [ + "预约管理" + ], + "summary": "删除", + "description": "", + "operationId": "b20d16ca7083a9d3182bccac566e8b18", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointments/excel-show": { + "post": { + "tags": [ + "预约管理" + ], + "summary": "导入预览", + "description": "", + "operationId": "055484c0d9da4bcb227896159ced332f", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointments/import": { + "post": { + "tags": [ + "预约管理" + ], + "summary": "导入", + "description": "", + "operationId": "60b6f9a377c7ca89d4fb8cb1c5b734c0", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointments/retry-appointment": { + "get": { + "tags": [ + "预约管理" + ], + "summary": "重新发送第三方预约信息", + "description": "", + "operationId": "57354b71b14bb179a143f9bb0f1753f8", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointment-type/index": { + "get": { + "tags": [ + "地点类型管理" + ], + "summary": "列表", + "description": "", + "operationId": "eeb81e371c23e14993a2573bdfde5af4", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointment-type/show": { + "get": { + "tags": [ + "地点类型管理" + ], + "summary": "详情", + "description": "", + "operationId": "d5a7bfba32aa336a1978bea377aef1f7", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointment-type/save": { + "post": { + "tags": [ + "地点类型管理" + ], + "summary": "更新或新增", + "operationId": "e16600924fff505e1fb17dede09237f7", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "配置名字", + "schema": { + "type": "string" + } + }, + { + "name": "image_id", + "in": "query", + "description": "封面图id数组", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "introduce", + "in": "query", + "description": "内容", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "start_time", + "in": "query", + "description": "开始时间", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "end_time", + "in": "query", + "description": "结束时间", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "tips", + "in": "query", + "description": "预约须知", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "is_show", + "in": "query", + "description": "是否小程序显示0否1是", + "schema": { + "type": "string", + "format": "date" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/appointment-type/destroy": { + "get": { + "tags": [ + "地点类型管理" + ], + "summary": "删除", + "description": "", + "operationId": "656586563a854b6b50e62cde77ecfb27", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointment-type/excel-show": { + "post": { + "tags": [ + "地点类型管理" + ], + "summary": "导入预览", + "description": "", + "operationId": "28bd549516289a214535be933ff3a6e1", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/appointment-type/import": { + "post": { + "tags": [ + "地点类型管理" + ], + "summary": "导入", + "description": "", + "operationId": "b8027714a0f1a7a3351d55732d8f99b2", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/auth/login": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "用户名密码登录", + "description": "", + "operationId": "b8098605e389c86dcb60db12b1b4dfe2", + "parameters": [ + { + "name": "username", + "in": "query", + "description": "用户名", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "password", + "in": "query", + "description": "密码", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "用户名密码登录" + } + } + } + }, + "/api/admin/auth/me": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "获取用户基本信息", + "description": "", + "operationId": "328064bf31986debc9b4ae90c3a4b52d", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "获取用户基本信息" + } + } + } + }, + "/api/admin/auth/logout": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "退出登录", + "description": "", + "operationId": "59a49d30177042d9f58b1de69afbc903", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "退出登录" + } + } + } + }, + "/api/admin/auth/permissions": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "获取权限菜单", + "description": "", + "operationId": "ee71984d6aee2fad6d0a4352b07e058a", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "获取权限菜单" + } + } + } + }, + "/api/admin/auth/sms-login": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "验证码登陆", + "description": "", + "operationId": "edb56f7b1c5eaaa28693e2ab4a8be9e4", + "parameters": [ + { + "name": "mobile", + "in": "query", + "description": "手机号", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "code", + "in": "query", + "description": "验证码", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/admin/auth/send-sms": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "短信发送", + "description": "", + "operationId": "3bd46af932e33c7b8f448151934a5329", + "parameters": [ + { + "name": "mobile", + "in": "query", + "description": "手机号", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/admin/auth-node/index": { + "get": { + "tags": [ + "权限" + ], + "summary": "列表", + "description": "", + "operationId": "ef68cfd66f342a7c4dca72f2d5b1909d", + "parameters": [ + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/auth-node/store": { + "post": { + "tags": [ + "权限" + ], + "summary": "添加", + "description": "", + "operationId": "63c9fb30bb87ed88459f1556fb0a09ed", + "parameters": [ + { + "name": "tag", + "in": "query", + "description": "标示", + "required": true, + "schema": { + "type": "int" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/auth-node/show": { + "get": { + "tags": [ + "权限" + ], + "summary": "详情", + "description": "", + "operationId": "50814a73c80d41f3673014603d642874", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/auth-node/save": { + "post": { + "tags": [ + "权限" + ], + "summary": "更新", + "description": "", + "operationId": "1a8f6d67f7c7481e583d83b2a39f8390", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Id", + "required": true, + "schema": { + "type": "int" + } + }, + { + "name": "tag", + "in": "query", + "description": "标示", + "required": true, + "schema": { + "type": "int" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/auth-node/delete": { + "get": { + "tags": [ + "权限" + ], + "summary": "删除", + "description": "", + "operationId": "16361fae0137319c97269359264c91da", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/banners/index": { + "get": { + "tags": [ + "Banner图管理" + ], + "summary": "列表", + "description": "", + "operationId": "906c0ec359b736e3e90cf6eb23f15361", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/banners/show": { + "get": { + "tags": [ + "Banner图管理" + ], + "summary": "详情", + "description": "", + "operationId": "1ae017725b187beff165e20ec69d0990", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/banners/save": { + "post": { + "tags": [ + "Banner图管理" + ], + "summary": "更新或新增", + "operationId": "2d37e8e4dcdecdd273c12237bede971d", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名称", + "schema": { + "type": "string" + } + }, + { + "name": "image_id", + "in": "query", + "description": "图片ID", + "schema": { + "type": "integer" + } + }, + { + "name": "jump_type", + "in": "query", + "description": "跳转类型(1小程序,2H5)", + "schema": { + "type": "integer" + } + }, + { + "name": "jump_url", + "in": "query", + "description": "跳转地址", + "schema": { + "type": "string" + } + }, + { + "name": "sort", + "in": "query", + "description": "排序", + "schema": { + "type": "integer" + } + }, + { + "name": "position", + "in": "query", + "description": "显示位置(1首页)", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/banners/destroy": { + "get": { + "tags": [ + "Banner图管理" + ], + "summary": "删除", + "description": "", + "operationId": "57744ac92f87348e48d0cb80bae8a751", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/banners/excel-show": { + "post": { + "tags": [ + "Banner图管理" + ], + "summary": "导入预览", + "description": "", + "operationId": "5286cae2b9b967cc099f4a533769a745", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/banners/import": { + "post": { + "tags": [ + "Banner图管理" + ], + "summary": "导入", + "description": "", + "operationId": "5e0b5004372524cd22f5a4f6c46fb233", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/{table_name}/index": { + "get": { + "tags": [ + "通用接口" + ], + "summary": "列表", + "description": "", + "operationId": "7241eaefadbac3463d3c3cea0a57e1e1", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/{table_name}/show": { + "get": { + "tags": [ + "通用接口" + ], + "summary": "详情", + "description": "", + "operationId": "3d2ed0dbfbbf20b49108beb46a707e6d", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/{table_name}/save": { + "post": { + "tags": [ + "通用接口" + ], + "summary": "更新", + "description": "", + "operationId": "55b3ba836ca415276f64a0b23539a60a", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Id(存在更新,不存在新增)", + "required": true, + "schema": { + "type": "int" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/{table_name}/destroy": { + "get": { + "tags": [ + "通用接口" + ], + "summary": "删除", + "description": "", + "operationId": "c1888a2d9a21c1611e40c87c8e25c147", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/{table_name}/excel-show": { + "post": { + "tags": [ + "通用接口" + ], + "summary": "导入预览", + "description": "", + "operationId": "b19a44939dbcca2d2b489947d4672f80", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "统一数据键值对数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/{table_name}/import": { + "post": { + "tags": [ + "通用接口" + ], + "summary": "导入", + "description": "", + "operationId": "ec86790f4d2a2526a64b9f83ae2349b1", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/base-form/index": { + "get": { + "tags": [ + "自定义表单增删改查操作" + ], + "summary": "列表", + "description": "", + "operationId": "b4e1bb0b1ffef6488893ae2ac594be3f", + "parameters": [ + { + "name": "table_name", + "in": "query", + "description": "表名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "is_auth", + "in": "query", + "description": "是否鉴权 0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,不填输出全部,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/base-form/show": { + "get": { + "tags": [ + "自定义表单增删改查操作" + ], + "summary": "详情", + "description": "", + "operationId": "8c76430d593ba0664d275c9f34da95b7", + "parameters": [ + { + "name": "table_name", + "in": "query", + "description": "表名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/base-form/save": { + "post": { + "tags": [ + "自定义表单增删改查操作" + ], + "summary": "更新", + "description": "", + "operationId": "7f8d3c3203c6341ed080dd70c34056f2", + "parameters": [ + { + "name": "table_name", + "in": "query", + "description": "表名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "Id(存在更新,不存在新增)", + "required": true, + "schema": { + "type": "int" + } + }, + { + "name": "字段名_relation", + "in": "query", + "description": "关联表数据,二维数组。如果存在id则更新,否则新增 ", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/base-form/destroy": { + "get": { + "tags": [ + "自定义表单增删改查操作" + ], + "summary": "删除", + "description": "", + "operationId": "f87f3ec868377d10a6e090fbcbb60dd9", + "parameters": [ + { + "name": "table_name", + "in": "query", + "description": "表名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "destroy_relation", + "in": "query", + "description": "需要删除的关联关系字段数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/base-form/excel-show": { + "post": { + "tags": [ + "自定义表单增删改查操作" + ], + "summary": "导入预览", + "description": "", + "operationId": "e79142dfe67152c8fa91c48e9a240649", + "parameters": [ + { + "name": "table_name", + "in": "query", + "description": "表名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/base-form/import": { + "post": { + "tags": [ + "自定义表单增删改查操作" + ], + "summary": "导入", + "description": "", + "operationId": "0b83282c40a7e952aa420cefdb398e34", + "parameters": [ + { + "name": "table_name", + "in": "query", + "description": "表名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/base-form/logs": { + "get": { + "tags": [ + "自定义表单增删改查操作" + ], + "summary": "更新记录", + "description": "", + "operationId": "69b6dafd72f7f5396f6a87ccb5c3b4f9", + "parameters": [ + { + "name": "table_name", + "in": "query", + "description": "表名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "table_id", + "in": "query", + "description": "记录id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/configs/index": { + "get": { + "tags": [ + "配置管理" + ], + "summary": "列表", + "description": "", + "operationId": "b626aaed2b5da7076169d725e424f34e", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/configs/show": { + "get": { + "tags": [ + "配置管理" + ], + "summary": "详情", + "description": "", + "operationId": "4a0fcb73d8390abb9a050665d71bdb3a", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/configs/save": { + "post": { + "tags": [ + "配置管理" + ], + "summary": "更新或新增", + "operationId": "86f4fd5633bbc06192449200685a2fcc", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "配置名字", + "schema": { + "type": "string" + } + }, + { + "name": "key", + "in": "query", + "description": "英文标识", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "value", + "in": "query", + "description": "配置值", + "schema": { + "type": "string", + "format": "date" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/configs/destroy": { + "get": { + "tags": [ + "配置管理" + ], + "summary": "删除", + "description": "", + "operationId": "c89c950110864d93af0a027394a5031e", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/configs/excel-show": { + "post": { + "tags": [ + "配置管理" + ], + "summary": "导入预览", + "description": "", + "operationId": "c012b459fd123b084bc0357381e581b0", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/configs/import": { + "post": { + "tags": [ + "配置管理" + ], + "summary": "导入", + "description": "", + "operationId": "5e3dede7137f5bd215563f5e715cbabd", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-appointment-total/index": { + "get": { + "tags": [ + "预约次数管理" + ], + "summary": "列表", + "description": "", + "operationId": "d2feea81974074ab518b69be7247db5a", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "course_name", + "in": "query", + "description": "课程名字", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-appointment-total/show": { + "get": { + "tags": [ + "预约次数管理" + ], + "summary": "详情", + "description": "", + "operationId": "16ee1c22c700c721a34e4ec248454486", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-appointment-total/batch-update-total": { + "post": { + "tags": [ + "预约次数管理" + ], + "summary": "批量调整次数", + "description": "", + "operationId": "f00e69677ede4d246cb41710540363fe", + "parameters": [ + { + "name": "course_id", + "in": "query", + "description": "课程id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "total", + "in": "query", + "description": "次数", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-appointment-total/save": { + "post": { + "tags": [ + "预约次数管理" + ], + "summary": "更新或新增", + "operationId": "310f9c2fe52e655c06f3286b3a3abfd9", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "course_id", + "in": "query", + "description": "课程id", + "schema": { + "type": "string" + } + }, + { + "name": "user_id", + "in": "query", + "description": "用户id", + "schema": { + "type": "string" + } + }, + { + "name": "start_time", + "in": "query", + "description": "开始时间", + "schema": { + "type": "string" + } + }, + { + "name": "end_time", + "in": "query", + "description": "结束时间", + "schema": { + "type": "string" + } + }, + { + "name": "total", + "in": "query", + "description": "次数", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/course-appointment-total/destroy": { + "get": { + "tags": [ + "预约次数管理" + ], + "summary": "删除", + "description": "", + "operationId": "9705797a3221f3d163f691163d37f51e", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-contents/index": { + "get": { + "tags": [ + "排课" + ], + "summary": "列表", + "description": "", + "operationId": "968acbc628f375eaef6bc16f8b70aa23", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "file_name", + "in": "query", + "description": "导出文件名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,不填输出全部,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-contents/show": { + "get": { + "tags": [ + "排课" + ], + "summary": "详情", + "description": "", + "operationId": "961a5266eb8718e0750b4f40f5d8b597", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-contents/save": { + "post": { + "tags": [ + "排课" + ], + "summary": "更新或新增", + "operationId": "f0e2c5678be89a8e8d1c91da77545a22", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "course_id", + "in": "query", + "description": "课程ID", + "schema": { + "type": "integer" + } + }, + { + "name": "period", + "in": "query", + "description": "时段", + "schema": { + "type": "string" + } + }, + { + "name": "date", + "in": "query", + "description": "日期", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "teacher_id", + "in": "query", + "description": "老师ID", + "schema": { + "type": "integer" + } + }, + { + "name": "address", + "in": "query", + "description": "地址", + "schema": { + "type": "string" + } + }, + { + "name": "theme", + "in": "query", + "description": "主题", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/course-contents/destroy": { + "get": { + "tags": [ + "排课" + ], + "summary": "删除", + "description": "", + "operationId": "4656cd160a1a88cfb1cdf46c5c8ae90d", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-contents/excel-show": { + "post": { + "tags": [ + "排课" + ], + "summary": "导入预览", + "description": "", + "operationId": "ce7706493c98efe49f540fa7f8927a4a", + "parameters": [ + { + "name": "course_id", + "in": "query", + "description": "课程ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-contents/import": { + "post": { + "tags": [ + "排课" + ], + "summary": "导入", + "description": "", + "operationId": "fd6618cb0b9a2cdb6e74bb3c586fd855", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/courses/index": { + "get": { + "tags": [ + "课程管理" + ], + "summary": "列表", + "description": "", + "operationId": "4c2f19a2f43cfdd34c3d5fdffb5aa201", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字。当值是sign_status是按照课程状态排序", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "has_course_forms", + "in": "query", + "description": "是否有自定义表单0否1是", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/courses/show": { + "get": { + "tags": [ + "课程管理" + ], + "summary": "详情", + "description": "", + "operationId": "a8f83f1d9be0307ffb54ea5bba848f3a", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/courses/save": { + "post": { + "tags": [ + "课程管理" + ], + "summary": "更新或新增课程信息", + "description": "根据传入的id决定是更新现有课程还是新增新的课程信息。", + "operationId": "21bd2dfd26d228ef7267e9556ffe4632", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "课程名称", + "schema": { + "type": "string" + } + }, + { + "name": "start_date", + "in": "query", + "description": "开课日期", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "end_date", + "in": "query", + "description": "结课日期", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "sign_start_date", + "in": "query", + "description": "报名开始日期", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "sign_end_date", + "in": "query", + "description": "报名结束日期", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "type", + "in": "query", + "description": "课程类型:接口获取", + "schema": { + "type": "integer" + } + }, + { + "name": "content", + "in": "query", + "description": "课程内容", + "schema": { + "type": "string" + } + }, + { + "name": "total", + "in": "query", + "description": "开课人数", + "schema": { + "type": "integer" + } + }, + { + "name": "class", + "in": "query", + "description": "所在班级", + "schema": { + "type": "string" + } + }, + { + "name": "is_arrange", + "in": "query", + "description": "是否排课-0否1是", + "schema": { + "type": "integer" + } + }, + { + "name": "is_fee", + "in": "query", + "description": "是否缴费-0否1是", + "schema": { + "type": "integer" + } + }, + { + "name": "status", + "in": "query", + "description": "课程状态:0待发布, 1已发布", + "schema": { + "type": "integer" + } + }, + { + "name": "teacher_id", + "in": "query", + "description": "班主任ID,多个英文逗号分隔", + "schema": { + "type": "integer" + } + }, + { + "name": "publicize_content", + "in": "query", + "description": "宣传内容", + "schema": { + "type": "integer" + } + }, + { + "name": "publicize_ids", + "in": "query", + "description": "宣传内容附件id数组", + "schema": { + "type": "integer" + } + }, + { + "name": "sign_total", + "in": "query", + "description": "报名人数,默认0不限制", + "schema": { + "type": "integer" + } + }, + { + "name": "image_id", + "in": "query", + "description": "图片id", + "schema": { + "type": "integer" + } + }, + { + "name": "qun_image_id", + "in": "query", + "description": "群图片id", + "schema": { + "type": "integer" + } + }, + { + "name": "is_virtual", + "in": "query", + "description": "是否虚拟课程0否1是", + "schema": { + "type": "integer" + } + }, + { + "name": "course_content_status", + "in": "query", + "description": "课表状态:0未发布, 1已发布", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/courses/destroy": { + "get": { + "tags": [ + "课程管理" + ], + "summary": "删除", + "description": "", + "operationId": "57c19e7073bcd1c76d11f6499ca55b75", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/courses/excel-show": { + "post": { + "tags": [ + "课程管理" + ], + "summary": "导入预览", + "description": "", + "operationId": "08732fba18f8e3f63f0c8740dfc6e3b8", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/courses/import": { + "post": { + "tags": [ + "课程管理" + ], + "summary": "导入", + "description": "", + "operationId": "04537b21457c077b1542bb2f26c96abf", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/courses/qrcode": { + "get": { + "tags": [ + "课程管理" + ], + "summary": "报名二维码", + "description": "", + "operationId": "7b03b84a0c2771dc81fe580e46e29e79", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/courses/send-sms": { + "get": { + "tags": [ + "课程管理" + ], + "summary": "发送短信通知", + "description": "", + "operationId": "87cf77e1662eafc1e5deb6c35a89b209", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-forms/index": { + "get": { + "tags": [ + "课程表单" + ], + "summary": "列表", + "description": "", + "operationId": "6e382657c1bf238491c17496645b0c53", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-forms/show": { + "get": { + "tags": [ + "课程表单" + ], + "summary": "详情", + "description": "", + "operationId": "19d8aa68eed452cc449b0d9fc633e24b", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-forms/save": { + "post": { + "tags": [ + "课程表单" + ], + "summary": "更新或新增", + "operationId": "5662e235e0983b28f98b71362dc85ee5", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "配置名字", + "schema": { + "type": "string" + } + }, + { + "name": "field", + "in": "query", + "description": "英文标识", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "edit_input", + "in": "query", + "description": "输入框类型。包括:text文本,radio单选,checkbox多选,date日期,日期时间datetime,file单文件,files多文件上传", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "rule", + "in": "query", + "description": "检测规则,多个英文逗号分隔。包括:required", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "sort", + "in": "query", + "description": "排序", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "course_id", + "in": "query", + "description": "课程id", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "help", + "in": "query", + "description": "提示文字", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "select_item", + "in": "query", + "description": "数组,选项文字", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "need_fill", + "in": "query", + "description": "是否需要填写0否1是", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "belong_user", + "in": "query", + "description": "是否属于用户数据0否1是", + "schema": { + "type": "string", + "format": "date" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/course-forms/destroy": { + "get": { + "tags": [ + "课程表单" + ], + "summary": "删除", + "description": "", + "operationId": "f4b196b7021a67b530b5d279379879ef", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-forms/excel-show": { + "post": { + "tags": [ + "课程表单" + ], + "summary": "导入预览", + "description": "", + "operationId": "05e7b4a58c1d9e74623dfedf9e4d6484", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-forms/import": { + "post": { + "tags": [ + "课程表单" + ], + "summary": "导入", + "description": "", + "operationId": "f2f992498d1082ef93becd8d872eac4a", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-forms/clone": { + "get": { + "tags": [ + "课程表单" + ], + "summary": "克隆表单", + "operationId": "26fa2f996832fad8fda399ffac9e1eba", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "from_course_id", + "in": "query", + "description": "来源课程id", + "schema": { + "type": "string" + } + }, + { + "name": "to_course_id", + "in": "query", + "description": "目标课程id", + "schema": { + "type": "string", + "format": "date" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/course-keeps/index": { + "get": { + "tags": [ + "考勤管理" + ], + "summary": "列表", + "description": "", + "operationId": "c60027a2708f7127a5778d3da1dea414", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "file_name", + "in": "query", + "description": "导出文件名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-keeps/show": { + "get": { + "tags": [ + "考勤管理" + ], + "summary": "详情", + "description": "", + "operationId": "bc866531362c5712cd24490d4ac39219", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-keeps/save": { + "post": { + "tags": [ + "考勤管理" + ], + "summary": "更新或新增", + "operationId": "9701d2bdb6656be8176a7eb1a082e34a", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "访问令牌", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "course_id", + "in": "query", + "description": "课程ID", + "schema": { + "type": "integer" + } + }, + { + "name": "course_content_id", + "in": "query", + "description": "排课ID", + "schema": { + "type": "integer" + } + }, + { + "name": "user_id", + "in": "query", + "description": "用户ID", + "schema": { + "type": "integer" + } + }, + { + "name": "status", + "in": "query", + "description": "考勤状态(0缺勤,1正常)", + "schema": { + "type": "integer" + } + }, + { + "name": "date", + "in": "query", + "description": "考勤日期", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "time", + "in": "query", + "description": "考勤时间", + "schema": { + "type": "string", + "format": "date-time" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/course-keeps/destroy": { + "get": { + "tags": [ + "考勤管理" + ], + "summary": "删除", + "description": "", + "operationId": "223aef89cc377e79c6bd3d7a309e8c88", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course_keeps/excel-show": { + "post": { + "tags": [ + "考勤管理" + ], + "summary": "导入预览", + "description": "", + "operationId": "26a2cb8a10d2bf8b2e7dfb86b2c5a190", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "里面包含course_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "file", + "in": "query", + "description": "文件。包含字段:学员名字,日期,考勤时间,状态", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-keeps/import": { + "post": { + "tags": [ + "考勤管理" + ], + "summary": "导入", + "description": "", + "operationId": "50628100aaf8d5626bca82509a938c7d", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-signs/index": { + "get": { + "tags": [ + "报名管理" + ], + "summary": "列表", + "description": "", + "operationId": "c53c6d0af329f648b9c4e4168eb8d4c5", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "file_name", + "in": "query", + "description": "导出文件名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据.thirdAppointmentLogs第三方日志记录,thirdPlateLogs第三方车牌预约记录", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_name", + "in": "query", + "description": "公司名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_position", + "in": "query", + "description": "职务", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_area", + "in": "query", + "description": "所属区域", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_type", + "in": "query", + "description": "企业性质", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_industry", + "in": "query", + "description": "所属行业", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "is_schoolmate", + "in": "query", + "description": "is_schoolmate", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "mobile", + "in": "query", + "description": "手机号", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "education", + "in": "query", + "description": "education学历", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "filter_date", + "in": "query", + "description": "自定义字段筛选二维数组,包含键名name,value", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-signs/show": { + "get": { + "tags": [ + "报名管理" + ], + "summary": "详情", + "description": "", + "operationId": "3ef520467da444a68441eded7386b30b", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据.thirdAppointmentLogs第三方日志记录,thirdPlateLogs第三方车牌预约记录", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-signs/save": { + "post": { + "tags": [ + "报名管理" + ], + "summary": "更新或新增", + "operationId": "8803ce4fe51b25c4735d8bde371ca928", + "parameters": [ + { + "name": "update_user", + "in": "query", + "description": "是否更新用户信息0否1是", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "course_id", + "in": "query", + "description": "课程id", + "schema": { + "type": "string" + } + }, + { + "name": "title", + "in": "query", + "description": "标题", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "content", + "in": "query", + "description": "内容", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "status", + "in": "query", + "description": "状态0待审核1通过2拒绝3备选", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "reason", + "in": "query", + "description": "原因", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "score", + "in": "query", + "description": "分数", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "position", + "in": "query", + "description": "职位", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "fee_status", + "in": "query", + "description": "0未缴费1缴费成功2缴费失败3待确认", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "file_ids", + "in": "query", + "description": "附件id数组", + "schema": { + "type": "string", + "format": "date" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/course-signs/destroy": { + "get": { + "tags": [ + "报名管理" + ], + "summary": "删除", + "description": "", + "operationId": "0a422f4e709fb6cd2cf7ee6069dd1752", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-signs/excel-show": { + "post": { + "tags": [ + "报名管理" + ], + "summary": "导入预览", + "description": "", + "operationId": "9cc5f42a669c2e47cc954ae44b3f39bb", + "parameters": [ + { + "name": "course_id", + "in": "query", + "description": "课程id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-signs/import": { + "post": { + "tags": [ + "报名管理" + ], + "summary": "导入", + "description": "", + "operationId": "0d52b99e4b8ea093fffd93a0525db980", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-signs/batch-update-status": { + "post": { + "tags": [ + "报名管理" + ], + "summary": "批量修改审核状态", + "description": "", + "operationId": "198b9776ae8982aa478136a93283d9a4", + "parameters": [ + { + "name": "course_id", + "in": "query", + "description": "课程id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "ids", + "in": "query", + "description": "英文逗号分隔的id数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "status", + "in": "query", + "description": "状态0待审核1通过2拒绝", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "reason", + "in": "query", + "description": "reason", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-signs/batch-update-fee-status": { + "post": { + "tags": [ + "报名管理" + ], + "summary": "批量修改缴费状态", + "description": "", + "operationId": "d4a9c3ee591decfd9b4af959ca774faa", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "英文逗号分隔的id数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fee_status", + "in": "query", + "description": "0未缴费1缴费成功2缴费失败", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-signs/batch-notice": { + "post": { + "tags": [ + "报名管理" + ], + "summary": "批量发送缴费通知", + "description": "", + "operationId": "6593138f5f39ddd0d32c7471a327baa6", + "parameters": [ + { + "name": "course_id", + "in": "query", + "description": "课程id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "ids", + "in": "query", + "description": "英文逗号分隔的id数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "content", + "in": "query", + "description": "发送内容", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-signs/retry-appointment": { + "get": { + "tags": [ + "报名管理" + ], + "summary": "重新发送第三方预约信息", + "description": "", + "operationId": "6f00aa5eeb9b6050a4983aa392abe11d", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-types/index": { + "get": { + "tags": [ + "课程类别" + ], + "summary": "列表", + "description": "", + "operationId": "b5eba398cb8624da725bdb04c80495dd", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-types/show": { + "get": { + "tags": [ + "课程类别" + ], + "summary": "详情", + "description": "", + "operationId": "f64e6348dfef33c47af5e366717bee87", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-types/save": { + "post": { + "tags": [ + "课程类别" + ], + "summary": "更新或新增", + "operationId": "649da1a2ea57c67bc4c2b1b25076a08e", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "验证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "配置名字", + "schema": { + "type": "string" + } + }, + { + "name": "status", + "in": "query", + "description": "状态0禁用1启用", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "wait_tip", + "in": "query", + "description": "待审核提示", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "pass_tip", + "in": "query", + "description": "通过提示", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "fault_tip", + "in": "query", + "description": "不通过提示", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "back_tip", + "in": "query", + "description": "备选提示", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "year_total", + "in": "query", + "description": "年预约次数", + "schema": { + "type": "string", + "format": "date" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/course-types/destroy": { + "get": { + "tags": [ + "课程类别" + ], + "summary": "删除", + "description": "", + "operationId": "5d7a2a7b4ffc50b46472ea483c3b4b21", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-types/excel-show": { + "post": { + "tags": [ + "课程类别" + ], + "summary": "导入预览", + "description": "", + "operationId": "670baacc934508947e38f648997c1976", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/course-types/import": { + "post": { + "tags": [ + "课程类别" + ], + "summary": "导入", + "description": "", + "operationId": "966b7cd8208939ed566984ae4a74f4bc", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form/index": { + "get": { + "tags": [ + "自定义表单" + ], + "summary": "列表", + "description": "", + "operationId": "0b1750755af3319af2bbca10fac52dc1", + "parameters": [ + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form/real-table-index": { + "get": { + "tags": [ + "自定义表单" + ], + "summary": "获取实体数据表", + "description": "", + "operationId": "76b584eb528ef70c3b57906419110752", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form/show": { + "get": { + "tags": [ + "自定义表单" + ], + "summary": "详情", + "description": "", + "operationId": "c28b3c78e085d578b8b8d2548e7fb862", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form/real-table-show": { + "get": { + "tags": [ + "自定义表单" + ], + "summary": "获取实体表字段详情", + "description": "", + "operationId": "3a0852aea6a592e4f82aaa8a6c0b30d6", + "parameters": [ + { + "name": "table_name", + "in": "query", + "description": "表名", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "except", + "in": "query", + "description": "排除的字段名数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form/save": { + "post": { + "tags": [ + "自定义表单" + ], + "summary": "更新", + "description": "", + "operationId": "d560b9e3a1247197b776605730beb029", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Id(存在更新,不存在新增)", + "required": true, + "schema": { + "type": "int" + } + }, + { + "name": "table_name", + "in": "query", + "description": "表名", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "relation", + "in": "query", + "description": "关联关系二维数组,包含字段:id存在更新,不存在新增,custom_form_field,link_table_name关联表名,link_relation关联关系,local_key本地字段,foreign_key关联表字段", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "description": "字段详情二维数组,包含字段:id存在更新,不存在新增。和其他字段详见字段更新接口", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form/destroy": { + "get": { + "tags": [ + "自定义表单" + ], + "summary": "删除", + "description": "", + "operationId": "172be449a3f65455102b1c354fd84a9a", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form/relation-destroy": { + "get": { + "tags": [ + "自定义表单" + ], + "summary": "关联关系删除", + "description": "", + "operationId": "99a2c982970e1d3db53c5d16d7f37473", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "关联关系id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form/update-table": { + "get": { + "tags": [ + "自定义表单" + ], + "summary": "数据表同步", + "description": "", + "operationId": "81e2deb6133c813ab874ae673f2e1926", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form/clone-table": { + "get": { + "tags": [ + "自定义表单" + ], + "summary": "克隆表结构", + "description": "", + "operationId": "83a83932e8ceff36011e176c1982653e", + "parameters": [ + { + "name": "table_name", + "in": "query", + "description": "自定义表单表名", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form-field/index": { + "get": { + "tags": [ + "自定义表单字段" + ], + "summary": "列表", + "description": "", + "operationId": "61e668b036ec422261c707c1fef6d965", + "parameters": [ + { + "name": "custom_form_id", + "in": "query", + "description": "表id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form-field/show": { + "get": { + "tags": [ + "自定义表单字段" + ], + "summary": "详情", + "description": "", + "operationId": "46856168c3901d47e2e75e5b6826cd21", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form-field/save": { + "post": { + "tags": [ + "自定义表单字段" + ], + "summary": "更新", + "description": "", + "operationId": "7bbedc46a3effbf8d6fb31f7eb3bedea", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Id(存在更新,不存在新增)", + "required": true, + "schema": { + "type": "int" + } + }, + { + "name": "custom_form_id", + "in": "query", + "description": "表单id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "field", + "in": "query", + "description": "字段标示(汉字转拼音接口自动填充)", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "search_input", + "in": "query", + "description": "查询类型text输入框,radio单选,date_range日期范围选择,datetime_range日期时间范围选择", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "edit_input", + "in": "query", + "description": "编辑类型,从配置接口获取", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sort", + "in": "query", + "description": "排序", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "help", + "in": "query", + "description": "帮助文字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "validation", + "in": "query", + "description": "验证规则,config接口获取,一维数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "select_item", + "in": "query", + "description": "选择框选项", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "list_show", + "in": "query", + "description": "是否列表显示0和1", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "form_show", + "in": "query", + "description": "是否表单显示0和1", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "is_fix", + "in": "query", + "description": "是否固定0否1是", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "width", + "in": "query", + "description": "列宽度", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form-field/destroy": { + "get": { + "tags": [ + "自定义表单字段" + ], + "summary": "删除", + "description": "", + "operationId": "bfa4261e40462825865162011a328f51", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form-field/pinyin": { + "get": { + "tags": [ + "自定义表单字段" + ], + "summary": "汉字转拼音", + "description": "", + "operationId": "66540b5a3a661450be4385f679bc911c", + "parameters": [ + { + "name": "str", + "in": "query", + "description": "汉字", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/custom-form-field/config": { + "get": { + "tags": [ + "自定义表单字段" + ], + "summary": "验证规则选项和编辑类型选项", + "description": "", + "operationId": "5b0ce8b3a8102cabcff05c1624e6045a", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/department": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "获取部门", + "description": "", + "operationId": "94d839b43560f5e94bb362f906d8a22f", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "获取部门" + } + } + } + }, + "/api/admin/department/show": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "获取部门详情", + "description": "", + "operationId": "4679dfab6b34f87596dbb1c3690aa3fc", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "获取部门" + } + } + } + }, + "/api/admin/department/save": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "保存部门", + "description": "", + "operationId": "d5946ac7c3ba761ca13e250c84f555c5", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "部门ID,为空表示新增,不为空表示更新", + "schema": { + "type": "integer" + } + }, + { + "name": "name", + "in": "query", + "description": "名称", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pid", + "in": "query", + "description": "父id,默认为0", + "schema": { + "type": "integer" + } + }, + { + "name": "manager_id", + "in": "query", + "description": "部门负责人ID", + "schema": { + "type": "integer" + } + }, + { + "name": "leader_id", + "in": "query", + "description": "部门分管人ID", + "schema": { + "type": "integer" + } + }, + { + "name": "sortnumber", + "in": "query", + "description": "同级排序,默认为0", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "保存部门" + } + } + } + }, + "/api/admin/department/delete": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "删除部门", + "description": "", + "operationId": "9fef22f933be4fcd1e732ccd2fd1e35a", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "删除部门" + } + } + } + }, + "/api/admin/menu": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "获取菜单", + "description": "", + "operationId": "63d9065efe48814fea7ff1aff75e352b", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "获取菜单" + } + } + } + }, + "/api/admin/menu/show": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "获取菜单详情", + "description": "", + "operationId": "a9ac0af0b385e1b7b2e8706807f1be47", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "获取菜单" + } + } + } + }, + "/api/admin/menu/save": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "保存菜单", + "description": "", + "operationId": "3927c9c5ced2186bf414e49fcf5fe785", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "菜单ID,为空表示新增,不为空表示更新", + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名称", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pid", + "in": "query", + "description": "父id,默认为0", + "schema": { + "type": "string" + } + }, + { + "name": "url", + "in": "query", + "description": "页面路由", + "schema": { + "type": "string" + } + }, + { + "name": "ptah", + "in": "query", + "description": "路由", + "schema": { + "type": "string" + } + }, + { + "name": "api_prefix", + "in": "query", + "description": "API前缀(基于前后端约定同一个页面的API前缀相同)", + "schema": { + "type": "string" + } + }, + { + "name": "icon", + "in": "query", + "description": "图标样式", + "schema": { + "type": "string" + } + }, + { + "name": "visible", + "in": "query", + "description": "是否可见,默认为1", + "schema": { + "type": "string" + } + }, + { + "name": "auth_node_tags", + "in": "query", + "description": "绑定的权限节点tag,多个标示英文逗号分隔", + "schema": { + "type": "string" + } + }, + { + "name": "sortnumber", + "in": "query", + "description": "同级排序,默认为0", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "保存菜单" + } + } + } + }, + "/api/admin/menu/delete": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "删除菜单", + "description": "", + "operationId": "b555ee7c6cb8252db36c5af160f9a015", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "删除菜单" + } + } + } + }, + "/api/admin/notifications/index": { + "get": { + "tags": [ + "通知管理" + ], + "summary": "列表", + "description": "", + "operationId": "93ff09d105fdeacb299e8c1b1a8d97a2", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/notifications/show": { + "get": { + "tags": [ + "通知管理" + ], + "summary": "详情", + "description": "", + "operationId": "f6218fbac1b87d89928a4aa341bd71c9", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/notifications/save": { + "post": { + "tags": [ + "通知管理" + ], + "summary": "重新发送", + "operationId": "4579829a2169cb12267db4acf0cd7382", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "消息id", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/notifications/destroy": { + "get": { + "tags": [ + "通知管理" + ], + "summary": "删除", + "description": "", + "operationId": "36769340aa411d7cbfa5525836095514", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/operate-log/index": { + "get": { + "tags": [ + "操作日志" + ], + "summary": "列表", + "description": "", + "operationId": "898e3ea8176de2f2e45c908546a2b1f2", + "parameters": [ + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "admin_id", + "in": "query", + "description": "管理员id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "内容", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/other/admin-user-list": { + "post": { + "tags": [ + "其他" + ], + "summary": "后台用户列表", + "description": "", + "operationId": "cc3b529c89b0bca19ec24623ba6fe837", + "parameters": [ + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "department_id", + "in": "query", + "description": "部门id", + "required": false, + "schema": { + "type": "int" + } + }, + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/other/admin-department-list": { + "post": { + "tags": [ + "其他" + ], + "summary": "后台部门列表", + "description": "", + "operationId": "f4cf8d3e58b688c0e5ed89a20dbddd86", + "parameters": [ + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码。不传则全部,传入则分页", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_tree", + "in": "query", + "description": "是否显示树形结构 0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/other/table-fileds": { + "get": { + "tags": [ + "其他" + ], + "summary": "获取表字段", + "description": "", + "operationId": "f9ae89d3870d2313be027d91db581844", + "parameters": [ + { + "name": "table_name", + "in": "query", + "description": "table_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "except", + "in": "query", + "description": "排除的字段数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/parameter/index": { + "get": { + "tags": [ + "数据参数字典" + ], + "summary": "数据参数字典列表", + "description": "", + "operationId": "1d06d4fb0d890b44517bb66d6cd1f2b1", + "parameters": [ + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "number", + "in": "query", + "description": "编号", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "status", + "in": "query", + "description": "状态 0禁用 1启用", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/parameter/store": { + "post": { + "tags": [ + "数据参数字典" + ], + "summary": "添加数据参数字典", + "description": "", + "operationId": "143c606ca44e670840c2234c337a4cf3", + "parameters": [ + { + "name": "number", + "in": "query", + "description": "编号", + "required": true, + "schema": { + "type": "int" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pid", + "in": "query", + "description": "父id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sort", + "in": "query", + "description": "排序", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "status", + "in": "query", + "description": "状态 0禁用1启用", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "remark", + "in": "query", + "description": "备注", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "detail_list", + "in": "query", + "description": "字典明细二维数组。包括:key数据源id,value数据值,sort排序,status状态0禁用1启用,remark备注", + "required": false, + "schema": { + "type": "object" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/parameter/show": { + "get": { + "tags": [ + "数据参数字典" + ], + "summary": "数据参数字典详情", + "description": "", + "operationId": "32d002bab4bca88636c64b140b359201", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id值或数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "number", + "in": "query", + "description": "number编号值或数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "pid", + "in": "query", + "description": "父id值或数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/parameter/save": { + "post": { + "tags": [ + "数据参数字典" + ], + "summary": "更新数据参数字典", + "description": "", + "operationId": "db745de23f8198982c6083d0f47de7a6", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Id", + "required": true, + "schema": { + "type": "int" + } + }, + { + "name": "number", + "in": "query", + "description": "编号", + "required": true, + "schema": { + "type": "int" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "pid", + "in": "query", + "description": "父id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sort", + "in": "query", + "description": "排序", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "status", + "in": "query", + "description": "状态 0禁用1启用", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "remark", + "in": "query", + "description": "备注", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "detail_list", + "in": "query", + "description": "字典明细二维数组。包括:id数据原始id,有就传没有就传空,value数据值,sort排序,status状态0禁用1启用,remark备注", + "required": false, + "schema": { + "type": "object" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/parameter/delete": { + "get": { + "tags": [ + "数据参数字典" + ], + "summary": "删除数据参数字典", + "description": "", + "operationId": "a2578a0438837f0fcbe66460826c05f4", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "数据参数字典id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/parameter/detail-delete": { + "get": { + "tags": [ + "数据参数字典" + ], + "summary": "删除数据参数字典详情记录", + "description": "", + "operationId": "c042eb7796319e4e7291124e9cebb5ce", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "数据参数详情id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/role": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "获取角色", + "description": "", + "operationId": "432d0553165dc1c248421fa36871567e", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "获取角色" + } + } + } + }, + "/api/admin/role/show": { + "get": { + "tags": [ + "后台管理" + ], + "summary": "获取角色详情", + "description": "", + "operationId": "9815083cc76091a16a3388ba833efe31", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "获取角色" + } + } + } + }, + "/api/admin/role/save": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "保存角色", + "description": "", + "operationId": "80f92184eae29a6efd829fc0f82a6bf9", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "菜单ID,为空表示新增,不为空表示更新", + "schema": { + "type": "integer" + } + }, + { + "name": "name", + "in": "query", + "description": "名称", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "introduce", + "in": "query", + "description": "说明", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "allow_level", + "in": "query", + "description": "数据权限0全部1部分2自己", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sortnumber", + "in": "query", + "description": "同级排序,默认为0", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "保存角色" + } + } + } + }, + "/api/admin/role/delete": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "删除角色", + "description": "", + "operationId": "dc85bbd29c8ecc9534c23543c2588f17", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "ID", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "删除角色" + } + } + } + }, + "/api/admin/role/set-permissions": { + "post": { + "tags": [ + "后台管理" + ], + "summary": "角色授权", + "description": "", + "operationId": "c6ac574837d7578e18a94b8ebfd79c36", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "description": "ID", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "permission_list", + "in": "query", + "description": "二维数组形式,包括:permission_id权限id,auth_node_tags英文逗号分隔的权限标示", + "required": true, + "schema": { + "type": "object" + } + } + ], + "responses": { + "200": { + "description": "角色授权" + } + } + } + }, + "/api/admin/supply-demand/index": { + "get": { + "tags": [ + "供需信息管理" + ], + "summary": "列表", + "description": "", + "operationId": "0f7251b9f256e8fe64f2d0577499437f", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/supply-demand/show": { + "get": { + "tags": [ + "供需信息管理" + ], + "summary": "详情", + "description": "", + "operationId": "7b7e1c9c85848d37d22c6d2c34bcc04a", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/supply-demand/save": { + "post": { + "tags": [ + "供需信息管理" + ], + "summary": "更新或新增", + "operationId": "60da62531ba9ea53f0c0339709060101", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "需求供应表ID(存在则更新,不存在则新增)", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "title", + "in": "query", + "description": "标题", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "supply_demand_type_id", + "in": "query", + "description": "分类ID", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "content", + "in": "query", + "description": "内容", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "tag", + "in": "query", + "description": "标签", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "wechat", + "in": "query", + "description": "微信号", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "mobile", + "in": "query", + "description": "电话", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "email", + "in": "query", + "description": "邮箱", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "status", + "in": "query", + "description": "审核状态(0:待审核;1:通过;2:拒绝)", + "required": false, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/supply-demand/destroy": { + "get": { + "tags": [ + "供需信息管理" + ], + "summary": "删除", + "description": "", + "operationId": "8031bd3d6803d827fd962dc42e3b1066", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/teachers/index": { + "get": { + "tags": [ + "老师管理" + ], + "summary": "列表", + "description": "", + "operationId": "b9c77db2e25a7539cca27ea656a160b4", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/teachers/show": { + "get": { + "tags": [ + "老师管理" + ], + "summary": "详情", + "description": "", + "operationId": "8e50fd1d7d2f4ac4fba12b19895eae55", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/teachers/save": { + "post": { + "tags": [ + "时间段设置" + ], + "summary": "更新或新增", + "operationId": "32ce6f0497e018a7a40edda40159a67e", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "访问令牌", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "schema": { + "type": "integer" + } + }, + { + "name": "sex", + "in": "query", + "description": "性别", + "schema": { + "type": "string" + } + }, + { + "name": "speciality", + "in": "query", + "description": "专业", + "schema": { + "type": "string" + } + }, + { + "name": "theme", + "in": "query", + "description": "主题", + "schema": { + "type": "string" + } + }, + { + "name": "remark", + "in": "query", + "description": "备注", + "schema": { + "type": "string" + } + }, + { + "name": "introduce", + "in": "query", + "description": "介绍", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/teachers/destroy": { + "get": { + "tags": [ + "老师管理" + ], + "summary": "删除", + "description": "", + "operationId": "486544134d89a64d9fb4a0efe036e1fd", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/teachers/excel-show": { + "post": { + "tags": [ + "老师管理" + ], + "summary": "导入预览", + "description": "", + "operationId": "2ab672c4364b32a72a80f97df434a5ba", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/teachers/import": { + "post": { + "tags": [ + "老师管理" + ], + "summary": "导入", + "description": "", + "operationId": "e0731f9bed9c4b91e3044c3f19490739", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/upload-file": { + "post": { + "tags": [ + "其他" + ], + "summary": "上传文件", + "description": "", + "operationId": "2c233caa0e77aedf4bf95a402620b402", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "file" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/users/index": { + "get": { + "tags": [ + "用户信息" + ], + "summary": "所有用户列表", + "description": "", + "operationId": "0e65c24967a8ebe2771e38fdebdb4d27", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "export_fields", + "in": "query", + "description": "需要导出的字段数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "查询条件。数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,包括:courses,courseSigns,teacher,courseSettings,coursePeriods", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/users/study": { + "get": { + "tags": [ + "用户信息" + ], + "summary": "学员管理(参与了课程的用户包含统计数据)", + "description": "", + "operationId": "3f874ae4d6232375fc98ec7b50499bb4", + "parameters": [ + { + "name": "is_export", + "in": "query", + "description": "是否导出0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "file_name", + "in": "query", + "description": "导出文件名", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "course_id", + "in": "query", + "description": "课程id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "course_name", + "in": "query", + "description": "课程名称", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_name", + "in": "query", + "description": "公司名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_position", + "in": "query", + "description": "职务", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_area", + "in": "query", + "description": "所属区域", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_type", + "in": "query", + "description": "企业性质", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_industry", + "in": "query", + "description": "所属行业", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "courses_start_date", + "in": "query", + "description": "课程开始时间", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "courses_end_date", + "in": "query", + "description": "课程结束时间", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "is_vip", + "in": "query", + "description": "是否vip0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "courses_ing", + "in": "query", + "description": "是否课程进行中0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "is_schoolmate", + "in": "query", + "description": "is_schoolmate", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "mobile", + "in": "query", + "description": "mobile", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "status", + "in": "query", + "description": "审核状态", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "course_type", + "in": "query", + "description": "course_type", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "company_has_share", + "in": "query", + "description": "是否有股份", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "start_company_date", + "in": "query", + "description": "开始成立日期", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "end_company_date", + "in": "query", + "description": "结束成立日期", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "start_birthday", + "in": "query", + "description": "开始出生日期", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "end_birthday", + "in": "query", + "description": "结束出生日期", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "company_need_fund", + "in": "query", + "description": "是否需要融资", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "is_fee", + "in": "query", + "description": "是否缴费0否1是", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "has_openid", + "in": "query", + "description": "是否绑定小程序0否1是", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "year", + "in": "query", + "description": "年份", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/users/show": { + "get": { + "tags": [ + "用户信息" + ], + "summary": "详情", + "description": "", + "operationId": "e1c7e516645ea3e01d9228642f1f2e9d", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "show_relation", + "in": "query", + "description": "需要输出的关联关系数组,填写输出指定数据", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/users/save": { + "post": { + "tags": [ + "时间段设置" + ], + "summary": "更新或新增", + "operationId": "223b4be53194747c01738c8fa4b18041", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "课程ID(存在则更新,不存在则新增)", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "token", + "in": "query", + "description": "访问令牌", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "openid", + "in": "query", + "description": "用户openid", + "schema": { + "type": "string" + } + }, + { + "name": "sex", + "in": "query", + "description": "性别男/女", + "schema": { + "type": "string" + } + }, + { + "name": "nickname", + "in": "query", + "description": "昵称", + "schema": { + "type": "string" + } + }, + { + "name": "mobile", + "in": "query", + "description": "手机号", + "schema": { + "type": "string" + } + }, + { + "name": "country", + "in": "query", + "description": "国家", + "schema": { + "type": "string" + } + }, + { + "name": "province", + "in": "query", + "description": "省份", + "schema": { + "type": "string" + } + }, + { + "name": "city", + "in": "query", + "description": "城市", + "schema": { + "type": "string" + } + }, + { + "name": "headimgurl", + "in": "query", + "description": "头像URL", + "schema": { + "type": "string" + } + }, + { + "name": "username", + "in": "query", + "description": "用户名", + "schema": { + "type": "string" + } + }, + { + "name": "password", + "in": "query", + "description": "密码", + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "schema": { + "type": "string" + } + }, + { + "name": "birthday", + "in": "query", + "description": "生日", + "schema": { + "type": "string" + } + }, + { + "name": "email", + "in": "query", + "description": "邮箱", + "schema": { + "type": "string" + } + }, + { + "name": "education", + "in": "query", + "description": "学历", + "schema": { + "type": "integer" + } + }, + { + "name": "school", + "in": "query", + "description": "学校", + "schema": { + "type": "string" + } + }, + { + "name": "speciality", + "in": "query", + "description": "专业", + "schema": { + "type": "string" + } + }, + { + "name": "honour", + "in": "query", + "description": "荣誉", + "schema": { + "type": "string" + } + }, + { + "name": "introduce", + "in": "query", + "description": "介绍", + "schema": { + "type": "string" + } + }, + { + "name": "company_name", + "in": "query", + "description": "公司名称", + "schema": { + "type": "string" + } + }, + { + "name": "company_position", + "in": "query", + "description": "个人职务", + "schema": { + "type": "string" + } + }, + { + "name": "company_has_share", + "in": "query", + "description": "是否有股份0否1是", + "schema": { + "type": "string" + } + }, + { + "name": "company_build_date", + "in": "query", + "description": "公司成立日期", + "schema": { + "type": "string" + } + }, + { + "name": "company_area", + "in": "query", + "description": "公司区域-数据字典", + "schema": { + "type": "string" + } + }, + { + "name": "company_type", + "in": "query", + "description": "公司性质-数据字典", + "schema": { + "type": "string" + } + }, + { + "name": "company_industry", + "in": "query", + "description": "公司所属行业-数据字典", + "schema": { + "type": "string" + } + }, + { + "name": "company_business", + "in": "query", + "description": "公司主营业务", + "schema": { + "type": "string" + } + }, + { + "name": "company_fund", + "in": "query", + "description": "公司融资情况0否1是", + "schema": { + "type": "string" + } + }, + { + "name": "company_need_fund", + "in": "query", + "description": "公司是否需要融资0否1是", + "schema": { + "type": "integer" + } + }, + { + "name": "sign_from", + "in": "query", + "description": "报名信息来源", + "schema": { + "type": "string" + } + }, + { + "name": "remark", + "in": "query", + "description": "备注", + "schema": { + "type": "string" + } + }, + { + "name": "has_appointment_total", + "in": "query", + "description": "预约剩余次数", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/admin/users/destroy": { + "get": { + "tags": [ + "用户信息" + ], + "summary": "删除", + "description": "", + "operationId": "8e3cbeb0566f9efba6c2d2fc2fb3b707", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/users/excel-show": { + "post": { + "tags": [ + "用户信息" + ], + "summary": "导入预览", + "description": "", + "operationId": "ad1513c76e93120171377bdd24021da3", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/users/import": { + "post": { + "tags": [ + "用户信息" + ], + "summary": "导入", + "description": "", + "operationId": "1658fd176abf9de13048032aec3935c2", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/users/import-study": { + "post": { + "tags": [ + "用户信息" + ], + "summary": "导入学员信息(旧的校友库导入)", + "description": "", + "operationId": "85d3cac0c7e39908ce9c48b2376797a3", + "parameters": [ + { + "name": "data", + "in": "query", + "description": "导入分析获取到的二维数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/admin/users/batch-update-schoolmate": { + "post": { + "tags": [ + "用户信息" + ], + "summary": "设置取消校友库", + "description": "", + "operationId": "63f36c757324a37e05099c7ec7f4cd29", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "英文逗号分隔的id数组", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "is_schoolmate", + "in": "query", + "description": "是否校友库-0否1是", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/mobile/course/notices": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "通知公告", + "operationId": "c89adc994f0e7e02c1ef62b0aa96f94c", + "parameters": [ + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/course": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "课程列表", + "operationId": "18e8ec736e952dd5385462b6dc66cc3a", + "parameters": [ + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_name", + "in": "query", + "description": "排序字段名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "sort_type", + "in": "query", + "description": "排序类型", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "type", + "in": "query", + "description": "课程类型", + "schema": { + "type": "integer" + } + }, + { + "name": "status", + "in": "query", + "description": "状态", + "schema": { + "type": "integer" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/course-detail": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "课程详情", + "operationId": "2a58b695a93f7f214a77317134d8cf1f", + "parameters": [ + { + "name": "course_id", + "in": "query", + "description": "课程id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/course-detail-pc": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "课程详情PC", + "operationId": "6cfdce8dbd8b459da386bc3f40778e77", + "parameters": [ + { + "name": "course_id", + "in": "query", + "description": "课程id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/sign": { + "post": { + "tags": [ + "小程序-课程" + ], + "summary": "报名", + "operationId": "b99397a5c70340888a6883a0badde8cd", + "parameters": [ + { + "name": "course_id", + "in": "query", + "description": "课程id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "is_change", + "in": "query", + "description": "用户数据是否变化0否1是", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "change_data", + "in": "query", + "description": "变化的数组,键值对形式的一维数组", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "data", + "in": "query", + "description": "自定义数据的数据,二维数组。包括键名:name,field,value", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/my-course": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "我的课程", + "operationId": "b17ac0faa67da3f9ac681171d26b9f00", + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/my-course-content": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "我的课表", + "operationId": "232c814681b5da5edec505a0ec95808a", + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/get-sign": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "课程报名详情", + "operationId": "064d84918d3397ffec01adab588cd0da", + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/update-sign": { + "post": { + "tags": [ + "小程序-课程" + ], + "summary": "更新报名信息", + "operationId": "ed2ceffab06b5600cb3cce658b5ea668", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "报名id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "fee_file_ids", + "in": "query", + "description": "文件id数组", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/contents": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "课表", + "operationId": "2e9349656fbeb25f528ed45dcc060f14", + "parameters": [ + { + "name": "course_id", + "in": "query", + "description": "课程id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/user-list": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "校友库和本班通讯录", + "operationId": "9412a8e90e1580453b460c99a9eead1d", + "parameters": [ + { + "name": "type", + "in": "query", + "description": "类型1校友库2本班通讯录", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "course_id", + "in": "query", + "description": "课程id", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_business", + "in": "query", + "description": "主营业务", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_name", + "in": "query", + "description": "公司名字", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_position", + "in": "query", + "description": "职务", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_area", + "in": "query", + "description": "所属区域", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_type", + "in": "query", + "description": "企业性质", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "company_industry", + "in": "query", + "description": "所属行业", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "letter", + "in": "query", + "description": "首字母", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/news": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "文章列表", + "operationId": "f9b20de2bae8ad2f4f8fdca70ec6d120", + "parameters": [ + { + "name": "page_size", + "in": "query", + "description": "每页显示的条数", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/course/news-detail": { + "get": { + "tags": [ + "小程序-课程" + ], + "summary": "文章详情", + "operationId": "87d328e01768df3b8ba7c09d04d2833d", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/other/config": { + "get": { + "tags": [ + "小程序-其他" + ], + "summary": "获取配置信息", + "operationId": "f7601d94f6103fd195caad54e079a992", + "parameters": [ + { + "name": "appointment_type_id", + "in": "query", + "description": "场地类型", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/other/banner": { + "get": { + "tags": [ + "小程序-其他" + ], + "summary": "获取banner", + "operationId": "b2a8ae8e05645e34def69a97cae0cd6e", + "parameters": [ + { + "name": "position", + "in": "query", + "description": "位置1首页", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/schedule/index": { + "get": { + "tags": [ + "小程序-预约管理" + ], + "summary": "预约列表", + "description": "", + "operationId": "d417d99cfc0f00c75929ef9a539e1b6d", + "parameters": [ + { + "name": "status", + "in": "query", + "description": "status", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "page", + "in": "query", + "description": "页码", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/mobile/schedule/detail": { + "get": { + "tags": [ + "小程序-预约管理" + ], + "summary": "预约详情", + "description": "", + "operationId": "e065b8209c8c9a8bdced5bdae9fc1248", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/mobile/schedule/check": { + "get": { + "tags": [ + "小程序-预约管理" + ], + "summary": "检测是否可预约", + "description": "", + "operationId": "d52e662f5cba313152551cc8f741b526", + "parameters": [ + { + "name": "site", + "in": "query", + "description": "预约地点id,从config接口获取", + "schema": { + "type": "integer" + } + }, + { + "name": "myself", + "in": "query", + "description": "是否检测自己的数据0否1是", + "schema": { + "type": "integer" + } + }, + { + "name": "start_time", + "in": "query", + "description": "开始时间,例如:2023-01-01 11:11:11", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "end_time", + "in": "query", + "description": "结束时间,例如:2023-01-01 11:11:11", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/mobile/schedule/save": { + "post": { + "tags": [ + "小程序-预约管理" + ], + "summary": "创建更新预约", + "description": "", + "operationId": "646a96c009204748b4bfa8f477d3207c", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "存在更新,不存在新增", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "date", + "in": "query", + "description": "预约日期", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "start_time", + "in": "query", + "description": "开始时间,例如:2023-01-01 11:11:11", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "end_time", + "in": "query", + "description": "结束时间,例如:2023-01-01 11:11:11", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "content", + "in": "query", + "description": "预约事项", + "schema": { + "type": "string" + } + }, + { + "name": "site", + "in": "query", + "description": "预约地点id,从config接口获取", + "schema": { + "type": "integer" + } + }, + { + "name": "plate", + "in": "query", + "description": "车牌号。多个英文逗号分隔", + "schema": { + "type": "string" + } + }, + { + "name": "accompany_total", + "in": "query", + "description": "陪同人数", + "schema": { + "type": "integer" + } + }, + { + "name": "status", + "in": "query", + "description": "状态 0未审核 1审核通过 2审核不通过3取消", + "schema": { + "type": "integer" + } + }, + { + "name": "reason", + "in": "query", + "description": "审核不通过原因", + "schema": { + "type": "string" + } + }, + { + "name": "accompany", + "in": "query", + "description": "陪同人员,二维数组,包括:name,idcard,mobile", + "schema": { + "type": "string" + } + }, + { + "name": "idcard", + "in": "query", + "description": "身份证号码", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/mobile/schedule/cancel": { + "get": { + "tags": [ + "小程序-预约管理" + ], + "summary": "取消预约", + "description": "", + "operationId": "7755b60b50d4ca3d470e9634edada88b", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/mobile/supply-demand/detail": { + "get": { + "tags": [ + "小程序-供需" + ], + "summary": "详情", + "operationId": "8807f44957ff9c1a35ee5a579eb9816e", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/supply-demand/save": { + "post": { + "tags": [ + "小程序-供需" + ], + "summary": "更新", + "description": "", + "operationId": "c569f0cddb4ef0c7880bcea7872a8a40", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "需求供应表ID(存在则更新,不存在则新增)", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "title", + "in": "query", + "description": "标题", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "supply_demand_type_id", + "in": "query", + "description": "分类ID", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "content", + "in": "query", + "description": "内容", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "tag", + "in": "query", + "description": "标签", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "wechat", + "in": "query", + "description": "微信号", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "mobile", + "in": "query", + "description": "电话", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "email", + "in": "query", + "description": "邮箱", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "status", + "in": "query", + "description": "审核状态(0:待审核;1:通过;2:拒绝)", + "required": false, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/mobile/supply-demand/destroy": { + "get": { + "tags": [ + "小程序-供需" + ], + "summary": "删除", + "description": "", + "operationId": "a7633209b8e2c6f497e4d4cc25e4efb0", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/mobile/supply-demand/send-message": { + "get": { + "tags": [ + "小程序-供需" + ], + "summary": "发送消息", + "description": "", + "operationId": "6c8c72c97e564e881bf18555dbf01c5e", + "parameters": [ + { + "name": "supply_demand_id", + "in": "query", + "description": "供需信息id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "content", + "in": "query", + "description": "内容", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "to_user_id", + "in": "query", + "description": "接收人用户id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/mobile/upload-file": { + "post": { + "tags": [ + "小程序-其他" + ], + "summary": "上传文件", + "description": "", + "operationId": "35f4fde3cda084187506b95c8d056e21", + "parameters": [ + { + "name": "file", + "in": "query", + "description": "文件", + "required": true, + "schema": { + "type": "file" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "暂无" + } + } + } + }, + "/api/mobile/user/applet-login": { + "get": { + "tags": [ + "小程序-用户管理" + ], + "summary": "小程序静默登陆", + "operationId": "6637e6acb7458523a306be7c1ed75bd4", + "parameters": [ + { + "name": "code", + "in": "query", + "description": "code", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "pid", + "in": "query", + "description": "上级id", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/user/account-login": { + "get": { + "tags": [ + "小程序-用户管理" + ], + "summary": "账号密码登陆", + "operationId": "b2dcb7c5702d3d65045573682c902587", + "parameters": [ + { + "name": "mobile", + "in": "query", + "description": "mobile", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "password", + "in": "query", + "description": "password", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/user/update-user": { + "post": { + "tags": [ + "小程序-用户管理" + ], + "summary": "更新用户信息", + "operationId": "10397159c5f07743d3386bb7f1277833", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "认证token", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "openid", + "in": "query", + "description": "用户的openid", + "schema": { + "type": "string" + } + }, + { + "name": "sex", + "in": "query", + "description": "性别男/女", + "schema": { + "type": "string" + } + }, + { + "name": "nickname", + "in": "query", + "description": "昵称", + "schema": { + "type": "string" + } + }, + { + "name": "mobile", + "in": "query", + "description": "手机号", + "schema": { + "type": "string" + } + }, + { + "name": "country", + "in": "query", + "description": "国家", + "schema": { + "type": "string" + } + }, + { + "name": "province", + "in": "query", + "description": "省份", + "schema": { + "type": "string" + } + }, + { + "name": "city", + "in": "query", + "description": "城市", + "schema": { + "type": "string" + } + }, + { + "name": "headimgurl", + "in": "query", + "description": "头像url", + "schema": { + "type": "string" + } + }, + { + "name": "username", + "in": "query", + "description": "用户名", + "schema": { + "type": "string" + } + }, + { + "name": "old_password", + "in": "query", + "description": "旧密码", + "schema": { + "type": "string" + } + }, + { + "name": "password", + "in": "query", + "description": "密码", + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "名字", + "schema": { + "type": "string" + } + }, + { + "name": "birthday", + "in": "query", + "description": "生日", + "schema": { + "type": "string" + } + }, + { + "name": "email", + "in": "query", + "description": "邮箱", + "schema": { + "type": "string" + } + }, + { + "name": "education", + "in": "query", + "description": "学历", + "schema": { + "type": "integer" + } + }, + { + "name": "school", + "in": "query", + "description": "学校", + "schema": { + "type": "string" + } + }, + { + "name": "speciality", + "in": "query", + "description": "专业", + "schema": { + "type": "string" + } + }, + { + "name": "honour", + "in": "query", + "description": "荣誉", + "schema": { + "type": "string" + } + }, + { + "name": "introduce", + "in": "query", + "description": "介绍", + "schema": { + "type": "string" + } + }, + { + "name": "company_name", + "in": "query", + "description": "公司名称", + "schema": { + "type": "string" + } + }, + { + "name": "company_position", + "in": "query", + "description": "个人职务", + "schema": { + "type": "string" + } + }, + { + "name": "company_has_share", + "in": "query", + "description": "是否有股份", + "schema": { + "type": "string" + } + }, + { + "name": "company_build_date", + "in": "query", + "description": "公司成立日期", + "schema": { + "type": "string" + } + }, + { + "name": "company_area", + "in": "query", + "description": "公司区域", + "schema": { + "type": "string" + } + }, + { + "name": "company_type", + "in": "query", + "description": "公司性质", + "schema": { + "type": "string" + } + }, + { + "name": "company_industry", + "in": "query", + "description": "公司所属行业", + "schema": { + "type": "string" + } + }, + { + "name": "company_business", + "in": "query", + "description": "公司主营业务", + "schema": { + "type": "string" + } + }, + { + "name": "company_fund", + "in": "query", + "description": "公司融资情况", + "schema": { + "type": "string" + } + }, + { + "name": "company_need_fund", + "in": "query", + "description": "公司是否需要融资", + "schema": { + "type": "boolean" + } + }, + { + "name": "sign_from", + "in": "query", + "description": "报名信息来源", + "schema": { + "type": "string" + } + }, + { + "name": "remark", + "in": "query", + "description": "备注", + "schema": { + "type": "string" + } + }, + { + "name": "idcard", + "in": "query", + "description": "身份证号码", + "schema": { + "type": "string" + } + }, + { + "name": "plate", + "in": "query", + "description": "车牌号多个英文逗号分隔", + "schema": { + "type": "string" + } + }, + { + "name": "type", + "in": "query", + "description": "人才类型", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/user/get-user-info": { + "get": { + "tags": [ + "小程序-用户管理" + ], + "summary": "获取用户信息", + "operationId": "a8c6f34c09cf8a2007e694e7a7b16450", + "parameters": [ + { + "name": "token", + "in": "query", + "description": "token", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "操作成功" + } + } + } + }, + "/api/mobile/user/mobile": { + "get": { + "tags": [ + "小程序-用户管理" + ], + "summary": "获取微信授权手机号", + "description": "", + "operationId": "14a7843f4ffaafef7278beb04b20fbfe", + "parameters": [ + { + "name": "code", + "in": "query", + "description": "code", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/mobile/user/bind-mobile": { + "get": { + "tags": [ + "手机端-用户管理" + ], + "summary": "验证码绑定手机号", + "description": "", + "operationId": "6889ff023b0d44b475a30bad8b8b4609", + "parameters": [ + { + "name": "mobile", + "in": "query", + "description": "手机号", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "code", + "in": "query", + "description": "验证码", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "is_bind", + "in": "query", + "description": "是否绑定手机号", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/mobile/user/check-mobile": { + "get": { + "tags": [ + "手机端-用户管理" + ], + "summary": "检测手机号", + "description": "", + "operationId": "6e0ac349cb29f5045cbc0629faa5f754", + "parameters": [ + { + "name": "mobile", + "in": "query", + "description": "手机号", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "code", + "in": "query", + "description": "验证码", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/mobile/user/send-sms": { + "get": { + "tags": [ + "手机端-用户管理" + ], + "summary": "短信发送", + "description": "", + "operationId": "8e1407f35b2364f5b101060be968d510", + "parameters": [ + { + "name": "mobile", + "in": "query", + "description": "手机号", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/mobile/user/update-donates": { + "post": { + "tags": [ + "手机端-用户管理" + ], + "summary": "新增校友捐赠", + "description": "", + "operationId": "290838cc1429305bc68b828607266b90", + "parameters": [ + { + "name": "xxx", + "in": "query", + "description": "字段", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "token", + "in": "query", + "description": "token", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + } + } + } + }, + "tags": [ + { + "name": "后台管理", + "description": "后台管理" + }, + { + "name": "地点配置管理", + "description": "地点配置管理" + }, + { + "name": "预约管理", + "description": "预约管理" + }, + { + "name": "地点类型管理", + "description": "地点类型管理" + }, + { + "name": "权限", + "description": "权限" + }, + { + "name": "Banner图管理", + "description": "Banner图管理" + }, + { + "name": "通用接口", + "description": "通用接口" + }, + { + "name": "自定义表单增删改查操作", + "description": "自定义表单增删改查操作" + }, + { + "name": "配置管理", + "description": "配置管理" + }, + { + "name": "预约次数管理", + "description": "预约次数管理" + }, + { + "name": "排课", + "description": "排课" + }, + { + "name": "课程管理", + "description": "课程管理" + }, + { + "name": "课程表单", + "description": "课程表单" + }, + { + "name": "考勤管理", + "description": "考勤管理" + }, + { + "name": "报名管理", + "description": "报名管理" + }, + { + "name": "课程类别", + "description": "课程类别" + }, + { + "name": "自定义表单", + "description": "自定义表单" + }, + { + "name": "自定义表单字段", + "description": "自定义表单字段" + }, + { + "name": "通知管理", + "description": "通知管理" + }, + { + "name": "操作日志", + "description": "操作日志" + }, + { + "name": "其他", + "description": "其他" + }, + { + "name": "数据参数字典", + "description": "数据参数字典" + }, + { + "name": "供需信息管理", + "description": "供需信息管理" + }, + { + "name": "老师管理", + "description": "老师管理" + }, + { + "name": "时间段设置", + "description": "时间段设置" + }, + { + "name": "用户信息", + "description": "用户信息" + }, + { + "name": "小程序-课程", + "description": "小程序-课程" + }, + { + "name": "小程序-其他", + "description": "小程序-其他" + }, + { + "name": "小程序-预约管理", + "description": "小程序-预约管理" + }, + { + "name": "小程序-供需", + "description": "小程序-供需" + }, + { + "name": "小程序-用户管理", + "description": "小程序-用户管理" + }, + { + "name": "手机端-用户管理", + "description": "手机端-用户管理" + } + ] +} \ No newline at end of file diff --git a/课程台账.xlsx b/课程台账.xlsx new file mode 100644 index 0000000..3bc5dde Binary files /dev/null and b/课程台账.xlsx differ