package com.redxun.knowledge.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.redxun.common.annotation.ClassDefine; import com.redxun.common.base.db.BaseService; import com.redxun.common.base.entity.JsonPageResult; import com.redxun.common.base.entity.JsonResult; import com.redxun.common.base.entity.QueryData; import com.redxun.common.base.search.QueryFilter; import com.redxun.common.base.search.QueryFilterBuilder; import com.redxun.common.utils.ExceptionUtil; import com.redxun.knowledge.entity.dao.Knowledge; import com.redxun.knowledge.entity.dto.KnowledgeDto; import com.redxun.knowledge.entity.validate.AddGroup; import com.redxun.knowledge.entity.vo.KnowledgeVo; import com.redxun.knowledge.service.KnowledgeServiceImpl; import com.redxun.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.ConstraintViolation; import javax.validation.Validator; import javax.validation.groups.Default; import java.util.List; import java.util.Set; @Slf4j @RestController @RequestMapping("/api-knowledge/knowledge") @Api(tags = "业务--知识表") @ClassDefine(title = "业务--知识表", alias = "KnowledgeController", path = "/knowledge/knowledge", packages = "", packageName = "子系统名称") public class KnowledgeController extends BaseController { @Autowired KnowledgeServiceImpl knowledgeService; @Autowired private Validator validator; @Override public BaseService getBaseService() { return knowledgeService; } @Override public String getComment() { return "业务--知识"; } @ApiOperation(value = "根据分类id查询全部维基知识", httpMethod = "GET") @GetMapping("/findAllWiki/{categoryId}") public JsonResult findAllWiki(@PathVariable("categoryId") String categoryId) { JsonResult jsonResult = JsonResult.getSuccessResult(""); List wikiList = knowledgeService.findAllWiki(categoryId); jsonResult.setData(wikiList); return jsonResult; } @ApiOperation(value = "新增知识", httpMethod = "POST") @PostMapping("create") public JsonResult create(@RequestBody KnowledgeDto knowledgeDto) { JsonResult jsonResult = JsonResult.getSuccessResult("新增知识成功!"); if (knowledgeDto.getIsDraft() != null && knowledgeDto.getIsDraft() == 1) { Set> violations = validator.validate(knowledgeDto, AddGroup.class); if (!violations.isEmpty()) { ConstraintViolation v = violations.iterator().next(); throw new RuntimeException(v.getMessage()); } } if (knowledgeDto.getIsDraft() != null && knowledgeDto.getIsDraft() == 0) { jsonResult.setMessage("知识暂存成功!"); } String pkId = null; try { pkId = knowledgeService.create(knowledgeDto); jsonResult.setData(pkId); } catch (Exception e) { jsonResult.setMessage(e.getMessage()); jsonResult.setSuccess(false); } return jsonResult; } @ApiOperation(value = "修改知识", httpMethod = "POST") @Override public JsonResult save(@Validated @ApiParam @RequestBody Knowledge entity, BindingResult validResult) { JsonResult jsonResult = JsonResult.getSuccessResult(""); int update = 0; try { update = knowledgeService.update(entity); } catch (Exception e) { jsonResult.setMessage(e.getMessage()); jsonResult.setSuccess(false); } if (update == -1) { return JsonResult.Success("知识正在审核中,无法修改"); } else { if (entity.getIsDraft() != null && entity.getIsDraft() == 0) { jsonResult.setMessage("知识暂存成功!"); } else { jsonResult.setMessage("修改知识成功!"); } return jsonResult; } } @ApiOperation(value = "知识详情", httpMethod = "GET") @GetMapping("info") public JsonResult info(@RequestParam(value = "pkId") String pkId, @RequestParam(value = "isPc", required = false) Integer flag) { KnowledgeVo knowledgeVo = knowledgeService.info(pkId, flag); JsonResult jsonResult; jsonResult = JsonResult.getSuccessResult(""); if (knowledgeVo == null) { // 知识不存在或者没有权限 jsonResult.setMessage("您查看的知识不存在或您没有访问权限"); jsonResult.setData(1); } else { jsonResult.setData(knowledgeVo); } return jsonResult; } @ApiOperation(value = "知识列表(分页后台)") @ApiImplicitParam(name = "queryData", value = "查询条件") @PostMapping("findAllKnowledge") public JsonPageResult findAllKnowledge(@RequestBody QueryData queryData) { JsonPageResult jsonResult = JsonPageResult.getSuccess(""); try { QueryFilter filter = QueryFilterBuilder.createQueryFilter(queryData); IPage page = knowledgeService.findAllKnowledge(filter); this.handlePage(page); jsonResult.setPageData(page); } catch (Exception e) { jsonResult.setSuccess(false); this.logger.error(ExceptionUtil.getExceptionMessage(e)); jsonResult.setMessage(ExceptionUtil.getExceptionMessage(e)); } return jsonResult; } @ApiOperation(value = "删除知识") @GetMapping("deleteKnowledge") public JsonResult deleteKnowledge(@RequestParam("knowledgeId") String knowledgeId) { Boolean result = knowledgeService.deleteKnowledge(knowledgeId); if (!result) { return JsonResult.Fail("删除失败,知识已关联其他模块"); } return JsonResult.Success("删除成功!"); } @ApiOperation(value = "知识审核") @ApiImplicitParam(name = "queryData", value = "查询条件") @PostMapping("findAllAuditKnowledge") public JsonPageResult findAllAuditKnowledge(@RequestBody QueryData queryData) { JsonPageResult jsonResult = JsonPageResult.getSuccess(""); try { QueryFilter filter = QueryFilterBuilder.createQueryFilter(queryData); IPage page = knowledgeService.findAllAuditKnowledge(filter); this.handlePage(page); jsonResult.setPageData(page); } catch (Exception e) { jsonResult.setSuccess(false); this.logger.error(ExceptionUtil.getExceptionMessage(e)); jsonResult.setMessage(ExceptionUtil.getExceptionMessage(e)); } return jsonResult; } @ApiOperation("获取未审核的知识数量") @GetMapping("getAuditKnowledgeSum") public JsonResult getAuditKnowledgeSum() { JsonResult jsonResult = JsonResult.Success(); Integer sum = knowledgeService.getAuditKnowledgeSum(); return jsonResult.setData(sum); } @ApiOperation(value = "工作成果&经验案例列表(分页前台)") @ApiImplicitParam(name = "queryData", value = "查询条件") @PostMapping("getAllKnowledgeByCategoryId") public JsonPageResult getAllKnowledgeByCategoryId(@RequestBody QueryData queryData) { JsonPageResult jsonResult = JsonPageResult.getSuccess(""); try { QueryFilter filter = QueryFilterBuilder.createQueryFilter(queryData); IPage page = knowledgeService.getAllKnowledgeByCategoryId(filter); this.handlePage(page); jsonResult.setPageData(page); } catch (Exception e) { jsonResult.setSuccess(false); this.logger.error(ExceptionUtil.getExceptionMessage(e)); jsonResult.setMessage(ExceptionUtil.getExceptionMessage(e)); } return jsonResult; } @ApiOperation("知识上传数量 PC") @GetMapping("getKnowledgeSum") public JsonResult getKnowledgeSum() { JsonResult jsonResult = JsonResult.Success(); Integer sum = knowledgeService.getKnowledgeSum(); return jsonResult.setData(sum); } }