From 40f594f1ffaedec2a61b078842b7938d92a7493a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?= <806783409@qq.com> Date: Sat, 15 Jun 2019 15:57:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E6=94=BE=E6=96=87=E6=A1=A3=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E5=92=8C=E5=A2=9E=E5=8A=A0=E9=98=85=E8=AF=BB=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WikiOpenApiController.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiOpenApiController.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiOpenApiController.java index 1843c850..4c1bcc46 100644 --- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiOpenApiController.java +++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiOpenApiController.java @@ -1,5 +1,6 @@ package com.zyplayer.doc.wiki.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.zyplayer.doc.core.json.DocResponseJson; import com.zyplayer.doc.core.json.ResponseJson; @@ -13,6 +14,7 @@ import com.zyplayer.doc.data.service.manage.WikiPageService; import com.zyplayer.doc.data.service.manage.WikiSpaceService; import com.zyplayer.doc.wiki.controller.vo.WikiPageContentVo; import com.zyplayer.doc.wiki.controller.vo.WikiPageVo; +import org.apache.commons.collections.CollectionUtils; import org.dozer.Mapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,9 +23,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -70,12 +70,16 @@ public class WikiOpenApiController { if (wikiSpace == null || wikiSpace.getOpenDoc() != 1) { return DocResponseJson.warn("未找到该文档"); } - UpdateWrapper wrapper = new UpdateWrapper<>(); + QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("del_flag", 0); wrapper.eq("space_id", wikiSpace.getId()); - List authList = wikiPageService.list(wrapper); - Map> listMap = authList.stream().map(val -> mapper.map(val, WikiPageVo.class)).collect(Collectors.groupingBy(WikiPageVo::getParentId)); + List wikiPageList = wikiPageService.list(wrapper); + if (CollectionUtils.isEmpty(wikiPageList)) { + return DocResponseJson.ok(); + } + Map> listMap = wikiPageList.stream().map(val -> mapper.map(val, WikiPageVo.class)).collect(Collectors.groupingBy(WikiPageVo::getParentId)); List nodePageList = listMap.get(0L); + nodePageList = nodePageList.stream().sorted(Comparator.comparingInt(WikiPage::getSeqNo)).collect(Collectors.toList()); this.setChildren(listMap, nodePageList); return DocResponseJson.ok(nodePageList); } @@ -104,6 +108,14 @@ public class WikiOpenApiController { for (WikiPageFile pageFile : pageFiles) { pageFile.setFileUrl("zyplayer-doc-wiki/common/file?uuid=" + pageFile.getUuid()); } + // 高并发下会有覆盖问题,但不重要~ + Integer viewNum = Optional.ofNullable(wikiPageSel.getViewNum()).orElse(0); + WikiPage wikiPageUp = new WikiPage(); + wikiPageUp.setId(wikiPageSel.getId()); + wikiPageUp.setViewNum(viewNum + 1); + wikiPageService.updateById(wikiPageUp); + // 修改返回值里的查看数+1 + wikiPageSel.setViewNum(viewNum + 1); WikiPageContentVo vo = new WikiPageContentVo(); vo.setWikiPage(wikiPageSel); vo.setPageContent(pageContent); @@ -118,6 +130,7 @@ public class WikiOpenApiController { for (WikiPageVo page : nodePageList) { List wikiPageVos = listMap.get(page.getId()); if (wikiPageVos != null && wikiPageVos.size() > 0) { + wikiPageVos = wikiPageVos.stream().sorted(Comparator.comparingInt(WikiPage::getSeqNo)).collect(Collectors.toList()); page.setChildren(wikiPageVos); this.setChildren(listMap, wikiPageVos); }