feat: 练题模块完成

This commit is contained in:
2024-04-06 21:04:38 +08:00
parent 43d3a2a6d5
commit 8d1fcf0401
114 changed files with 3667 additions and 21 deletions

View File

@@ -0,0 +1,26 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.landaiqing</groupId>
<artifactId>qing-yu-club-practice</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>qing-yu-club-practice-api</artifactId>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,29 @@
package com.landaiqing.practice.api.common;
/**
* 分页请求实体
*
* @author: landaiqing
*/
public class PageInfo {
private Integer pageNo = 1;
private Integer pageSize = 20;
public Integer getPageNo() {
if (pageNo == null || pageNo < 1) {
return 1;
}
return pageNo;
}
public Integer getPageSize() {
if (pageSize == null || pageSize < 1 || pageSize > Integer.MAX_VALUE) {
return 20;
}
return pageSize;
}
}

View File

@@ -0,0 +1,57 @@
package com.landaiqing.practice.api.common;
import lombok.Data;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
/**
* 分页返回实体
*
* @author: landaiqing
*/
@Data
public class PageResult<T> implements Serializable {
private Integer pageNo = 1;
private Integer pageSize = 20;
private Integer total = 0;
private Integer totalPages = 0;
private List<T> result = Collections.emptyList();
private Integer start = 1;
private Integer end = 0;
public void setRecords(List<T> result) {
this.result = result;
if (result != null && result.size() > 0) {
setTotal(result.size());
}
}
public void setTotal(Integer total) {
this.total = total;
if (this.pageSize > 0) {
this.totalPages = (total / this.pageSize) + (total % this.pageSize == 0 ? 0 : 1);
} else {
this.totalPages = 0;
}
this.start = (this.pageSize > 0 ? (this.pageNo - 1) * this.pageSize : 0) + 1;
this.end = (this.start - 1 + this.pageSize * (this.pageNo > 0 ? 1 : 0));
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public void setPageNo(Integer pageNo) {
this.pageNo = pageNo;
}
}

View File

@@ -0,0 +1,50 @@
package com.landaiqing.practice.api.common;
import lombok.Data;
@Data
public class Result<T> {
private Boolean success;
private Integer code;
private String message;
private T data;
public static Result ok(){
Result result = new Result();
result.setSuccess(true);
result.setCode(ResultCodeEnum.SUCCESS.getCode());
result.setMessage(ResultCodeEnum.SUCCESS.getDesc());
return result;
}
public static <T> Result ok(T data){
Result result = new Result();
result.setSuccess(true);
result.setCode(ResultCodeEnum.SUCCESS.getCode());
result.setMessage(ResultCodeEnum.SUCCESS.getDesc());
result.setData(data);
return result;
}
public static Result fail(){
Result result = new Result();
result.setSuccess(false);
result.setCode(ResultCodeEnum.FAIL.getCode());
result.setMessage(ResultCodeEnum.FAIL.getDesc());
return result;
}
public static <T> Result fail(T data){
Result result = new Result();
result.setSuccess(false);
result.setCode(ResultCodeEnum.FAIL.getCode());
result.setMessage(ResultCodeEnum.FAIL.getDesc());
result.setData(data);
return result;
}
}

View File

@@ -0,0 +1,29 @@
package com.landaiqing.practice.api.common;
import lombok.Getter;
@Getter
public enum ResultCodeEnum {
SUCCESS(200,"成功"),
FAIL(500,"失败");
public int code;
public String desc;
ResultCodeEnum(int code,String desc){
this.code = code;
this.desc = desc;
}
public static ResultCodeEnum getByCode(int codeVal){
for(ResultCodeEnum resultCodeEnum : ResultCodeEnum.values()){
if(resultCodeEnum.code == codeVal){
return resultCodeEnum;
}
}
return null;
}
}

View File

@@ -0,0 +1,30 @@
package com.landaiqing.practice.api.enums;
public enum AnswerStatusEnum {
/**
* 错误
*/
ERROR(0, "错误"),
/**
* 正确
*/
CORRECT(1, "正确");
final private int code;
final private String desc;
AnswerStatusEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

View File

@@ -0,0 +1,30 @@
package com.landaiqing.practice.api.enums;
public enum CompleteStatusEnum {
/**
* 未完成
*/
NO_COMPLETE(0, "未完成"),
/**
* 已完成
*/
COMPLETE(1, "已完成");
final private int code;
final private String desc;
CompleteStatusEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

View File

@@ -0,0 +1,30 @@
package com.landaiqing.practice.api.enums;
import lombok.Getter;
/**
* @description: 删除状态枚举
*
* @author landaiqing
* @date: 2024/2/14 15:02
*/
@Getter
public enum IsDeletedFlagEnum {
DELETED(1,"已删除"),
UN_DELETED(0,"未删除");
private int code;
private String desc;
IsDeletedFlagEnum(int code, String desc){
this.code=code;
this.desc=desc;
}
public static IsDeletedFlagEnum getByCode(int codeVal){
for(IsDeletedFlagEnum resultCodeEnum: IsDeletedFlagEnum.values()){
if(resultCodeEnum.code==codeVal){
return resultCodeEnum;
}
}
return null;
}
}

View File

@@ -0,0 +1,30 @@
package com.landaiqing.practice.api.enums;
public enum SetTypeEnum {
/**
* 实时生成
*/
REAL(1, "实时生成"),
/**
* 预设套题
*/
PRESET(2, "预设套题");
final private int code;
final private String desc;
SetTypeEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

View File

@@ -0,0 +1,37 @@
package com.landaiqing.practice.api.enums;
import lombok.Getter;
/**
* 题目类型枚举
* 1单选 2多选 3判断 4简答
* @author: landaiqing
*/
@Getter
public enum SubjectInfoTypeEnum {
RADIO(1,"单选"),
MULTIPLE(2,"多选"),
JUDGE(3,"判断"),
BRIEF(4,"简答"),
;
public int code;
public String desc;
SubjectInfoTypeEnum(int code, String desc){
this.code = code;
this.desc = desc;
}
public static SubjectInfoTypeEnum getByCode(int codeVal){
for(SubjectInfoTypeEnum resultCodeEnum : SubjectInfoTypeEnum.values()){
if(resultCodeEnum.code == codeVal){
return resultCodeEnum;
}
}
return null;
}
}

View File

@@ -0,0 +1,16 @@
package com.landaiqing.practice.api.req;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class GetPracticeSubjectListReq implements Serializable {
/**
* 分类与标签组合的ids
*/
private List<String> assembleIds;
}

View File

@@ -0,0 +1,20 @@
package com.landaiqing.practice.api.req;
import lombok.Data;
import java.io.Serializable;
@Data
public class GetPracticeSubjectReq implements Serializable {
/**
* 题目id
*/
private Long subjectId;
/**
* 题目类型
*/
private Integer subjectType;
}

View File

@@ -0,0 +1,20 @@
package com.landaiqing.practice.api.req;
import lombok.Data;
import java.io.Serializable;
@Data
public class GetPracticeSubjectsReq implements Serializable {
/**
* 套题id
*/
private Long setId;
/**
* 练习id
*/
private Long practiceId;
}

View File

@@ -0,0 +1,26 @@
package com.landaiqing.practice.api.req;
import com.landaiqing.practice.api.common.PageInfo;
import lombok.Data;
import java.io.Serializable;
@Data
public class GetPreSetReq implements Serializable {
/**
* 排序类型 1默认 2最新 3最热
*/
private Integer orderType;
/**
* 分页信息
*/
private PageInfo pageInfo;
/**
* 套题名称
*/
private String setName;
}

View File

@@ -0,0 +1,15 @@
package com.landaiqing.practice.api.req;
import lombok.Data;
import java.io.Serializable;
@Data
public class GetReportReq implements Serializable {
/**
* 练习id
*/
private Long practiceId;
}

View File

@@ -0,0 +1,15 @@
package com.landaiqing.practice.api.req;
import lombok.Data;
import java.io.Serializable;
@Data
public class GetScoreDetailReq implements Serializable {
/**
* 练习id
*/
private Long practiceId;
}

View File

@@ -0,0 +1,25 @@
package com.landaiqing.practice.api.req;
import lombok.Data;
import java.io.Serializable;
@Data
public class GetSubjectDetailReq implements Serializable {
/**
* 练习id
*/
private Long practiceId;
/**
* 题目id
*/
private Long subjectId;
/**
* 题目类型
*/
private Integer subjectType;
}

View File

@@ -0,0 +1,16 @@
package com.landaiqing.practice.api.req;
import com.landaiqing.practice.api.common.PageInfo;
import lombok.Data;
import java.io.Serializable;
@Data
public class GetUnCompletePracticeReq implements Serializable {
/**
* 分页信息
*/
private PageInfo pageInfo;
}

View File

@@ -0,0 +1,31 @@
package com.landaiqing.practice.api.req;
import lombok.Data;
import java.io.Serializable;
@Data
public class SubmitPracticeDetailReq implements Serializable {
/**
* 套题id
*/
private Long setId;
/**
* 练习id
*/
private Long practiceId;
/**
* 用时
*/
private String timeUse;
/**
* 交卷时间
*/
private String submitTime;
}

View File

@@ -0,0 +1,36 @@
package com.landaiqing.practice.api.req;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class SubmitSubjectDetailReq implements Serializable {
/**
* 练习id
*/
private Long practiceId;
/**
* 题目id
*/
private Long subjectId;
/**
* 题目答案
*/
private List<Integer> answerContents;
/**
* 题目类型
*/
private Integer subjectType;
/**
* 用时
*/
private String timeUse;
}

View File

@@ -0,0 +1,30 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class PracticeSetVO implements Serializable {
/**
* 套题id
*/
private Long setId;
/**
* 套题名称
*/
private String setName;
/**
* 套题热度
*/
private Integer setHeat;
/**
* 套题描述
*/
private String setDesc;
}

View File

@@ -0,0 +1,25 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class PracticeSubjectDetailVO implements Serializable {
/**
* 题目id
*/
private Long subjectId;
/**
* 题目类型
*/
private Integer subjectType;
/**
* 是否回答
*/
private Integer isAnswer;
}

View File

@@ -0,0 +1,31 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class PracticeSubjectListVO implements Serializable {
/**
* 练习标题
*/
private String title;
/**
* 题目列表
*/
private List<PracticeSubjectDetailVO> subjectList;
/**
* 练习id
*/
private Long practiceId;
/**
* 用时
*/
private String timeUse;
}

View File

@@ -0,0 +1,25 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class PracticeSubjectOptionVO implements Serializable {
/**
* 答案类型
*/
private Integer optionType;
/**
* 答案内容
*/
private String optionContent;
/**
* 是否正確
*/
private Integer isCorrect;
}

View File

@@ -0,0 +1,31 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class PracticeSubjectVO implements Serializable {
/**
* 题目名称
*/
private String subjectName;
/**
* 题目类型
*/
private Integer subjectType;
/**
* 答案列表
*/
private List<String> answerContentList;
/**
* 单选、多选、判断题目答案
*/
private List<PracticeSubjectOptionVO> optionList;
}

View File

@@ -0,0 +1,26 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class RankVO implements Serializable {
/**
* 头像
*/
private String avatar;
/**
* 名称
*/
private String name;
/**
* 练习数量
*/
private Integer count;
}

View File

@@ -0,0 +1,21 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class ReportSkillVO implements Serializable {
/**
* 分数
*/
private BigDecimal star;
/**
* 名称
*/
private String name;
}

View File

@@ -0,0 +1,26 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class ReportVO implements Serializable {
/**
* 试卷题目
*/
private String title;
/**
* 正确题目数
*/
private String correctSubject;
/**
* 技能图谱
*/
private List<ReportSkillVO> skill;
}

View File

@@ -0,0 +1,26 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class ScoreDetailVO implements Serializable {
/**
* 题目id
*/
private Long subjectId;
/**
* 题目类型
*/
private Integer subjectType;
/**
* 是否正确
*/
private Integer isCorrect;
}

View File

@@ -0,0 +1,17 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class SpecialPracticeCategoryVO implements Serializable {
private String categoryName;
private Long categoryId;
private List<SpecialPracticeLabelVO> labelList;
}

View File

@@ -0,0 +1,19 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class SpecialPracticeLabelVO implements Serializable {
private Long id;
/**
* 分类id-标签ID
*/
private String assembleId;
private String labelName;
}

View File

@@ -0,0 +1,17 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class SpecialPracticeVO implements Serializable {
private String primaryCategoryName;
private Long primaryCategoryId;
private List<SpecialPracticeCategoryVO> categoryList;
}

View File

@@ -0,0 +1,41 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class SubjectDetailVO implements Serializable {
/**
* 正确答案
*/
private List<Integer> correctAnswer;
/**
* 答题者答案
*/
private List<Integer> respondAnswer;
/**
* 题目解析
*/
private String subjectParse;
/**
* 答案详情
*/
private List<PracticeSubjectOptionVO> optionList;
/**
* 涉及的标签
*/
private List<String> labelNames;
/**
* 题目名称
*/
private String subjectName;
}

View File

@@ -0,0 +1,30 @@
package com.landaiqing.practice.api.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class UnCompletePracticeSetVO implements Serializable {
/**
* 套题id
*/
private Long setId;
/**
* 练习id
*/
private Long practiceId;
/**
* 练习时间
*/
private String practiceTime;
/**
* 套题名称
*/
private String title;
}