diff --git a/backend/shop/serializers.py b/backend/shop/serializers.py index 59074fa..f343694 100644 --- a/backend/shop/serializers.py +++ b/backend/shop/serializers.py @@ -211,11 +211,13 @@ class VCCourseSerializer(serializers.ModelSerializer): return True # 检查是否已购买/报名 (通过已支付的订单) - return Order.objects.filter( + has_order = Order.objects.filter( wechat_user=user, course=obj, status__in=['paid', 'shipped', 'completed'] ).exists() + + return has_order def get_is_purchased(self, obj): return self._check_purchased(obj) diff --git a/frontend/src/api.js b/frontend/src/api.js index 5d074ac..202ba2a 100644 --- a/frontend/src/api.js +++ b/frontend/src/api.js @@ -31,7 +31,7 @@ export const getServices = () => api.get('/services/'); export const getServiceDetail = (id) => api.get(`/services/${id}/`); export const createServiceOrder = (data) => api.post('/service-orders/', data); export const getVCCourses = () => api.get('/courses/'); -export const getVCCourseDetail = (id) => api.get(`/courses/${id}/`); +export const getVCCourseDetail = (id) => api.get(`/courses/${id}/`, { params: { _t: Date.now() } }); export const enrollCourse = (data) => api.post('/course-enrollments/', data); export const sendSms = (data) => api.post('/auth/send-sms/', data); diff --git a/frontend/src/pages/VCCourseDetail.jsx b/frontend/src/pages/VCCourseDetail.jsx index 123f418..cdf3136 100644 --- a/frontend/src/pages/VCCourseDetail.jsx +++ b/frontend/src/pages/VCCourseDetail.jsx @@ -68,6 +68,7 @@ const VCCourseDetail = () => { const fetchDetail = async () => { try { const response = await getVCCourseDetail(id); + console.log('Course detail:', response.data); setCourse(response.data); } catch (error) { console.error("Failed to fetch course detail:", error); diff --git a/miniprogram/src/api/index.ts b/miniprogram/src/api/index.ts index 11eb6da..7078db5 100644 --- a/miniprogram/src/api/index.ts +++ b/miniprogram/src/api/index.ts @@ -28,7 +28,7 @@ export const createServiceOrder = (data: any) => { // VB Courses export const getVBCourses = () => request({ url: '/courses/' }) -export const getVBCourseDetail = (id: number) => request({ url: `/courses/${id}/` }) +export const getVBCourseDetail = (id: number) => request({ url: `/courses/${id}/?_t=${Date.now()}` }) // Distributor export const distributorRegister = (data: any) => { diff --git a/miniprogram/src/pages/courses/detail.scss b/miniprogram/src/pages/courses/detail.scss index baabb2e..9381841 100644 --- a/miniprogram/src/pages/courses/detail.scss +++ b/miniprogram/src/pages/courses/detail.scss @@ -118,6 +118,7 @@ font-size: 32px; margin-bottom: 30px; font-weight: bold; + text-align: center; } .btn-unlock { diff --git a/miniprogram/src/pages/courses/detail.tsx b/miniprogram/src/pages/courses/detail.tsx index 6e04ae8..0fb3042 100644 --- a/miniprogram/src/pages/courses/detail.tsx +++ b/miniprogram/src/pages/courses/detail.tsx @@ -20,7 +20,9 @@ export default function CourseDetail() { const fetchDetail = async (id: string) => { try { + // Add timestamp to prevent caching const res: any = await getVBCourseDetail(Number(id)) + console.log('Course detail:', res) setDetail(res) } catch (err) { console.error(err)