Commit 73f5e7d2 by 段启岩

博客浏览量完成

parent d6b5734c
...@@ -14,7 +14,7 @@ public interface DataItemChangeListener { ...@@ -14,7 +14,7 @@ public interface DataItemChangeListener {
* 有新数据添加到数据库 * 有新数据添加到数据库
* @param dataItemChangeMessage * @param dataItemChangeMessage
*/ */
default void onDataItemAdd(DataItemChangeMessage dataItemChangeMessage) { default void onDataItemAdd(DataItemChangeMessage dataItemChangeMessage) throws Exception {
} }
...@@ -22,7 +22,7 @@ public interface DataItemChangeListener { ...@@ -22,7 +22,7 @@ public interface DataItemChangeListener {
* 有数据从数据库删除 * 有数据从数据库删除
* @param dataItemChangeMessage * @param dataItemChangeMessage
*/ */
default void onDataItemDelete(DataItemChangeMessage dataItemChangeMessage) { default void onDataItemDelete(DataItemChangeMessage dataItemChangeMessage) throws Exception {
} }
...@@ -30,7 +30,7 @@ public interface DataItemChangeListener { ...@@ -30,7 +30,7 @@ public interface DataItemChangeListener {
* 数据库里面的数据更新 * 数据库里面的数据更新
* @param dataItemChangeMessage * @param dataItemChangeMessage
*/ */
default void onDataItemUpdate(DataItemChangeMessage dataItemChangeMessage) { default void onDataItemUpdate(DataItemChangeMessage dataItemChangeMessage) throws Exception {
} }
......
...@@ -42,22 +42,29 @@ public class DataItemChangeConsumer implements TopicConsumer, ApplicationContext ...@@ -42,22 +42,29 @@ public class DataItemChangeConsumer implements TopicConsumer, ApplicationContext
// 调用每个监听器对应的消息处理函数 // 调用每个监听器对应的消息处理函数
DataItemChangeType changeType = dataItemChangeMessage.getChangeType(); DataItemChangeType changeType = dataItemChangeMessage.getChangeType();
listeners.forEach(listener -> { listeners.forEach(listener -> {
switch (changeType) {
case ADD: // try-catch,保证每个listener互不影响
listener.onDataItemAdd(dataItemChangeMessage); try {
break; switch (changeType) {
case DELETE: case ADD:
listener.onDataItemDelete(dataItemChangeMessage); listener.onDataItemAdd(dataItemChangeMessage);
break; break;
case UPDATE: case DELETE:
listener.onDataItemUpdate(dataItemChangeMessage); listener.onDataItemDelete(dataItemChangeMessage);
break; break;
case USER_NICK_UPDATE: case UPDATE:
listener.onUserNickUpdate(dataItemChangeMessage); listener.onDataItemUpdate(dataItemChangeMessage);
break; break;
case USER_AVATAR_UPDATE: case USER_NICK_UPDATE:
listener.onUserAvatarUpdate(dataItemChangeMessage); listener.onUserNickUpdate(dataItemChangeMessage);
break; break;
case USER_AVATAR_UPDATE:
listener.onUserAvatarUpdate(dataItemChangeMessage);
break;
}
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
} }
}); });
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
</select> </select>
<select id="selectAllViewCount" resultType="java.lang.Long"> <select id="selectAllViewCount" resultType="java.lang.Long">
select count(view_num) select count(view_number)
from blog from blog
where user_id = #{userId} where user_id = #{userId}
</select> </select>
......
...@@ -22,17 +22,17 @@ public class SearchItemItemChangeListener implements DataItemChangeListener { ...@@ -22,17 +22,17 @@ public class SearchItemItemChangeListener implements DataItemChangeListener {
} }
@Override @Override
public void onDataItemAdd(DataItemChangeMessage dataItemChangeMessage) { public void onDataItemAdd(DataItemChangeMessage dataItemChangeMessage) throws Exception {
searchService.saveSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId())); searchService.saveSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId()));
} }
@Override @Override
public void onDataItemUpdate(DataItemChangeMessage dataItemChangeMessage) { public void onDataItemUpdate(DataItemChangeMessage dataItemChangeMessage) throws Exception {
searchService.updateSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId())); searchService.updateSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId()));
} }
@Override @Override
public void onDataItemDelete(DataItemChangeMessage dataItemChangeMessage) { public void onDataItemDelete(DataItemChangeMessage dataItemChangeMessage) throws Exception {
searchService.deleteSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId())); searchService.deleteSearchItem(dataItemChangeMessage.getItemType(), String.valueOf(dataItemChangeMessage.getItemId()));
} }
} }
package cn.meteor.beyondclouds.modules.search.service; 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.modules.search.entity.SearchItem;
import cn.meteor.beyondclouds.core.queue.message.DataItemType; import cn.meteor.beyondclouds.core.queue.message.DataItemType;
import cn.meteor.beyondclouds.modules.user.exception.UserServiceException;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import java.util.Optional; import java.util.Optional;
...@@ -17,7 +22,7 @@ public interface ISearchService { ...@@ -17,7 +22,7 @@ public interface ISearchService {
* @param dataItemType * @param dataItemType
* @param itemId * @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 { ...@@ -31,7 +36,7 @@ public interface ISearchService {
* @param dataItemType * @param dataItemType
* @param itemId * @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 { ...@@ -78,7 +78,7 @@ public class SearchServiceImpl implements ISearchService {
} }
@Override @Override
public void saveSearchItem(DataItemType itemType, String itemId) { public void saveSearchItem(DataItemType itemType, String itemId) throws Exception {
SearchItem searchItem = getSearchItemInDb(itemType, itemId); SearchItem searchItem = getSearchItemInDb(itemType, itemId);
if (null != searchItem) { if (null != searchItem) {
searchRepository.save(searchItem); searchRepository.save(searchItem);
...@@ -93,7 +93,7 @@ public class SearchServiceImpl implements ISearchService { ...@@ -93,7 +93,7 @@ public class SearchServiceImpl implements ISearchService {
} }
@Override @Override
public void updateSearchItem(DataItemType itemType, String itemId) { public void updateSearchItem(DataItemType itemType, String itemId) throws Exception {
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);
...@@ -167,7 +167,11 @@ public class SearchServiceImpl implements ISearchService { ...@@ -167,7 +167,11 @@ 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(DataItemType.USER, user.getUserId()); try {
saveSearchItem(DataItemType.USER, user.getUserId());
} catch (Exception e) {
log.error(e.getMessage());
}
}); });
current++; current++;
} else { } else {
...@@ -183,7 +187,11 @@ public class SearchServiceImpl implements ISearchService { ...@@ -183,7 +187,11 @@ 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(DataItemType.PROJECT, String.valueOf(project.getProjectId())); try {
saveSearchItem(DataItemType.PROJECT, String.valueOf(project.getProjectId()));
} catch (Exception e) {
log.error(e.getMessage());
}
}); });
current++; current++;
} else { } else {
...@@ -199,7 +207,11 @@ public class SearchServiceImpl implements ISearchService { ...@@ -199,7 +207,11 @@ 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(DataItemType.QUESTION, question.getQuestionId()); try {
saveSearchItem(DataItemType.QUESTION, question.getQuestionId());
} catch (Exception e) {
log.error(e.getMessage());
}
}); });
current++; current++;
} else { } else {
...@@ -215,7 +227,11 @@ public class SearchServiceImpl implements ISearchService { ...@@ -215,7 +227,11 @@ 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(DataItemType.BLOG, blog.getBlogId()); try {
saveSearchItem(DataItemType.BLOG, blog.getBlogId());
} catch (Exception e) {
log.error(e.getMessage());
}
}); });
current++; current++;
} else { } else {
...@@ -231,7 +247,11 @@ public class SearchServiceImpl implements ISearchService { ...@@ -231,7 +247,11 @@ public class SearchServiceImpl implements ISearchService {
List<Topic> topicList = topicPage.getRecords(); List<Topic> topicList = topicPage.getRecords();
if (!CollectionUtils.isEmpty(topicList)) { if (!CollectionUtils.isEmpty(topicList)) {
topicList.forEach(topic -> { topicList.forEach(topic -> {
saveSearchItem(DataItemType.TOPIC, topic.getTopicId()); try {
saveSearchItem(DataItemType.TOPIC, topic.getTopicId());
} catch (Exception e) {
log.error(e.getMessage());
}
}); });
current++; current++;
} else { } else {
...@@ -240,7 +260,7 @@ public class SearchServiceImpl implements ISearchService { ...@@ -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; SearchItem searchItem = null;
try { try {
switch (itemType) { switch (itemType) {
...@@ -261,11 +281,11 @@ public class SearchServiceImpl implements ISearchService { ...@@ -261,11 +281,11 @@ public class SearchServiceImpl implements ISearchService {
searchItem = buildSearchItemFromTopic(itemId); searchItem = buildSearchItemFromTopic(itemId);
break; break;
default: default:
return null; throw new IllegalArgumentException("该类型不支持搜索:" + itemType.name() + ":" + itemId);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
log.error("搜索条目存储失败:{}", e.getMessage()); log.error("搜索条目存储失败:{}", e.getMessage());
throw e;
} }
return searchItem; return searchItem;
} }
......
...@@ -139,7 +139,7 @@ public class UserStatisticsListener implements DataItemChangeListener { ...@@ -139,7 +139,7 @@ public class UserStatisticsListener implements DataItemChangeListener {
if (itemType.equals(DataItemType.BLOG_VIEW_NUM)) { 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)) { if (itemType.equals(DataItemType.PROJECT)) {
......
...@@ -24,10 +24,6 @@ public class SearchServiceImplTest { ...@@ -24,10 +24,6 @@ public class SearchServiceImplTest {
@Autowired @Autowired
private ISearchRepository searchRepository; private ISearchRepository searchRepository;
@Test
public void saveSearchItem() {
searchService.saveSearchItem(DataItemType.BLOG, "123");
}
@Test @Test
public void getSearchItem() { 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