xiatian 4 年之前
父节点
当前提交
080463e5c2

+ 9 - 5
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/ExtractConfigController.java

@@ -23,7 +23,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import cn.com.qmth.examcloud.api.commons.enums.DataRuleType;
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.questions.base.enums.ExportWay;
 import cn.com.qmth.examcloud.core.questions.base.enums.PaperSeqMode;
@@ -38,6 +40,7 @@ import cn.com.qmth.examcloud.core.questions.service.bean.dto.ExportPaperInfoMode
 import cn.com.qmth.examcloud.core.questions.service.cache.ExtractConfigCache;
 import cn.com.qmth.examcloud.reports.commons.bean.AdminOperateReport;
 import cn.com.qmth.examcloud.reports.commons.util.ReportsUtil;
+import cn.com.qmth.examcloud.web.security.DataRule;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import cn.com.qmth.examcloud.web.support.Naked;
 import io.swagger.annotations.ApiOperation;
@@ -64,6 +67,7 @@ public class ExtractConfigController extends ControllerSupport {
     @Autowired
     private ExtractConfigCache extractConfigCache;
 
+    @DataRule(type = DataRuleType.COURSE)
     @ApiOperation(value = "根据考试ID和课程ID获取调卷规则", notes = "根据考试ID和课程ID获取调卷规则")
     @GetMapping(value = "/findPageExtractConfig/{currentPage}/{pageSize}")
     public ResponseEntity<Object> findPageExtractConfig(@PathVariable int currentPage,
@@ -72,7 +76,8 @@ public class ExtractConfigController extends ControllerSupport {
                                                         @RequestParam("courseNo") String courseNo) {
         try {
             User user = getAccessUser();
-            Page<ExtractConfig> extractConfigPageList = extractConfigService.findPageExtractConfig(currentPage, pageSize, examId, courseNo, String.valueOf(user.getRootOrgId()));
+            UserDataRule ud = getUserDataRule(DataRuleType.COURSE);
+            Page<ExtractConfig> extractConfigPageList = extractConfigService.findPageExtractConfig(currentPage, pageSize, examId, courseNo, String.valueOf(user.getRootOrgId()),ud);
             return new ResponseEntity<>(extractConfigPageList, HttpStatus.OK);
         } catch (Exception e) {
             LOG.error(e.getMessage(), e);
@@ -162,14 +167,13 @@ public class ExtractConfigController extends ControllerSupport {
         return new ResponseEntity<ExtractConfig>(extractConfig, HttpStatus.OK);
     }
 
+    @DataRule(type = DataRuleType.COURSE)
     @ApiOperation(value = "根据考试Id获取已经制定的调卷规则", notes = "根据考试Id获取已经制定的调卷规则")
     @GetMapping(value = "/findCourseByExtractConfig/{examId}")
     public ResponseEntity<Object> findCourseByExtractConfig(@PathVariable Long examId) {
         User user = getAccessUser();
-        if (user == null) {
-            throw new StatusException("Q-", "user is null");
-        }
-        List<CouresInfo> courseCodeList = extractConfigService.findCourseByExtractConfig(examId, user.getRootOrgId().toString());
+        UserDataRule ud = getUserDataRule(DataRuleType.COURSE);
+        List<CouresInfo> courseCodeList = extractConfigService.findCourseByExtractConfig(examId, user.getRootOrgId().toString(),ud);
         return new ResponseEntity<>(courseCodeList, HttpStatus.OK);
     }
 

+ 3 - 2
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/ExtractConfigService.java

@@ -1,6 +1,7 @@
 package cn.com.qmth.examcloud.core.questions.service;
 
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
 import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
 import cn.com.qmth.examcloud.core.questions.base.question.PaperDto;
 import cn.com.qmth.examcloud.core.questions.base.question.QuestionDto;
@@ -117,7 +118,7 @@ public interface ExtractConfigService {
      * @param courseNo
      * @return
      */
-    public Page<ExtractConfig> findPageExtractConfig(int currentPage, int pageSize, Long examId, String courseCode, String orgId);
+    public Page<ExtractConfig> findPageExtractConfig(int currentPage, int pageSize, Long examId, String courseCode, String orgId,UserDataRule ud );
 
     /**
      * 根据试卷id获取试卷结构
@@ -144,7 +145,7 @@ public interface ExtractConfigService {
      * @param examId
      * @return
      */
-    public List<CouresInfo> findCourseByExtractConfig(Long examId, String orgId);
+    public List<CouresInfo> findCourseByExtractConfig(Long examId, String orgId,UserDataRule ud);
 
 	List<ExtractConfig> findExtractConfig(Long examId);
 

+ 23 - 4
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigServiceImpl.java

@@ -34,6 +34,7 @@ import org.springframework.util.Assert;
 import org.springframework.util.CollectionUtils;
 
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.questions.base.BeanCopierUtil;
 import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
@@ -988,12 +989,18 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
     }
 
     @Override
-    public Page<ExtractConfig> findPageExtractConfig(int currentPage, int pageSize, Long examId, String courseCode, String orgId) {
-        if (examId == null) {
+    public Page<ExtractConfig> findPageExtractConfig(int currentPage, int pageSize, Long examId, String courseCode, String orgId,UserDataRule ud ) {
+    	if (ud.assertEmptyQueryResult()) {
+			return Page.empty();
+		}
+    	if (examId == null) {
             throw new StatusException("Q-", "examId is null");
         }
         Query query = new Query();
         query.addCriteria(Criteria.where("orgId").is(orgId));
+        if (ud.assertNeedQueryRefIds()) {
+            query.addCriteria(Criteria.where("course.id").in(ud.stringRefIds()));
+        }
         query.addCriteria(Criteria.where("examId").is(examId));
         query.addCriteria(Criteria.where("course.enable").is("true"));
         if (!StringUtils.isBlank(courseCode)) {
@@ -1159,9 +1166,12 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 
 
     @Override
-    public List<CouresInfo> findCourseByExtractConfig(Long examId, String orgId) {
+    public List<CouresInfo> findCourseByExtractConfig(Long examId, String orgId,UserDataRule ud) {
+    	if(ud.assertEmptyQueryResult()) {
+    		return new ArrayList<>();
+    	}
         if (examId == null) {
-            throw new StatusException("Q-", "examId is null");
+            throw new StatusException("500", "examId is null");
         }
         //从考务查询改考试下的所有开启课程
         List<CouresInfo> courseInfoList = new ArrayList<>();
@@ -1205,6 +1215,15 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
             }
             return courseInfoList;
         }
+        if(ud.assertNeedQueryRefIds()&&courseInfoList.size()>0) {
+        	List<CouresInfo> ret = new ArrayList<>();
+        	for(CouresInfo info:courseInfoList) {
+        		if(ud.getRefIds().contains(info.getCourseId())) {
+        			ret.add(info);
+        		}
+        	}
+        	return ret;
+        }
         return courseInfoList;
     }