Commit 033259bb authored by 陈立彬's avatar 陈立彬

1.移动端对练增加题序 2.移动端对练详情增加资料列表返回 3.移动端资料库根据分类id下钻获取资料 4.管理端资料详情增加分类id列表返回

parent ece79536
...@@ -41,6 +41,12 @@ public class ExamineBusinessCacheDto implements Serializable { ...@@ -41,6 +41,12 @@ public class ExamineBusinessCacheDto implements Serializable {
@Schema(description = "当前题目ID") @Schema(description = "当前题目ID")
private Integer currentQuestionId; private Integer currentQuestionId;
/**
* 题目总数量
*/
@Schema(description = "题目总数量")
private Integer totalQaNum;
/** /**
* 是否有下一题 * 是否有下一题
*/ */
......
...@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; ...@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
@Data @Data
public class ExamineMobileDto implements Serializable { public class ExamineMobileDto implements Serializable {
...@@ -72,4 +73,11 @@ public class ExamineMobileDto implements Serializable { ...@@ -72,4 +73,11 @@ public class ExamineMobileDto implements Serializable {
@Schema(description = "最高综合评分") @Schema(description = "最高综合评分")
@JsonProperty("max_overall_score") @JsonProperty("max_overall_score")
private int maxOverallScore; private int maxOverallScore;
/**
* 资料列表
*/
@Schema(description = "资料列表")
@JsonProperty("wiki_list")
private List<WikiListMobileDto> wikiList;
} }
...@@ -25,4 +25,12 @@ public class ExamineStartResultDto implements Serializable { ...@@ -25,4 +25,12 @@ public class ExamineStartResultDto implements Serializable {
@Schema(description = "是否有下一题") @Schema(description = "是否有下一题")
private boolean next; private boolean next;
@Schema(description = "当前题序")
@JsonProperty("current_index")
private Integer currentIndex;
@Schema(description = "题目总数量")
@JsonProperty("total_qa_num")
private Integer totalQaNum;
} }
...@@ -7,6 +7,7 @@ import lombok.Data; ...@@ -7,6 +7,7 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
@Data @Data
public class WikiDto implements Serializable { public class WikiDto implements Serializable {
...@@ -46,6 +47,12 @@ public class WikiDto implements Serializable { ...@@ -46,6 +47,12 @@ public class WikiDto implements Serializable {
@JsonProperty("wiki_category_id") @JsonProperty("wiki_category_id")
private Integer wikiCategoryId; private Integer wikiCategoryId;
/**
* 资料分类ID
*/
@Schema(description = "资料分类ID列表([1级父级ID,2级父级ID,当前分类ID]或者[1级父级ID,当前分类ID])")
@JsonProperty("wiki_category_id_list")
private List<Integer> wikiCategoryIdList;
/** /**
* 资料分类名称 * 资料分类名称
*/ */
......
...@@ -480,7 +480,7 @@ public class AppExamineService { ...@@ -480,7 +480,7 @@ public class AppExamineService {
* @param id * @param id
* @return * @return
*/ */
public ExamineMobileDto examineMobileDetail(Integer id) { public ExamineMobileDto examineMobileDetail(Integer id, UserPrincipal userPrincipal) {
ExamineMobileDto result = null; ExamineMobileDto result = null;
ExamineResponseModel model = examineService.examineDetail(id); ExamineResponseModel model = examineService.examineDetail(id);
if(Objects.nonNull(model)) { if(Objects.nonNull(model)) {
...@@ -505,6 +505,18 @@ public class AppExamineService { ...@@ -505,6 +505,18 @@ public class AppExamineService {
result.setPracticeCount(practiceCount); result.setPracticeCount(practiceCount);
result.setExamTotalCount(examTotalCount); result.setExamTotalCount(examTotalCount);
result.setMaxOverallScore(maxOverallScore.intValue()); result.setMaxOverallScore(maxOverallScore.intValue());
// 对练场景关联资料
WikiRequestModel requestModel = new WikiRequestModel();
requestModel.setSceneCategoryId(model.getSceneId());
List<WikiResponseModel> wikiResponseModels = examineService.wikiList(requestModel);
if(CollectionUtil.isNotEmpty(wikiResponseModels)) {
List<WikiListMobileDto> wikiList = wikiResponseModels.stream().map(v -> {
WikiListMobileDto dto = BeanUtil.copyProperties(v, WikiListMobileDto.class);
return dto;
}).collect(Collectors.toList());
result.setWikiList(wikiList);
}
} }
return result; return result;
} }
...@@ -957,7 +969,29 @@ public class AppExamineService { ...@@ -957,7 +969,29 @@ public class AppExamineService {
*/ */
public WikiDto wikiDetail(Integer id) { public WikiDto wikiDetail(Integer id) {
WikiResponseModel model = examineService.wikiDetail(id); WikiResponseModel model = examineService.wikiDetail(id);
return BeanUtil.copyProperties(model, WikiDto.class); WikiDto wikiDto = BeanUtil.copyProperties(model, WikiDto.class);
// 获取资料分类信息
if(Objects.nonNull(wikiDto.getWikiCategoryId())) {
List<Integer> wikiCategoryIdList = Lists.newArrayList();
wikiCategoryIdList.add(wikiDto.getWikiCategoryId());
WikiCategoryResponseModel category = examineService.wikiCategoryDetail(wikiDto.getWikiCategoryId());
// 非根分类,继续获取分类信息
if(Objects.nonNull(category) && !Objects.equals(category.getParentId(), 0)) {
WikiCategoryResponseModel parentCategory = examineService.wikiCategoryDetail(category.getParentId());
if(Objects.nonNull(parentCategory)) {
wikiCategoryIdList.add(parentCategory.getId());
if(!Objects.equals(parentCategory.getParentId(), 0)) {
WikiCategoryResponseModel rootCategory = examineService.wikiCategoryDetail(parentCategory.getParentId());
if(Objects.nonNull(rootCategory)) {
wikiCategoryIdList.add(rootCategory.getId());
}
}
}
}
CollectionUtil.reverse(wikiCategoryIdList);
wikiDto.setWikiCategoryIdList(wikiCategoryIdList);
}
return wikiDto;
} }
public WikiMobileDto wikiMobileDetail(UserPrincipal userPrincipal, Integer id) { public WikiMobileDto wikiMobileDetail(UserPrincipal userPrincipal, Integer id) {
...@@ -1036,6 +1070,30 @@ public class AppExamineService { ...@@ -1036,6 +1070,30 @@ public class AppExamineService {
WikiRequestModel requestModel = BeanUtil.copyProperties(request, WikiRequestModel.class); WikiRequestModel requestModel = BeanUtil.copyProperties(request, WikiRequestModel.class);
requestModel.setStatus(1); requestModel.setStatus(1);
List<Integer> categoryIdList = new ArrayList<>();
if(Objects.nonNull(request.getCategoryId())) {
// 是否有二级子分类
WikiCategoryRequestModel wcRequest = new WikiCategoryRequestModel();
wcRequest.setParentId(request.getCategoryId());
List<WikiCategoryResponseModel> wikiCategoryList = examineService.wikiCategoryList(wcRequest);
if(CollectionUtil.isNotEmpty(wikiCategoryList)) {
List<Integer> childIdList = wikiCategoryList.stream().mapToInt(WikiCategoryResponseModel::getId).boxed().collect(Collectors.toList());
categoryIdList.add(request.getCategoryId());
categoryIdList.addAll(childIdList);
// 是否有三级子分类
WikiCategoryRequestModel childRequest = new WikiCategoryRequestModel();
childRequest.setParentIdList(childIdList);
List<WikiCategoryResponseModel> thirdChildList = examineService.wikiCategoryList(childRequest);
if(CollectionUtil.isNotEmpty(thirdChildList)) {
List<Integer> thirdChildIdList = thirdChildList.stream().mapToInt(WikiCategoryResponseModel::getId).boxed().collect(Collectors.toList());
categoryIdList.addAll(thirdChildIdList);
}
requestModel.setCategoryId(null);
requestModel.setWikiCategoryIdList(categoryIdList);
}
}
Page<WikiResponseModel> page = examineService.wikiPaginQuery(requestModel); Page<WikiResponseModel> page = examineService.wikiPaginQuery(requestModel);
PageResult<WikiListMobileDto> pageResult = PageResult.of(request.getPageNo(), request.getPageSize(), (int) page.getTotalRow(), null); PageResult<WikiListMobileDto> pageResult = PageResult.of(request.getPageNo(), request.getPageSize(), (int) page.getTotalRow(), null);
...@@ -1114,6 +1172,9 @@ public class AppExamineService { ...@@ -1114,6 +1172,9 @@ public class AppExamineService {
businessCache.setExamineId(examineId); businessCache.setExamineId(examineId);
businessCache.setExamineMode(examineMode); businessCache.setExamineMode(examineMode);
businessCache.setUserId(userId); businessCache.setUserId(userId);
ExamineResponseModel model = examineService.examineDetailIgnoreDeleted(examineId);
businessCache.setTotalQaNum(model.getQaNum());
} }
// 当前出题 // 当前出题
...@@ -1128,6 +1189,8 @@ public class AppExamineService { ...@@ -1128,6 +1189,8 @@ public class AppExamineService {
result.setQuestion(model.getQuestion()); result.setQuestion(model.getQuestion());
result.setAnswer(model.getAnswer()); result.setAnswer(model.getAnswer());
result.setNext(examineQaList.size() > 1 ? true : false); result.setNext(examineQaList.size() > 1 ? true : false);
result.setCurrentIndex(1);
result.setTotalQaNum(businessCache.getTotalQaNum());
businessCache.setCurrentQuestionId(currentQuestionId); businessCache.setCurrentQuestionId(currentQuestionId);
businessCache.setHasNext(result.isNext()); businessCache.setHasNext(result.isNext());
...@@ -1170,6 +1233,7 @@ public class AppExamineService { ...@@ -1170,6 +1233,7 @@ public class AppExamineService {
// 获取下一题 // 获取下一题
ExamineQaResponseModel nextQa = null; ExamineQaResponseModel nextQa = null;
boolean hasNext = false; boolean hasNext = false;
Integer qaIndex = null;
List<ExamineQaResponseModel> examineQaList = examineService.examineQaList(examineId); List<ExamineQaResponseModel> examineQaList = examineService.examineQaList(examineId);
if(CollectionUtil.isNotEmpty(examineQaList)) { if(CollectionUtil.isNotEmpty(examineQaList)) {
OptionalInt indexOpt = IntStream.range(0, examineQaList.size()) OptionalInt indexOpt = IntStream.range(0, examineQaList.size())
...@@ -1180,6 +1244,7 @@ public class AppExamineService { ...@@ -1180,6 +1244,7 @@ public class AppExamineService {
nextQa = index + 1 < examineQaList.size() ? examineQaList.get(index + 1) : null; nextQa = index + 1 < examineQaList.size() ? examineQaList.get(index + 1) : null;
int remainingNum = examineQaList.size() - index - 1; int remainingNum = examineQaList.size() - index - 1;
hasNext = remainingNum > 1 ? true : false; hasNext = remainingNum > 1 ? true : false;
qaIndex = index + 2;
} }
} }
if(Objects.nonNull(nextQa)) { if(Objects.nonNull(nextQa)) {
...@@ -1188,6 +1253,8 @@ public class AppExamineService { ...@@ -1188,6 +1253,8 @@ public class AppExamineService {
result.setQuestion(nextQa.getQuestion()); result.setQuestion(nextQa.getQuestion());
result.setAnswer(nextQa.getAnswer()); result.setAnswer(nextQa.getAnswer());
result.setQuestionId(nextQa.getId()); result.setQuestionId(nextQa.getId());
result.setCurrentIndex(qaIndex);
result.setTotalQaNum(businessCache.getTotalQaNum());
// 缓存 // 缓存
businessCache.setCurrentQuestionId(nextQa.getId()); businessCache.setCurrentQuestionId(nextQa.getId());
......
...@@ -50,8 +50,9 @@ public class ExamineMobileController { ...@@ -50,8 +50,9 @@ public class ExamineMobileController {
@Operation(summary = "获取对练详情(根据对练ID)") @Operation(summary = "获取对练详情(根据对练ID)")
@GetMapping("/detail/{id}") @GetMapping("/detail/{id}")
public ApiResponse<ExamineMobileDto> detail(@Schema(description = "对练ID") @PathVariable("id") Integer id) { public ApiResponse<ExamineMobileDto> detail(@Schema(description = "对练ID") @PathVariable("id") Integer id,
ExamineMobileDto detail = examineService.examineMobileDetail(id); @Parameter(hidden = true) UserPrincipal userPrincipal) {
ExamineMobileDto detail = examineService.examineMobileDetail(id, userPrincipal);
return ApiResponse.ok(detail); return ApiResponse.ok(detail);
} }
......
...@@ -20,5 +20,7 @@ public class WikiCategoryRequestModel implements Serializable { ...@@ -20,5 +20,7 @@ public class WikiCategoryRequestModel implements Serializable {
private List<Integer> idList; private List<Integer> idList;
private List<Integer> parentIdList;
private Integer level; private Integer level;
} }
...@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; ...@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
@Data @Data
public class WikiRequestModel implements Serializable { public class WikiRequestModel implements Serializable {
...@@ -21,5 +22,7 @@ public class WikiRequestModel implements Serializable { ...@@ -21,5 +22,7 @@ public class WikiRequestModel implements Serializable {
private Integer sceneCategoryId; private Integer sceneCategoryId;
private List<Integer> wikiCategoryIdList;
private Integer status; private Integer status;
} }
...@@ -585,6 +585,9 @@ public class ExamineServiceImpl implements ExamineService { ...@@ -585,6 +585,9 @@ public class ExamineServiceImpl implements ExamineService {
if(Objects.nonNull(request.getParentId())) { if(Objects.nonNull(request.getParentId())) {
queryWrapper.and(WIKI_CATEGORY_ENTITY.PARENT_ID.eq(request.getParentId())); queryWrapper.and(WIKI_CATEGORY_ENTITY.PARENT_ID.eq(request.getParentId()));
} }
if(CollectionUtil.isNotEmpty(request.getParentIdList())) {
queryWrapper.and(WIKI_CATEGORY_ENTITY.PARENT_ID.in(request.getParentIdList()));
}
if(Objects.nonNull(request.getLevel())) { if(Objects.nonNull(request.getLevel())) {
queryWrapper.and(WIKI_CATEGORY_ENTITY.LEVEL.eq(request.getLevel())); queryWrapper.and(WIKI_CATEGORY_ENTITY.LEVEL.eq(request.getLevel()));
} }
...@@ -622,6 +625,9 @@ public class ExamineServiceImpl implements ExamineService { ...@@ -622,6 +625,9 @@ public class ExamineServiceImpl implements ExamineService {
if(Objects.nonNull(request.getParentId())) { if(Objects.nonNull(request.getParentId())) {
queryWrapper.and(WIKI_CATEGORY_ENTITY.PARENT_ID.eq(request.getParentId())); queryWrapper.and(WIKI_CATEGORY_ENTITY.PARENT_ID.eq(request.getParentId()));
} }
if(CollectionUtil.isNotEmpty(request.getParentIdList())) {
queryWrapper.and(WIKI_CATEGORY_ENTITY.PARENT_ID.in(request.getParentIdList()));
}
if(Objects.nonNull(request.getLevel())) { if(Objects.nonNull(request.getLevel())) {
queryWrapper.and(WIKI_CATEGORY_ENTITY.LEVEL.eq(request.getLevel())); queryWrapper.and(WIKI_CATEGORY_ENTITY.LEVEL.eq(request.getLevel()));
} }
...@@ -688,6 +694,9 @@ public class ExamineServiceImpl implements ExamineService { ...@@ -688,6 +694,9 @@ public class ExamineServiceImpl implements ExamineService {
if(Objects.nonNull(request.getStatus())) { if(Objects.nonNull(request.getStatus())) {
queryWrapper.and(WIKI_ENTITY.STATUS.eq(request.getStatus())); queryWrapper.and(WIKI_ENTITY.STATUS.eq(request.getStatus()));
} }
if(CollectionUtil.isNotEmpty(request.getWikiCategoryIdList())) {
queryWrapper.and(WIKI_ENTITY.WIKI_CATEGORY_ID.in(request.getWikiCategoryIdList()));
}
Page<WikiResponseModel> page = wikiMapper.paginateAs(pageNo, pageSize, queryWrapper, WikiResponseModel.class); Page<WikiResponseModel> page = wikiMapper.paginateAs(pageNo, pageSize, queryWrapper, WikiResponseModel.class);
...@@ -701,6 +710,9 @@ public class ExamineServiceImpl implements ExamineService { ...@@ -701,6 +710,9 @@ public class ExamineServiceImpl implements ExamineService {
if(StrUtil.isNotEmpty(request.getName())) { if(StrUtil.isNotEmpty(request.getName())) {
queryWrapper.where(WIKI_ENTITY.NAME.like("%"+request.getName()+"%")); queryWrapper.where(WIKI_ENTITY.NAME.like("%"+request.getName()+"%"));
} }
if(Objects.nonNull(request.getSceneCategoryId())) {
queryWrapper.and(WIKI_ENTITY.SCENE_CATEGORY_ID.eq(request.getSceneCategoryId()));
}
return wikiMapper.selectListByQueryAs(queryWrapper, WikiResponseModel.class); return wikiMapper.selectListByQueryAs(queryWrapper, WikiResponseModel.class);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment