Commit e5f4b4f5 by shenjunjie

Merge branch 'release' into 'master'

Release

See merge request !123
parents 206e40cc 6006e819
package com.zhiwei.brandkbs2.common; package com.zhiwei.brandkbs2.common;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.zhiwei.brandkbs2.pojo.ChannelTag; import com.zhiwei.brandkbs2.pojo.ChannelTag;
import com.zhiwei.brandkbs2.pojo.Project; import com.zhiwei.brandkbs2.pojo.Project;
import com.zhiwei.brandkbs2.service.EventService;
import com.zhiwei.brandkbs2.service.SystemInfoService; import com.zhiwei.brandkbs2.service.SystemInfoService;
import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform; import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform;
import com.zhiwei.qbjc.bean.pojo.common.Tag; import com.zhiwei.qbjc.bean.pojo.common.Tag;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -17,6 +20,8 @@ import javax.annotation.Resource; ...@@ -17,6 +20,8 @@ import javax.annotation.Resource;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
......
...@@ -94,7 +94,7 @@ public class LoginController extends BaseController { ...@@ -94,7 +94,7 @@ public class LoginController extends BaseController {
@ApiOperation("测试接口") @ApiOperation("测试接口")
@GetMapping("/test") @GetMapping("/test")
public ResponseResult test() { public ResponseResult test() {
return ResponseResult.success("brandkbs2-success 2022/7/8"); return ResponseResult.success("brandkbs2-success 2022/12/5");
} }
} }
......
...@@ -3,6 +3,7 @@ package com.zhiwei.brandkbs2.es; ...@@ -3,6 +3,7 @@ package com.zhiwei.brandkbs2.es;
import com.zhiwei.brandkbs2.common.GenericAttribute; import com.zhiwei.brandkbs2.common.GenericAttribute;
import com.zhiwei.brandkbs2.common.GlobalPojo; import com.zhiwei.brandkbs2.common.GlobalPojo;
import com.zhiwei.brandkbs2.config.Constant; import com.zhiwei.brandkbs2.config.Constant;
import com.zhiwei.brandkbs2.enmus.ImportantChannelEnum;
import com.zhiwei.pushlog.tools.Tools; import com.zhiwei.pushlog.tools.Tools;
import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform; import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -100,14 +101,28 @@ public class EsQueryTools { ...@@ -100,14 +101,28 @@ public class EsQueryTools {
// 不组装mediaTypes的情况 // 不组装mediaTypes的情况
nestedBoolQueryBuilder.must(cacheMapsNestedQuery(mustQuery)); nestedBoolQueryBuilder.must(cacheMapsNestedQuery(mustQuery));
} else { } else {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); // BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
mediaTypes.forEach(e -> { // mediaTypes.forEach(e -> {
BoolQueryBuilder mediaTypeQueryBuilder = QueryBuilders.boolQuery(); // BoolQueryBuilder mediaTypeQueryBuilder = QueryBuilders.boolQuery();
mediaTypeQueryBuilder.must(QueryBuilders.termQuery("brandkbs_cache_maps.channel_type.keyword", e)); // mediaTypeQueryBuilder.must(QueryBuilders.termQuery("brandkbs_cache_maps.channel_type.keyword", e));
mediaTypeQueryBuilder.must(mustQuery); // mediaTypeQueryBuilder.must(mustQuery);
boolQueryBuilder.should(cacheMapsNestedQuery(mediaTypeQueryBuilder)); // boolQueryBuilder.should(cacheMapsNestedQuery(mediaTypeQueryBuilder));
}); // });
nestedBoolQueryBuilder.must(boolQueryBuilder); BoolQueryBuilder mediaTypesBoolQueryBuilder = QueryBuilders.boolQuery();
for (String mediaType : mediaTypes) {
BoolQueryBuilder mediaTypeBoolQueryBuilder = QueryBuilders.boolQuery();
//其他
if (ImportantChannelEnum.QITA.getState().equals(mediaType)) {
for (String tag : ImportantChannelEnum.getAllTagExceptSpec()) {
mediaTypeBoolQueryBuilder.mustNot(QueryBuilders.matchQuery("channel_tag", tag));
}
} else {
mediaTypeBoolQueryBuilder.must(QueryBuilders.matchQuery("channel_tag", mediaType));
}
mediaTypesBoolQueryBuilder.should(mediaTypeBoolQueryBuilder);
}
nestedBoolQueryBuilder.must(cacheMapsNestedQuery(mustQuery));
nestedBoolQueryBuilder.must(mediaTypesBoolQueryBuilder);
} }
return nestedBoolQueryBuilder; return nestedBoolQueryBuilder;
} }
......
...@@ -25,4 +25,5 @@ public interface EventDataService { ...@@ -25,4 +25,5 @@ public interface EventDataService {
*/ */
String deleteOneByIdAndEventId(String id, String eventId); String deleteOneByIdAndEventId(String id, String eventId);
void updateEventInfo(Event event);
} }
...@@ -291,4 +291,9 @@ public interface EventService { ...@@ -291,4 +291,9 @@ public interface EventService {
*/ */
List<Event> findNotEndEventByProjectId(String projectId); List<Event> findNotEndEventByProjectId(String projectId);
/**
* 更新所有事件快照属性
*/
void updateAllEventInfo();
} }
...@@ -109,6 +109,17 @@ public class EventDataServiceImpl implements EventDataService { ...@@ -109,6 +109,17 @@ public class EventDataServiceImpl implements EventDataService {
log.info("analysisEvent-eventId:{},更新事件数据完毕,实际更新:{}条", event.getId(), eventDataList.size()); log.info("analysisEvent-eventId:{},更新事件数据完毕,实际更新:{}条", event.getId(), eventDataList.size());
} }
@Override
public void updateEventInfo(Event event) {
// 找到正确的事件数据
List<EventData> eventDataList = eventDataDao.findList(Query.query(Criteria.where("eventId").is(event.getId())), event.getCollectionName());
eventTopArticlesAnalysisDao.deleteByEventId(event.getId());
eventDisseminationTrendDao.deleteOneByQuery(Query.query(Criteria.where("eventId").is(event.getId())));
// 设置快照属性值
setEventStaticState(event, eventDataList);
log.info("updateEventInfo-eventId:{},更新事件数据完毕,实际更新:{}条", event.getId(), eventDataList.size());
}
private List<EventData> filterEventData(Event event, List<EventData> eventDataList) { private List<EventData> filterEventData(Event event, List<EventData> eventDataList) {
List<EventData> hitList = new ArrayList<>(); List<EventData> hitList = new ArrayList<>();
String keyword = event.getKeyword(); String keyword = event.getKeyword();
......
...@@ -36,6 +36,7 @@ import com.zhiwei.brandkbs2.service.ProjectService; ...@@ -36,6 +36,7 @@ import com.zhiwei.brandkbs2.service.ProjectService;
import com.zhiwei.brandkbs2.util.MongoUtil; import com.zhiwei.brandkbs2.util.MongoUtil;
import com.zhiwei.brandkbs2.util.RedisUtil; import com.zhiwei.brandkbs2.util.RedisUtil;
import com.zhiwei.brandkbs2.util.Tools; import com.zhiwei.brandkbs2.util.Tools;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils; import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -44,6 +45,7 @@ import org.apache.logging.log4j.LogManager; ...@@ -44,6 +45,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.core.query.Update;
...@@ -59,6 +61,7 @@ import java.util.*; ...@@ -59,6 +61,7 @@ import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -683,6 +686,63 @@ public class EventServiceImpl implements EventService { ...@@ -683,6 +686,63 @@ public class EventServiceImpl implements EventService {
return eventDao.findList(query); return eventDao.findList(query);
} }
@Override
public void updateAllEventInfo() {
try {
Query query = new Query();
query.with(Sort.by(Sort.Order.asc("cTime")));
MongoQueryUtil mongoQueryUtil = new MongoQueryUtil(eventDao.count(query));
AtomicInteger total = new AtomicInteger();
AtomicInteger error = new AtomicInteger();
while (mongoQueryUtil.hasNextPage()) {
List<Event> list = eventDao.findList(mongoQueryUtil.getNextPageQuery());
log.info("updateAllEventInfo-发现事件共:{}个,current:{},total:{}", list.size(), mongoQueryUtil.getStartPage() * mongoQueryUtil.getLimit(),
mongoQueryUtil.getTotal());
list.forEach(event -> {
try {
eventDataService.updateEventInfo(event);
log.info("updateAllEventInfo-已更新事件:{}个,错误:{}个", total.incrementAndGet(), error.get());
} catch (Exception e) {
error.incrementAndGet();
log.error("updateAllEventInfo-eventId:{}", event.getId(), e);
}
});
}
} catch (Exception e) {
log.error("updateAllEventInfo-", e);
}
}
@Data
public static class MongoQueryUtil {
private int limit = 1000;
private long startPage = 1;
private long total;
private AtomicLong removeSize = new AtomicLong();
public MongoQueryUtil(long total) {
this.total = total;
}
public boolean hasNextPage() {
long totalPage = (total + limit - 1) / limit;
return startPage <= totalPage;
}
public Query getNextPageQuery() {
Query query = new Query();
if (!hasNextPage()) {
throw new IllegalStateException("startPage>=totalPage");
}
query.skip((startPage - 1) * limit - removeSize.get());
query.limit(limit);
query.with(Sort.by(Sort.Order.desc("_id")));
startPage++;
return query;
}
}
/** /**
* 获取时间筛选条件 * 获取时间筛选条件
* *
......
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