xiatian 2 år sedan
förälder
incheckning
af2e91ee80
13 ändrade filer med 637 tillägg och 0 borttagningar
  1. 36 0
      examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/RandomPaperController.java
  2. 45 0
      examcloud-core-questions-base/src/main/java/cn/com/qmth/examcloud/core/questions/base/bean/PagerQuery.java
  3. 150 0
      examcloud-core-questions-base/src/main/java/cn/com/qmth/examcloud/core/questions/base/bean/randompaper/RandomPaperListVo.java
  4. 64 0
      examcloud-core-questions-base/src/main/java/cn/com/qmth/examcloud/core/questions/base/bean/randompaper/RandomPaperQuery.java
  5. 16 0
      examcloud-core-questions-base/src/main/java/cn/com/qmth/examcloud/core/questions/base/enums/QuestionDifficulty.java
  6. 11 0
      examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/RandomPaperQuestionRepo.java
  7. 11 0
      examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/RandomPaperRepo.java
  8. 96 0
      examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/entity/RandomPaper.java
  9. 75 0
      examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/entity/RandomPaperQuestion.java
  10. 6 0
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/RandomPaperQuestionService.java
  11. 13 0
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/RandomPaperService.java
  12. 13 0
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/RandomPaperQuestionServiceImpl.java
  13. 101 0
      examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/RandomPaperServiceImpl.java

+ 36 - 0
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/controller/RandomPaperController.java

@@ -0,0 +1,36 @@
+package cn.com.qmth.examcloud.core.questions.api.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+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.core.questions.base.bean.randompaper.RandomPaperListVo;
+import cn.com.qmth.examcloud.core.questions.base.bean.randompaper.RandomPaperQuery;
+import cn.com.qmth.examcloud.core.questions.service.RandomPaperService;
+import cn.com.qmth.examcloud.web.security.DataRule;
+import cn.com.qmth.examcloud.web.support.ControllerSupport;
+import io.swagger.annotations.ApiOperation;
+
+@RestController
+@RequestMapping("${api_cqb}/randompaper")
+public class RandomPaperController extends ControllerSupport {
+	
+	@Autowired
+	private RandomPaperService randomPaperService;
+
+	@DataRule(type = DataRuleType.COURSE)
+	@ApiOperation("获取分页")
+	@PostMapping("page")
+	public Page<RandomPaperListVo> getPage(RandomPaperQuery req) {
+		User user = getAccessUser();
+        UserDataRule ud = super.getUserDataRule(DataRuleType.COURSE);
+        req.setUd(ud);
+        req.setRootOrgId(user.getRootOrgId());
+		return randomPaperService.getPage(req);
+	}
+}

+ 45 - 0
examcloud-core-questions-base/src/main/java/cn/com/qmth/examcloud/core/questions/base/bean/PagerQuery.java

