Bläddra i källkod

1.添加考试,课程,原始试卷缓存
2.开考和断点修改锁方式
3.又拍云签名接口后缀参数格式修改

lideyin 6 år sedan
förälder
incheckning
d6aa468f97

+ 6 - 1
pom.xml

@@ -16,6 +16,11 @@
 			<artifactId>examcloud-web</artifactId>
 			<version>${examcloud.version}</version>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>cn.com.qmth.examcloud.question</groupId>
+            <artifactId>examcloud-question-commons</artifactId>
+            <version>${examcloud.version}</version>
+        </dependency>
+    </dependencies>
 
 </project>

+ 115 - 78
src/main/java/cn/com/qmth/examcloud/support/cache/CacheHelper.java

@@ -1,11 +1,6 @@
 package cn.com.qmth.examcloud.support.cache;
 
-import cn.com.qmth.examcloud.support.cache.bean.AppCacheBean;
-import cn.com.qmth.examcloud.support.cache.bean.ExamRecordPropertyCacheBean;
-import cn.com.qmth.examcloud.support.cache.bean.PrivilegeRolesCacheBean;
-import cn.com.qmth.examcloud.support.cache.bean.RootOrgPrivilegesCacheBean;
-import cn.com.qmth.examcloud.support.cache.bean.SmsAssemblyCacheBean;
-import cn.com.qmth.examcloud.support.cache.bean.SysPropertyCacheBean;
+import cn.com.qmth.examcloud.support.cache.bean.*;
 import cn.com.qmth.examcloud.web.cache.ObjectRedisCacheProcessor;
 
 /**
@@ -17,82 +12,124 @@ import cn.com.qmth.examcloud.web.cache.ObjectRedisCacheProcessor;
  */
 public class CacheHelper {
 
-	/**
-	 * 获取APP
-	 *
-	 * @author WANGWEI
-	 * @param appId
-	 * @return
-	 */
-	public static AppCacheBean getApp(Long appId) {
-		return ObjectRedisCacheProcessor.get("$_APP:", new Object[]{appId}, AppCacheBean.class);
-	}
+    /**
+     * 获取APP
+     *
+     * @param appId
+     * @return
+     * @author WANGWEI
+     */
+    public static AppCacheBean getApp(Long appId) {
+        return ObjectRedisCacheProcessor.get("$_APP:", new Object[]{appId}, AppCacheBean.class);
+    }
 
-	/**
-	 * 获取系统属性<br>
-	 *
-	 * @author WANGWEI
-	 * @param propKey
-	 * @return
-	 */
-	public static SysPropertyCacheBean getSysProperty(String propKey) {
-		return ObjectRedisCacheProcessor.get("$_SYS_PROP:", new Object[]{propKey},
-				SysPropertyCacheBean.class, "EC-CORE-BASIC",
-				"cn.com.qmth.examcloud.core.basic.service.cache.SystemPropertyCache");
-	}
+    /**
+     * 获取系统属性<br>
+     *
+     * @param propKey
+     * @return
+     * @author WANGWEI
+     */
+    public static SysPropertyCacheBean getSysProperty(String propKey) {
+        return ObjectRedisCacheProcessor.get("$_SYS_PROP:", new Object[]{propKey},
+                SysPropertyCacheBean.class, "EC-CORE-BASIC",
+                "cn.com.qmth.examcloud.core.basic.service.cache.SystemPropertyCache");
+    }
 
-	/**
-	 * 根据考试记录id获取考试信息<br>
-	 *
-	 * @author WANGWEI
-	 * @param propKey
-	 * @return
-	 */
-	public static ExamRecordPropertyCacheBean getExamRecordProperty(Long examRecordDataId) {
-		return ObjectRedisCacheProcessor.get("OE_EXAM_RECORD_PROP:", new Object[]{examRecordDataId},
-				ExamRecordPropertyCacheBean.class, "EC-CORE-OE-STUDENT",
-				"cn.com.qmth.examcloud.core.oe.common.cache.ExamRecordPropertyCache");
-	}
+    /**
+     * 根据考试记录id获取考试信息<br>
+     *
+     * @param propKey
+     * @return
+     * @author WANGWEI
+     */
+    public static ExamRecordPropertyCacheBean getExamRecordProperty(Long examRecordDataId) {
+        return ObjectRedisCacheProcessor.get("OE_EXAM_RECORD_PROP:", new Object[]{examRecordDataId},
+                ExamRecordPropertyCacheBean.class, "EC-CORE-OE-STUDENT",
+                "cn.com.qmth.examcloud.core.oe.common.cache.ExamRecordPropertyCache");
+    }
 
-	/**
-	 * 根据短信配置代码获取短信配置详情
-	 * 
-	 * @param smsAssemblyCode
-	 *            短信配置代码
-	 * @return
-	 */
-	public static SmsAssemblyCacheBean getSmsAssembly(String smsAssemblyCode) {
-		return ObjectRedisCacheProcessor.get("SMS_ASSEMBLY_PROP:", new Object[]{smsAssemblyCode},
-				SmsAssemblyCacheBean.class, "EC-CORE-BASIC",
-				"cn.com.qmth.examcloud.core.basic.dao.cache.SmsAssemblyCache");
-	}
+    /**
+     * 根据短信配置代码获取短信配置详情
+     *
+     * @param smsAssemblyCode 短信配置代码
+     * @return
+     */
+    public static SmsAssemblyCacheBean getSmsAssembly(String smsAssemblyCode) {
+        return ObjectRedisCacheProcessor.get("SMS_ASSEMBLY_PROP:", new Object[]{smsAssemblyCode},
+                SmsAssemblyCacheBean.class, "EC-CORE-BASIC",
+                "cn.com.qmth.examcloud.core.basic.dao.cache.SmsAssemblyCache");
+    }
 
-	/**
-	 * 获取权限关联的角色集合
-	 *
-	 * @author WANGWEI
-	 * @param rootOrgId
-	 * @param privilegeCode
-	 * @return
-	 */
-	public static PrivilegeRolesCacheBean getPrivilegeRoles(Long rootOrgId, String privilegeCode) {
-		return ObjectRedisCacheProcessor.get("$_PRIV_ROLES:",
-				new Object[]{rootOrgId, privilegeCode}, PrivilegeRolesCacheBean.class,
-				"EC-CORE-BASIC",
-				"cn.com.qmth.examcloud.core.basic.service.cache.PrrivilegeRolesCache");
-	}
+    /**
+     * 获取权限关联的角色集合
+     *
+     * @param rootOrgId
+     * @param privilegeCode
+     * @return
+     * @author WANGWEI
+     */
+    public static PrivilegeRolesCacheBean getPrivilegeRoles(Long rootOrgId, String privilegeCode) {
+        return ObjectRedisCacheProcessor.get("$_PRIV_ROLES:",
+                new Object[]{rootOrgId, privilegeCode}, PrivilegeRolesCacheBean.class,
+                "EC-CORE-BASIC",
+                "cn.com.qmth.examcloud.core.basic.service.cache.PrrivilegeRolesCache");
+    }
 
-	/**
-	 * 获取顶级机构关联的角色集合
-	 *
-	 * @author WANGWEI
-	 * @param rootOrgId
-	 * @return
-	 */
-	public static RootOrgPrivilegesCacheBean getRootOrgPrivileges(Long rootOrgId) {
-		return ObjectRedisCacheProcessor.get("$__ROOT_ORG_PRIVS:", new Object[]{rootOrgId},
-				PrivilegeRolesCacheBean.class, "EC-CORE-BASIC",
-				"cn.com.qmth.examcloud.core.basic.service.cache.RootOrgPrrivilegesCache");
-	}
+    /**
+     * 获取顶级机构关联的角色集合
+     *
+     * @param rootOrgId
+     * @return
+     * @author WANGWEI
+     */
+    public static RootOrgPrivilegesCacheBean getRootOrgPrivileges(Long rootOrgId) {
+        return ObjectRedisCacheProcessor.get("$__ROOT_ORG_PRIVS:", new Object[]{rootOrgId},
+                PrivilegeRolesCacheBean.class, "EC-CORE-BASIC",
+                "cn.com.qmth.examcloud.core.basic.service.cache.RootOrgPrrivilegesCache");
+    }
+
+    /**
+     * @description 获取原始试卷
+     * @param examId 考试id
+     * @param courseCode 课程代码
+     * @param paperType 试卷类型
+     * @date 2019/7/30 16:00
+     * @author lideyin
+     * @return cn.com.qmth.examcloud.support.cache.bean.BasePaperCacheBean
+     */
+    public static BasePaperCacheBean getBasePaper(Long examId,String courseCode,String paperType) {
+        return ObjectRedisCacheProcessor.get("OE_BASE_PAPER_PROP:", new Object[]{examId,courseCode,paperType},
+                BasePaperCacheBean.class, "EC-CORE-OE-STUDENT",
+                "cn.com.qmth.examcloud.core.oe.common.cache.BasePaperCache");
+    }
+
+    /**
+     * @description 获取课程信息
+     * @param courseId 课程id
+     * @param rootOrgId 学校id
+     * @date 2019/7/30 15:58
+     * @author lideyin
+     * @return cn.com.qmth.examcloud.support.cache.bean.CourseCacheBean
+     */
+    public static CourseCacheBean getCourse(Long courseId,Long rootOrgId) {
+        return ObjectRedisCacheProcessor.get("OE_COURSE_PROP:", new Object[]{courseId,rootOrgId},
+                CourseCacheBean.class, "EC-CORE-OE-STUDENT",
+                "cn.com.qmth.examcloud.core.oe.common.cache.CourseCache");
+    }
+
+    /**
+     * @description 获取考试信息
+     * @param examId 考试id
+     * @param orgId 学习中心id
+     * @date 2019/7/30 15:51
+     * @author lideyin
+     * @return cn.com.qmth.examcloud.support.cache.bean.ExamCacheBean
+     */
+    public static ExamCacheBean getExam(Long examId, Long orgId) {
+        return ObjectRedisCacheProcessor.get("OE_EXAM_PROP:", new Object[]{examId, orgId},
+                ExamCacheBean.class, "EC-CORE-OE-STUDENT",
+                "cn.com.qmth.examcloud.core.oe.common.cache.ExamCache");
+    }
 
 }

+ 70 - 0
src/main/java/cn/com/qmth/examcloud/support/cache/bean/BasePaperCacheBean.java

@@ -0,0 +1,70 @@
+package cn.com.qmth.examcloud.support.cache.bean;
+
+import cn.com.qmth.examcloud.question.commons.core.paper.DefaultPaper;
+import cn.com.qmth.examcloud.web.cache.RandomCacheBean;
+
+/**
+ * @Description 原始试卷缓存实体
+ * @Author lideyin
+ * @Date 2019/7/30 14:36
+ * @Version 1.0
+ */
+public class BasePaperCacheBean extends RandomCacheBean {
+
+	private static final long serialVersionUID = 6309635978462557320L;
+	/**
+	 * 小题乱序
+	 * true:乱序
+	 * false:不乱序
+	 */
+	private Boolean sortQuestionOrder;
+
+	/**
+	 * 选项乱序
+	 * ture:乱序
+	 * false:不乱序
+	 */
+	private Boolean sortOptionOrder;
+
+	/**
+	 * 原试卷id
+	 */
+	private String paperId;
+
+	/**
+	 * 试卷结构
+	 */
+	private DefaultPaper defaultPaper;
+
+	public Boolean getSortQuestionOrder() {
+		return sortQuestionOrder;
+	}
+
+	public void setSortQuestionOrder(Boolean sortQuestionOrder) {
+		this.sortQuestionOrder = sortQuestionOrder;
+	}
+
+	public Boolean getSortOptionOrder() {
+		return sortOptionOrder;
+	}
+
+	public void setSortOptionOrder(Boolean sortOptionOrder) {
+		this.sortOptionOrder = sortOptionOrder;
+	}
+
+	public String getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(String paperId) {
+		this.paperId = paperId;
+	}
+
+	public DefaultPaper getDefaultPaper() {
+		return defaultPaper;
+	}
+
+	public void setDefaultPaper(DefaultPaper defaultPaper) {
+		this.defaultPaper = defaultPaper;
+	}
+}

