Commit c7531497 by 侯昆

添加文档,每日一词和词条推荐

1 parent 62cac554
Showing 21 changed files with 395 additions and 24 deletions
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>cihai-admin</artifactId> <artifactId>cihai-admin</artifactId>
<packaging>war</packaging> <packaging>war</packaging>
<name>cihai-web-admin</name>
<properties> <properties>
<maven.test.skip>true</maven.test.skip> <maven.test.skip>true</maven.test.skip>
...@@ -93,6 +94,9 @@ ...@@ -93,6 +94,9 @@
</dependencies> </dependencies>
<build>
<finalName>cihai-web-admin</finalName>
</build>
</project> </project>
...@@ -24,6 +24,7 @@ import com.dookay.coral.common.web.config.ResourcesMappingProperties; ...@@ -24,6 +24,7 @@ import com.dookay.coral.common.web.config.ResourcesMappingProperties;
import com.dookay.coral.common.web.controller.BaseController; import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult; import com.dookay.coral.common.web.response.JsonResult;
import com.dookay.coral.common.web.utils.upload.model.ImageModel; import com.dookay.coral.common.web.utils.upload.model.ImageModel;
import com.hankcs.hanlp.HanLP;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
...@@ -36,6 +37,7 @@ import java.net.URISyntaxException; ...@@ -36,6 +37,7 @@ import java.net.URISyntaxException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -69,7 +71,10 @@ public class WordRelateController extends BaseController { ...@@ -69,7 +71,10 @@ public class WordRelateController extends BaseController {
return errorResult("词条不存在"); return errorResult("词条不存在");
} }
List<ImageModel> modelList = doUpload(word, image); List<ImageModel> modelList = doUpload(word, image);
List<ImageModel> current = ImageModel.toList(wordDomain.getBaikePhotos()); List<ImageModel> current = new ArrayList<>();
if (StringUtils.isNotEmpty(wordDomain.getBaikePhotos())) {
current = ImageModel.toList(wordDomain.getBaikePhotos());
}
current.addAll(modelList); current.addAll(modelList);
wordDomain.setBaikePhotos(JSON.toJSONString(current)); wordDomain.setBaikePhotos(JSON.toJSONString(current));
wordService.update(wordDomain); wordService.update(wordDomain);
...@@ -85,12 +90,17 @@ public class WordRelateController extends BaseController { ...@@ -85,12 +90,17 @@ 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 prefix = "word/" + word + "/"; String wordPinyin = HanLP.convertToPinyinString(word, "_", false);
String prefix = "word/" + wordPinyin + "/";
String fileUploadPath = resourcesMappingProperties.getUploadsMapping() + prefix; String fileUploadPath = resourcesMappingProperties.getUploadsMapping() + prefix;
try { try {
URI uri = new URI(fileUploadPath + image.getOriginalFilename()); URI dirUri = new URI(fileUploadPath);
Path path = Paths.get(uri); Path dirPath = Paths.get(dirUri);
Files.write(path, image.getBytes()); if (!Files.exists(dirPath)) {
Files.createDirectories(dirPath);
}
Path filePath = Paths.get(new URI(fileUploadPath + image.getOriginalFilename()));
Files.write(filePath, image.getBytes(), StandardOpenOption.CREATE);
ImageModel model = new ImageModel(); ImageModel model = new ImageModel();
String mapInnerPath = resourcesMappingProperties.getUploadsInner(); String mapInnerPath = resourcesMappingProperties.getUploadsInner();
String fileServerPath = String fileServerPath =
...@@ -126,7 +136,10 @@ public class WordRelateController extends BaseController { ...@@ -126,7 +136,10 @@ public class WordRelateController extends BaseController {
return errorResult("词条不存在"); return errorResult("词条不存在");
} }
List<ImageModel> modelList = doUpload(word, video); List<ImageModel> modelList = doUpload(word, video);
List<ImageModel> current = ImageModel.toList(wordDomain.getBaikeVideo()); List<ImageModel> current = new ArrayList<>();
if (StringUtils.isNotEmpty(wordDomain.getBaikeVideo())) {
current = ImageModel.toList(wordDomain.getBaikeVideo());
}
current.addAll(modelList); current.addAll(modelList);
wordDomain.setBaikeVideo(JSON.toJSONString(current)); wordDomain.setBaikeVideo(JSON.toJSONString(current));
wordService.update(wordDomain); wordService.update(wordDomain);
......
# 数据库连接 spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root spring.datasource.username=root
# 加密后的密码 # 加密后的密码
spring.datasource.password=UvoEsj8TZ9a11DQRR42EGuoIRjeuqSagmUzCdUeDnw9PJ9hum0Lx/MTPrpIR7isrPdA8lMpaY77eW4g3f1tCQQ== spring.datasource.password=AmwpshLB35Fgazrs4rCfGlwNBZOTD34ezY/zS751V+7iSJHjr3tDNkpOfnW/y0fjFcMTNX0ycMt3KIUnDi8JYg==
# 加密时的公钥 # 加密时的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJFbtR5GoNcW9j8b4RhZQ1CC1xNBx8Sqphxc8/6vNWYdd7d84AUfSAzFXCzGvuvJ0URNAg9IykPDexY/mHP8dA0CAwEAAQ== public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKgof5ExfKmEZEjq+GuqEoHA8tkIftarLRzUDAxdQzJQtF57DF63gPJJkIZLcKa2t8jt5JC2SRdxERg1A/kx0BMCAwEAAQ==
# 日志 # 日志
logging.level.root=error logging.level.root=error
......
# 数据库连接 spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root spring.datasource.username=root
# 加密后的密码 # 加密后的密码
spring.datasource.password=UvoEsj8TZ9a11DQRR42EGuoIRjeuqSagmUzCdUeDnw9PJ9hum0Lx/MTPrpIR7isrPdA8lMpaY77eW4g3f1tCQQ== spring.datasource.password=AmwpshLB35Fgazrs4rCfGlwNBZOTD34ezY/zS751V+7iSJHjr3tDNkpOfnW/y0fjFcMTNX0ycMt3KIUnDi8JYg==
# 加密时的公钥 # 加密时的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJFbtR5GoNcW9j8b4RhZQ1CC1xNBx8Sqphxc8/6vNWYdd7d84AUfSAzFXCzGvuvJ0URNAg9IykPDexY/mHP8dA0CAwEAAQ== public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKgof5ExfKmEZEjq+GuqEoHA8tkIftarLRzUDAxdQzJQtF57DF63gPJJkIZLcKa2t8jt5JC2SRdxERg1A/kx0BMCAwEAAQ==
# 日志 # 日志
logging.level.root=warn logging.level.root=warn
logging.level.com.dookay.coral.common.core=debug logging.level.com.dookay.coral.common.core=debug
......
...@@ -8,7 +8,9 @@ ...@@ -8,7 +8,9 @@
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<name>cihai-web-app</name>
<artifactId>cihai-app</artifactId> <artifactId>cihai-app</artifactId>
...@@ -68,4 +70,7 @@ ...@@ -68,4 +70,7 @@
</dependency> </dependency>
<!--接口文档--> <!--接口文档-->
</dependencies> </dependencies>
<build>
<finalName>cihai-web-app</finalName>
</build>
</project> </project>
\ No newline at end of file \ No newline at end of file
...@@ -22,6 +22,8 @@ import com.dookay.cihai.core.aip.model.LexerItem; ...@@ -22,6 +22,8 @@ import com.dookay.cihai.core.aip.model.LexerItem;
import com.dookay.cihai.core.aip.model.ScanResult; import com.dookay.cihai.core.aip.model.ScanResult;
import com.dookay.cihai.core.word.domain.CustomDictionaryDomain; import com.dookay.cihai.core.word.domain.CustomDictionaryDomain;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.dto.OneCharacterDTO;
import com.dookay.cihai.core.word.dto.RecommendStatementDTO;
import com.dookay.cihai.core.word.query.CustomDictionaryQuery; import com.dookay.cihai.core.word.query.CustomDictionaryQuery;
import com.dookay.cihai.core.word.query.WordQuery; import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.ICustomDictionaryService; import com.dookay.cihai.core.word.service.ICustomDictionaryService;
...@@ -67,8 +69,8 @@ public class HomeController extends BaseController { ...@@ -67,8 +69,8 @@ public class HomeController extends BaseController {
* @author houkun * @author houkun
* @date 2018/1/9 * @date 2018/1/9
*/ */
@RequestMapping(value = "/search", method = RequestMethod.GET) @RequestMapping(value = "/search", method = RequestMethod.POST)
@ApiOperation(value = "搜索词", nickname = "搜索词", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = WordDTO.class) @ApiOperation(value = "搜索词", nickname = "搜索词", httpMethod = "POST", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = WordDTO.class)
public JsonResult search(String keyword) { public JsonResult search(String keyword) {
log.info("进入搜索:" + keyword); log.info("进入搜索:" + keyword);
if (StringUtils.isBlank(keyword)) { if (StringUtils.isBlank(keyword)) {
...@@ -138,4 +140,16 @@ public class HomeController extends BaseController { ...@@ -138,4 +140,16 @@ public class HomeController extends BaseController {
return errorResult("暂无检索结果"); return errorResult("暂无检索结果");
} }
} }
@RequestMapping(value = "/character", method = RequestMethod.GET)
@ApiOperation(value = "每日一字", nickname = "每日一字", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = OneCharacterDTO.class)
public JsonResult oneCharacter() {
return successResult("每日一字", wordService.oneDayOnCharacter());
}
@RequestMapping(value = "/statement", method = RequestMethod.GET)
@ApiOperation(value = "推荐词条", nickname = "推荐词条", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = RecommendStatementDTO.class)
public JsonResult recommendStatement() {
return successResult("推荐词条", wordService.RecomendStatement());
}
} }
...@@ -24,7 +24,9 @@ import com.dookay.coral.common.web.controller.BaseController; ...@@ -24,7 +24,9 @@ import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult; import com.dookay.coral.common.web.response.JsonResult;
import com.dookay.coral.common.web.utils.upload.model.ImageModel; import com.dookay.coral.common.web.utils.upload.model.ImageModel;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.MimeTypeUtils;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
...@@ -51,6 +53,7 @@ public class WordController extends BaseController { ...@@ -51,6 +53,7 @@ public class WordController extends BaseController {
* @date 2018/1/9 * @date 2018/1/9
*/ */
@RequestMapping(value = "/character/paraph/{id}", method = RequestMethod.GET) @RequestMapping(value = "/character/paraph/{id}", method = RequestMethod.GET)
@ApiOperation(value = "单字释义", nickname = "单字释义", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = CharacterParaphDTO.class)
public JsonResult characterParaph(@PathVariable("id") Long id) { public JsonResult characterParaph(@PathVariable("id") Long id) {
WordDomain character = wordService.get(id); WordDomain character = wordService.get(id);
return successResult("success", CharacterParaphDTO.fromDomain(character)); return successResult("success", CharacterParaphDTO.fromDomain(character));
...@@ -63,6 +66,7 @@ public class WordController extends BaseController { ...@@ -63,6 +66,7 @@ public class WordController extends BaseController {
* @date 2018/1/9 * @date 2018/1/9
*/ */
@RequestMapping(value = "/character/baike/{id}", method = RequestMethod.GET) @RequestMapping(value = "/character/baike/{id}", method = RequestMethod.GET)
@ApiOperation(value = "单字百科", nickname = "单字百科", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = CharacterBaikeDTO.class)
public JsonResult characterBaike(@PathVariable("id") Long id) { public JsonResult characterBaike(@PathVariable("id") Long id) {
WordDomain character = wordService.get(id); WordDomain character = wordService.get(id);
return successResult("success", CharacterBaikeDTO.fromDomain(character)); return successResult("success", CharacterBaikeDTO.fromDomain(character));
...@@ -75,6 +79,7 @@ public class WordController extends BaseController { ...@@ -75,6 +79,7 @@ public class WordController extends BaseController {
* @date 2018/1/9 * @date 2018/1/9
*/ */
@RequestMapping(value = "/statement/paraph/{id}", method = RequestMethod.GET) @RequestMapping(value = "/statement/paraph/{id}", method = RequestMethod.GET)
@ApiOperation(value = "词组释义", nickname = "词组释义", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = StatementParaphDTO.class)
public JsonResult statementParaph(@PathVariable("id") Long id) { public JsonResult statementParaph(@PathVariable("id") Long id) {
WordDomain statement = wordService.get(id); WordDomain statement = wordService.get(id);
return successResult("success", StatementParaphDTO.fromDomain(statement)); return successResult("success", StatementParaphDTO.fromDomain(statement));
...@@ -87,6 +92,7 @@ public class WordController extends BaseController { ...@@ -87,6 +92,7 @@ public class WordController extends BaseController {
* @date 2018/1/9 * @date 2018/1/9
*/ */
@RequestMapping(value = "/statement/baike/{id}", method = RequestMethod.GET) @RequestMapping(value = "/statement/baike/{id}", method = RequestMethod.GET)
@ApiOperation(value = "词组百科", nickname = "词组百科", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = StatementBaikeDTO.class)
public JsonResult statementBaike(@PathVariable("id") Long id) { public JsonResult statementBaike(@PathVariable("id") Long id) {
WordDomain statement = wordService.get(id); WordDomain statement = wordService.get(id);
return successResult("success", StatementBaikeDTO.fromDomain(statement)); return successResult("success", StatementBaikeDTO.fromDomain(statement));
......
...@@ -17,6 +17,8 @@ package com.dookay.cihai.app.controller.dto; ...@@ -17,6 +17,8 @@ package com.dookay.cihai.app.controller.dto;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils; import com.dookay.coral.common.core.utils.lang.StringUtils;
import com.dookay.coral.common.web.utils.upload.model.ImageModel; import com.dookay.coral.common.web.utils.upload.model.ImageModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Arrays; import java.util.Arrays;
...@@ -31,12 +33,19 @@ import java.util.stream.Collectors; ...@@ -31,12 +33,19 @@ import java.util.stream.Collectors;
@Data @Data
public class CharacterBaikeDTO { public class CharacterBaikeDTO {
@ApiModelProperty("词id")
private Long wordId; private Long wordId;
@ApiModelProperty("字")
private String word; private String word;
@ApiModelProperty("上面的简介")
private List<String> brief; private List<String> brief;
@ApiModelProperty("下面的释义主体")
private String body; private String body;
@ApiModelProperty("拼写")
private List<String> spell; private List<String> spell;
@ApiModelProperty("相册")
private List<ImageModel> images; private List<ImageModel> images;
@ApiModelProperty("视频列表")
private List<ImageModel> videos; private List<ImageModel> videos;
public static CharacterBaikeDTO fromDomain(WordDomain word) { public static CharacterBaikeDTO fromDomain(WordDomain word) {
......
...@@ -16,6 +16,7 @@ package com.dookay.cihai.app.controller.dto; ...@@ -16,6 +16,7 @@ package com.dookay.cihai.app.controller.dto;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils; import com.dookay.coral.common.core.utils.lang.StringUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Arrays; import java.util.Arrays;
...@@ -29,10 +30,15 @@ import java.util.stream.Collectors; ...@@ -29,10 +30,15 @@ import java.util.stream.Collectors;
*/ */
@Data @Data
public class CharacterParaphDTO { public class CharacterParaphDTO {
@ApiModelProperty("词id")
private Long wordId; private Long wordId;
@ApiModelProperty("字")
private String word; private String word;
@ApiModelProperty("上面的简介")
private List<String> brief; private List<String> brief;
@ApiModelProperty("下面的释义主体")
private String body; private String body;
@ApiModelProperty("拼写")
private List<String> spell; private List<String> spell;
public static CharacterParaphDTO fromDomain(WordDomain word) { public static CharacterParaphDTO fromDomain(WordDomain word) {
......
...@@ -17,6 +17,7 @@ package com.dookay.cihai.app.controller.dto; ...@@ -17,6 +17,7 @@ package com.dookay.cihai.app.controller.dto;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils; import com.dookay.coral.common.core.utils.lang.StringUtils;
import com.dookay.coral.common.web.utils.upload.model.ImageModel; import com.dookay.coral.common.web.utils.upload.model.ImageModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Arrays; import java.util.Arrays;
...@@ -31,12 +32,19 @@ import java.util.stream.Collectors; ...@@ -31,12 +32,19 @@ import java.util.stream.Collectors;
*/ */
@Data @Data
public class StatementBaikeDTO { public class StatementBaikeDTO {
@ApiModelProperty("词id")
private Long wordId; private Long wordId;
@ApiModelProperty("词")
private String word; private String word;
@ApiModelProperty("上面的简介")
private List<String> brief; private List<String> brief;
@ApiModelProperty("下面的释义主体")
private String body; private String body;
@ApiModelProperty("拼写")
private String spell; private String spell;
@ApiModelProperty("相册")
private List<ImageModel> images; private List<ImageModel> images;
@ApiModelProperty("视频列表")
private List<ImageModel> videos; private List<ImageModel> videos;
public static StatementBaikeDTO fromDomain(WordDomain word) { public static StatementBaikeDTO fromDomain(WordDomain word) {
......
...@@ -16,6 +16,7 @@ package com.dookay.cihai.app.controller.dto; ...@@ -16,6 +16,7 @@ package com.dookay.cihai.app.controller.dto;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils; import com.dookay.coral.common.core.utils.lang.StringUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Arrays; import java.util.Arrays;
...@@ -30,10 +31,16 @@ import java.util.stream.Collectors; ...@@ -30,10 +31,16 @@ import java.util.stream.Collectors;
*/ */
@Data @Data
public class StatementParaphDTO { public class StatementParaphDTO {
@ApiModelProperty("词id")
private Long wordId; private Long wordId;
@ApiModelProperty("字")
private String word; private String word;
@ApiModelProperty("上面的简介")
private List<String> brief; private List<String> brief;
@ApiModelProperty("下面的释义主体")
private String body; private String body;
@ApiModelProperty("拼写")
private String spell; private String spell;
public static StatementParaphDTO fromDomain(WordDomain word) { public static StatementParaphDTO fromDomain(WordDomain word) {
......
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
</web-app>
\ No newline at end of file \ No newline at end of file
/* 前后端通信相关的配置,注释只允许使用多行方式 */
{
"formData":{},
"fileManagerCategoryAction":"filecategory",
"fileManagerCategoryList":[
{
"id":1,
"pid":0,
"type":"image",
"title":"Title"
}
],
/* 上传图片配置项 */
"physicalPath":"/data/www/uploads/niushilan/",
"imageActionName": "uploadimage", /* 执行上传图片的action名称 */
"imageFieldName": "upfile", /* 提交的图片表单名称 */
"imageMaxSize": 2048000, /* 上传大小限制,单位B */
"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
"imageCompressEnable": true, /* 是否压缩图片,默认是true */
"imageCompressBorder": 1600, /* 图片压缩最长边限制 */
"imageInsertAlign": "none", /* 插入的图片浮动方式 */
"imageUrlPrefix": "", /* 图片访问路径前缀 */
"imagePathFormat": "/admin/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
/* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
/* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
/* {time} 会替换成时间戳 */
/* {yyyy} 会替换成四位年份 */
/* {yy} 会替换成两位年份 */
/* {mm} 会替换成两位月份 */
/* {dd} 会替换成两位日期 */
/* {hh} 会替换成两位小时 */
/* {ii} 会替换成两位分钟 */
/* {ss} 会替换成两位秒 */
/* 非法字符 \ : * ? " < > | */
/* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */
/* 涂鸦图片上传配置项 */
"scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
"scrawlFieldName": "upfile", /* 提交的图片表单名称 */
"scrawlPathFormat": "/admin/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
"scrawlUrlPrefix": "", /* 图片访问路径前缀 */
"scrawlInsertAlign": "none",
/* 截图工具上传 */
"snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
"snapscreenPathFormat": "/admin/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"snapscreenUrlPrefix": "", /* 图片访问路径前缀 */
"snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */
/* 抓取远程图片配置 */
"catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
"catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
"catcherFieldName": "source", /* 提交的图片列表表单名称 */
"catcherPathFormat": "/admin/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"catcherUrlPrefix": "", /* 图片访问路径前缀 */
"catcherMaxSize": 2048000, /* 上传大小限制,单位B */
"catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */
/* 上传视频配置 */
"videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
"videoFieldName": "upfile", /* 提交的视频表单名称 */
"videoPathFormat": "/uploads/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"videoUrlPrefix": "", /* 视频访问路径前缀 */
"videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
"videoAllowFiles": [
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */
/* 上传文件配置 */
"fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
"fileFieldName": "upfile", /* 提交的文件表单名称 */
"filePathFormat": "/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"fileUrlPrefix": "", /* 文件访问路径前缀 */
"fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
"fileAllowFiles": [
".png", ".jpg", ".jpeg", ".gif", ".bmp",
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
], /* 上传文件格式显示 */
/* 列出指定目录下的图片 */
"imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
"imageManagerListPath": "/ueditor/jsp/admin/image/", /* 指定要列出图片的目录 */
"imageManagerListSize": 20, /* 每次列出文件数量 */
"imageManagerUrlPrefix": "", /* 图片访问路径前缀 */
"imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
"imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */
/* 列出指定目录下的文件 */
"fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
"fileManagerListPath": "/ueditor/jsp/uploads/file/", /* 指定要列出文件的目录 */
"fileManagerUrlPrefix": "", /* 文件访问路径前缀 */
"fileManagerListSize": 20, /* 每次列出文件数量 */
"fileManagerAllowFiles": [
".png", ".jpg", ".jpeg", ".gif", ".bmp",
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
] /* 列出的文件类型 */
}
\ No newline at end of file \ No newline at end of file
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="com.baidu.ueditor.ActionEnter"
pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%
request.setCharacterEncoding( "utf-8" );
response.setHeader("Content-Type" , "text/html");
/*服务器物理根路径*/
String rootPath = application.getRealPath("/");
out.write( new ActionEnter(request, rootPath ).exec() );
%>
\ No newline at end of file \ No newline at end of file
...@@ -48,6 +48,16 @@ ...@@ -48,6 +48,16 @@
<artifactId>java-sdk</artifactId> <artifactId>java-sdk</artifactId>
<version>3.4.0</version> <version>3.4.0</version>
</dependency> </dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>
package com.dookay.cihai.core.word.dto;
/*****************************************
* *
* @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 com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 一日一词 dto
*
* @author houkun
* @date 2018/1/10
*/
@Data
public class OneCharacterDTO {
@ApiModelProperty("字名")
private String word;
@ApiModelProperty("描述")
private String description;
public static OneCharacterDTO fromDomain(WordDomain word) {
String description = "";
String baikeBrief = word.getBaikeBrief();
int i = StringUtils.indexOf(baikeBrief, '。');
if (i != -1) {
description = StringUtils.substring(baikeBrief, 0, i + 1);
}
OneCharacterDTO dto = new OneCharacterDTO();
dto.setWord(word.getWord());
dto.setDescription(description);
return dto;
}
}
package com.dookay.cihai.core.word.dto;
/*****************************************
* *
* @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 com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* 推荐词条
*
* @author houkun
* @date 2018/1/10
*/
@Data
public class RecommendStatementDTO {
@ApiModelProperty("词")
private String word;
@ApiModelProperty("描述")
private String description;
@ApiModelProperty("相关词")
private List<String> relatedStatement;
public static RecommendStatementDTO fromDomain(WordDomain word) {
String description = "";
String baikeBrief = word.getBaikeBrief();
int i = StringUtils.indexOf(baikeBrief, '。');
if (i != -1) {
description = StringUtils.substring(baikeBrief, 0,i + 1);
}
RecommendStatementDTO dto = new RecommendStatementDTO();
dto.setWord(word.getWord());
dto.setDescription(description);
return dto;
}
}
package com.dookay.cihai.core.word.mapper; package com.dookay.cihai.core.word.mapper;
import com.dookay.coral.common.core.persistence.Mapper;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.persistence.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* 词条 * 词条
* @author wangwei *
* @since 2017年12月06日 * @author wangwei
* @version V1.0 * @version V1.0
*/ * @since 2017年12月06日
*/
public interface WordMapper extends Mapper<WordDomain> { public interface WordMapper extends Mapper<WordDomain> {
/**
* 词长短于
*
* @author houkun
* @date 2018/1/10
*/
WordDomain selectWordLengthLessOrEquealThan(@Param("length") int length);
/**
* 词长长于
*
* @author houkun
* @date 2018/1/10
*/
WordDomain selectWordLengthMoreThan(@Param("length") int length);
} }
package com.dookay.cihai.core.word.service; package com.dookay.cihai.core.word.service;
import com.dookay.cihai.core.word.dto.OneCharacterDTO;
import com.dookay.cihai.core.word.dto.RecommendStatementDTO;
import com.dookay.coral.common.core.service.IBaseService; import com.dookay.coral.common.core.service.IBaseService;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
...@@ -10,4 +12,17 @@ import com.dookay.cihai.core.word.domain.WordDomain; ...@@ -10,4 +12,17 @@ import com.dookay.cihai.core.word.domain.WordDomain;
*/ */
public interface IWordService extends IBaseService<WordDomain> { public interface IWordService extends IBaseService<WordDomain> {
/**
* 每日一字
* @author houkun
* @date 2018/1/10
*/
OneCharacterDTO oneDayOnCharacter();
/**
* 每日一词
* @author houkun
* @date 2018/1/10
*/
RecommendStatementDTO RecomendStatement();
} }
package com.dookay.cihai.core.word.service.impl; package com.dookay.cihai.core.word.service.impl;
import com.dookay.cihai.core.word.dto.OneCharacterDTO;
import com.dookay.cihai.core.word.dto.RecommendStatementDTO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.dookay.coral.common.core.service.impl.BaseServiceImpl; import com.dookay.coral.common.core.service.impl.BaseServiceImpl;
...@@ -20,4 +22,15 @@ public class WordServiceImpl extends BaseServiceImpl<WordDomain> implements IWor ...@@ -20,4 +22,15 @@ public class WordServiceImpl extends BaseServiceImpl<WordDomain> implements IWor
@Autowired @Autowired
private WordMapper wordMapper; private WordMapper wordMapper;
@Override
public OneCharacterDTO oneDayOnCharacter() {
WordDomain wordDomain = wordMapper.selectWordLengthLessOrEquealThan(3);
return OneCharacterDTO.fromDomain(wordDomain);
}
@Override
public RecommendStatementDTO RecomendStatement() {
WordDomain wordDomain = wordMapper.selectWordLengthMoreThan(3);
return RecommendStatementDTO.fromDomain(wordDomain);
}
} }
...@@ -17,9 +17,27 @@ ...@@ -17,9 +17,27 @@
a.`baike_video` as 'baikeVideo', a.`baike_video` as 'baikeVideo',
a.`create_time` as 'createTime', a.`create_time` as 'createTime',
a.`update_time` as 'updateTime', a.`update_time` as 'updateTime',
a.`word_spell` as 'wordSpell',
a.`category` as 'category',
a.`word_alias` as 'wordAlias',
a.`is_polyphone` as 'isPolyphone',
a.`word_brief` as 'wordBrief',
a.`baike_brief` as 'baikeBrief',
</trim> </trim>
from from
`t_word` as a `t_word` as a
</sql> </sql>
<select id="selectWordLengthMoreThan" resultType="com.dookay.cihai.core.word.domain.WordDomain">
<include refid="selectSql"/>
WHERE LENGTH(a.word) &gt; #{length}
ORDER BY a.create_time DESC
LIMIT 0,1
</select>
<select id="selectWordLengthLessOrEquealThan" resultType="com.dookay.cihai.core.word.domain.WordDomain">
<include refid="selectSql"/>
WHERE LENGTH(a.word) &lt;= #{length}
ORDER BY a.create_time DESC
LIMIT 0,1
</select>
</mapper> </mapper>
\ No newline at end of file \ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!