@@ -0,0 +1,45 @@
+/*
+ * *************************************************
+ * Copyright (c) 2019 QMTH. All Rights Reserved. Created by Deason on 2019-09-24
+ * 14:10:50. *************************************************
+ */
+
+package cn.com.qmth.examcloud.core.questions.base.bean;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class PagerQuery {
+
+    @ApiModelProperty(value = "第几页(从1开始)")
+    protected Integer pageNumber;
+
+    @ApiModelProperty(value = "每页条数")
+    protected Integer pageSize;
+
+    public Integer getPageNumber() {
+        // 默认值
+        if (pageNumber == null || pageNumber < 1) {
+        	pageNumber = 1;
+        }
+
+        return pageNumber;
+    }
+
+    public Integer getPageSize() {
+        // 默认值
+        if (pageSize == null || pageSize < 1) {
+            pageSize = 10;
+        }
+
+        return pageSize;
+    }
+
+    public void setPageNumber(Integer pageNumber) {
+        this.pageNumber = pageNumber;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+
+}

+ 150 - 0
examcloud-core-questions-base/src/main/java/cn/com/qmth/examcloud/core/questions/base/bean/randompaper/RandomPaperListVo.java

@@ -0,0 +1,150 @@
+package cn.com.qmth.examcloud.core.questions.base.bean.randompaper;
+
+import java.util.Date;
+
+import cn.com.qmth.examcloud.core.questions.base.enums.PaperStructType;
+import io.swagger.annotations.ApiModelProperty;
+
+public class RandomPaperListVo {
+
+	@ApiModelProperty("id")
+	private String id;
+	@ApiModelProperty("模板名称")
+	private String name;
+
+	private Long courseId;
+	@ApiModelProperty("课程代码")
+	private String courseCode;
+	@ApiModelProperty("课程名称")
+	private String courseName;
+
+	private PaperStructType paperStructType;
+	@ApiModelProperty("组卷类型")
+	private String paperStructTypeStr;
+
+	private String paperStructId;
+
+	@ApiModelProperty("结构名称")
+	private String paperStructName;
+	private Boolean enable;
+	@ApiModelProperty("状态")
+	private String enableStr;
+	@ApiModelProperty("更新时间")
+	private Date updateDate;
+	@ApiModelProperty("操作人")
+	private String updateByName;
+	private Long updateBy;
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Long getCourseId() {
+		return courseId;
+	}
+
+	public void setCourseId(Long courseId) {
+		this.courseId = courseId;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public PaperStructType getPaperStructType() {
+		return paperStructType;
+	}
+
+	public void setPaperStructType(PaperStructType paperStructType) {
+		this.paperStructType = paperStructType;
+	}
+
+	public String getPaperStructTypeStr() {
+		return paperStructTypeStr;
+	}
+
+	public void setPaperStructTypeStr(String paperStructTypeStr) {
+		this.paperStructTypeStr = paperStructTypeStr;
+	}
+
+	public String getPaperStructId() {
+		return paperStructId;
+	}
+
+	public void setPaperStructId(String paperStructId) {
+		this.paperStructId = paperStructId;
+	}
+
+	public String getPaperStructName() {
+		return paperStructName;
+	}
+
+	public void setPaperStructName(String paperStructName) {
+		this.paperStructName = paperStructName;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+	public String getEnableStr() {
+		return enableStr;
+	}
+
+	public void setEnableStr(String enableStr) {
+		this.enableStr = enableStr;
+	}
+
+	public Date getUpdateDate() {
+		return updateDate;
+	}
+
+	public void setUpdateDate(Date updateDate) {
+		this.updateDate = updateDate;
+	}
+
+	public String getUpdateByName() {
+		return updateByName;
+	}
+
+	public void setUpdateByName(String updateByName) {
+		this.updateByName = updateByName;
+	}
+
+	public Long getUpdateBy() {
+		return updateBy;
+	}
+
+	public void setUpdateBy(Long updateBy) {
+		this.updateBy = updateBy;
+	}
+
+}

+ 64 - 0
examcloud-core-questions-base/src/main/java/cn/com/qmth/examcloud/core/questions/base/bean/randompaper/RandomPaperQuery.java

@@ -0,0 +1,64 @@
+package cn.com.qmth.examcloud.core.questions.base.bean.randompaper;
+
+import cn.com.qmth.examcloud.api.commons.security.bean.UserDataRule;
+import cn.com.qmth.examcloud.core.questions.base.bean.PagerQuery;
+import io.swagger.annotations.ApiModelProperty;
+
+public class RandomPaperQuery extends PagerQuery {
+
+	@ApiModelProperty("课程id")
+	private Long courseId;
+
+	@ApiModelProperty("模板名称")
+	private String name;
+
+	@ApiModelProperty("状态")
+	private Boolean enable;
+
+	@ApiModelProperty(hidden = true)
+	private Long rootOrgId;
+
+	@ApiModelProperty(hidden = true)
+	private UserDataRule ud;
+
+	public Long getCourseId() {
+		return courseId;
+	}
+
+	public void setCourseId(Long courseId) {
+		this.courseId = courseId;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public UserDataRule getUd() {
+		return ud;
+	}
+
+	public void setUd(UserDataRule ud) {
+		this.ud = ud;
+	}
+
+}

+ 16 - 0
examcloud-core-questions-base/src/main/java/cn/com/qmth/examcloud/core/questions/base/enums/QuestionDifficulty.java

@@ -0,0 +1,16 @@
+package cn.com.qmth.examcloud.core.questions.base.enums;
+
+public enum QuestionDifficulty {
+	HARD("难"), MEDIUM("中"), EASY("易");
+
+	private final String name;
+
+	QuestionDifficulty(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+}

+ 11 - 0
examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/RandomPaperQuestionRepo.java

@@ -0,0 +1,11 @@
+package cn.com.qmth.examcloud.core.questions.dao;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.data.repository.query.QueryByExampleExecutor;
+
+import cn.com.qmth.examcloud.core.questions.dao.entity.RandomPaperQuestion;
+
+public interface RandomPaperQuestionRepo
+		extends MongoRepository<RandomPaperQuestion, String>, QueryByExampleExecutor<RandomPaperQuestion> {
+
+}

+ 11 - 0
examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/RandomPaperRepo.java

@@ -0,0 +1,11 @@
+package cn.com.qmth.examcloud.core.questions.dao;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.data.repository.query.QueryByExampleExecutor;
+
+import cn.com.qmth.examcloud.core.questions.dao.entity.RandomPaper;
+
+public interface RandomPaperRepo
+		extends MongoRepository<RandomPaper, String>, QueryByExampleExecutor<RandomPaper> {
+
+}

+ 96 - 0
examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/entity/RandomPaper.java

@@ -0,0 +1,96 @@
+package cn.com.qmth.examcloud.core.questions.dao.entity;
+
+import java.util.List;
+
+import cn.com.qmth.examcloud.core.questions.base.enums.PaperStructType;
+import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
+import cn.com.qmth.examcloud.core.questions.dao.entity.base.MongoBaseEntity;
+
+public class RandomPaper extends MongoBaseEntity {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -1357471464371313050L;
+
+	private Long rootOrgId;
+
+	private Long courseId;
+
+	private String name;
+
+	private PaperStructType paperStructType;
+
+	private String paperStructId;
+
+	private PaperType paperType;
+
+	private List<String> paperIds;
+
+	private Boolean enable;
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Long getCourseId() {
+		return courseId;
+	}
+
+	public void setCourseId(Long courseId) {
+		this.courseId = courseId;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public PaperStructType getPaperStructType() {
+		return paperStructType;
+	}
+
+	public void setPaperStructType(PaperStructType paperStructType) {
+		this.paperStructType = paperStructType;
+	}
+
+	public String getPaperStructId() {
+		return paperStructId;
+	}
+
+	public void setPaperStructId(String paperStructId) {
+		this.paperStructId = paperStructId;
+	}
+
+	public PaperType getPaperType() {
+		return paperType;
+	}
+
+	public void setPaperType(PaperType paperType) {
+		this.paperType = paperType;
+	}
+
+	public List<String> getPaperIds() {
+		return paperIds;
+	}
+
+	public void setPaperIds(List<String> paperIds) {
+		this.paperIds = paperIds;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+}

+ 75 - 0
examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/entity/RandomPaperQuestion.java

@@ -0,0 +1,75 @@
+package cn.com.qmth.examcloud.core.questions.dao.entity;
+
+import java.util.List;
+
+import cn.com.qmth.examcloud.core.questions.base.enums.QuestionDifficulty;
+import cn.com.qmth.examcloud.core.questions.dao.entity.base.MongoBaseEntity;
+
+public class RandomPaperQuestion extends MongoBaseEntity {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -1357471464371313050L;
+
+	private Long rootOrgId;
+
+	private String randomPaperId;
+
+	private Long courseId;
+
+	private QuestionDifficulty questionDifficulty;
+
+	private String key;
+
+	private List<String> questionIds;
+
+	public String getRandomPaperId() {
+		return randomPaperId;
+	}
+
+	public void setRandomPaperId(String randomPaperId) {
+		this.randomPaperId = randomPaperId;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	public List<String> getQuestionIds() {
+		return questionIds;
+	}
+
+	public void setQuestionIds(List<String> questionIds) {
+		this.questionIds = questionIds;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Long getCourseId() {
+		return courseId;
+	}
+
+	public void setCourseId(Long courseId) {
+		this.courseId = courseId;
+	}
+
+	public QuestionDifficulty getQuestionDifficulty() {
+		return questionDifficulty;
+	}
+
+	public void setQuestionDifficulty(QuestionDifficulty questionDifficulty) {
+		this.questionDifficulty = questionDifficulty;
+	}
+
+}

+ 6 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/RandomPaperQuestionService.java

@@ -0,0 +1,6 @@
+package cn.com.qmth.examcloud.core.questions.service;
+
+public interface RandomPaperQuestionService {
+
+
+}

+ 13 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/RandomPaperService.java

@@ -0,0 +1,13 @@
+package cn.com.qmth.examcloud.core.questions.service;
+
+import org.springframework.data.domain.Page;
+
+import cn.com.qmth.examcloud.core.questions.base.bean.randompaper.RandomPaperListVo;
+import cn.com.qmth.examcloud.core.questions.base.bean.randompaper.RandomPaperQuery;
+
+public interface RandomPaperService {
+
+	Page<RandomPaperListVo> getPage(RandomPaperQuery query);
+
+
+}

+ 13 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/RandomPaperQuestionServiceImpl.java

@@ -0,0 +1,13 @@
+package cn.com.qmth.examcloud.core.questions.service.impl;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import cn.com.qmth.examcloud.core.questions.service.RandomPaperQuestionService;
+
+public class RandomPaperQuestionServiceImpl implements RandomPaperQuestionService {
+
+	private static final Logger log = LoggerFactory.getLogger(RandomPaperQuestionServiceImpl.class);
+	
+
+}

+ 101 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/RandomPaperServiceImpl.java

@@ -0,0 +1,101 @@
+package cn.com.qmth.examcloud.core.questions.service.impl;
+
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+
+import cn.com.qmth.examcloud.core.basic.api.UserCloudService;
+import cn.com.qmth.examcloud.core.basic.api.request.GetUserReq;
+import cn.com.qmth.examcloud.core.basic.api.response.GetUserResp;
+import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
+import cn.com.qmth.examcloud.core.questions.base.Model;
+import cn.com.qmth.examcloud.core.questions.base.bean.randompaper.RandomPaperListVo;
+import cn.com.qmth.examcloud.core.questions.base.bean.randompaper.RandomPaperQuery;
+import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
+import cn.com.qmth.examcloud.core.questions.dao.PaperStructRepo;
+import cn.com.qmth.examcloud.core.questions.dao.entity.Paper;
+import cn.com.qmth.examcloud.core.questions.dao.entity.PaperStruct;
+import cn.com.qmth.examcloud.core.questions.service.RandomPaperService;
+import cn.com.qmth.examcloud.support.cache.CacheHelper;
+import cn.com.qmth.examcloud.support.cache.bean.CourseCacheBean;
+
+public class RandomPaperServiceImpl implements RandomPaperService {
+
+	@Autowired
+	private MongoTemplate mongoTemplate;
+	@Autowired
+	private PaperStructRepo paperStructRepo;
+	
+	@Autowired
+	private UserCloudService userCloudService;
+
+	@Override
+	public Page<RandomPaperListVo> getPage(RandomPaperQuery req) {
+		if (req.getUd().assertEmptyQueryResult()) {
+			return Page.empty();
+		}
+		Query query = new Query();
+
+		query.addCriteria(Criteria.where("rootOrgId").is(req.getRootOrgId()));
+
+		if (req.getUd().assertNeedQueryRefIds()) {
+			query.addCriteria(Criteria.where("courseId").in(req.getUd().getRefIds()));
+		}
+
+		query.addCriteria(Criteria.where("paperType").is(PaperType.IMPORT));
+
+		if (req.getEnable() != null) {
+			query.addCriteria(Criteria.where("enable").is(req.getEnable()));
+		}
+
+		if (req.getCourseId() != null) {
+			query.addCriteria(Criteria.where("courseId").is(req.getCourseId()));
+		}
+
+		if (StringUtils.isNoneBlank(req.getName())) {
+			String paperName = CommonUtils.escapeExprSpecialWord(req.getName());
+			query.addCriteria(Criteria.where("name").regex(".*?\\.*" + paperName + ".*"));
+		}
+
+		long total = this.mongoTemplate.count(query, Paper.class);
+		if (total == 0) {
+			return Page.empty();
+		}
+
+		PageRequest pageable = PageRequest.of(req.getPageNumber() - 1, req.getPageSize());
+		query.with(Sort.by(Sort.Order.desc("creationDate")));
+		query.skip(pageable.getOffset());
+		query.limit(pageable.getPageSize());
+
+		List<RandomPaperListVo> paperList = this.mongoTemplate.find(query, RandomPaperListVo.class, "randomPaper");
+		if (CollectionUtils.isEmpty(paperList)) {
+			return Page.empty();
+		}
+
+		for (RandomPaperListVo vo : paperList) {
+			CourseCacheBean course = CacheHelper.getCourse(req.getRootOrgId());
+			vo.setCourseCode(course.getCode());
+			vo.setCourseName(course.getName());
+			vo.setPaperStructTypeStr(vo.getPaperStructType().getName());
+			PaperStruct paperStruct = Model.of(paperStructRepo.findById(vo.getPaperStructId()));
+			vo.setPaperStructName(paperStruct.getName());
+			vo.setEnableStr(vo.getEnable()?"启用":"禁用");
+			GetUserReq ureq=new GetUserReq();
+			ureq.setUserId(vo.getUpdateBy());
+			GetUserResp ures=userCloudService.getUser(ureq);
+			vo.setUpdateByName(ures.getUserBean().getDisplayName());
+		}
+
+		return new PageImpl<>(paperList, pageable, total);
+	}
+
+}