+ 73 - 0
src/main/java/cn/com/qmth/examcloud/support/cache/bean/CourseCacheBean.java

@@ -0,0 +1,73 @@
+package cn.com.qmth.examcloud.support.cache.bean;
+
+import cn.com.qmth.examcloud.web.cache.RandomCacheBean;
+
+/**
+ * 课程缓存实体
+ * @author lideyin
+ * @date 2019年5月21日 下午4:26:19
+ * @description 可根据需求扩展属性
+ */
+public class CourseCacheBean extends RandomCacheBean {
+
+	private static final long serialVersionUID = 3910143938927203635L;
+	private Long id;
+
+	private Long rootOrgId;
+
+	private String code;
+
+	private String name;
+
+	private String level;
+
+	private Boolean enable;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getLevel() {
+		return level;
+	}
+
+	public void setLevel(String level) {
+		this.level = level;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+}

+ 168 - 0
src/main/java/cn/com/qmth/examcloud/support/cache/bean/ExamCacheBean.java

@@ -0,0 +1,168 @@
+package cn.com.qmth.examcloud.support.cache.bean;
+
+import cn.com.qmth.examcloud.web.cache.RandomCacheBean;
+
+import java.util.Date;
+
+/**
+ * @Description 考试缓存实体
+ * @Author lideyin
+ * @Date 2019/7/30 14:20
+ * @Version 1.0
+ */
+public class ExamCacheBean extends RandomCacheBean {
+
+	private static final long serialVersionUID = -8007446755455123835L;
+	private Long id;
+
+	/**
+	 * 考试编码
+	 */
+	private String code;
+
+	/**
+	 * 顶级机构Id
+	 */
+	private Long rootOrgId;
+
+	/**
+	 * 考试批次开始时间
+	 */
+	private Date beginTime;
+
+	/**
+	 * 考试批次结束时间
+	 */
+	private Date endTime;
+
+	/**
+	 * 考试名称
+	 */
+	private String name;
+
+	/**
+	 * 考试类型
+	 */
+	private String examType;
+
+	/**
+	 * 考试时长
+	 */
+	private Integer duration;
+
+	/**
+	 * 是否可用
+	 */
+	private Boolean enable;
+
+	/**
+	 * 考试备注
+	 */
+	private String remark;
+
+	/**
+	 * 考试次数
+	 */
+	private Long examTimes;
+
+	/**
+	 * 是否禁止考试
+	 */
+	private Boolean examLimit;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Date getBeginTime() {
+		return beginTime;
+	}
+
+	public void setBeginTime(Date beginTime) {
+		this.beginTime = beginTime;
+	}
+
+	public Date getEndTime() {
+		return endTime;
+	}
+
+	public void setEndTime(Date endTime) {
+		this.endTime = endTime;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getExamType() {
+		return examType;
+	}
+
+	public void setExamType(String examType) {
+		this.examType = examType;
+	}
+
+	public Integer getDuration() {
+		return duration;
+	}
+
+	public void setDuration(Integer duration) {
+		this.duration = duration;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public Long getExamTimes() {
+		return examTimes;
+	}
+
+	public void setExamTimes(Long examTimes) {
+		this.examTimes = examTimes;
+	}
+
+	public Boolean getExamLimit() {
+		return examLimit;
+	}
+
+	public void setExamLimit(Boolean examLimit) {
+		this.examLimit = examLimit;
+	}
+}