增加elasticsearch

This commit is contained in:
暮光:城中城
2019-07-10 21:19:06 +08:00
parent 1b706019cd
commit 02a56bc6b5
19 changed files with 761 additions and 63 deletions

View File

@@ -2,7 +2,7 @@
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>
<groupId>com.zyplayer</groupId>
<artifactId>zyplayer-doc-wiki</artifactId>
<version>1.0.2</version>
@@ -21,13 +21,13 @@
<timezone>2018-05-22 16:06:06</timezone>
</developer>
</developers>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<version>2.1.6.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@@ -35,9 +35,10 @@
<zyplayer.doc.version>1.0.2</zyplayer.doc.version>
<!-- 打包跳过单元测试 -->
<skipTests>true</skipTests>
<elasticsearch.version>6.8.0</elasticsearch.version>
<destDir>${project.build.outputDirectory}/META-INF/resources/webjars/${project.artifactId}/${project.version}</destDir>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
@@ -74,7 +75,7 @@
<developerConnection>scm:git@git.oschina.net:zyplayer/zyplayer-doc.git</developerConnection>
<url>git@git.oschina.net:zyplayer/zyplayer-doc.git</url>
</scm>
<distributionManagement>
<snapshotRepository>
<id>snapshots</id>
@@ -85,7 +86,7 @@
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<resources>
<resource>

View File

@@ -11,8 +11,13 @@ import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.*;
import com.zyplayer.doc.data.repository.manage.mapper.WikiPageMapper;
import com.zyplayer.doc.data.service.elasticsearch.service.EsWikiPage;
import com.zyplayer.doc.data.service.elasticsearch.service.EsWikiPageService;
import com.zyplayer.doc.data.service.elasticsearch.support.EsPage;
import com.zyplayer.doc.data.service.elasticsearch.support.EsQueryColumn;
import com.zyplayer.doc.data.service.manage.*;
import com.zyplayer.doc.data.utils.CacheUtil;
import com.zyplayer.doc.wiki.controller.param.SearchByEsParam;
import com.zyplayer.doc.wiki.controller.param.SpaceNewsParam;
import com.zyplayer.doc.wiki.controller.vo.SpaceNewsVo;
import com.zyplayer.doc.wiki.controller.vo.WikiPageContentVo;
@@ -25,6 +30,7 @@ import org.apache.commons.lang3.StringUtils;
import org.dozer.Mapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -59,6 +65,8 @@ public class WikiPageController {
WikiPageMapper wikiPageMapper;
@Resource
Mapper mapper;
@Resource
EsWikiPageService esWikiPageService;
@PostMapping("/list")
public ResponseJson<List<WikiPageVo>> list(WikiPage wikiPage) {
@@ -256,6 +264,15 @@ public class WikiPageController {
pageContent.setCreateUserName(currentUser.getUsername());
wikiPageContentService.save(pageContent);
}
// 保存到es
if (esWikiPageService != null) {
EsWikiPage esWikiPage = mapper.map(wikiPage, EsWikiPage.class);
esWikiPage.setContent(content);
esWikiPage.setPreview(preview);
esWikiPageService.create(esWikiPage);
} else {
logger.warn("未开启elasticsearch服务建议开启");
}
return DocResponseJson.ok(wikiPage);
}
@@ -286,20 +303,42 @@ public class WikiPageController {
return DocResponseJson.ok();
}
@PostMapping("/news")
public ResponseJson<Object> news(SpaceNewsParam param) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
@GetMapping("/searchByEs")
public ResponseJson<Object> searchByEs(SearchByEsParam param) {
// 空间不是自己的
Long spaceId = param.getSpaceId();
if (spaceId == null || spaceId <= 0) {
WikiSpace wikiSpaceSel = this.getCanVisitWikiSpace(param.getSpaceId());
if (wikiSpaceSel == null) {
return DocResponseJson.ok();
}
WikiSpace wikiSpaceSel = wikiSpaceService.getById(spaceId);
if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
PageInfo<EsWikiPage> pageInfo = new PageInfo<>();
if (esWikiPageService != null) {
List<EsQueryColumn> condition = new LinkedList<>();
condition.add(EsQueryColumn.like("name", param.getKeywords()));
condition.add(EsQueryColumn.like("content", param.getKeywords()));
// condition.add(EsQueryColumn.must("delFlag", "0"));
String[] fields = {
"id", "preview", "createTime", "updateTime", "createUserId", "createUserName",
"updateUserId", "updateUserName", "spaceId", "name", "zanNum", "viewNum",
};
EsPage<EsWikiPage> wikiPageEsPage = esWikiPageService.getDataByCondition(condition, fields, param.getStartIndex(), param.getPageSize());
pageInfo.setTotal(wikiPageEsPage.getTotal());
pageInfo.setList(wikiPageEsPage.getData());
} else {
logger.warn("未开启elasticsearch服务使用数据库查询匹配建议开启");
}
return DocResponseJson.ok(pageInfo);
}
@PostMapping("/news")
public ResponseJson<Object> news(SpaceNewsParam param) {
// 空间不是自己的
WikiSpace wikiSpaceSel = this.getCanVisitWikiSpace(param.getSpaceId());
if (wikiSpaceSel == null) {
return DocResponseJson.ok();
}
QueryWrapper<WikiPage> wrapper = new QueryWrapper<>();
wrapper.eq("space_id", spaceId);
wrapper.eq("space_id", param.getSpaceId());
wrapper.eq("del_flag", 0);
wrapper.orderByDesc(param.getNewsType() == 1, "update_time");
wrapper.orderByDesc(param.getNewsType() == 2, "create_time");
@@ -336,6 +375,19 @@ public class WikiPageController {
return responseJson;
}
private WikiSpace getCanVisitWikiSpace(Long spaceId){
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
// 空间不是自己的
if (spaceId == null || spaceId <= 0) {
return null;
}
WikiSpace wikiSpaceSel = wikiSpaceService.getById(spaceId);
if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
return null;
}
return wikiSpaceSel;
}
private void setChildren(Map<Long, List<WikiPageVo>> listMap, List<WikiPageVo> nodePageList, String path) {
if (nodePageList == null || listMap == null) {
return;

View File

@@ -0,0 +1,44 @@
package com.zyplayer.doc.wiki.controller.param;
public class SearchByEsParam {
private Long spaceId;
private String keywords;
private Integer pageNum;
private Integer pageSize;
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public Integer getStartIndex() {
return (pageNum - 1) * pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Long getSpaceId() {
return spaceId;
}
public void setSpaceId(Long spaceId) {
this.spaceId = spaceId;
}
public String getKeywords() {
return keywords;
}
public void setKeywords(String keywords) {
this.keywords = keywords;
}
}