Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
石磊
/
cihai
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit c35625b7
authored
Jan 11, 2018
by
侯昆
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
更新
1 parent
8421c5ff
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
332 additions
and
18 deletions
serverside/cihai-admin/src/main/java/com/dookay/cihai/admin/controller/WordRelateController.java
serverside/cihai-admin/src/main/java/com/dookay/cihai/admin/controller/form/AddRelationForm.java
serverside/cihai-app/src/main/java/com/dookay/cihai/app/controller/HomeController.java
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/domain/WordRelationDomain.java
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/dto/RecommendStatementDTO.java
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/mapper/WordRelationMapper.java
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/query/WordQuery.java
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/query/WordRelationQuery.java
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/service/IWordRelationService.java
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/service/IWordService.java
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/service/impl/WordRelationServiceImpl.java
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/service/impl/WordServiceImpl.java
serverside/cihai-core/src/main/resources/generator.xml
serverside/cihai-core/src/main/resources/mapper/WordRelationMapper.xml
serverside/cihai-admin/src/main/java/com/dookay/cihai/admin/controller/WordRelateController.java
View file @
c35625b
...
...
@@ -15,8 +15,11 @@ package com.dookay.cihai.admin.controller;
****************************************/
import
com.alibaba.fastjson.JSON
;
import
com.dookay.cihai.admin.controller.form.AddRelationForm
;
import
com.dookay.cihai.core.word.domain.WordDomain
;
import
com.dookay.cihai.core.word.domain.WordRelationDomain
;
import
com.dookay.cihai.core.word.query.WordQuery
;
import
com.dookay.cihai.core.word.service.IWordRelationService
;
import
com.dookay.cihai.core.word.service.IWordService
;
import
com.dookay.coral.common.core.exception.ServiceException
;
import
com.dookay.coral.common.core.utils.lang.StringUtils
;
...
...
@@ -26,6 +29,7 @@ import com.dookay.coral.common.web.response.JsonResult;
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.web.bind.annotation.ModelAttribute
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -40,6 +44,7 @@ import java.nio.file.Paths;
import
java.nio.file.StandardOpenOption
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 词条相关控制器
...
...
@@ -54,6 +59,8 @@ public class WordRelateController extends BaseController {
@Autowired
private
IWordService
wordService
;
@Autowired
private
IWordRelationService
wordRelationService
;
@Autowired
private
ResourcesMappingProperties
resourcesMappingProperties
;
/**
...
...
@@ -144,6 +151,26 @@ public class WordRelateController extends BaseController {
wordDomain
.
setBaikeVideo
(
JSON
.
toJSONString
(
current
));
wordService
.
update
(
wordDomain
);
return
successResult
(
"success"
,
modelList
);
}
/**
* 添加关联
*
* @author houkun
* @date 2018/1/11
*/
@RequestMapping
(
value
=
"/relation/add"
,
method
=
RequestMethod
.
POST
)
public
JsonResult
relationAdd
(
@ModelAttribute
AddRelationForm
addRelationForm
)
{
WordQuery
q
=
new
WordQuery
();
q
.
setWordIn
(
addRelationForm
.
getWords
());
List
<
WordDomain
>
wordList
=
wordService
.
getList
(
q
);
if
(
wordList
.
size
()
<
addRelationForm
.
getWords
().
size
())
{
return
errorResult
(
"存在无效词"
);
}
List
<
WordRelationDomain
>
wordRelationList
=
wordList
.
stream
()
.
map
(
w
->
new
WordRelationDomain
(
w
.
getId
(),
addRelationForm
.
getGroupSlug
()))
.
collect
(
Collectors
.
toList
());
wordRelationService
.
saveBatch
(
wordRelationList
);
return
successResult
(
"success"
);
}
}
serverside/cihai-admin/src/main/java/com/dookay/cihai/admin/controller/form/AddRelationForm.java
0 → 100644
View file @
c35625b
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
java.util.List
;
/**
* @author houkun
* @date 2018/1/11
*/
@Data
public
class
AddRelationForm
{
private
String
groupSlug
;
private
List
<
String
>
words
;
}
serverside/cihai-app/src/main/java/com/dookay/cihai/app/controller/HomeController.java
View file @
c35625b
...
...
@@ -152,6 +152,6 @@ public class HomeController extends BaseController {
@RequestMapping
(
value
=
"/statement"
,
method
=
RequestMethod
.
GET
)
@ApiOperation
(
value
=
"推荐词条"
,
httpMethod
=
"GET"
,
produces
=
MimeTypeUtils
.
APPLICATION_JSON_VALUE
,
response
=
RecommendStatementDTO
.
class
)
public
JsonResult
recommendStatement
()
{
return
successResult
(
"推荐词条"
,
wordService
.
R
ecomendStatement
());
return
successResult
(
"推荐词条"
,
wordService
.
r
ecomendStatement
());
}
}
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/domain/WordRelationDomain.java
0 → 100644
View file @
c35625b
package
com
.
dookay
.
cihai
.
core
.
word
.
domain
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
java.util.Date
;
import
java.util.List
;
/**
* 词条关系
* @author wangwei
* @since 2018年01月11日
* @version V1.0
*/
@Data
@Table
(
name
=
"t_word_relation"
)
@NoArgsConstructor
public
class
WordRelationDomain
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
*
*/
@Id
private
Long
id
;
/**
*
*/
private
Long
wordId
;
/**
*
*/
private
String
groupSlug
;
/**
*
*/
private
Date
createTime
;
public
WordRelationDomain
(
Long
wordId
,
String
groupSlug
)
{
this
.
wordId
=
wordId
;
this
.
groupSlug
=
groupSlug
;
this
.
createTime
=
new
Date
();
}
}
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/dto/RecommendStatementDTO.java
View file @
c35625b
...
...
@@ -20,6 +20,7 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 推荐词条
...
...
@@ -37,7 +38,7 @@ public class RecommendStatementDTO {
@ApiModelProperty
(
"相关词"
)
private
List
<
String
>
relatedStatement
;
public
static
RecommendStatementDTO
fromDomain
(
WordDomain
word
)
{
public
static
RecommendStatementDTO
fromDomain
(
WordDomain
word
,
List
<
WordDomain
>
related
)
{
String
description
=
""
;
String
baikeBrief
=
word
.
getBaikeBrief
();
int
i
=
StringUtils
.
indexOf
(
baikeBrief
,
'。'
);
...
...
@@ -47,6 +48,8 @@ public class RecommendStatementDTO {
RecommendStatementDTO
dto
=
new
RecommendStatementDTO
();
dto
.
setWord
(
word
.
getWord
());
dto
.
setDescription
(
description
);
List
<
String
>
relatedStatement
=
related
.
stream
().
filter
(
w
->
!
w
.
getWord
().
equals
(
word
.
getWord
())).
map
(
WordDomain:
:
getWord
).
collect
(
Collectors
.
toList
());
dto
.
setRelatedStatement
(
relatedStatement
);
return
dto
;
}
}
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/mapper/WordRelationMapper.java
0 → 100644
View file @
c35625b
package
com
.
dookay
.
cihai
.
core
.
word
.
mapper
;
import
com.dookay.coral.common.core.persistence.Mapper
;
import
com.dookay.cihai.core.word.domain.WordRelationDomain
;
/**
* 词条关系
* @author wangwei
* @since 2018年01月11日
* @version V1.0
*/
public
interface
WordRelationMapper
extends
Mapper
<
WordRelationDomain
>
{
}
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/query/WordQuery.java
View file @
c35625b
package
com
.
dookay
.
cihai
.
core
.
word
.
query
;
import
com.dookay.cihai.core.word.domain.WordDomain
;
import
com.dookay.coral.common.core.persistence.Query
;
import
com.dookay.coral.common.core.persistence.criteria.QueryCriteria
;
import
lombok.Data
;
import
tk.mybatis.mapper.entity.Example
;
import
com.dookay.coral.common.core.persistence.criteria.QueryCriteria
;
import
com.dookay.cihai.core.word.domain.WordDomain
;
import
java.util.List
;
...
...
@@ -18,18 +18,26 @@ import java.util.List;
@Data
public
class
WordQuery
extends
Query
{
private
List
<
Long
>
ids
;
private
String
word
;
private
String
keyword
;
private
List
<
String
>
keywordList
;
private
List
<
String
>
wordIn
;
@Override
public
QueryCriteria
toCriteria
()
{
QueryCriteria
queryCriteria
=
new
QueryCriteria
(
WordDomain
.
class
);
Example
.
Criteria
criteria
=
queryCriteria
.
createCriteria
();
if
(
valid
(
ids
))
{
criteria
.
andIn
(
"id"
,
ids
);
}
if
(
valid
(
word
))
{
criteria
.
andEqualTo
(
"word"
,
word
);
}
if
(
valid
(
wordIn
))
{
criteria
.
andIn
(
"word"
,
wordIn
);
}
if
(
valid
(
keyword
))
{
String
str
=
"%"
+
keyword
+
"%"
;
criteria
.
andCondition
(
String
.
format
(
"(word like '%s' or word_alias like '%s')"
,
str
,
str
));
...
...
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/query/WordRelationQuery.java
0 → 100644
View file @
c35625b
package
com
.
dookay
.
cihai
.
core
.
word
.
query
;
import
com.dookay.coral.common.core.persistence.Query
;
import
lombok.Data
;
import
tk.mybatis.mapper.entity.Example
;
import
com.dookay.coral.common.core.persistence.criteria.QueryCriteria
;
import
com.dookay.cihai.core.word.domain.WordRelationDomain
;
import
java.rmi.activation.ActivationGroup_Stub
;
/**
* 词条关系
* @author wangwei
* @since 2018年01月11日
* @version V1.0
*/
@Data
public
class
WordRelationQuery
extends
Query
{
private
String
groupSlug
;
private
Long
wordId
;
@Override
public
QueryCriteria
toCriteria
()
{
QueryCriteria
queryCriteria
=
new
QueryCriteria
(
WordRelationDomain
.
class
);
Example
.
Criteria
criteria
=
queryCriteria
.
createCriteria
();
if
(
valid
(
groupSlug
))
{
criteria
.
andEqualTo
(
"groupSlug"
,
groupSlug
);
}
if
(
valid
(
wordId
))
{
criteria
.
andEqualTo
(
"wordId"
,
wordId
);
}
//todo 写查询逻辑
return
queryCriteria
;
}
}
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/service/IWordRelationService.java
0 → 100644
View file @
c35625b
package
com
.
dookay
.
cihai
.
core
.
word
.
service
;
import
com.dookay.cihai.core.word.domain.WordDomain
;
import
com.dookay.cihai.core.word.domain.WordRelationDomain
;
import
com.dookay.coral.common.core.service.IBaseService
;
import
java.util.List
;
/**
* @author wangwei
* @version V1.0
* @since 2018年01月11日
*/
public
interface
IWordRelationService
extends
IBaseService
<
WordRelationDomain
>
{
/**
* 批量保存
* @author houkun
* @date 2018/1/11
*/
void
saveBatch
(
List
<
WordRelationDomain
>
wordRelationDomainList
);
/**
* 获取相关词
* @param wordId
* @return
* @author houkun
* @date 2018/1/11
*/
List
<
WordDomain
>
getRelateWord
(
Long
wordId
);
}
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/service/IWordService.java
View file @
c35625b
...
...
@@ -24,5 +24,5 @@ public interface IWordService extends IBaseService<WordDomain> {
* @author houkun
* @date 2018/1/10
*/
RecommendStatementDTO
R
ecomendStatement
();
RecommendStatementDTO
r
ecomendStatement
();
}
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/service/impl/WordRelationServiceImpl.java
0 → 100644
View file @
c35625b
package
com
.
dookay
.
cihai
.
core
.
word
.
service
.
impl
;
import
com.dookay.cihai.core.word.domain.WordDomain
;
import
com.dookay.cihai.core.word.domain.WordRelationDomain
;
import
com.dookay.cihai.core.word.mapper.WordRelationMapper
;
import
com.dookay.cihai.core.word.query.WordQuery
;
import
com.dookay.cihai.core.word.query.WordRelationQuery
;
import
com.dookay.cihai.core.word.service.IWordRelationService
;
import
com.dookay.cihai.core.word.service.IWordService
;
import
com.dookay.coral.common.core.exception.ServiceException
;
import
com.dookay.coral.common.core.service.impl.BaseServiceImpl
;
import
com.dookay.coral.common.core.utils.lang.CollectionUtils
;
import
lombok.Data
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* 词条关系
*
* @author wangwei
* @version V1.0
* @since 2018年01月11日
*/
@SuppressWarnings
(
"ALL"
)
@Service
(
"wordRelationService"
)
public
class
WordRelationServiceImpl
extends
BaseServiceImpl
<
WordRelationDomain
>
implements
IWordRelationService
{
@Autowired
private
WordRelationMapper
wordRelationMapper
;
@Autowired
private
IWordService
wordService
;
@Override
public
void
saveBatch
(
List
<
WordRelationDomain
>
wordRelationDomainList
)
{
if
(
CollectionUtils
.
isEmpty
(
wordRelationDomainList
))
{
return
;
}
String
groupSlug
=
wordRelationDomainList
.
get
(
0
).
getGroupSlug
();
WordRelationQuery
q
=
new
WordRelationQuery
();
q
.
setGroupSlug
(
groupSlug
);
List
<
WordRelationDomain
>
currentList
=
super
.
getList
(
q
);
List
<
Long
>
currentWordIds
=
currentList
.
stream
().
map
(
WordRelationDomain:
:
getWordId
).
collect
(
Collectors
.
toList
());
List
<
Long
>
toWordIds
=
wordRelationDomainList
.
stream
().
map
(
WordRelationDomain:
:
getWordId
).
collect
(
Collectors
.
toList
());
List
<
Long
>
left
=
(
List
<
Long
>)
CollectionUtils
.
subtract
(
toWordIds
,
currentWordIds
);
List
<
WordRelationDomain
>
toInsertDomainList
=
wordRelationDomainList
.
stream
().
filter
(
w
->
left
.
contains
(
w
.
getWordId
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
toInsertDomainList
))
{
return
;
}
int
i
=
wordRelationMapper
.
insertList
(
toInsertDomainList
);
if
(
i
!=
toInsertDomainList
.
size
())
{
throw
new
ServiceException
(
"创建关系失败"
);
}
}
@Override
public
List
<
WordDomain
>
getRelateWord
(
Long
wordId
)
{
WordRelationQuery
q
=
new
WordRelationQuery
();
q
.
setWordId
(
wordId
);
WordRelationDomain
wordRelate
=
super
.
getFirst
(
q
);
if
(
wordRelate
==
null
)
{
return
new
ArrayList
<>();
}
String
groupSlug
=
wordRelate
.
getGroupSlug
();
WordRelationQuery
q2
=
new
WordRelationQuery
();
q2
.
setGroupSlug
(
groupSlug
);
List
<
WordRelationDomain
>
relateDomains
=
super
.
getList
(
q2
);
if
(
CollectionUtils
.
isEmpty
(
relateDomains
))
{
return
new
ArrayList
<>();
}
List
<
Long
>
relateWordIds
=
relateDomains
.
stream
().
map
(
WordRelationDomain:
:
getWordId
).
collect
(
Collectors
.
toList
());
WordQuery
wq
=
new
WordQuery
();
wq
.
setIds
(
relateWordIds
);
List
<
WordDomain
>
list
=
wordService
.
getList
(
wq
);
return
list
;
}
}
serverside/cihai-core/src/main/java/com/dookay/cihai/core/word/service/impl/WordServiceImpl.java
View file @
c35625b
...
...
@@ -2,13 +2,17 @@ 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
com.dookay.cihai.core.word.service.IWordRelationService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Lazy
;
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
;
import
java.util.List
;
/**
* 词条
* @author wangwei
...
...
@@ -22,6 +26,10 @@ public class WordServiceImpl extends BaseServiceImpl<WordDomain> implements IWor
@Autowired
private
WordMapper
wordMapper
;
@Autowired
@Lazy
private
IWordRelationService
wordRelationService
;
@Override
public
OneCharacterDTO
oneDayOnCharacter
()
{
WordDomain
wordDomain
=
wordMapper
.
selectWordLengthLessOrEquealThan
(
3
);
...
...
@@ -29,8 +37,9 @@ public class WordServiceImpl extends BaseServiceImpl<WordDomain> implements IWor
}
@Override
public
RecommendStatementDTO
R
ecomendStatement
()
{
public
RecommendStatementDTO
r
ecomendStatement
()
{
WordDomain
wordDomain
=
wordMapper
.
selectWordLengthMoreThan
(
3
);
return
RecommendStatementDTO
.
fromDomain
(
wordDomain
);
List
<
WordDomain
>
relateWord
=
wordRelationService
.
getRelateWord
(
wordDomain
.
getId
());
return
RecommendStatementDTO
.
fromDomain
(
wordDomain
,
relateWord
);
}
}
serverside/cihai-core/src/main/resources/generator.xml
View file @
c35625b
...
...
@@ -24,16 +24,19 @@
<property
name=
"smallint"
value=
"Boolean"
/>
</javaTypeResolver>
<table
tableName=
"t_custom_dictionary"
domainObjectName=
"CustomDictionary"
packageName=
"com.dookay.cihai.core.word"
desc=
"自定义字典"
author=
"wangwei"
>
</table>
<table
tableName=
"t_word"
domainObjectName=
"Word"
packageName=
"com.dookay.cihai.core.word"
desc=
"词条"
author=
"wangwei"
>
</table>
<table
tableName=
"t_theme"
domainObjectName=
"Theme"
packageName=
"com.dookay.cihai.core.theme"
desc=
"专题"
author=
"wangwei"
>
</table>
<table
tableName=
"t_theme_word"
domainObjectName=
"ThemeWord"
packageName=
"com.dookay.cihai.core.theme"
desc=
"专题词条关系"
author=
"wangwei"
>
<!--<table tableName="t_custom_dictionary" domainObjectName="CustomDictionary"-->
<!--packageName="com.dookay.cihai.core.word" desc="自定义字典" author="wangwei">-->
<!--</table>-->
<!--<table tableName="t_word" domainObjectName="Word"-->
<!--packageName="com.dookay.cihai.core.word" desc="词条" author="wangwei">-->
<!--</table>-->
<!--<table tableName="t_theme" domainObjectName="Theme"-->
<!--packageName="com.dookay.cihai.core.theme" desc="专题" author="wangwei">-->
<!--</table>-->
<!--<table tableName="t_theme_word" domainObjectName="ThemeWord"-->
<!--packageName="com.dookay.cihai.core.theme" desc="专题词条关系" author="wangwei">-->
<!--</table>-->
<table
tableName=
"t_word_relation"
domainObjectName=
"WordRelation"
packageName=
"com.dookay.cihai.core.word"
desc=
"词条关系"
author=
"wangwei"
>
</table>
</context>
\ No newline at end of file
serverside/cihai-core/src/main/resources/mapper/WordRelationMapper.xml
0 → 100644
View file @
c35625b
<?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.WordRelationMapper"
>
<!-- 公共查询语句 -->
<sql
id=
"selectSql"
>
select
<trim
suffixOverrides=
","
>
a.`id` as 'id',
a.`word_id` as 'wordId',
a.`group_slug` as 'groupSlug',
a.`create_time` as 'createTime',
</trim>
from
`t_word_relation` as a
</sql>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment