forked from wangziqi/ruoyi-vue-pro
fix(education): preserve practice slice test composition
This commit is contained in:
@@ -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.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.ObjectProvider;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -56,7 +57,7 @@ public class PracticeSessionServiceImpl implements PracticeSessionService {
|
|||||||
QuestionCatalogProvider questionCatalogProvider,
|
QuestionCatalogProvider questionCatalogProvider,
|
||||||
WrongQuestionService wrongQuestionService,
|
WrongQuestionService wrongQuestionService,
|
||||||
ScoringService scoringService,
|
ScoringService scoringService,
|
||||||
EducationEntitlementService entitlementService) {
|
ObjectProvider<EducationEntitlementService> entitlementServiceProvider) {
|
||||||
this.sessionMapper = sessionMapper;
|
this.sessionMapper = sessionMapper;
|
||||||
this.questionMapper = questionMapper;
|
this.questionMapper = questionMapper;
|
||||||
this.idempotencyStore = idempotencyStore;
|
this.idempotencyStore = idempotencyStore;
|
||||||
@@ -65,7 +66,7 @@ public class PracticeSessionServiceImpl implements PracticeSessionService {
|
|||||||
this.questionCatalogProvider = questionCatalogProvider;
|
this.questionCatalogProvider = questionCatalogProvider;
|
||||||
this.wrongQuestionService = wrongQuestionService;
|
this.wrongQuestionService = wrongQuestionService;
|
||||||
this.scoringService = scoringService;
|
this.scoringService = scoringService;
|
||||||
this.entitlementService = entitlementService;
|
this.entitlementService = entitlementServiceProvider.getIfAvailable();
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@@ -81,7 +82,10 @@ public class PracticeSessionServiceImpl implements PracticeSessionService {
|
|||||||
} catch (NumberFormatException ex) {
|
} catch (NumberFormatException ex) {
|
||||||
throw exception(INVALID_PRACTICE_CONFIG, "题集标识无效");
|
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
|
// 1. Idempotent check: same tenant + clientSessionId exists → verify ownership before returning
|
||||||
PracticeSessionDO existing = sessionMapper.selectByTenantAndClientSessionId(tenantId, reqVO.getClientSessionId());
|
PracticeSessionDO existing = sessionMapper.selectByTenantAndClientSessionId(tenantId, reqVO.getClientSessionId());
|
||||||
|
|||||||
Reference in New Issue
Block a user