package com.mindskip.xzs.controller.admin; import com.mindskip.xzs.base.BaseApiController; import com.mindskip.xzs.base.RestResponse; import com.mindskip.xzs.domain.KnowledgePoint; import com.mindskip.xzs.domain.Subject; import com.mindskip.xzs.domain.other.KnowledgePointPage; import com.mindskip.xzs.service.KnowledgeService; import com.mindskip.xzs.service.SubjectService; import com.mindskip.xzs.utility.PageInfoHelper; import com.mindskip.xzs.viewmodel.admin.knowledge.KnowledgeEditRequestVM; import com.mindskip.xzs.viewmodel.admin.knowledge.KnowledgePageRequestVM; import com.mindskip.xzs.viewmodel.admin.knowledge.KnowledgeResponseVM; import com.github.pagehelper.PageInfo; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; /** * @version 2.2.0 * @description: 知识点 * Copyright (C), 2020-2021, 武汉思维跳跃科技有限公司 * @date 2021 /9/7 9:45 */ @RestController("AdminKnowledgeController") @RequestMapping(value = "/api/admin/knowledge") @AllArgsConstructor public class KnowledgeController extends BaseApiController { private final KnowledgeService knowledgeService; private final SubjectService subjectService; /** * 知识点分页 * * @param model the model * @return the rest response */ @RequestMapping(value = "/page", method = RequestMethod.POST) public RestResponse> page(@RequestBody KnowledgePageRequestVM model) { PageInfo pageInfo = knowledgeService.page(model); PageInfo page = PageInfoHelper.copyMap(pageInfo, e -> { KnowledgeResponseVM vm = modelMapper.map(e, KnowledgeResponseVM.class); Subject subject = subjectService.selectById(e.getSubjectId()); vm.setSubjectName(subject.getName()); vm.setLevelName(subject.getLevelName()); return vm; }); return RestResponse.ok(page); } /** * 知识点编辑 * * @param model the model * @return the rest response */ @RequestMapping(value = "/edit", method = RequestMethod.POST) public RestResponse edit(@RequestBody @Valid KnowledgeEditRequestVM model) { KnowledgePoint knowledge = modelMapper.map(model, KnowledgePoint.class); knowledge.setDeleted(false); knowledgeService.insertByFilter(knowledge); return RestResponse.ok(knowledge); } /** * 根据学科查询知识点 * * @param subjectId the subject id * @return the rest response */ @RequestMapping(value = "/select/{subjectId}", method = RequestMethod.POST) public RestResponse> select(@PathVariable Integer subjectId) { List knowledgePointRoot = knowledgeService.getKnowledgePointBySubjectId(subjectId); knowledgeRecursion(knowledgePointRoot); return RestResponse.ok(knowledgePointRoot); } /** * 知识点删除 * * @param id the id * @return the rest response */ @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST) public RestResponse delete(@PathVariable Integer id) { KnowledgePoint knowledge = knowledgeService.selectById(id); knowledge.setDeleted(true); knowledgeService.updateByIdFilter(knowledge); return RestResponse.ok(); } private void knowledgeRecursion(List knowledgePointList) { knowledgePointList.forEach(item -> { List knowledgePointChild = knowledgeService.getKnowledgePointByParentId(item.getId()); if (0 != knowledgePointChild.size()) { item.setChild(knowledgePointChild); knowledgeRecursion(knowledgePointChild); } }); } }