Commit 40103e31 by 侯昆

初步搜索和展示单词

1 parent a9599165
Showing 54 changed files with 988 additions and 657 deletions
package com.dookay.cihai.core.theme.domain;
import lombok.Data;
import java.io.Serializable;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
import java.util.List;
/**
* 专题
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
@Data
@Table(name = "t_theme")
public class ThemeDomain implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@Id
private Long id;
/**
*
*/
private String title;
/**
*
*/
private String introduce;
/**
*
*/
private String basicInfo;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
*
*/
private String subTitle;
}
package com.dookay.cihai.core.theme.domain;
import lombok.Data;
import java.io.Serializable;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
import java.util.List;
/**
* 专题词条关系
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
@Data
@Table(name = "t_theme_word")
public class ThemeWordDomain implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@Id
private Long id;
/**
*
*/
private Long wordId;
/**
*
*/
private Long themeId;
/**
*
*/
private Date createTime;
}
package com.dookay.cihai.core.theme.mapper;
import com.dookay.coral.common.core.persistence.Mapper;
import com.dookay.cihai.core.theme.domain.ThemeDomain;
/**
* 专题
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public interface ThemeMapper extends Mapper<ThemeDomain> {
}
package com.dookay.cihai.core.theme.mapper;
import com.dookay.coral.common.core.persistence.Mapper;
import com.dookay.cihai.core.theme.domain.ThemeWordDomain;
/**
* 专题词条关系
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public interface ThemeWordMapper extends Mapper<ThemeWordDomain> {
}
package com.dookay.cihai.core.theme.query;
import com.dookay.coral.common.core.persistence.Query;
import tk.mybatis.mapper.entity.Example;
import com.dookay.coral.common.core.persistence.criteria.QueryCriteria;
import com.dookay.cihai.core.theme.domain.ThemeDomain;
/**
* 专题
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public class ThemeQuery extends Query {
@Override
public QueryCriteria toCriteria() {
QueryCriteria queryCriteria = new QueryCriteria(ThemeDomain.class);
Example.Criteria criteria = queryCriteria.createCriteria();
//todo 写查询逻辑
return queryCriteria;
}
}
package com.dookay.cihai.core.theme.query;
import com.dookay.coral.common.core.persistence.Query;
import tk.mybatis.mapper.entity.Example;
import com.dookay.coral.common.core.persistence.criteria.QueryCriteria;
import com.dookay.cihai.core.theme.domain.ThemeWordDomain;
/**
* 专题词条关系
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public class ThemeWordQuery extends Query {
@Override
public QueryCriteria toCriteria() {
QueryCriteria queryCriteria = new QueryCriteria(ThemeWordDomain.class);
Example.Criteria criteria = queryCriteria.createCriteria();
//todo 写查询逻辑
return queryCriteria;
}
}
package com.dookay.cihai.core.theme.service;
import com.dookay.coral.common.core.service.IBaseService;
import com.dookay.cihai.core.theme.domain.ThemeDomain;
/**
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public interface IThemeService extends IBaseService<ThemeDomain> {
}
package com.dookay.cihai.core.theme.service;
import com.dookay.coral.common.core.service.IBaseService;
import com.dookay.cihai.core.theme.domain.ThemeWordDomain;
/**
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public interface IThemeWordService extends IBaseService<ThemeWordDomain> {
}
package com.dookay.cihai.core.theme.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dookay.coral.common.core.service.impl.BaseServiceImpl;
import com.dookay.cihai.core.theme.mapper.ThemeMapper;
import com.dookay.cihai.core.theme.domain.ThemeDomain;
import com.dookay.cihai.core.theme.service.IThemeService;
/**
* 专题
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
@SuppressWarnings("ALL")
@Service("themeService")
public class ThemeServiceImpl extends BaseServiceImpl<ThemeDomain> implements IThemeService {
@Autowired
private ThemeMapper themeMapper;
}
package com.dookay.cihai.core.theme.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dookay.coral.common.core.service.impl.BaseServiceImpl;
import com.dookay.cihai.core.theme.mapper.ThemeWordMapper;
import com.dookay.cihai.core.theme.domain.ThemeWordDomain;
import com.dookay.cihai.core.theme.service.IThemeWordService;
/**
* 专题词条关系
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
@SuppressWarnings("ALL")
@Service("themeWordService")
public class ThemeWordServiceImpl extends BaseServiceImpl<ThemeWordDomain> implements IThemeWordService {
@Autowired
private ThemeWordMapper themeWordMapper;
}
package com.dookay.cihai.core.word.domain;
import lombok.Data;
import java.io.Serializable;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
import java.util.List;
/**
* 自定义字典
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
@Data
@Table(name = "t_custom_dictionary")
public class CustomDictionaryDomain implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@Id
private Long id;
/**
*
*/
private String word;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
}
package com.dookay.cihai.core.word.domain;
import lombok.Data;
import java.io.Serializable;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
import java.util.List;
/**
* 词条
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
@Data
@Table(name = "t_word")
public class WordDomain implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@Id
private Long id;
/**
*
*/
private String word;
/**
*
*/
private String body;
/**
*
*/
private String baikePoster;
/**
*
*/
private String baikeVoice;
/**
*
*/
private String baikeDescription;
/**
*
*/
private String baikeParaphrase;
/**
*
*/
private String baikePhotos;
/**
*
*/
private String baikeVideo;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
* 拼音
*/
private String wordSpell;
}
package com.dookay.cihai.core.word.mapper;
import com.dookay.coral.common.core.persistence.Mapper;
import com.dookay.cihai.core.word.domain.CustomDictionaryDomain;
/**
* 自定义字典
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public interface CustomDictionaryMapper extends Mapper<CustomDictionaryDomain> {
}
package com.dookay.cihai.core.word.mapper;
import com.dookay.coral.common.core.persistence.Mapper;
import com.dookay.cihai.core.word.domain.WordDomain;
/**
* 词条
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public interface WordMapper extends Mapper<WordDomain> {
}
package com.dookay.cihai.core.word.query;
import com.dookay.coral.common.core.persistence.Query;
import tk.mybatis.mapper.entity.Example;
import com.dookay.coral.common.core.persistence.criteria.QueryCriteria;
import com.dookay.cihai.core.word.domain.CustomDictionaryDomain;
/**
* 自定义字典
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public class CustomDictionaryQuery extends Query {
@Override
public QueryCriteria toCriteria() {
QueryCriteria queryCriteria = new QueryCriteria(CustomDictionaryDomain.class);
Example.Criteria criteria = queryCriteria.createCriteria();
//todo 写查询逻辑
return queryCriteria;
}
}
package com.dookay.cihai.core.word.query;
import com.dookay.coral.common.core.persistence.Query;
import tk.mybatis.mapper.entity.Example;
import com.dookay.coral.common.core.persistence.criteria.QueryCriteria;
import com.dookay.cihai.core.word.domain.WordDomain;
/**
* 词条
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public class WordQuery extends Query {
@Override
public QueryCriteria toCriteria() {
QueryCriteria queryCriteria = new QueryCriteria(WordDomain.class);
Example.Criteria criteria = queryCriteria.createCriteria();
//todo 写查询逻辑
return queryCriteria;
}
}
package com.dookay.cihai.core.word.service;
import com.dookay.coral.common.core.service.IBaseService;
import com.dookay.cihai.core.word.domain.CustomDictionaryDomain;
/**
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public interface ICustomDictionaryService extends IBaseService<CustomDictionaryDomain> {
}
package com.dookay.cihai.core.word.service;
import com.dookay.coral.common.core.service.IBaseService;
import com.dookay.cihai.core.word.domain.WordDomain;
/**
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
public interface IWordService extends IBaseService<WordDomain> {
}
package com.dookay.cihai.core.word.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dookay.coral.common.core.service.impl.BaseServiceImpl;
import com.dookay.cihai.core.word.mapper.CustomDictionaryMapper;
import com.dookay.cihai.core.word.domain.CustomDictionaryDomain;
import com.dookay.cihai.core.word.service.ICustomDictionaryService;
/**
* 自定义字典
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
@SuppressWarnings("ALL")
@Service("customDictionaryService")
public class CustomDictionaryServiceImpl extends BaseServiceImpl<CustomDictionaryDomain> implements ICustomDictionaryService {
@Autowired
private CustomDictionaryMapper customDictionaryMapper;
}
package com.dookay.cihai.core.word.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dookay.coral.common.core.service.impl.BaseServiceImpl;
import com.dookay.cihai.core.word.mapper.WordMapper;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.service.IWordService;
/**
* 词条
* @author wangwei
* @since 2017年12月07日
* @version V1.0
*/
@SuppressWarnings("ALL")
@Service("wordService")
public class WordServiceImpl extends BaseServiceImpl<WordDomain> implements IWordService {
@Autowired
private WordMapper wordMapper;
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dookay.cihai.core.word.mapper.CustomDictionaryMapper" >
<!-- 公共查询语句 -->
<sql id="selectSql">
select
<trim suffixOverrides="," >
a.`id` as 'id',
a.`word` as 'word',
a.`create_time` as 'createTime',
a.`update_time` as 'updateTime',
</trim>
from
`t_custom_dictionary` as a
</sql>
</mapper>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dookay.cihai.core.theme.mapper.ThemeMapper" >
<!-- 公共查询语句 -->
<sql id="selectSql">
select
<trim suffixOverrides="," >
a.`id` as 'id',
a.`title` as 'title',
a.`introduce` as 'introduce',
a.`basic_info` as 'basicInfo',
a.`create_time` as 'createTime',
a.`update_time` as 'updateTime',
a.`sub_title` as 'subTitle',
</trim>
from
`t_theme` as a
</sql>
</mapper>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dookay.cihai.core.theme.mapper.ThemeWordMapper" >
<!-- 公共查询语句 -->
<sql id="selectSql">
select
<trim suffixOverrides="," >
a.`id` as 'id',
a.`word_id` as 'wordId',
a.`theme_id` as 'themeId',
a.`create_time` as 'createTime',
</trim>
from
`t_theme_word` as a
</sql>
</mapper>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dookay.cihai.core.word.mapper.WordMapper" >
<!-- 公共查询语句 -->
<sql id="selectSql">
select
<trim suffixOverrides="," >
a.`id` as 'id',
a.`word` as 'word',
a.`body` as 'body',
a.`baike_poster` as 'baikePoster',
a.`baike_voice` as 'baikeVoice',
a.`baike_description` as 'baikeDescription',
a.`baike_paraphrase` as 'baikeParaphrase',
a.`baike_photos` as 'baikePhotos',
a.`baike_video` as 'baikeVideo',
a.`create_time` as 'createTime',
a.`update_time` as 'updateTime',
a.`word_spell` as 'wordSpell',
</trim>
from
`t_word` as a
</sql>
</mapper>
\ No newline at end of file \ No newline at end of file
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>cihai-app</artifactId> <artifactId>cihai-admin</artifactId>
<packaging>war</packaging> <packaging>war</packaging>
<properties> <properties>
......
...@@ -13,5 +13,5 @@ logging.level.com.dookay.core=trace ...@@ -13,5 +13,5 @@ logging.level.com.dookay.core=trace
spring.redis.host=192.168.2.27 spring.redis.host=192.168.2.27
spring.redis.password=lyd123456 spring.redis.password=lyd123456
# 文件存储 # 文件存储
coral.web.resource.mapping.uploads-inner=/uploads/* coral.web.resource.mapping.uploads-inner=/uploads/**
coral.web.resource.mapping.uploads-mapping=/data/www/uploads/cihai coral.web.resource.mapping.uploads-mapping=file:/data/upload/cihai/
...@@ -15,11 +15,11 @@ logging.level.com.dookay.core=info ...@@ -15,11 +15,11 @@ logging.level.com.dookay.core=info
logging.file=/data/www/log/cihai.log logging.file=/data/www/log/cihai.log
# redis # redis
spring.redis.host=127.0.0.1 spring.redis.host=192.168.2.27
spring.redis.password=lyd123456
# 上传文件路径映射 # 上传文件路径映射
coral.web.resource.mapping.uploads-inner=/uploads/** coral.web.resource.mapping.uploads-inner=/uploads/**
coral.web.resource.mapping.uploads-mapping=file:/data/www/uploads/demo/ coral.web.resource.mapping.uploads-mapping=file:/data/upload/cihai/
# 打开 gzip # 打开 gzip
server.compression.enabled=true server.compression.enabled=true
...@@ -5,7 +5,6 @@ spring.datasource.username=root ...@@ -5,7 +5,6 @@ spring.datasource.username=root
spring.datasource.password=UvoEsj8TZ9a11DQRR42EGuoIRjeuqSagmUzCdUeDnw9PJ9hum0Lx/MTPrpIR7isrPdA8lMpaY77eW4g3f1tCQQ== spring.datasource.password=UvoEsj8TZ9a11DQRR42EGuoIRjeuqSagmUzCdUeDnw9PJ9hum0Lx/MTPrpIR7isrPdA8lMpaY77eW4g3f1tCQQ==
# 加密时的公钥 # 加密时的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJFbtR5GoNcW9j8b4RhZQ1CC1xNBx8Sqphxc8/6vNWYdd7d84AUfSAzFXCzGvuvJ0URNAg9IykPDexY/mHP8dA0CAwEAAQ== public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJFbtR5GoNcW9j8b4RhZQ1CC1xNBx8Sqphxc8/6vNWYdd7d84AUfSAzFXCzGvuvJ0URNAg9IykPDexY/mHP8dA0CAwEAAQ==
# 日志 # 日志
logging.level.root=warn logging.level.root=warn
logging.level.com.dookay.coral.common.core=debug logging.level.com.dookay.coral.common.core=debug
...@@ -13,13 +12,11 @@ logging.level.com.dookay.coral.common.web=debug ...@@ -13,13 +12,11 @@ logging.level.com.dookay.coral.common.web=debug
logging.level.com.dookay.front=debug logging.level.com.dookay.front=debug
logging.level.com.dookay.core=debug logging.level.com.dookay.core=debug
logging.file=/data/www/log/cihai.log logging.file=/data/www/log/cihai.log
# redis # redis
spring.redis.host=127.0.0.1 spring.redis.host=192.168.2.27
spring.redis.password=lyd123456
# 上传文件路径映射 # 上传文件路径映射
coral.web.resource.mapping.uploads-inner=/uploads/** coral.web.resource.mapping.uploads-inner=/uploads/**
coral.web.resource.mapping.uploads-mapping=file:/data/www/uploads/demo/ coral.web.resource.mapping.uploads-mapping=file:/data/upload/cihai/
# 打开 gzip # 打开 gzip
server.compression.enabled=true server.compression.enabled=true
...@@ -20,13 +20,3 @@ spring.datasource.druid.filter.stat.enabled=false ...@@ -20,13 +20,3 @@ spring.datasource.druid.filter.stat.enabled=false
# 设置扫描 mapper xml路径 # 设置扫描 mapper xml路径
mapper.mappers=com.dookay.coral.common.core.persistence.Mapper mapper.mappers=com.dookay.coral.common.core.persistence.Mapper
mybatis.mapper-locations=classpath*:mapper/*.xml mybatis.mapper-locations=classpath*:mapper/*.xml
# jsp页面配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
# 错误页面
coral.web.view.error.not-found=404
coral.web.view.error.bad-request=400
coral.web.view.error.internal-error=500
coral.web.view.error.service=service
coral.web.view.error.other=other
<?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
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
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">
<parent>
<artifactId>cihai</artifactId>
<groupId>com.dookay</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cihai-app</artifactId>
<dependencies>
<dependency>
<groupId>com.dookay</groupId>
<artifactId>coral-common-web</artifactId>
</dependency>
<dependency>
<groupId>com.dookay</groupId>
<artifactId>cihai-core</artifactId>
</dependency>
<!--开发工具-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
<scope>${jetty.scope}</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jsp</artifactId>
<scope>${jetty.scope}</scope>
</dependency>
<!--表现层-->
<!--工具-->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<!--接口文档-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<!--接口文档-->
</dependencies>
</project>
\ No newline at end of file \ No newline at end of file
package com.dookay.cihai.app;
import com.dookay.cihai.core.CiHaiCoreApplication;
import com.dookay.coral.common.core.CoralCommonCoreMarker;
import com.dookay.coral.common.web.CoralCommonWebMarker;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.cache.annotation.EnableCaching;
/**
* 项目运行入口
*
* @author houkun
*/
@SpringBootApplication(
// 加载不同模块的配置与待注入的Bean
scanBasePackageClasses = {
CoralCommonCoreMarker.class,
CoralCommonWebMarker.class,
CiHaiCoreApplication.class,
CihaiAppApplication.class,
})
@MapperScan(basePackageClasses = CiHaiCoreApplication.class)
@EnableCaching
public class CihaiAppApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(CihaiAppApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(CihaiAppApplication.class, args);
}
}
package com.dookay.cihai.app.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 接口文档配置
*
* @author houkun
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket demoApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.dookay.cihai.app.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("辞海接口文档")
.description("辞海接口文档")
.version("0.1")
.build();
}
}
package com.dookay.cihai.app.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
* Web config
*
* @author houkun
*/
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
package com.dookay.cihai.app.controller;
/*****************************************
* *
* @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.baidu.aip.util.Base64Util;
import com.dookay.cihai.app.controller.dto.WordDTO;
import com.dookay.cihai.core.aip.AipDefaultClient;
import com.dookay.cihai.core.aip.AipWordUtilBean;
import com.dookay.cihai.core.aip.model.LexerItem;
import com.dookay.cihai.core.aip.model.ScanResult;
import com.dookay.cihai.core.word.domain.CustomDictionaryDomain;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.query.CustomDictionaryQuery;
import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.ICustomDictionaryService;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.utils.lang.StringUtils;
import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.MimeTypeUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author houkun
* @date 2018/1/9
*/
@RestController
@RequestMapping("/home")
@Api("首页")
@Slf4j
public class HomeController extends BaseController {
@Autowired
private IWordService wordService;
@Autowired
private ICustomDictionaryService customDictionaryService;
@Autowired
private AipWordUtilBean aipWordUtilBean;
@Autowired
private AipDefaultClient aipDefaultClient;
/**
* 搜索词
*
* @author houkun
* @date 2018/1/9
*/
@RequestMapping(value = "/search", method = RequestMethod.GET)
@ApiOperation(value = "搜索词", nickname = "搜索词", httpMethod = "GET", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = WordDTO.class)
public JsonResult search(String keyword) {
log.info("进入搜索:" + keyword);
if (StringUtils.isBlank(keyword)) {
return errorResult("搜索内容不能为空");
}
String result = null;
boolean inDic = false;
List<CustomDictionaryDomain> dictionaryDomainList = customDictionaryService.getList(new CustomDictionaryQuery());
for (CustomDictionaryDomain dic : dictionaryDomainList) {
if (keyword.contains(dic.getWord())) {
result = dic.getWord();
inDic = true;
}
}
try {
if (!inDic) {
result = aipWordUtilBean.extractQueryKeyword(keyword);
}
WordQuery wordQuery = new WordQuery();
wordQuery.setKeyword(result);
WordDomain wordDomain = wordService.getFirst(wordQuery);
if (wordDomain == null) {
List<LexerItem> items = aipWordUtilBean.getLexerItems(result);
wordQuery.setKeywordList(items.stream().map(LexerItem::getItem).collect(Collectors.toList()));
wordQuery.setKeyword(null);
wordDomain = wordService.getFirst(wordQuery);
if (wordDomain == null) return errorResult(String.format("暂无\"%s\"检索结果", keyword));
return successResult("搜索结果", WordDTO.fromDomain(wordDomain));
}
return successResult("success", WordDTO.fromDomain(wordDomain));
} catch (Exception ex) {
return errorResult(String.format("暂无\"%s\"检索结果", keyword));
}
}
/**
* 图片搜索
*
* @author houkun
* @date 2018/1/9
*/
@RequestMapping(value = "/image/search", method = RequestMethod.POST)
@ApiOperation(value = "图片搜索", nickname = "图片搜索", httpMethod = "POST", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, response = WordDTO.class)
public JsonResult imageSearch(MultipartFile image) {
log.info("图片名称", image.getOriginalFilename());
try {
String encode = Base64Util.encode(image.getBytes());
ScanResult imageResult = aipDefaultClient.scan(encode);
log.info(imageResult.getWordsList().toString());
if (imageResult.getWordsList().size() <= 0) {
return errorResult("暂无检索结果");
}
String name = imageResult.getWordsList().get(0);
log.info(name);
WordQuery wordQuery = new WordQuery();
wordQuery.setKeyword(name);
WordDomain wordDomain = wordService.getFirst(wordQuery);
if (wordDomain == null) {
List<LexerItem> items = aipWordUtilBean.getLexerItems(name);
wordQuery.setKeywordList(items.stream().map(LexerItem::getItem).collect(Collectors.toList()));
wordQuery.setKeyword(null);
wordDomain = wordService.getFirst(wordQuery);
if (wordDomain == null) return errorResult("暂无检索结果");
}
return successResult("搜索结果", WordDTO.fromDomain(wordDomain));
} catch (Exception e) {
return errorResult("暂无检索结果");
}
}
}
package com.dookay.cihai.app.controller;
/*****************************************
* *
* @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.app.controller.dto.CharacterBaikeDTO;
import com.dookay.cihai.app.controller.dto.CharacterParaphDTO;
import com.dookay.cihai.app.controller.dto.StatementBaikeDTO;
import com.dookay.cihai.app.controller.dto.StatementParaphDTO;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 词管理
*
* @author houkun
* @date 2018/1/9
*/
@RestController
@RequestMapping("/word")
@Api("词")
public class WordController extends BaseController {
@Autowired
private IWordService wordService;
/**
* 字释义
*
* @author houkun
* @date 2018/1/9
*/
@RequestMapping(value = "/character/paraph/{id}", method = RequestMethod.GET)
public JsonResult characterParaph(@PathVariable("id") Long id) {
WordDomain character = wordService.get(id);
return successResult("success", CharacterParaphDTO.fromDomain(character));
}
/**
* 字百科
*
* @author houkun
* @date 2018/1/9
*/
@RequestMapping(value = "/character/baike/{id}", method = RequestMethod.GET)
public JsonResult characterBaike(@PathVariable("id") Long id) {
WordDomain character = wordService.get(id);
return successResult("success", CharacterBaikeDTO.fromDomain(character));
}
/**
* 词组释义
*
* @author houkun
* @date 2018/1/9
*/
@RequestMapping(value = "/statement/paraph/{id}", method = RequestMethod.GET)
public JsonResult statementParaph(@PathVariable("id") Long id) {
WordDomain statement = wordService.get(id);
return successResult("success", StatementParaphDTO.fromDomain(statement));
}
/**
* 词组百科
*
* @author houkun
* @date 2018/1/9
*/
@RequestMapping(value = "/statement/baike/{id}", method = RequestMethod.GET)
public JsonResult statementBaike(@PathVariable("id") Long id) {
WordDomain statement = wordService.get(id);
return successResult("success", StatementBaikeDTO.fromDomain(statement));
}
}
package com.dookay.cihai.app.controller.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 lombok.Data;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 单字百科
* @author houkun
* @date 2018/1/9
*/
@Data
public class CharacterBaikeDTO {
private Long wordId;
private String word;
private List<String> brief;
private String body;
private List<String> spell;
public static CharacterBaikeDTO fromDomain(WordDomain word) {
CharacterBaikeDTO dto = new CharacterBaikeDTO();
dto.setWordId(word.getId());
dto.setWord(word.getWord());
List<String> brief = Arrays.stream(StringUtils.split(word.getBaikeBrief(), '`'))
.filter(StringUtils::isNoneBlank)
.map(StringUtils::trim)
.collect(Collectors.toList());
dto.setBrief(brief);
List<String> spell = Arrays.stream(StringUtils.split(word.getWordSpell(), ' '))
.filter(StringUtils::isNoneBlank)
.map(StringUtils::trim)
.collect(Collectors.toList());
dto.setSpell(spell);
dto.setBody(word.getBaikeParaphrase());
return dto;
}
}
package com.dookay.cihai.app.controller.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 lombok.Data;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 单字释义
* @author houkun
* @date 2018/1/9
*/
@Data
public class CharacterParaphDTO {
private Long wordId;
private String word;
private List<String> brief;
private String body;
private List<String> spell;
public static CharacterParaphDTO fromDomain(WordDomain word) {
CharacterParaphDTO dto = new CharacterParaphDTO();
dto.setWordId(word.getId());
dto.setWord(word.getWord());
List<String> brief = Arrays.stream(StringUtils.split(word.getWordBrief(), '`'))
.filter(StringUtils::isNoneBlank)
.map(StringUtils::trim)
.collect(Collectors.toList());
dto.setBrief(brief);
List<String> spell = Arrays.stream(StringUtils.split(word.getWordSpell(), ' '))
.filter(StringUtils::isNoneBlank)
.map(StringUtils::trim)
.collect(Collectors.toList());
dto.setSpell(spell);
dto.setBody(word.getBody());
return dto;
}
}
package com.dookay.cihai.app.controller.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 lombok.Data;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 词组百科
*
* @author houkun
* @date 2018/1/9
*/
@Data
public class StatementBaikeDTO {
private Long wordId;
private String word;
private List<String> brief;
private String body;
private String spell;
public static StatementBaikeDTO fromDomain(WordDomain word) {
StatementBaikeDTO dto = new StatementBaikeDTO();
dto.setWordId(word.getId());
dto.setWord(word.getWord());
List<String> brief = Arrays.stream(StringUtils.split(word.getBaikeBrief(), '`'))
.filter(StringUtils::isNoneBlank)
.map(StringUtils::trim)
.collect(Collectors.toList());
dto.setBrief(brief);
dto.setSpell(word.getWordSpell());
dto.setBody(word.getBaikeParaphrase());
return dto;
}
}
package com.dookay.cihai.app.controller.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 lombok.Data;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 词组释义
*
* @author houkun
* @date 2018/1/9
*/
@Data
public class StatementParaphDTO {
private Long wordId;
private String word;
private List<String> brief;
private String body;
private String spell;
public static StatementParaphDTO fromDomain(WordDomain word) {
StatementParaphDTO dto = new StatementParaphDTO();
dto.setWordId(word.getId());
dto.setWord(word.getWord());
List<String> brief = Arrays.stream(StringUtils.split(word.getWordBrief(), '`'))
.filter(StringUtils::isNoneBlank)
.map(StringUtils::trim)
.collect(Collectors.toList());
dto.setBrief(brief);
dto.setSpell(word.getWordSpell());
dto.setBody(word.getBody());
return dto;
}
}
package com.dookay.cihai.app.controller.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.cihai.core.word.enums.WordType;
import com.dookay.coral.common.core.utils.lang.StringUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 词语 DTO
*
* @author houkun
* @date 2018/1/9
*/
@Data
public class WordDTO {
@ApiModelProperty("词id")
private Long wordId;
@ApiModelProperty("词名称")
private String word;
@ApiModelProperty("词的类型: 1 单字, 2 词语")
private Integer type;
@ApiModelProperty("是否有释义页")
private Boolean hasParaph;
@ApiModelProperty("是否有百科页")
private Boolean hasBaike;
public static WordDTO fromDomain(WordDomain word) {
WordDTO wordDTO = new WordDTO();
wordDTO.setWordId(word.getId());
wordDTO.setWord(word.getWord());
int type =
StringUtils.length(word.getWord()) == 1 ?
WordType.CHARACTER.getValue() :
WordType.STATEMENT.getValue();
wordDTO.setType(type);
wordDTO.setHasParaph(!StringUtils.isAllBlank(word.getBody(), word.getWordBrief()));
wordDTO.setHasBaike(!StringUtils.isAllBlank(word.getBaikeBrief(), word.getBaikeParaphrase()));
return wordDTO;
}
}
# 解决 springboot-devtool 影响 tk.mybatis.mapper 插件报错问题
# 详见: https://github.com/abel533/MyBatis-Spring-Boot/issues/5
restart.include.mapper=/mapper-[\\w-\\.]+jar
restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar
restart.include.coralcommon=/coral-common-[\\w-\\.]+jar
restart.include.coraldemocore=/cihai-core[\\w-\\.]+jar
\ No newline at end of file \ No newline at end of file
debug=false
# 数据库连接
spring.datasource.url=jdbc:mysql://192.168.2.24:3306/cihai
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=AmwpshLB35Fgazrs4rCfGlwNBZOTD34ezY/zS751V+7iSJHjr3tDNkpOfnW/y0fjFcMTNX0ycMt3KIUnDi8JYg==
# 加密时的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKgof5ExfKmEZEjq+GuqEoHA8tkIftarLRzUDAxdQzJQtF57DF63gPJJkIZLcKa2t8jt5JC2SRdxERg1A/kx0BMCAwEAAQ==
# 日志
logging.level.root=info
logging.level.com.dookay=debug
# redis
spring.redis.host=192.168.2.27
spring.redis.password=lyd123456
# 文件存储
coral.web.resource.mapping.uploads-inner=/uploads/**
coral.web.resource.mapping.uploads-mapping=file:/data/upload/cihai/
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=UvoEsj8TZ9a11DQRR42EGuoIRjeuqSagmUzCdUeDnw9PJ9hum0Lx/MTPrpIR7isrPdA8lMpaY77eW4g3f1tCQQ==
# 加密时的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJFbtR5GoNcW9j8b4RhZQ1CC1xNBx8Sqphxc8/6vNWYdd7d84AUfSAzFXCzGvuvJ0URNAg9IykPDexY/mHP8dA0CAwEAAQ==
# 日志
logging.level.root=error
logging.level.com.dookay.coral.common.core=info
logging.level.com.dookay.coral.common.web=info
logging.level.com.dookay.front=info
logging.level.com.dookay.core=info
logging.file=/data/www/log/cihai.log
# redis
spring.redis.host=192.168.2.27
spring.redis.password=lyd123456
# 上传文件路径映射
coral.web.resource.mapping.uploads-inner=/uploads/**
coral.web.resource.mapping.uploads-mapping=file:/data/upload/cihai/
# 打开 gzip
server.compression.enabled=true
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
# 加密后的密码
spring.datasource.password=UvoEsj8TZ9a11DQRR42EGuoIRjeuqSagmUzCdUeDnw9PJ9hum0Lx/MTPrpIR7isrPdA8lMpaY77eW4g3f1tCQQ==
# 加密时的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJFbtR5GoNcW9j8b4RhZQ1CC1xNBx8Sqphxc8/6vNWYdd7d84AUfSAzFXCzGvuvJ0URNAg9IykPDexY/mHP8dA0CAwEAAQ==
# 日志
logging.level.root=warn
logging.level.com.dookay.coral.common.core=debug
logging.level.com.dookay.coral.common.web=debug
logging.level.com.dookay.front=debug
logging.level.com.dookay.core=debug
logging.file=/data/www/log/cihai.log
# redis
spring.redis.host=192.168.2.27
spring.redis.password=lyd123456
# 上传文件路径映射
coral.web.resource.mapping.uploads-inner=/uploads/**
coral.web.resource.mapping.uploads-mapping=file:/data/upload/cihai/
# 打开 gzip
server.compression.enabled=true
# 通用配置
spring.profiles.active=dev
# druid性能相关配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=50
spring.datasource.druid.min-idle=5
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.test-on-return=false
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.validation-query=select 1
spring.datasource.druid.max-wait=5000
spring.datasource.druid.time-between-eviction-runs-millis=600000
spring.datasource.druid.min-evictable-idle-time-millis=1800000
# druid解密配置
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${public-key}
spring.datasource.druid.filter.config.enabled=true
# 关闭druid监控
spring.datasource.druid.filter.stat.enabled=false
# mybatis插件配置
# 设置扫描 mapper xml路径
mapper.mappers=com.dookay.coral.common.core.persistence.Mapper
mybatis.mapper-locations=classpath*:mapper/*.xml
server.jetty.max-http-post-size=20971520
security.basic.enabled=false
security.enable-csrf=false
...@@ -20,6 +20,7 @@ import com.alibaba.fastjson.JSON; ...@@ -20,6 +20,7 @@ import com.alibaba.fastjson.JSON;
import com.baidu.aip.imageclassify.AipImageClassify; import com.baidu.aip.imageclassify.AipImageClassify;
import com.dookay.cihai.core.aip.enums.ImageInputTypeEnum; import com.dookay.cihai.core.aip.enums.ImageInputTypeEnum;
import com.dookay.cihai.core.aip.model.ImageResult; import com.dookay.cihai.core.aip.model.ImageResult;
import com.dookay.coral.common.core.exception.BaseException;
import com.dookay.coral.common.core.exception.ServiceException; import com.dookay.coral.common.core.exception.ServiceException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.StringUtils;
...@@ -100,10 +101,12 @@ public class AipImageClassifyClient { ...@@ -100,10 +101,12 @@ public class AipImageClassifyClient {
* @date 2017/12/7 * @date 2017/12/7
*/ */
private List<ImageResult> parseResult(JSONObject res) throws JSONException { private List<ImageResult> parseResult(JSONObject res) throws JSONException {
if(res.has("error_code")){ try {
log.info("图像识别错误:"+res.toString(2));
throw new ServiceException("图像识别错误:"+res.toString(2)); if (res.has("error_code")) {
}else{ log.info("图像识别错误:" + res.toString(2));
throw new ServiceException("图像识别错误:" + res.toString(2));
} else {
List<ImageResult> imageResultList = new ArrayList<>(); List<ImageResult> imageResultList = new ArrayList<>();
JSONArray jsonArray = res.getJSONArray("result"); JSONArray jsonArray = res.getJSONArray("result");
for (int i = 0; i < jsonArray.length(); i++) { for (int i = 0; i < jsonArray.length(); i++) {
...@@ -115,6 +118,11 @@ public class AipImageClassifyClient { ...@@ -115,6 +118,11 @@ public class AipImageClassifyClient {
} }
return imageResultList; return imageResultList;
} }
} catch (BaseException be) {
throw be;
} catch (Exception e) {
return new ArrayList<>();
}
} }
/** /**
......
...@@ -40,5 +40,12 @@ public class CustomDictionaryDomain implements Serializable { ...@@ -40,5 +40,12 @@ public class CustomDictionaryDomain implements Serializable {
*/ */
private Date updateTime; private Date updateTime;
public CustomDictionaryDomain(){}
public CustomDictionaryDomain(String word) {
Date now = new Date();
this.word = word;
this.createTime = now;
this.updateTime = now;
}
} }
package com.dookay.cihai.core.word.domain; package com.dookay.cihai.core.word.domain;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 词条 * 词条
* @author wangwei *
* @since 2017年12月06日 * @author wangwei
* @version V1.0 * @version V1.0
*/ * @since 2017年12月06日
*/
@Data @Data
@Table(name = "t_word") @Table(name = "t_word")
public class WordDomain implements Serializable { public class WordDomain implements Serializable {
...@@ -51,7 +52,7 @@ public class WordDomain implements Serializable { ...@@ -51,7 +52,7 @@ public class WordDomain implements Serializable {
private String baikeDescription; private String baikeDescription;
/** /**
* * 百科释义
*/ */
private String baikeParaphrase; private String baikeParaphrase;
...@@ -86,4 +87,14 @@ public class WordDomain implements Serializable { ...@@ -86,4 +87,14 @@ public class WordDomain implements Serializable {
private Boolean isPolyphone; private Boolean isPolyphone;
/**
* 词简介
*/
private String wordBrief;
/**
* 百科简介
*/
private String baikeBrief;
} }
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.bean.BeanMapper;
import com.dookay.coral.common.core.utils.excel.ExcelColumn;
import lombok.Data;
import java.util.Date;
/**
* 词条导入DTO
*
* @author houkun
* @date 2018/1/9
*/
@Data
public class WordImportDTO {
@ExcelColumn(name = "词名")
private String word;
@ExcelColumn(name = "拼音")
private String wordSpell;
@ExcelColumn(name = "语词简介")
private String wordBrief;
@ExcelColumn(name = "语词释义")
private String body;
@ExcelColumn(name = "百科简介")
private String baikeBrief;
@ExcelColumn(name = "百科释义")
private String baikeParaphrase;
public WordDomain toDomain(){
WordDomain word = BeanMapper.map(this, WordDomain.class);
word.setCreateTime(new Date());
word.setUpdateTime(new Date());
return word;
}
}
package com.dookay.cihai.core.word.enums;
/*****************************************
* *
* @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.coral.common.core.enums.IEnum;
/**
* @author houkun
* @date 2018/1/9
*/
public enum WordType implements IEnum {
CHARACTER(1, "单字"),
STATEMENT(2, "词");
private int value;
private String description;
WordType(int value, String description) {
this.value = value;
this.description = description;
}
@Override
public int getValue() {
return value;
}
@Override
public String getDescription() {
return description;
}
}
package com.dookay.cihai.core.excel;
/*****************************************
* *
* @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.CihaiCoreApplicationTests;
import com.dookay.cihai.core.word.domain.CustomDictionaryDomain;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.dto.WordImportDTO;
import com.dookay.cihai.core.word.mapper.CustomDictionaryMapper;
import com.dookay.cihai.core.word.mapper.WordMapper;
import com.dookay.cihai.core.word.service.ICustomDictionaryService;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.utils.excel.ExcelUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.util.ResourceUtils;
import java.io.File;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author houkun
* @date 2018/1/9
*/
@Slf4j
public class TestImportWord extends CihaiCoreApplicationTests {
@Autowired
private IWordService wordService;
@Autowired
private CustomDictionaryMapper customDictionaryMapper;
@Autowired
private WordMapper wordMapper;
@Test
@Rollback(false)
public void testImport() throws Exception {
File excel = ResourceUtils.getFile("classpath:辞海词语导入模版.xls");
List<WordImportDTO> list = ExcelUtils.importExcel(excel, WordImportDTO.class);
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());
int i = wordMapper.insertList(wordDomains);
int j = customDictionaryMapper.insertList(dictionaryDomains);
}
}
...@@ -29,5 +29,6 @@ coral.web.view.error.bad-request=400 ...@@ -29,5 +29,6 @@ coral.web.view.error.bad-request=400
coral.web.view.error.internal-error=500 coral.web.view.error.internal-error=500
coral.web.view.error.service=service coral.web.view.error.service=service
coral.web.view.error.other=other coral.web.view.error.other=other
security.basic.enabled=false
security.enable-csrf=false
server.jetty.max-http-post-size=20971520 server.jetty.max-http-post-size=20971520
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 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"> <project xmlns="http://maven.apache.org/POM/4.0.0" 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> <modelVersion>4.0.0</modelVersion>
<groupId>com.dookay</groupId> <groupId>com.dookay</groupId>
...@@ -11,8 +12,8 @@ ...@@ -11,8 +12,8 @@
<description>稻壳开发模板项目</description> <description>稻壳开发模板项目</description>
<properties> <properties>
<dookay.common.version>2.0.15</dookay.common.version> <dookay.common.version>2.0.25</dookay.common.version>
<dookay.dependencies.version>2.0.1</dookay.dependencies.version> <dookay.dependencies.version>2.0.2</dookay.dependencies.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version> <java.version>1.8</java.version>
...@@ -101,5 +102,6 @@ ...@@ -101,5 +102,6 @@
<module>cihai-core</module> <module>cihai-core</module>
<module>cihai-wechat</module> <module>cihai-wechat</module>
<module>cihai-admin</module> <module>cihai-admin</module>
<module>cihai-app</module>
</modules> </modules>
</project> </project>
\ 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!