Commit 8550ec52 by 侯昆

关联词页面整合

1 parent fd08ce91
...@@ -15,13 +15,16 @@ package com.dookay.cihai.admin.controller; ...@@ -15,13 +15,16 @@ package com.dookay.cihai.admin.controller;
****************************************/ ****************************************/
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.dookay.cihai.admin.controller.form.AddPicForm;
import com.dookay.cihai.admin.controller.form.AddRelationForm; import com.dookay.cihai.admin.controller.form.AddRelationForm;
import com.dookay.cihai.admin.controller.form.AddVideoForm;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.domain.WordRelationDomain; import com.dookay.cihai.core.word.domain.WordRelationDomain;
import com.dookay.cihai.core.word.query.WordQuery; import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.IWordRelationService; import com.dookay.cihai.core.word.service.IWordRelationService;
import com.dookay.cihai.core.word.service.IWordService; import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.exception.ServiceException; import com.dookay.coral.common.core.exception.ServiceException;
import com.dookay.coral.common.core.utils.lang.EncodeUtils;
import com.dookay.coral.common.core.utils.lang.StringUtils; import com.dookay.coral.common.core.utils.lang.StringUtils;
import com.dookay.coral.common.web.config.ResourcesMappingProperties; import com.dookay.coral.common.web.config.ResourcesMappingProperties;
import com.dookay.coral.common.web.controller.BaseController; import com.dookay.coral.common.web.controller.BaseController;
...@@ -70,14 +73,14 @@ public class WordRelateController extends BaseController { ...@@ -70,14 +73,14 @@ public class WordRelateController extends BaseController {
* @date 2018/1/9 * @date 2018/1/9
*/ */
@RequestMapping(value = "/pic/add", method = RequestMethod.POST) @RequestMapping(value = "/pic/add", method = RequestMethod.POST)
public JsonResult picAdd(String word, MultipartFile image) { public JsonResult picAdd(@ModelAttribute AddPicForm form) {
WordQuery q = new WordQuery(); WordQuery q = new WordQuery();
q.setWord(word); q.setWord(form.getWord());
WordDomain wordDomain = wordService.getFirst(q); WordDomain wordDomain = wordService.getFirst(q);
if (wordDomain == null) { if (wordDomain == null) {
return errorResult("词条不存在"); return errorResult("词条不存在");
} }
List<ImageModel> modelList = doUpload(word, image); List<ImageModel> modelList = doUpload(form.getWord(), form.getImage());
List<ImageModel> current = new ArrayList<>(); List<ImageModel> current = new ArrayList<>();
if (StringUtils.isNotEmpty(wordDomain.getBaikePhotos())) { if (StringUtils.isNotEmpty(wordDomain.getBaikePhotos())) {
current = ImageModel.toList(wordDomain.getBaikePhotos()); current = ImageModel.toList(wordDomain.getBaikePhotos());
...@@ -97,8 +100,7 @@ public class WordRelateController extends BaseController { ...@@ -97,8 +100,7 @@ public class WordRelateController extends BaseController {
*/ */
private List<ImageModel> doUpload(String word, MultipartFile image) { private List<ImageModel> doUpload(String word, MultipartFile image) {
List<ImageModel> modelList = new ArrayList<>(); List<ImageModel> modelList = new ArrayList<>();
String wordPinyin = HanLP.convertToPinyinString(word, "_", false); String prefix = "word/" + word + "/";
String prefix = "word/" + wordPinyin + "/";
String fileUploadPath = resourcesMappingProperties.getUploadsMapping() + prefix; String fileUploadPath = resourcesMappingProperties.getUploadsMapping() + prefix;
try { try {
URI dirUri = new URI(fileUploadPath); URI dirUri = new URI(fileUploadPath);
...@@ -128,21 +130,19 @@ public class WordRelateController extends BaseController { ...@@ -128,21 +130,19 @@ public class WordRelateController extends BaseController {
/** /**
* 添加视频 * 添加视频
* *
* @param word
* @param video
* @return * @return
* @author houkun * @author houkun
* @date 2018/1/10 * @date 2018/1/10
*/ */
@RequestMapping(value = "/video/add", method = RequestMethod.POST) @RequestMapping(value = "/video/add", method = RequestMethod.POST)
public JsonResult videoAdd(String word, MultipartFile video) { public JsonResult videoAdd(@ModelAttribute AddVideoForm form) {
WordQuery q = new WordQuery(); WordQuery q = new WordQuery();
q.setWord(word); q.setWord(form.getWord());
WordDomain wordDomain = wordService.getFirst(q); WordDomain wordDomain = wordService.getFirst(q);
if (wordDomain == null) { if (wordDomain == null) {
return errorResult("词条不存在"); return errorResult("词条不存在");
} }
List<ImageModel> modelList = doUpload(word, video); List<ImageModel> modelList = doUpload(form.getWord(), form.getVideo());
List<ImageModel> current = new ArrayList<>(); List<ImageModel> current = new ArrayList<>();
if (StringUtils.isNotEmpty(wordDomain.getBaikeVideo())) { if (StringUtils.isNotEmpty(wordDomain.getBaikeVideo())) {
current = ImageModel.toList(wordDomain.getBaikeVideo()); current = ImageModel.toList(wordDomain.getBaikeVideo());
...@@ -162,7 +162,8 @@ public class WordRelateController extends BaseController { ...@@ -162,7 +162,8 @@ public class WordRelateController extends BaseController {
@RequestMapping(value = "/relation/add", method = RequestMethod.POST) @RequestMapping(value = "/relation/add", method = RequestMethod.POST)
public JsonResult relationAdd(@ModelAttribute AddRelationForm addRelationForm) { public JsonResult relationAdd(@ModelAttribute AddRelationForm addRelationForm) {
WordQuery q = new WordQuery(); WordQuery q = new WordQuery();
List<String> words = addRelationForm.getWords().stream().map(StringUtils::trim).collect(Collectors.toList()); List<String> words = addRelationForm.getWords().stream()
.map(StringUtils::trim).collect(Collectors.toList());
q.setWordIn(words); q.setWordIn(words);
List<WordDomain> wordList = wordService.getList(q); List<WordDomain> wordList = wordService.getList(q);
if (wordList.size() < addRelationForm.getWords().size()) { if (wordList.size() < addRelationForm.getWords().size()) {
......
package com.dookay.cihai.admin.controller.form;
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* @dookay.com Internet make it happen *
* *
****************************************/
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
/**
* @author houkun
* @date 2018/1/15
*/
@Data
public class AddPicForm {
private String word;
private MultipartFile image;
}
package com.dookay.cihai.admin.controller.form;
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* @dookay.com Internet make it happen *
* *
****************************************/
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
/**
* @author houkun
* @date 2018/1/15
*/
@Data
public class AddVideoForm {
private String word;
private MultipartFile video;
}
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
<name>cihai-web-app</name> <name>cihai-web-app</name>
<artifactId>cihai-app</artifactId> <artifactId>cihai-app</artifactId>
<properties>
<maven.test.skip>true</maven.test.skip>
<jetty.scope>compile</jetty.scope>
</properties>
<dependencies> <dependencies>
......
...@@ -49,23 +49,18 @@ public class WordController extends BaseController { ...@@ -49,23 +49,18 @@ public class WordController extends BaseController {
@Autowired @Autowired
private IWordService wordService; private IWordService wordService;
@Autowired
private IWordRelationService wordRelationService;
/** /**
* 相关词列表 * 词信息
* *
* @author houkun * @author houkun
* @date 2018/1/14 * @date 2018/1/14
*/ */
@RequestMapping(value = "/relate/{id}", method = RequestMethod.GET) @RequestMapping(value = "/info/{id}", method = RequestMethod.GET)
@ApiOperation(value = "相关词", httpMethod = "GET", response = RelateWordsVO.class) @ApiOperation(value = "词信息", httpMethod = "GET", response = WordDTO.class)
public JsonResult relate(@PathVariable @ApiParam(value = "词的id", required = true) Long id) { public JsonResult info(@PathVariable @ApiParam(value = "词的id", required = true) Long id) {
List<WordDomain> relateWords = wordRelationService.getRelateWord(id); WordDomain wordDomain = wordService.get(id);
List<WordDTO> dtos = relateWords.stream().map(WordDTO::fromDomain).collect(Collectors.toList()); return successResult("词信息", WordDTO.fromDomain(wordDomain));
RelateWordsVO res = new RelateWordsVO();
res.setWords(dtos);
return successResult("相关词", res);
} }
/** /**
......
...@@ -14,11 +14,14 @@ package com.dookay.cihai.app.controller; ...@@ -14,11 +14,14 @@ package com.dookay.cihai.app.controller;
* * * *
****************************************/ ****************************************/
import com.dookay.cihai.app.controller.dto.WordDTO;
import com.dookay.cihai.app.controller.vo.CharacterBaikeVO; import com.dookay.cihai.app.controller.vo.CharacterBaikeVO;
import com.dookay.cihai.app.controller.vo.CharacterParaphVO; import com.dookay.cihai.app.controller.vo.CharacterParaphVO;
import com.dookay.cihai.app.controller.vo.StatementBaikeVO; import com.dookay.cihai.app.controller.vo.StatementBaikeVO;
import com.dookay.cihai.app.controller.vo.StatementParaphVO; import com.dookay.cihai.app.controller.vo.StatementParaphVO;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.enums.WordType;
import com.dookay.cihai.core.word.service.IWordRelationService;
import com.dookay.cihai.core.word.service.IWordService; import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.web.controller.BaseController; import com.dookay.coral.common.web.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -28,6 +31,10 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -28,6 +31,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @author houkun * @author houkun
* @date 2018/1/14 * @date 2018/1/14
...@@ -38,6 +45,8 @@ public class WordHtmlController extends BaseController { ...@@ -38,6 +45,8 @@ public class WordHtmlController extends BaseController {
@Autowired @Autowired
private IWordService wordService; private IWordService wordService;
@Autowired
private IWordRelationService wordRelationService;
/** /**
* 字释义 * 字释义
...@@ -94,4 +103,22 @@ public class WordHtmlController extends BaseController { ...@@ -94,4 +103,22 @@ public class WordHtmlController extends BaseController {
mv.addObject("vo", StatementBaikeVO.fromDomain(statement)); mv.addObject("vo", StatementBaikeVO.fromDomain(statement));
return mv; return mv;
} }
/**
* 相关词
*
* @param id
* @return
*/
@RequestMapping(value = "/relate/{id}", method = RequestMethod.GET)
public ModelAndView relate(@PathVariable("id") Long id) {
WordDomain wordDomain = wordService.get(id);
List<WordDomain> relateWords = wordRelationService.getRelateWord(id);
List<WordDTO> vos = relateWords.stream().filter(r -> !r.getId().equals(id)).map(WordDTO::fromDomain).collect(Collectors.toList());
ModelAndView mv = new ModelAndView("/word/relate");
mv.addObject("word", wordDomain);
mv.addObject("vos", vos);
return mv;
}
} }
...@@ -17,7 +17,7 @@ spring.datasource.druid.filter.config.enabled=true ...@@ -17,7 +17,7 @@ spring.datasource.druid.filter.config.enabled=true
# 关闭druid监控 # 关闭druid监控
spring.datasource.druid.filter.stat.enabled=false spring.datasource.druid.filter.stat.enabled=false
# jsp页面配置 # jsp页面配置
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.prefix=/WEB-INF/jsp
spring.mvc.view.suffix=.jsp spring.mvc.view.suffix=.jsp
# mybatis插件配置 # mybatis插件配置
# 设置扫描 mapper xml路径 # 设置扫描 mapper xml路径
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<c:if test="${vo.images.size() > 0}"> <c:if test="${vo.images.size() > 0}">
<div class="header-main-right"> <div class="header-main-right">
<div class="album"> <div class="album">
<a> <a href="/word/pics/${vo.wordId}">
<img src="${vo.images.get(0).file}"> <img src="${vo.images.get(0).file}">
<span>${vo.word}图册(${vo.images.size()})</span> <span>${vo.word}图册(${vo.images.size()})</span>
</a> </a>
......
<%@ include file="/WEB-INF/jsp/include/taglib.jsp" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="word" scope="request" type="com.dookay.cihai.core.word.domain.WordDomain"/>
<jsp:useBean id="vos" scope="request" type="java.util.List<com.dookay.cihai.app.controller.dto.WordDTO>"/>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>辞海 - ${word.word}的相关词</title>
<link rel="stylesheet" href="${ctx}/static/css/vendor.css">
</head>
<body class="relation-word-body">
<div class="container-fluid">
<div class="relation-word">
<h4>相关词</h4>
<div class="list-group">
<span class="list-group-item list-group-item-header">${word.word}</span>
<c:forEach items="${vos}" var="item">
<a class="list-group-item" href="/word/info/${item.wordId}">${item.word}</a>
</c:forEach>
</div>
</div>
</div>
<script src="${ctx}/static/js/plugins/jquery.min.js"></script>
<script src="${ctx}/static/js/vendor.js" merge="true"></script>
<script>
$('.opt').click(function () {
var $this = $(this);
if ($this.hasClass('open')) {
$this.removeClass('open').text('收起')
.siblings('.d-none').removeClass('d-block');
} else {
$this.addClass('open').text('展开')
.siblings('.d-none').addClass('d-block');
}
});
</script>
</body>
</html>
\ No newline at end of file \ No newline at end of file
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<c:if test="${vo.images.size() > 0}"> <c:if test="${vo.images.size() > 0}">
<div class="header-main-right"> <div class="header-main-right">
<div class="album"> <div class="album">
<a> <a href="/word/pics/${vo.wordId}">
<img src="${vo.images.get(0).file}"> <img src="${vo.images.get(0).file}">
<span>${vo.word}图册(${vo.images.size()})</span> <span>${vo.word}图册(${vo.images.size()})</span>
</a> </a>
......
This diff could not be displayed because it is too large.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<title>百科详情-相关词-弹出框</title>
<link rel="stylesheet" href="css/vendor.css">
</head>
<body class="relation-word-body">
<div class="container-fluid">
<div class="relation-word">
<h4>相关词</h4>
<div class="list-group">
<span class="list-group-item list-group-item-header">开头</span>
<a class="list-group-item" href="#">象车</a>
<a class="list-group-item" href="#">象服</a>
<a class="list-group-item" href="#">象罔</a>
<a class="list-group-item d-none" href="#">隐藏的项1</a>
<a class="list-group-item d-none" href="#">隐藏的项2</a>
<span class="opt dropdown-toggle">展开</span>
</div>
<div class="list-group">
<span class="list-group-item list-group-item-header">中间</span>
<a class="list-group-item" href="#">形象工程</a>
<a class="list-group-item" href="#">形象代言人</a>
<a class="list-group-item" href="#">形象大使</a>
</div>
<div class="list-group">
<span class="list-group-item list-group-item-header">结尾</span>
<a class="list-group-item" href="#">历象</a>
<a class="list-group-item" href="#">蛇吞象</a>
<a class="list-group-item" href="#">罔象</a>
</div>
<h4>相关成语</h4>
<div class="list-group">
<a class="list-group-item" href="#">象齿焚身</a>
<a class="list-group-item" href="#">盲人摸象</a>
<a class="list-group-item" href="#">万象森罗</a>
</div>
</div>
</div>
<script src="js/plugins/jquery.min.js"></script>
<script src="js/vendor.js" merge="true"></script>
<script>
$('.opt').click(function() {
var $this = $(this);
if ($this.hasClass('open')) {
$this.removeClass('open').text('收起')
.siblings('.d-none').removeClass('d-block');
} else {
$this.addClass('open').text('展开')
.siblings('.d-none').addClass('d-block');
}
});
</script>
</body>
</html>
\ No newline at end of file \ No newline at end of file
...@@ -51,7 +51,9 @@ public class TestImportWord extends CihaiCoreApplicationTests { ...@@ -51,7 +51,9 @@ public class TestImportWord extends CihaiCoreApplicationTests {
@Test @Test
@Rollback(false) @Rollback(false)
public void testImport() throws Exception { public void testImport() throws Exception {
File excel = ResourceUtils.getFile("classpath:辞海词语导入模版.xls"); // String file = "辞海词语导入模版.xls";
String file = "鲁迅词条_V1.xls";
File excel = ResourceUtils.getFile("classpath:" + file);
List<WordImportDTO> list = ExcelUtils.importExcel(excel, WordImportDTO.class); List<WordImportDTO> list = ExcelUtils.importExcel(excel, WordImportDTO.class);
List<WordDomain> wordDomains = list.stream().map(WordImportDTO::toDomain).collect(Collectors.toList()); List<WordDomain> wordDomains = list.stream().map(WordImportDTO::toDomain).collect(Collectors.toList());
List<CustomDictionaryDomain> dictionaryDomains = list.stream().map(w -> new CustomDictionaryDomain(w.getWord())).collect(Collectors.toList()); List<CustomDictionaryDomain> dictionaryDomains = list.stream().map(w -> new CustomDictionaryDomain(w.getWord())).collect(Collectors.toList());
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!