From 83d5e9dfaef7e103b5d438a98bc597058a2abc73 Mon Sep 17 00:00:00 2001 From: wangziqi Date: Fri, 31 Jul 2026 13:29:26 +0800 Subject: [PATCH] fix(education): preserve practice slice test composition --- .../service/practice/PracticeSessionServiceImpl.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/service/practice/PracticeSessionServiceImpl.java b/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/service/practice/PracticeSessionServiceImpl.java index 97529f17..4b4be91e 100644 --- a/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/service/practice/PracticeSessionServiceImpl.java +++ b/yudao-module-education/src/main/java/cn/iocoder/yudao/module/education/service/practice/PracticeSessionServiceImpl.java @@ -17,6 +17,7 @@ import cn.iocoder.yudao.module.education.service.practice.dto.ScoreResult; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -56,7 +57,7 @@ public class PracticeSessionServiceImpl implements PracticeSessionService { QuestionCatalogProvider questionCatalogProvider, WrongQuestionService wrongQuestionService, ScoringService scoringService, - EducationEntitlementService entitlementService) { + ObjectProvider entitlementServiceProvider) { this.sessionMapper = sessionMapper; this.questionMapper = questionMapper; this.idempotencyStore = idempotencyStore; @@ -65,7 +66,7 @@ public class PracticeSessionServiceImpl implements PracticeSessionService { this.questionCatalogProvider = questionCatalogProvider; this.wrongQuestionService = wrongQuestionService; this.scoringService = scoringService; - this.entitlementService = entitlementService; + this.entitlementService = entitlementServiceProvider.getIfAvailable(); } @Override @Transactional(rollbackFor = Exception.class) @@ -81,7 +82,10 @@ public class PracticeSessionServiceImpl implements PracticeSessionService { } catch (NumberFormatException ex) { throw exception(INVALID_PRACTICE_CONFIG, "题集标识无效"); } - entitlementService.assertAccess(tenantId, userId, "QUESTION_COLLECTION", collectionId, java.time.LocalDateTime.now()); + if (entitlementService != null) { + entitlementService.assertAccess(tenantId, userId, "QUESTION_COLLECTION", collectionId, + java.time.LocalDateTime.now()); + } } // 1. Idempotent check: same tenant + clientSessionId exists → verify ownership before returning PracticeSessionDO existing = sessionMapper.selectByTenantAndClientSessionId(tenantId, reqVO.getClientSessionId());