Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
beyond-clouds
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
4
Issues
4
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
段启岩
beyond-clouds
Commits
639aafe0
Commit
639aafe0
authored
Feb 10, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新消息队列监听器架构2.0
parent
240f7243
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
229 additions
and
120 deletions
+229
-120
src/main/java/cn/meteor/beyondclouds/config/KafkaInitialConfig.java
+1
-1
src/main/java/cn/meteor/beyondclouds/core/listener/DataItemChangeConsumer.java
+78
-0
src/main/java/cn/meteor/beyondclouds/core/listener/DataItemChangeListener.java
+1
-47
src/main/java/cn/meteor/beyondclouds/core/listener/TopicConsumer.java
+1
-1
src/main/java/cn/meteor/beyondclouds/modules/blog/listener/UserInfoChangeListener.java
+20
-0
src/main/java/cn/meteor/beyondclouds/modules/blog/service/impl/BlogServiceImpl.java
+4
-4
src/main/java/cn/meteor/beyondclouds/modules/post/listener/UserInfoChangeListener.java
+20
-0
src/main/java/cn/meteor/beyondclouds/modules/project/listener/UserInfoChangeListener.java
+20
-0
src/main/java/cn/meteor/beyondclouds/modules/project/service/impl/ProjectServiceImpl.java
+4
-4
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionServiceImpl.java
+4
-4
src/main/java/cn/meteor/beyondclouds/modules/queue/message/DataItemChangeMessage.java
+14
-6
src/main/java/cn/meteor/beyondclouds/modules/search/entity/SearchItem.java
+3
-3
src/main/java/cn/meteor/beyondclouds/modules/search/entity/SearchItemId.java
+5
-5
src/main/java/cn/meteor/beyondclouds/modules/search/enums/DataItemType.java
+2
-4
src/main/java/cn/meteor/beyondclouds/modules/search/listener/SearchItemItemChangeListener.java
+2
-6
src/main/java/cn/meteor/beyondclouds/modules/search/service/ISearchService.java
+9
-10
src/main/java/cn/meteor/beyondclouds/modules/search/service/impl/SearchServiceImpl.java
+14
-14
src/main/java/cn/meteor/beyondclouds/modules/user/service/impl/UserServiceImpl.java
+20
-2
src/test/java/cn/meteor/beyondclouds/modules/queue/service/impl/MessageQueueServiceImplTest.java
+2
-2
src/test/java/cn/meteor/beyondclouds/modules/search/repository/ISearchRepositoryTest.java
+2
-2
src/test/java/cn/meteor/beyondclouds/modules/search/service/impl/SearchServiceImplTest.java
+3
-5
No files found.
src/main/java/cn/meteor/beyondclouds/config/KafkaInitialConfig.java
View file @
639aafe0
...
@@ -25,6 +25,6 @@ public class KafkaInitialConfig {
...
@@ -25,6 +25,6 @@ public class KafkaInitialConfig {
*/
*/
@Bean
@Bean
public
NewTopic
initialTopic
()
{
public
NewTopic
initialTopic
()
{
return
new
NewTopic
(
topicProperties
.
getSearchItemUpdate
(),
8
,
(
short
)
1
);
return
new
NewTopic
(
topicProperties
.
getSearchItemUpdate
(),
16
,
(
short
)
1
);
}
}
}
}
src/main/java/cn/meteor/beyondclouds/core/listener/DataItemChangeConsumer.java
0 → 100644
View file @
639aafe0
package
cn
.
meteor
.
beyondclouds
.
core
.
listener
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeType
;
import
cn.meteor.beyondclouds.util.JsonUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.kafka.clients.consumer.ConsumerRecord
;
import
org.springframework.beans.BeansException
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContextAware
;
import
org.springframework.kafka.annotation.KafkaListener
;
import
org.springframework.util.CollectionUtils
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
/**
* 数据更新监听器
* 监听本系统所有的数据更新 操作:更新操作包括
* @author meteor
*/
@Slf4j
public
class
DataItemChangeConsumer
implements
TopicConsumer
,
ApplicationContextAware
{
private
Collection
<
DataItemChangeListener
>
listeners
;
@Override
@KafkaListener
(
topics
=
"${beyondclouds.kafka.topics.search-item-update}"
)
public
final
void
onMessage
(
ConsumerRecord
<?,
String
>
record
)
{
Optional
<
String
>
kafkaMessage
=
Optional
.
ofNullable
(
record
.
value
());
if
(
kafkaMessage
.
isPresent
())
{
DataItemChangeMessage
dataItemChangeMessage
;
try
{
dataItemChangeMessage
=
JsonUtils
.
toBean
(
kafkaMessage
.
get
(),
DataItemChangeMessage
.
class
);
log
.
debug
(
"接收到kafka消息:{}"
,
dataItemChangeMessage
.
toString
());
// 调用每个监听器对应的消息处理函数
DataItemChangeType
changeType
=
dataItemChangeMessage
.
getChangeType
();
listeners
.
forEach
(
listener
->
{
switch
(
changeType
)
{
case
ADD:
listener
.
onDataItemAdd
(
dataItemChangeMessage
);
break
;
case
DELETE:
listener
.
onDataItemDelete
(
dataItemChangeMessage
);
break
;
case
UPDATE:
listener
.
onDataItemUpdate
(
dataItemChangeMessage
);
break
;
case
USER_NICK_UPDATE:
listener
.
onUserNickUpdate
(
dataItemChangeMessage
);
break
;
case
USER_AVATAR_UPDATE:
listener
.
onUserAvatarUpdate
(
dataItemChangeMessage
);
break
;
}
});
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
"DataItemUpdateMessage consume failed:{}"
,
e
.
getMessage
());
}
}
}
@Override
public
void
setApplicationContext
(
ApplicationContext
ctx
)
throws
BeansException
{
Map
<
String
,
DataItemChangeListener
>
listenerMap
=
ctx
.
getBeansOfType
(
DataItemChangeListener
.
class
);
if
(!
CollectionUtils
.
isEmpty
(
listenerMap
))
{
this
.
listeners
=
listenerMap
.
values
();
}
else
{
this
.
listeners
=
List
.
of
();
}
}
}
src/main/java/cn/meteor/beyondclouds/core/listener/DataItemChangeListener.java
View file @
639aafe0
package
cn
.
meteor
.
beyondclouds
.
core
.
listener
;
package
cn
.
meteor
.
beyondclouds
.
core
.
listener
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeType
;
import
cn.meteor.beyondclouds.util.JsonUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.kafka.clients.consumer.ConsumerRecord
;
import
org.springframework.kafka.annotation.KafkaListener
;
import
java.util.Optional
;
/**
/**
* 数据更新监听器
* 数据更新监听器
...
@@ -15,47 +9,7 @@ import java.util.Optional;
...
@@ -15,47 +9,7 @@ import java.util.Optional;
* @author meteor
* @author meteor
*/
*/
@Slf4j
@Slf4j
public
class
DataItemChangeListener
implements
TopicListener
{
public
class
DataItemChangeListener
{
@Override
@KafkaListener
(
topics
=
"${beyondclouds.kafka.topics.search-item-update}"
)
public
final
void
onMessage
(
ConsumerRecord
<?,
String
>
record
)
{
Optional
<
String
>
kafkaMessage
=
Optional
.
ofNullable
(
record
.
value
());
if
(
kafkaMessage
.
isPresent
())
{
DataItemChangeMessage
dataItemChangeMessage
;
try
{
dataItemChangeMessage
=
JsonUtils
.
toBean
(
kafkaMessage
.
get
(),
DataItemChangeMessage
.
class
);
log
.
debug
(
"接收到kafka消息:{}"
,
dataItemChangeMessage
.
toString
());
// 调用对应的消息处理函数
DataItemChangeType
changeType
=
dataItemChangeMessage
.
getChangeType
();
switch
(
changeType
)
{
case
ADD:
onDataItemAdd
(
dataItemChangeMessage
);
break
;
case
DELETE:
onDataItemDelete
(
dataItemChangeMessage
);
break
;
case
UPDATE:
onDataItemUpdate
(
dataItemChangeMessage
);
break
;
case
USER_NICK_UPDATE:
onUserNickUpdate
(
dataItemChangeMessage
);
break
;
case
USER_AVATAR_UPDATE:
onUserAvatarUpdate
(
dataItemChangeMessage
);
break
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
"DataItemUpdateMessage consume failed:{}"
,
e
.
getMessage
());
}
}
}
/**
/**
* 有新数据添加到数据库
* 有新数据添加到数据库
...
...
src/main/java/cn/meteor/beyondclouds/core/listener/Topic
Listen
er.java
→
src/main/java/cn/meteor/beyondclouds/core/listener/Topic
Consum
er.java
View file @
639aafe0
...
@@ -7,7 +7,7 @@ import org.apache.kafka.clients.consumer.ConsumerRecord;
...
@@ -7,7 +7,7 @@ import org.apache.kafka.clients.consumer.ConsumerRecord;
* 监听Kafka队列里面的消息
* 监听Kafka队列里面的消息
* @author meteor
* @author meteor
*/
*/
public
interface
Topic
Listen
er
{
public
interface
Topic
Consum
er
{
/**
/**
* 订阅的topic有新的消息
* 订阅的topic有新的消息
...
...
src/main/java/cn/meteor/beyondclouds/modules/blog/listener/UserInfoChangeListener.java
0 → 100644
View file @
639aafe0
package
cn
.
meteor
.
beyondclouds
.
modules
.
blog
.
listener
;
import
cn.meteor.beyondclouds.core.listener.DataItemChangeListener
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
/**
* 用户信息更新监听器
* @author meteor
*/
@Slf4j
@Component
(
"blogUserInfoChangeListener"
)
public
class
UserInfoChangeListener
extends
DataItemChangeListener
{
@Override
public
void
onUserAvatarUpdate
(
DataItemChangeMessage
dataItemChangeMessage
)
{
log
.
debug
(
"blog-用户头像更新:{}"
,
dataItemChangeMessage
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/blog/service/impl/BlogServiceImpl.java
View file @
639aafe0
...
@@ -14,7 +14,7 @@ import cn.meteor.beyondclouds.modules.blog.mapper.BlogMapper;
...
@@ -14,7 +14,7 @@ import cn.meteor.beyondclouds.modules.blog.mapper.BlogMapper;
import
cn.meteor.beyondclouds.modules.blog.service.*
;
import
cn.meteor.beyondclouds.modules.blog.service.*
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
...
@@ -154,7 +154,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
...
@@ -154,7 +154,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
// 5.发送消息到消息队列
// 5.发送消息到消息队列
messageQueueService
messageQueueService
.
sendItemUpdateMessage
(
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
addMessage
(
Search
ItemType
.
BLOG
,
blog
.
getBlogId
())
DataItemChangeMessage
.
addMessage
(
Data
ItemType
.
BLOG
,
blog
.
getBlogId
())
);
);
}
}
...
@@ -204,7 +204,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
...
@@ -204,7 +204,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
// 5.发送消息到消息队列
// 5.发送消息到消息队列
messageQueueService
messageQueueService
.
sendItemUpdateMessage
(
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
deleteMessage
(
Search
ItemType
.
BLOG
,
blog
.
getBlogId
())
DataItemChangeMessage
.
deleteMessage
(
Data
ItemType
.
BLOG
,
blog
.
getBlogId
())
);
);
}
}
...
@@ -379,7 +379,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
...
@@ -379,7 +379,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
// 5.发送消息到消息队列
// 5.发送消息到消息队列
messageQueueService
messageQueueService
.
sendItemUpdateMessage
(
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
updateMessage
(
Search
ItemType
.
BLOG
,
blog
.
getBlogId
())
DataItemChangeMessage
.
updateMessage
(
Data
ItemType
.
BLOG
,
blog
.
getBlogId
())
);
);
}
}
...
...
src/main/java/cn/meteor/beyondclouds/modules/post/listener/UserInfoChangeListener.java
0 → 100644
View file @
639aafe0
package
cn
.
meteor
.
beyondclouds
.
modules
.
post
.
listener
;
import
cn.meteor.beyondclouds.core.listener.DataItemChangeListener
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
/**
* 用户信息更新监听器
* @author meteor
*/
@Slf4j
@Component
(
"postUserInfoChangeListener"
)
public
class
UserInfoChangeListener
extends
DataItemChangeListener
{
@Override
public
void
onUserAvatarUpdate
(
DataItemChangeMessage
dataItemChangeMessage
)
{
log
.
debug
(
"post-用户头像更新:{}"
,
dataItemChangeMessage
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/project/listener/UserInfoChangeListener.java
0 → 100644
View file @
639aafe0
package
cn
.
meteor
.
beyondclouds
.
modules
.
project
.
listener
;
import
cn.meteor.beyondclouds.core.listener.DataItemChangeListener
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
/**
* 用户信息更新监听器
* @author meteor
*/
@Slf4j
@Component
(
"projectUserInfoChangeListener"
)
public
class
UserInfoChangeListener
extends
DataItemChangeListener
{
@Override
public
void
onUserAvatarUpdate
(
DataItemChangeMessage
dataItemChangeMessage
)
{
log
.
debug
(
"project-用户头像更新:{}"
,
dataItemChangeMessage
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/project/service/impl/ProjectServiceImpl.java
View file @
639aafe0
...
@@ -14,7 +14,7 @@ import cn.meteor.beyondclouds.modules.project.service.IProjectExtService;
...
@@ -14,7 +14,7 @@ import cn.meteor.beyondclouds.modules.project.service.IProjectExtService;
import
cn.meteor.beyondclouds.modules.project.service.IProjectService
;
import
cn.meteor.beyondclouds.modules.project.service.IProjectService
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
cn.meteor.beyondclouds.modules.user.service.IUserService
;
import
cn.meteor.beyondclouds.modules.user.service.IUserService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
...
@@ -102,7 +102,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
...
@@ -102,7 +102,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
// 4.发送消息到消息队列
// 4.发送消息到消息队列
messageQueueService
messageQueueService
.
sendItemUpdateMessage
(
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
addMessage
(
Search
ItemType
.
PROJECT
,
project
.
getProjectId
())
DataItemChangeMessage
.
addMessage
(
Data
ItemType
.
PROJECT
,
project
.
getProjectId
())
);
);
}
}
...
@@ -139,7 +139,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
...
@@ -139,7 +139,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
// 4.发送消息到消息队列
// 4.发送消息到消息队列
messageQueueService
messageQueueService
.
sendItemUpdateMessage
(
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
deleteMessage
(
Search
ItemType
.
PROJECT
,
project
.
getProjectId
())
DataItemChangeMessage
.
deleteMessage
(
Data
ItemType
.
PROJECT
,
project
.
getProjectId
())
);
);
}
}
...
@@ -218,7 +218,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
...
@@ -218,7 +218,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
// 4.发送消息到消息队列
// 4.发送消息到消息队列
messageQueueService
messageQueueService
.
sendItemUpdateMessage
(
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
updateMessage
(
Search
ItemType
.
PROJECT
,
project
.
getProjectId
())
DataItemChangeMessage
.
updateMessage
(
Data
ItemType
.
PROJECT
,
project
.
getProjectId
())
);
);
}
}
...
...
src/main/java/cn/meteor/beyondclouds/modules/question/service/impl/QuestionServiceImpl.java
View file @
639aafe0
...
@@ -11,7 +11,7 @@ import cn.meteor.beyondclouds.modules.question.service.*;
...
@@ -11,7 +11,7 @@ import cn.meteor.beyondclouds.modules.question.service.*;
import
cn.meteor.beyondclouds.modules.question.util.QuestionUtils
;
import
cn.meteor.beyondclouds.modules.question.util.QuestionUtils
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
import
cn.meteor.beyondclouds.modules.topic.entity.Topic
;
...
@@ -148,7 +148,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
...
@@ -148,7 +148,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
// 6.发送消息到消息队列
// 6.发送消息到消息队列
messageQueueService
messageQueueService
.
sendItemUpdateMessage
(
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
addMessage
(
Search
ItemType
.
QUESTION
,
question
.
getQuestionId
())
DataItemChangeMessage
.
addMessage
(
Data
ItemType
.
QUESTION
,
question
.
getQuestionId
())
);
);
}
}
...
@@ -189,7 +189,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
...
@@ -189,7 +189,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
// 9.发送消息到消息队列
// 9.发送消息到消息队列
messageQueueService
messageQueueService
.
sendItemUpdateMessage
(
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
deleteMessage
(
Search
ItemType
.
QUESTION
,
question
.
getQuestionId
())
DataItemChangeMessage
.
deleteMessage
(
Data
ItemType
.
QUESTION
,
question
.
getQuestionId
())
);
);
}
}
...
@@ -238,7 +238,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
...
@@ -238,7 +238,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
// 6.发送消息到消息队列
// 6.发送消息到消息队列
messageQueueService
messageQueueService
.
sendItemUpdateMessage
(
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
updateMessage
(
Search
ItemType
.
QUESTION
,
question
.
getQuestionId
())
DataItemChangeMessage
.
updateMessage
(
Data
ItemType
.
QUESTION
,
question
.
getQuestionId
())
);
);
}
}
...
...
src/main/java/cn/meteor/beyondclouds/modules/queue/message/DataItemChangeMessage.java
View file @
639aafe0
package
cn
.
meteor
.
beyondclouds
.
modules
.
queue
.
message
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
queue
.
message
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
lombok.ToString
;
...
@@ -16,24 +16,32 @@ import java.io.Serializable;
...
@@ -16,24 +16,32 @@ import java.io.Serializable;
@NoArgsConstructor
@NoArgsConstructor
public
class
DataItemChangeMessage
{
public
class
DataItemChangeMessage
{
public
DataItemChangeMessage
(
DataItemChangeType
changeType
,
Search
ItemType
itemType
,
Serializable
itemId
)
{
public
DataItemChangeMessage
(
DataItemChangeType
changeType
,
Data
ItemType
itemType
,
Serializable
itemId
)
{
this
.
itemId
=
itemId
;
this
.
itemId
=
itemId
;
this
.
itemType
=
itemType
;
this
.
itemType
=
itemType
;
this
.
changeType
=
changeType
;
this
.
changeType
=
changeType
;
}
}
public
static
DataItemChangeMessage
addMessage
(
Search
ItemType
itemType
,
Serializable
itemId
)
{
public
static
DataItemChangeMessage
addMessage
(
Data
ItemType
itemType
,
Serializable
itemId
)
{
return
new
DataItemChangeMessage
(
DataItemChangeType
.
ADD
,
itemType
,
itemId
);
return
new
DataItemChangeMessage
(
DataItemChangeType
.
ADD
,
itemType
,
itemId
);
}
}
public
static
DataItemChangeMessage
deleteMessage
(
Search
ItemType
itemType
,
Serializable
itemId
)
{
public
static
DataItemChangeMessage
deleteMessage
(
Data
ItemType
itemType
,
Serializable
itemId
)
{
return
new
DataItemChangeMessage
(
DataItemChangeType
.
DELETE
,
itemType
,
itemId
);
return
new
DataItemChangeMessage
(
DataItemChangeType
.
DELETE
,
itemType
,
itemId
);
}
}
public
static
DataItemChangeMessage
updateMessage
(
Search
ItemType
itemType
,
Serializable
itemId
)
{
public
static
DataItemChangeMessage
updateMessage
(
Data
ItemType
itemType
,
Serializable
itemId
)
{
return
new
DataItemChangeMessage
(
DataItemChangeType
.
UPDATE
,
itemType
,
itemId
);
return
new
DataItemChangeMessage
(
DataItemChangeType
.
UPDATE
,
itemType
,
itemId
);
}
}
public
static
DataItemChangeMessage
userAvatarUpdateMessage
(
DataItemType
itemType
,
Serializable
itemId
)
{
return
new
DataItemChangeMessage
(
DataItemChangeType
.
USER_AVATAR_UPDATE
,
itemType
,
itemId
);
}
public
static
DataItemChangeMessage
userNickUpdateMessage
(
DataItemType
itemType
,
Serializable
itemId
)
{
return
new
DataItemChangeMessage
(
DataItemChangeType
.
USER_NICK_UPDATE
,
itemType
,
itemId
);
}
/**
/**
* 条目ID
* 条目ID
*/
*/
...
@@ -42,7 +50,7 @@ public class DataItemChangeMessage {
...
@@ -42,7 +50,7 @@ public class DataItemChangeMessage {
/**
/**
* 条目类型
* 条目类型
*/
*/
private
Search
ItemType
itemType
;
private
Data
ItemType
itemType
;
/**
/**
* 条目改变类型
* 条目改变类型
...
...
src/main/java/cn/meteor/beyondclouds/modules/search/entity/SearchItem.java
View file @
639aafe0
package
cn
.
meteor
.
beyondclouds
.
modules
.
search
.
entity
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
search
.
entity
;
import
cn.meteor.beyondclouds.modules.blog.bean.BlogDetail
;
import
cn.meteor.beyondclouds.modules.blog.bean.BlogDetail
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
lombok.ToString
;
...
@@ -27,7 +27,7 @@ public class SearchItem {
...
@@ -27,7 +27,7 @@ public class SearchItem {
* @param itemType
* @param itemType
* @param itemId
* @param itemId
*/
*/
public
SearchItem
(
Search
ItemType
itemType
,
String
itemId
)
{
public
SearchItem
(
Data
ItemType
itemType
,
String
itemId
)
{
this
.
id
=
SearchItemId
.
of
(
itemType
,
itemId
);
this
.
id
=
SearchItemId
.
of
(
itemType
,
itemId
);
this
.
itemType
=
itemType
;
this
.
itemType
=
itemType
;
this
.
itemId
=
itemId
;
this
.
itemId
=
itemId
;
...
@@ -46,7 +46,7 @@ public class SearchItem {
...
@@ -46,7 +46,7 @@ public class SearchItem {
* 数据类型
* 数据类型
*/
*/
@Field
(
type
=
FieldType
.
Text
)
@Field
(
type
=
FieldType
.
Text
)
private
Search
ItemType
itemType
;
private
Data
ItemType
itemType
;
/**
/**
* 数据标题
* 数据标题
...
...
src/main/java/cn/meteor/beyondclouds/modules/search/entity/SearchItemId.java
View file @
639aafe0
package
cn
.
meteor
.
beyondclouds
.
modules
.
search
.
entity
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
search
.
entity
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
...
@@ -11,16 +11,16 @@ import lombok.NoArgsConstructor;
...
@@ -11,16 +11,16 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@NoArgsConstructor
public
class
SearchItemId
{
public
class
SearchItemId
{
private
Search
ItemType
itemType
;
private
Data
ItemType
itemType
;
private
String
itemId
;
private
String
itemId
;
public
SearchItemId
(
Search
ItemType
itemType
,
String
itemId
)
{
public
SearchItemId
(
Data
ItemType
itemType
,
String
itemId
)
{
this
.
itemType
=
itemType
;
this
.
itemType
=
itemType
;
this
.
itemId
=
itemId
;
this
.
itemId
=
itemId
;
}
}
public
static
SearchItemId
of
(
SearchItemType
search
ItemType
,
String
itemId
)
{
public
static
SearchItemId
of
(
DataItemType
data
ItemType
,
String
itemId
)
{
return
new
SearchItemId
(
search
ItemType
,
itemId
);
return
new
SearchItemId
(
data
ItemType
,
itemId
);
}
}
@Override
@Override
...
...
src/main/java/cn/meteor/beyondclouds/modules/search/enums/
Search
ItemType.java
→
src/main/java/cn/meteor/beyondclouds/modules/search/enums/
Data
ItemType.java
View file @
639aafe0
...
@@ -3,16 +3,14 @@ package cn.meteor.beyondclouds.modules.search.enums;
...
@@ -3,16 +3,14 @@ package cn.meteor.beyondclouds.modules.search.enums;
import
cn.meteor.beyondclouds.modules.blog.entity.Blog
;
import
cn.meteor.beyondclouds.modules.blog.entity.Blog
;
import
cn.meteor.beyondclouds.modules.project.entity.Project
;
import
cn.meteor.beyondclouds.modules.project.entity.Project
;
import
cn.meteor.beyondclouds.modules.question.entity.Question
;
import
cn.meteor.beyondclouds.modules.question.entity.Question
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
lombok.Data
;
import
lombok.Getter
;
import
lombok.Getter
;
/**
/**
* @author meteor
* @author meteor
*/
*/
@Getter
@Getter
public
enum
Search
ItemType
{
public
enum
Data
ItemType
{
/**
/**
* 用户
* 用户
...
@@ -36,7 +34,7 @@ public enum SearchItemType {
...
@@ -36,7 +34,7 @@ public enum SearchItemType {
private
Class
<?>
classOfItem
;
private
Class
<?>
classOfItem
;
Search
ItemType
(
Class
<?>
classOfItem
)
{
Data
ItemType
(
Class
<?>
classOfItem
)
{
this
.
classOfItem
=
classOfItem
;
this
.
classOfItem
=
classOfItem
;
}
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/search/listener/SearchItemItemChangeListener.java
View file @
639aafe0
...
@@ -2,15 +2,11 @@ package cn.meteor.beyondclouds.modules.search.listener;
...
@@ -2,15 +2,11 @@ package cn.meteor.beyondclouds.modules.search.listener;
import
cn.meteor.beyondclouds.core.listener.DataItemChangeListener
;
import
cn.meteor.beyondclouds.core.listener.DataItemChangeListener
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeType
;
import
cn.meteor.beyondclouds.modules.search.enums.SearchItemType
;
import
cn.meteor.beyondclouds.modules.search.service.ISearchService
;
import
cn.meteor.beyondclouds.modules.search.service.ISearchService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.io.Serializable
;
/**
/**
* @author meteor
* @author meteor
*/
*/
...
@@ -32,11 +28,11 @@ public class SearchItemItemChangeListener extends DataItemChangeListener {
...
@@ -32,11 +28,11 @@ public class SearchItemItemChangeListener extends DataItemChangeListener {
@Override
@Override
public
void
onDataItemUpdate
(
DataItemChangeMessage
dataItemChangeMessage
)
{
public
void
onDataItemUpdate
(
DataItemChangeMessage
dataItemChangeMessage
)
{
searchService
.
dele
teSearchItem
(
dataItemChangeMessage
.
getItemType
(),
String
.
valueOf
(
dataItemChangeMessage
.
getItemId
()));
searchService
.
upda
teSearchItem
(
dataItemChangeMessage
.
getItemType
(),
String
.
valueOf
(
dataItemChangeMessage
.
getItemId
()));
}
}
@Override
@Override
public
void
onDataItemDelete
(
DataItemChangeMessage
dataItemChangeMessage
)
{
public
void
onDataItemDelete
(
DataItemChangeMessage
dataItemChangeMessage
)
{
searchService
.
upda
teSearchItem
(
dataItemChangeMessage
.
getItemType
(),
String
.
valueOf
(
dataItemChangeMessage
.
getItemId
()));
searchService
.
dele
teSearchItem
(
dataItemChangeMessage
.
getItemType
(),
String
.
valueOf
(
dataItemChangeMessage
.
getItemId
()));
}
}
}
}
src/main/java/cn/meteor/beyondclouds/modules/search/service/ISearchService.java
View file @
639aafe0
package
cn
.
meteor
.
beyondclouds
.
modules
.
search
.
service
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
search
.
service
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
java.util.Optional
;
import
java.util.Optional
;
...
@@ -15,32 +14,32 @@ public interface ISearchService {
...
@@ -15,32 +14,32 @@ public interface ISearchService {
/**
/**
* 添加搜索条目
* 添加搜索条目
* @param
search
ItemType
* @param
data
ItemType
* @param itemId
* @param itemId
*/
*/
void
saveSearchItem
(
SearchItemType
search
ItemType
,
String
itemId
);
void
saveSearchItem
(
DataItemType
data
ItemType
,
String
itemId
);
/**
/**
* 删除搜索条目
* 删除搜索条目
* @param
search
ItemType
* @param
data
ItemType
* @param itemId
* @param itemId
*/
*/
void
deleteSearchItem
(
SearchItemType
search
ItemType
,
String
itemId
);
void
deleteSearchItem
(
DataItemType
data
ItemType
,
String
itemId
);
/**
/**
* 更新搜索条目
* 更新搜索条目
* @param
search
ItemType
* @param
data
ItemType
* @param itemId
* @param itemId
*/
*/
void
updateSearchItem
(
SearchItemType
search
ItemType
,
String
itemId
);
void
updateSearchItem
(
DataItemType
data
ItemType
,
String
itemId
);
/**
/**
* 查找搜索条目
* 查找搜索条目
* @param
search
ItemType
* @param
data
ItemType
* @param itemId
* @param itemId
* @return
* @return
*/
*/
Optional
<
SearchItem
>
getSearchItem
(
SearchItemType
search
ItemType
,
String
itemId
);
Optional
<
SearchItem
>
getSearchItem
(
DataItemType
data
ItemType
,
String
itemId
);
/**
/**
* 根据关键词分页搜索
* 根据关键词分页搜索
...
...
src/main/java/cn/meteor/beyondclouds/modules/search/service/impl/SearchServiceImpl.java
View file @
639aafe0
...
@@ -16,7 +16,7 @@ import cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceExcep
...
@@ -16,7 +16,7 @@ import cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceExcep
import
cn.meteor.beyondclouds.modules.question.service.IQuestionService
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionService
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItemId
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItemId
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
cn.meteor.beyondclouds.modules.search.repository.ISearchRepository
;
import
cn.meteor.beyondclouds.modules.search.repository.ISearchRepository
;
import
cn.meteor.beyondclouds.modules.search.service.ISearchService
;
import
cn.meteor.beyondclouds.modules.search.service.ISearchService
;
import
cn.meteor.beyondclouds.modules.topic.service.ITopicService
;
import
cn.meteor.beyondclouds.modules.topic.service.ITopicService
;
...
@@ -62,7 +62,7 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -62,7 +62,7 @@ public class SearchServiceImpl implements ISearchService {
}
}
@Override
@Override
public
void
saveSearchItem
(
Search
ItemType
itemType
,
String
itemId
)
{
public
void
saveSearchItem
(
Data
ItemType
itemType
,
String
itemId
)
{
SearchItem
searchItem
=
getSearchItemInDb
(
itemType
,
itemId
);
SearchItem
searchItem
=
getSearchItemInDb
(
itemType
,
itemId
);
if
(
null
!=
searchItem
)
{
if
(
null
!=
searchItem
)
{
searchRepository
.
save
(
searchItem
);
searchRepository
.
save
(
searchItem
);
...
@@ -71,20 +71,20 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -71,20 +71,20 @@ public class SearchServiceImpl implements ISearchService {
}
}
@Override
@Override
public
void
deleteSearchItem
(
Search
ItemType
itemType
,
String
itemId
)
{
public
void
deleteSearchItem
(
Data
ItemType
itemType
,
String
itemId
)
{
searchRepository
.
deleteById
(
SearchItemId
.
of
(
itemType
,
itemId
));
searchRepository
.
deleteById
(
SearchItemId
.
of
(
itemType
,
itemId
));
log
.
debug
(
"elasticsearch-delete:{}"
,
SearchItemId
.
of
(
itemType
,
itemId
));
log
.
debug
(
"elasticsearch-delete:{}"
,
SearchItemId
.
of
(
itemType
,
itemId
));
}
}
@Override
@Override
public
void
updateSearchItem
(
Search
ItemType
itemType
,
String
itemId
)
{
public
void
updateSearchItem
(
Data
ItemType
itemType
,
String
itemId
)
{
SearchItem
searchItem
=
getSearchItemInDb
(
itemType
,
itemId
);
SearchItem
searchItem
=
getSearchItemInDb
(
itemType
,
itemId
);
searchRepository
.
save
(
searchItem
);
searchRepository
.
save
(
searchItem
);
log
.
debug
(
"elasticsearch-update:{}"
,
searchItem
);
log
.
debug
(
"elasticsearch-update:{}"
,
searchItem
);
}
}
@Override
@Override
public
Optional
<
SearchItem
>
getSearchItem
(
Search
ItemType
itemType
,
String
itemId
)
{
public
Optional
<
SearchItem
>
getSearchItem
(
Data
ItemType
itemType
,
String
itemId
)
{
return
searchRepository
.
findById
(
SearchItemId
.
of
(
itemType
,
itemId
));
return
searchRepository
.
findById
(
SearchItemId
.
of
(
itemType
,
itemId
));
}
}
...
@@ -110,7 +110,7 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -110,7 +110,7 @@ public class SearchServiceImpl implements ISearchService {
List
<
User
>
userList
=
userPage
.
getRecords
();
List
<
User
>
userList
=
userPage
.
getRecords
();
if
(!
CollectionUtils
.
isEmpty
(
userList
))
{
if
(!
CollectionUtils
.
isEmpty
(
userList
))
{
userList
.
forEach
(
user
->
{
userList
.
forEach
(
user
->
{
saveSearchItem
(
Search
ItemType
.
USER
,
user
.
getUserId
());
saveSearchItem
(
Data
ItemType
.
USER
,
user
.
getUserId
());
});
});
current
++;
current
++;
}
else
{
}
else
{
...
@@ -126,7 +126,7 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -126,7 +126,7 @@ public class SearchServiceImpl implements ISearchService {
List
<
Project
>
projectList
=
projectPage
.
getRecords
();
List
<
Project
>
projectList
=
projectPage
.
getRecords
();
if
(!
CollectionUtils
.
isEmpty
(
projectList
))
{
if
(!
CollectionUtils
.
isEmpty
(
projectList
))
{
projectList
.
forEach
(
project
->
{
projectList
.
forEach
(
project
->
{
saveSearchItem
(
Search
ItemType
.
PROJECT
,
String
.
valueOf
(
project
.
getProjectId
()));
saveSearchItem
(
Data
ItemType
.
PROJECT
,
String
.
valueOf
(
project
.
getProjectId
()));
});
});
current
++;
current
++;
}
else
{
}
else
{
...
@@ -142,7 +142,7 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -142,7 +142,7 @@ public class SearchServiceImpl implements ISearchService {
List
<
Question
>
questionList
=
questionPage
.
getRecords
();
List
<
Question
>
questionList
=
questionPage
.
getRecords
();
if
(!
CollectionUtils
.
isEmpty
(
questionList
))
{
if
(!
CollectionUtils
.
isEmpty
(
questionList
))
{
questionList
.
forEach
(
question
->
{
questionList
.
forEach
(
question
->
{
saveSearchItem
(
Search
ItemType
.
QUESTION
,
question
.
getQuestionId
());
saveSearchItem
(
Data
ItemType
.
QUESTION
,
question
.
getQuestionId
());
});
});
current
++;
current
++;
}
else
{
}
else
{
...
@@ -158,7 +158,7 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -158,7 +158,7 @@ public class SearchServiceImpl implements ISearchService {
List
<
Blog
>
questionList
=
blogPage
.
getRecords
();
List
<
Blog
>
questionList
=
blogPage
.
getRecords
();
if
(!
CollectionUtils
.
isEmpty
(
questionList
))
{
if
(!
CollectionUtils
.
isEmpty
(
questionList
))
{
questionList
.
forEach
(
blog
->
{
questionList
.
forEach
(
blog
->
{
saveSearchItem
(
Search
ItemType
.
BLOG
,
blog
.
getBlogId
());
saveSearchItem
(
Data
ItemType
.
BLOG
,
blog
.
getBlogId
());
});
});
current
++;
current
++;
}
else
{
}
else
{
...
@@ -167,7 +167,7 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -167,7 +167,7 @@ public class SearchServiceImpl implements ISearchService {
}
}
}
}
private
SearchItem
getSearchItemInDb
(
Search
ItemType
itemType
,
String
itemId
)
{
private
SearchItem
getSearchItemInDb
(
Data
ItemType
itemType
,
String
itemId
)
{
SearchItem
searchItem
=
null
;
SearchItem
searchItem
=
null
;
try
{
try
{
switch
(
itemType
)
{
switch
(
itemType
)
{
...
@@ -196,7 +196,7 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -196,7 +196,7 @@ public class SearchServiceImpl implements ISearchService {
private
SearchItem
buildSearchItemFromProject
(
String
projectId
)
throws
ProjectServiceException
{
private
SearchItem
buildSearchItemFromProject
(
String
projectId
)
throws
ProjectServiceException
{
ProjectDetail
projectDetail
=
projectService
.
getProject
(
projectId
);
ProjectDetail
projectDetail
=
projectService
.
getProject
(
projectId
);
if
(
null
!=
projectDetail
)
{
if
(
null
!=
projectDetail
)
{
SearchItem
searchItem
=
new
SearchItem
(
Search
ItemType
.
PROJECT
,
projectId
);
SearchItem
searchItem
=
new
SearchItem
(
Data
ItemType
.
PROJECT
,
projectId
);
searchItem
.
setTitle
(
projectDetail
.
getProjectName
());
searchItem
.
setTitle
(
projectDetail
.
getProjectName
());
searchItem
.
setContent
(
projectDetail
.
getProjectDetail
());
searchItem
.
setContent
(
projectDetail
.
getProjectDetail
());
searchItem
.
setCover
(
projectDetail
.
getCover
());
searchItem
.
setCover
(
projectDetail
.
getCover
());
...
@@ -211,7 +211,7 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -211,7 +211,7 @@ public class SearchServiceImpl implements ISearchService {
private
SearchItem
buildSearchItemFromUser
(
String
userId
)
{
private
SearchItem
buildSearchItemFromUser
(
String
userId
)
{
User
user
=
userService
.
getById
(
userId
);
User
user
=
userService
.
getById
(
userId
);
if
(
null
!=
user
)
{
if
(
null
!=
user
)
{
SearchItem
searchItem
=
new
SearchItem
(
Search
ItemType
.
USER
,
userId
);
SearchItem
searchItem
=
new
SearchItem
(
Data
ItemType
.
USER
,
userId
);
searchItem
.
setTitle
(
user
.
getNickName
());
searchItem
.
setTitle
(
user
.
getNickName
());
searchItem
.
setCover
(
user
.
getUserAvatar
());
searchItem
.
setCover
(
user
.
getUserAvatar
());
searchItem
.
setDescription
(
user
.
getSignature
());
searchItem
.
setDescription
(
user
.
getSignature
());
...
@@ -225,7 +225,7 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -225,7 +225,7 @@ public class SearchServiceImpl implements ISearchService {
private
SearchItem
buildSearchItemFromQuestion
(
String
questionId
)
throws
QuestionServiceException
,
QuestionTagServiceException
{
private
SearchItem
buildSearchItemFromQuestion
(
String
questionId
)
throws
QuestionServiceException
,
QuestionTagServiceException
{
QuestionDetail
questionDetail
=
questionService
.
questionDetails
(
questionId
);
QuestionDetail
questionDetail
=
questionService
.
questionDetails
(
questionId
);
if
(
null
!=
questionDetail
)
{
if
(
null
!=
questionDetail
)
{
SearchItem
searchItem
=
new
SearchItem
(
Search
ItemType
.
QUESTION
,
questionId
);
SearchItem
searchItem
=
new
SearchItem
(
Data
ItemType
.
QUESTION
,
questionId
);
searchItem
.
setTitle
(
questionDetail
.
getQuestionTitle
());
searchItem
.
setTitle
(
questionDetail
.
getQuestionTitle
());
searchItem
.
setContent
(
questionDetail
.
getQuestionDetail
());
searchItem
.
setContent
(
questionDetail
.
getQuestionDetail
());
searchItem
.
setDescription
(
questionDetail
.
getQuestionAbstract
());
searchItem
.
setDescription
(
questionDetail
.
getQuestionAbstract
());
...
@@ -239,7 +239,7 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -239,7 +239,7 @@ public class SearchServiceImpl implements ISearchService {
private
SearchItem
buildSearchItemFromBlog
(
String
blogId
)
throws
BlogServiceException
{
private
SearchItem
buildSearchItemFromBlog
(
String
blogId
)
throws
BlogServiceException
{
BlogDetail
blogDetail
=
blogService
.
getBlog
(
blogId
,
Subject
.
anonymous
(
this
.
getClass
().
getName
()));
BlogDetail
blogDetail
=
blogService
.
getBlog
(
blogId
,
Subject
.
anonymous
(
this
.
getClass
().
getName
()));
if
(
null
!=
blogDetail
)
{
if
(
null
!=
blogDetail
)
{
SearchItem
searchItem
=
new
SearchItem
(
Search
ItemType
.
BLOG
,
blogId
);
SearchItem
searchItem
=
new
SearchItem
(
Data
ItemType
.
BLOG
,
blogId
);
searchItem
.
setTitle
(
blogDetail
.
getBlogTitle
());
searchItem
.
setTitle
(
blogDetail
.
getBlogTitle
());
searchItem
.
setContent
(
blogDetail
.
getContent
());
searchItem
.
setContent
(
blogDetail
.
getContent
());
searchItem
.
setCover
(
blogDetail
.
getCover
());
searchItem
.
setCover
(
blogDetail
.
getCover
());
...
...
src/main/java/cn/meteor/beyondclouds/modules/user/service/impl/UserServiceImpl.java
View file @
639aafe0
...
@@ -16,7 +16,7 @@ import cn.meteor.beyondclouds.modules.question.entity.Question;
...
@@ -16,7 +16,7 @@ import cn.meteor.beyondclouds.modules.question.entity.Question;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionService
;
import
cn.meteor.beyondclouds.modules.question.service.IQuestionService
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
cn.meteor.beyondclouds.modules.tag.entity.Tag
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
import
cn.meteor.beyondclouds.modules.tag.service.ITagService
;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
...
@@ -236,12 +236,30 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
...
@@ -236,12 +236,30 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
@Override
@Override
public
void
alterBaseInfo
(
User
user
)
throws
UserServiceException
{
public
void
alterBaseInfo
(
User
user
)
throws
UserServiceException
{
boolean
userNickUpdate
=
!
StringUtils
.
isEmpty
(
user
.
getNickName
());
boolean
userAvatarUpdate
=
!
StringUtils
.
isEmpty
(
user
.
getUserAvatar
());
updateById
(
user
);
updateById
(
user
);
if
(
userNickUpdate
)
{
messageQueueService
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
userNickUpdateMessage
(
DataItemType
.
USER
,
user
.
getUserId
())
);
}
if
(
userAvatarUpdate
)
{
messageQueueService
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
userAvatarUpdateMessage
(
DataItemType
.
USER
,
user
.
getUserId
())
);
}
// 发送消息到消息队列
// 发送消息到消息队列
messageQueueService
messageQueueService
.
sendItemUpdateMessage
(
.
sendItemUpdateMessage
(
DataItemChangeMessage
.
updateMessage
(
Search
ItemType
.
USER
,
user
.
getUserId
())
DataItemChangeMessage
.
updateMessage
(
Data
ItemType
.
USER
,
user
.
getUserId
())
);
);
}
}
...
...
src/test/java/cn/meteor/beyondclouds/modules/queue/service/impl/MessageQueueServiceImplTest.java
View file @
639aafe0
...
@@ -3,7 +3,7 @@ package cn.meteor.beyondclouds.modules.queue.service.impl;
...
@@ -3,7 +3,7 @@ package cn.meteor.beyondclouds.modules.queue.service.impl;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeType
;
import
cn.meteor.beyondclouds.modules.queue.message.DataItemChangeType
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -26,7 +26,7 @@ public class MessageQueueServiceImplTest {
...
@@ -26,7 +26,7 @@ public class MessageQueueServiceImplTest {
// messageQueueService.send(message);
// messageQueueService.send(message);
DataItemChangeMessage
itemUpdateMessage
=
new
DataItemChangeMessage
();
DataItemChangeMessage
itemUpdateMessage
=
new
DataItemChangeMessage
();
itemUpdateMessage
.
setItemId
(
"123"
);
itemUpdateMessage
.
setItemId
(
"123"
);
itemUpdateMessage
.
setItemType
(
Search
ItemType
.
PROJECT
);
itemUpdateMessage
.
setItemType
(
Data
ItemType
.
PROJECT
);
itemUpdateMessage
.
setChangeType
(
DataItemChangeType
.
ADD
);
itemUpdateMessage
.
setChangeType
(
DataItemChangeType
.
ADD
);
messageQueueService
.
sendItemUpdateMessage
(
itemUpdateMessage
);
messageQueueService
.
sendItemUpdateMessage
(
itemUpdateMessage
);
}
}
...
...
src/test/java/cn/meteor/beyondclouds/modules/search/repository/ISearchRepositoryTest.java
View file @
639aafe0
...
@@ -2,7 +2,7 @@ package cn.meteor.beyondclouds.modules.search.repository;
...
@@ -2,7 +2,7 @@ package cn.meteor.beyondclouds.modules.search.repository;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
org.elasticsearch.index.query.DisMaxQueryBuilder
;
import
org.elasticsearch.index.query.DisMaxQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.index.query.QueryBuilders
;
...
@@ -31,7 +31,7 @@ public class ISearchRepositoryTest {
...
@@ -31,7 +31,7 @@ public class ISearchRepositoryTest {
searchItem
.
setTitle
(
"ok"
);
searchItem
.
setTitle
(
"ok"
);
searchItem
.
setCreateTime
(
new
Date
());
searchItem
.
setCreateTime
(
new
Date
());
searchItem
.
setItemId
(
"aad"
);
searchItem
.
setItemId
(
"aad"
);
searchItem
.
setItemType
(
Search
ItemType
.
BLOG
);
searchItem
.
setItemType
(
Data
ItemType
.
BLOG
);
searchRepository
.
save
(
searchItem
);
searchRepository
.
save
(
searchItem
);
}
}
...
...
src/test/java/cn/meteor/beyondclouds/modules/search/service/impl/SearchServiceImplTest.java
View file @
639aafe0
package
cn
.
meteor
.
beyondclouds
.
modules
.
search
.
service
.
impl
;
package
cn
.
meteor
.
beyondclouds
.
modules
.
search
.
service
.
impl
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.enums.
Search
ItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.
Data
ItemType
;
import
cn.meteor.beyondclouds.modules.search.service.ISearchService
;
import
cn.meteor.beyondclouds.modules.search.service.ISearchService
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runner.RunWith
;
...
@@ -11,8 +11,6 @@ import org.springframework.test.context.junit4.SpringRunner;
...
@@ -11,8 +11,6 @@ import org.springframework.test.context.junit4.SpringRunner;
import
java.util.Optional
;
import
java.util.Optional
;
import
static
org
.
junit
.
Assert
.*;
@SpringBootTest
@SpringBootTest
@RunWith
(
SpringRunner
.
class
)
@RunWith
(
SpringRunner
.
class
)
public
class
SearchServiceImplTest
{
public
class
SearchServiceImplTest
{
...
@@ -22,12 +20,12 @@ public class SearchServiceImplTest {
...
@@ -22,12 +20,12 @@ public class SearchServiceImplTest {
@Test
@Test
public
void
saveSearchItem
()
{
public
void
saveSearchItem
()
{
searchService
.
saveSearchItem
(
Search
ItemType
.
BLOG
,
"123"
);
searchService
.
saveSearchItem
(
Data
ItemType
.
BLOG
,
"123"
);
}
}
@Test
@Test
public
void
getSearchItem
()
{
public
void
getSearchItem
()
{
Optional
<
SearchItem
>
optionalSearchItem
=
searchService
.
getSearchItem
(
Search
ItemType
.
BLOG
,
"123"
);
Optional
<
SearchItem
>
optionalSearchItem
=
searchService
.
getSearchItem
(
Data
ItemType
.
BLOG
,
"123"
);
if
(
optionalSearchItem
.
isPresent
())
{
if
(
optionalSearchItem
.
isPresent
())
{
System
.
out
.
println
(
optionalSearchItem
.
get
());
System
.
out
.
println
(
optionalSearchItem
.
get
());
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment