Commit 73f5e7d2 by 段启岩

博客浏览量完成

parent d6b5734c
......@@ -14,7 +14,7 @@ public interface DataItemChangeListener {
* 有新数据添加到数据库
* @param dataItemChangeMessage
*/
default void onDataItemAdd(DataItemChangeMessage dataItemChangeMessage) {
default void onDataItemAdd(DataItemChangeMessage dataItemChangeMessage) throws Exception {
}
......@@ -22,7 +22,7 @@ public interface DataItemChangeListener {
* 有数据从数据库删除
* @param dataItemChangeMessage
*/
default void onDataItemDelete(DataItemChangeMessage dataItemChangeMessage) {
default void onDataItemDelete(DataItemChangeMessage dataItemChangeMessage) throws Exception {
}
......@@ -30,7 +30,7 @@ public interface DataItemChangeListener {
* 数据库里面的数据更新
* @param dataItemChangeMessage
*/
default void onDataItemUpdate(DataItemChangeMessage dataItemChangeMessage) {
default void onDataItemUpdate(DataItemChangeMessage dataItemChangeMessage) throws Exception {
}
......
......@@ -42,22 +42,29 @@ public class DataItemChangeConsumer implements TopicConsumer, ApplicationContext
// 调用每个监听器对应的消息处理函数
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;
// try-catch,保证每个listener互不影响
try {
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(e.getMessage());
}
});
......
......@@ -67,7 +67,7 @@
</select>
<select id="selectAllViewCount" resultType="java.lang.Long">
select count(view_num)
select count(view_number)
from blog
where user_id = #{userId}
</select>
......
......@@ -22,17 +22,17 @@ public class SearchItemItemChangeListener implements DataItemChangeListener {
}
@Override
public void onDataItemAdd(DataItemChangeMessage dataItemChangeMessage) {
public void onDataItemAdd(DataItemChangeMessage dataItemChangeMessage) throws Exception {
searchService.saveSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId()));
}
@Override
public void onDataItemUpdate(DataItemChangeMessage dataItemChangeMessage) {
public void onDataItemUpdate(DataItemChangeMessage dataItemChangeMessage) throws Exception {
searchService.updateSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId()));
}
@Override
public void onDataItemDelete(DataItemChangeMessage dataItemChangeMessage) {
public void onDataItemDelete(DataItemChangeMessage dataItemChangeMessage) throws Exception {
searchService.deleteSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId()));
}
}
package cn.meteor.beyondclouds.modules.search.service;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException;
import cn.meteor.beyondclouds.modules.question.exception.QuestionTagServiceException;
import cn.meteor.beyondclouds.modules.search.entity.SearchItem;
import cn.meteor.beyondclouds.core.queue.message.DataItemType;
import cn.meteor.beyondclouds.modules.user.exception.UserServiceException;
import org.springframework.data.domain.Page;
import java.util.Optional;
......@@ -17,7 +22,7 @@ public interface ISearchService {
* @param dataItemType
* @param itemId
*/
void saveSearchItem(DataItemType dataItemType, String itemId);
void saveSearchItem(DataItemType dataItemType, String itemId) throws BlogServiceException, QuestionTagServiceException, QuestionServiceException, UserServiceException, ProjectServiceException, Exception;
/**
* 删除搜索条目
......@@ -31,7 +36,7 @@ public interface ISearchService {
* @param dataItemType
* @param itemId
*/
void updateSearchItem(DataItemType dataItemType, String itemId);
void updateSearchItem(DataItemType dataItemType, String itemId) throws BlogServiceException, QuestionTagServiceException, QuestionServiceException, UserServiceException, ProjectServiceException, Exception;
/**
* 查找搜索条目
......
......@@ -78,7 +78,7 @@ public class SearchServiceImpl implements ISearchService {
}
@Override
public void saveSearchItem(DataItemType itemType, String itemId) {
public void saveSearchItem(DataItemType itemType, String itemId) throws Exception {
SearchItem searchItem = getSearchItemInDb(itemType, itemId);
if (null != searchItem) {
searchRepository.save(searchItem);
......@@ -93,7 +93,7 @@ public class SearchServiceImpl implements ISearchService {
}
@Override
public void updateSearchItem(DataItemType itemType, String itemId) {
public void updateSearchItem(DataItemType itemType, String itemId) throws Exception {
SearchItem searchItem = getSearchItemInDb(itemType, itemId);
searchRepository.save(searchItem);
log.debug("elasticsearch-update:{}", searchItem);
......@@ -167,7 +167,11 @@ public class SearchServiceImpl implements ISearchService {
List<User> userList = userPage.getRecords();
if (!CollectionUtils.isEmpty(userList)) {
userList.forEach(user -> {
saveSearchItem(DataItemType.USER, user.getUserId());
try {
saveSearchItem(DataItemType.USER, user.getUserId());
} catch (Exception e) {
log.error(e.getMessage());
}
});
current++;
} else {
......@@ -183,7 +187,11 @@ public class SearchServiceImpl implements ISearchService {
List<Project> projectList = projectPage.getRecords();
if (!CollectionUtils.isEmpty(projectList)) {
projectList.forEach(project -> {
saveSearchItem(DataItemType.PROJECT, String.valueOf(project.getProjectId()));
try {
saveSearchItem(DataItemType.PROJECT, String.valueOf(project.getProjectId()));
} catch (Exception e) {
log.error(e.getMessage());
}
});
current++;
} else {
......@@ -199,7 +207,11 @@ public class SearchServiceImpl implements ISearchService {
List<Question> questionList = questionPage.getRecords();
if (!CollectionUtils.isEmpty(questionList)) {
questionList.forEach(question -> {
saveSearchItem(DataItemType.QUESTION, question.getQuestionId());
try {
saveSearchItem(DataItemType.QUESTION, question.getQuestionId());
} catch (Exception e) {
log.error(e.getMessage());
}
});
current++;
} else {
......@@ -215,7 +227,11 @@ public class SearchServiceImpl implements ISearchService {
List<Blog> questionList = blogPage.getRecords();
if (!CollectionUtils.isEmpty(questionList)) {
questionList.forEach(blog -> {
saveSearchItem(DataItemType.BLOG, blog.getBlogId());
try {
saveSearchItem(DataItemType.BLOG, blog.getBlogId());
} catch (Exception e) {
log.error(e.getMessage());
}
});
current++;
} else {
......@@ -231,7 +247,11 @@ public class SearchServiceImpl implements ISearchService {
List<Topic> topicList = topicPage.getRecords();
if (!CollectionUtils.isEmpty(topicList)) {
topicList.forEach(topic -> {
saveSearchItem(DataItemType.TOPIC, topic.getTopicId());
try {
saveSearchItem(DataItemType.TOPIC, topic.getTopicId());
} catch (Exception e) {
log.error(e.getMessage());
}
});
current++;
} else {
......@@ -240,7 +260,7 @@ public class SearchServiceImpl implements ISearchService {
}
}
private SearchItem getSearchItemInDb(DataItemType itemType, String itemId) {
private SearchItem getSearchItemInDb(DataItemType itemType, String itemId) throws BlogServiceException, QuestionTagServiceException, QuestionServiceException, UserServiceException, ProjectServiceException {
SearchItem searchItem = null;
try {
switch (itemType) {
......@@ -261,11 +281,11 @@ public class SearchServiceImpl implements ISearchService {
searchItem = buildSearchItemFromTopic(itemId);
break;
default:
return null;
throw new IllegalArgumentException("该类型不支持搜索:" + itemType.name() + ":" + itemId);
}
} catch (Exception e) {
e.printStackTrace();
log.error("搜索条目存储失败:{}", e.getMessage());
throw e;
}
return searchItem;
}
......
......@@ -139,7 +139,7 @@ public class UserStatisticsListener implements DataItemChangeListener {
if (itemType.equals(DataItemType.BLOG_VIEW_NUM)) {
// 更新博客浏览量
updateUserStatisticValue((String) itemId, "blog_view_num", blogService.allBlogViewCount(operatorId));
updateUserStatisticValue((String) operatorId, "blog_view_num", blogService.allBlogViewCount(operatorId));
}
if (itemType.equals(DataItemType.PROJECT)) {
......
......@@ -24,10 +24,6 @@ public class SearchServiceImplTest {
@Autowired
private ISearchRepository searchRepository;
@Test
public void saveSearchItem() {
searchService.saveSearchItem(DataItemType.BLOG, "123");
}
@Test
public void getSearchItem() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment