From deb8431910bb76578071b84fffdf8bb2ebdcd7e2 Mon Sep 17 00:00:00 2001 From: En Date: Thu, 19 Mar 2026 10:32:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20course.ts=20?= =?UTF-8?q?=E4=B8=AD=20http=20=E5=AF=B9=E8=B1=A1=E6=9C=AA=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 http 对象封装,支持 get/post/put/delete 方法 - 修复 submitCourse 和 rejectCourse 函数中 http.post 未导入的问题 - 确保课程包编辑页面的"保存"和"保存草稿"按钮能正常请求后端 同时包含之前的数据库外键修复: - 新增 V39 迁移脚本删除外键约束 - 修改 V28 移除外键创建语句 - 增强 CourseCollectionService 应用层验证 --- reading-platform-frontend/src/api/course.ts | 10 ++++++- .../service/CourseCollectionService.java | 26 ++++++++++++++----- .../V28__add_two_tier_package_structure.sql | 10 +++---- ...dd_auto_increment_to_course_collection.sql | 7 +++++ .../V39__drop_foreign_key_constraints.sql | 26 +++++++++++++++++++ 5 files changed, 66 insertions(+), 13 deletions(-) create mode 100644 reading-platform-java/src/main/resources/db/migration/V39__drop_foreign_key_constraints.sql diff --git a/reading-platform-frontend/src/api/course.ts b/reading-platform-frontend/src/api/course.ts index 3fe60fb..707e9c2 100644 --- a/reading-platform-frontend/src/api/course.ts +++ b/reading-platform-frontend/src/api/course.ts @@ -1,9 +1,17 @@ import { getReadingPlatformAPI } from './generated'; -import { axios } from './generated/mutator'; +import { axios, customMutator } from './generated/mutator'; // 创建 API 实例 const api = getReadingPlatformAPI(); +// 封装 http 方法(兼容原有代码) +export const http = { + get: (url: string, config?: any) => customMutator({ url, method: 'get', ...config }), + post: (url: string, data?: any, config?: any) => customMutator({ url, method: 'post', data, ...config }), + put: (url: string, data?: any, config?: any) => customMutator({ url, method: 'put', data, ...config }), + delete: (url: string, config?: any) => customMutator({ url, method: 'delete', ...config }), +}; + // ============= 类型定义(保持向后兼容) ============= export interface CourseQueryParams { diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/CourseCollectionService.java b/reading-platform-java/src/main/java/com/reading/platform/service/CourseCollectionService.java index c019b8e..751b06d 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/CourseCollectionService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/CourseCollectionService.java @@ -216,6 +216,23 @@ public class CourseCollectionService extends ServiceImpl packageIds) { log.info("设置课程套餐的课程包,collectionId={}, packageCount={}", collectionId, packageIds.size()); + // 验证课程套餐是否存在 + CourseCollection collection = collectionMapper.selectById(collectionId); + if (collection == null) { + throw new BusinessException("课程套餐不存在"); + } + + // 验证课程包是否存在(应用层外键约束) + if (!packageIds.isEmpty()) { + List packages = packageMapper.selectList( + new LambdaQueryWrapper() + .in(CoursePackage::getId, packageIds) + ); + if (packages.size() != packageIds.size()) { + throw new BusinessException("存在无效的课程包 ID"); + } + } + // 删除旧的关联 collectionPackageMapper.delete( new LambdaQueryWrapper() @@ -231,12 +248,9 @@ public class CourseCollectionService extends ServiceImpl