Commit 42eacde3 by shenjunjie

2022/8/4 9:33

parent 42bd4ecb
......@@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Set;
/**
* @ClassName: AppChannelController
......@@ -132,7 +131,7 @@ public class AppChannelController extends BaseController {
@GetMapping("/spreadingTend")
public ResponseResult getSpreadingTend(@RequestParam("channelId") String channelId,
@RequestParam(value = "type", defaultValue = "文章") String type,
@RequestParam(value = "contends", required = false) Set<String> contends,
@RequestParam(value = "contends", required = false) String contends,
@RequestParam(value = "startTime", required = false) Long startTime,
@RequestParam(value = "endTime", required = false) Long endTime) {
return ResponseResult.success(channelService.getSpreadingTend(channelId, type, contends, startTime, endTime));
......@@ -147,7 +146,7 @@ public class AppChannelController extends BaseController {
})
@GetMapping("/spreadingTend/summary")
public ResponseResult getSpreadingTendSummary(@RequestParam("channelId") String channelId,
@RequestParam(value = "contends", required = false) Set<String> contends,
@RequestParam(value = "contends", required = false) String contends,
@RequestParam(value = "startTime", required = false) Long startTime,
@RequestParam(value = "endTime", required = false) Long endTime) {
return ResponseResult.success(channelService.getSpreadingTendSummary(channelId, contends, startTime, endTime));
......
......@@ -69,6 +69,7 @@ public class EventDaoImpl extends BaseMongoDaoImpl<Event> implements EventDao {
private Map<Long, List<Event>> getEventTimePattern(ChannelIndex channelIndex, Long startTime, Long endTime, int nrOfChars) {
// 添加渠道唯一标识
Criteria criteria = addChannelIndex(channelIndex);
criteria.and("startTime").gte(startTime).lt(endTime);
// 分组
Aggregation agg = Aggregation.newAggregation(Aggregation.match(criteria),
// 截取前8位,按日分组
......
......@@ -71,6 +71,10 @@ public class Event extends AbstractBaseMongo {
*/
private String linkedGroupId;
/**
* 品牌ID
*/
private String contendId;
/**
* 是否是舆情事件
*/
private String yqEventId;
......
......@@ -60,6 +60,10 @@ public class EventData extends AbstractBaseMongo {
*/
private String linkedGroupId;
/**
* 品牌ID
*/
private String contendId;
/**
* 情感倾向
*/
private String emotion;
......@@ -86,6 +90,7 @@ public class EventData extends AbstractBaseMongo {
BaseMap baseMap = Tools.getBaseFromEsMap(map);
data.setEventId(event.getId());
data.setProjectId(event.getProjectId());
data.setContendId(event.getContendId());
data.setLinkedGroupId(event.getLinkedGroupId());
data.setPlatform(baseMap.getPlatform());
data.setRealSource(baseMap.getRealSource());
......
......@@ -10,7 +10,6 @@ import com.zhiwei.brandkbs2.pojo.vo.ChannelListVO;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import java.util.List;
import java.util.Set;
/**
* @ClassName: ChannelService
......@@ -183,7 +182,7 @@ public interface ChannelService {
* @param endTime 结束时间
* @return 渠道动向
*/
JSONObject getSpreadingTend(String channelId, String type, Set<String> contends, Long startTime, Long endTime);
JSONObject getSpreadingTend(String channelId, String type, String contends, Long startTime, Long endTime);
/**
* 获取渠道动向-摘要
......@@ -194,7 +193,7 @@ public interface ChannelService {
* @param endTime 结束时间
* @return 渠道动向-摘要
*/
JSONObject getSpreadingTendSummary(String channelId, Set<String> contends, Long startTime, Long endTime);
JSONObject getSpreadingTendSummary(String channelId, String contends, Long startTime, Long endTime);
/**
......@@ -215,8 +214,6 @@ public interface ChannelService {
*
* @param startTime 开始时间时间戳
* @param endTime 结束时间
* @param page 页码
* @param pageSize 页码大小
* @param channelId 渠道ID
* @param contendId 竞品ID
* @return 稿件信息
......
......@@ -289,6 +289,11 @@ public class ChannelServiceImpl implements ChannelService {
@Override
public List<ChannelListVO> getActiveChannelList(String contendId, String platform, String keyword, Long startTime, Long endTime, int size) {
return getEmotionList(contendId, platform, keyword, null, startTime, endTime, size, EmotionEnum.ALL.getState());
}
@Deprecated
public List<ChannelListVO> getActiveChannelList2(String contendId, String platform, String keyword, Long startTime, Long endTime, int size) {
List<ChannelListVO> resList = new ArrayList<>();
try {
String projectId = UserThreadLocal.getProjectId();
......@@ -304,7 +309,7 @@ public class ChannelServiceImpl implements ChannelService {
searchHelper.setAggregationBuilder(aggregationBuilder);
SearchResponse searchResponse = channelEsDao.searchResponse(searchHelper);
Terms keyTerms = searchResponse.getAggregations().get("keyAgg");
Map<String, Long> fidCount = new HashMap<>();
Map<String, Long> fidCount = new LinkedHashMap<>();
for (Terms.Bucket bucket : keyTerms.getBuckets()) {
String channelFid = Tools.getFidFromChannelKey(bucket.getKeyAsString());
Sum countSum = bucket.getAggregations().get("countAgg");
......@@ -374,7 +379,7 @@ public class ChannelServiceImpl implements ChannelService {
List<ChannelRecord> channelRecords = keyMap.values().stream().map(pair -> {
ChannelRecord channelRecord = pair.getRight();
// 情感过滤
if (emotion == channelRecord.getEmotion()) {
if (emotion == EmotionEnum.ALL.getState() || emotion == channelRecord.getEmotion()) {
List<ChannelIndex.Article> articles = ChannelIndex.Record.filterArticles(startTime, endTime, channelRecord.getRecord().getArticles());
articles.sort(Comparator.comparingLong(ChannelIndex.Article::getTime).reversed());
channelRecord.getRecord().setArticles(articles);
......@@ -383,7 +388,7 @@ public class ChannelServiceImpl implements ChannelService {
return null;
}).filter(Objects::nonNull).sorted((x, y) -> {
// emotionIndex降序
if (sorter.contains("index")) {
if (null != sorter && sorter.contains("index")) {
if (x.getEmotionIndex() > y.getEmotionIndex()) {
return -1;
} else if (Objects.equals(x.getEmotionIndex(), y.getEmotionIndex())) {
......@@ -474,15 +479,17 @@ public class ChannelServiceImpl implements ChannelService {
jsonObject.put("platform", channel.getPlatform());
jsonObject.put("source", channel.getSource());
jsonObject.put("emotion", ChannelEmotion.getNameFromState(channel.getEmotion()));
jsonObject.put("emotionIndex", channel.getEmotionIndex());
jsonObject.put("emotionIndex", BigDecimal.valueOf(channel.getEmotionIndex()).setScale(2, RoundingMode.UP));
jsonObject.put("articlesCount", channel.getArticleCount());
jsonObject.put("eventCount", channel.getEventCount());
jsonObject.put("channelTag", channelTagDao.getTagByChannelName(channel.getSource()));
jsonObject.put("collectTime", channel.getCollectTime());
// 渠道倾向变化 TODO
return jsonObject;
}
@Override
public JSONObject getSpreadingTend(String channelId, String type, Set<String> contends, Long startTime, Long endTime) {
public JSONObject getSpreadingTend(String channelId, String type, String contendIds, Long startTime, Long endTime) {
JSONObject res = new JSONObject();
// 默认搜索一周
if (null == startTime || null == endTime) {
......@@ -490,10 +497,16 @@ public class ChannelServiceImpl implements ChannelService {
startTime = timeRangeWeek[0];
endTime = timeRangeWeek[1];
}
Collection<String> contendSet;
if (null == contendIds) {
contendSet = Collections.singleton("0");
} else {
contendSet = Arrays.asList(contendIds.split(","));
}
List<JSONObject> spreadDatas = new ArrayList<>();
if ("事件".equals(type)) {
// 根据品牌分类
for (String contend : contends) {
for (String contend : contendSet) {
JSONObject json = new JSONObject();
Channel channel = channelDao.findOneById(channelId);
json.put("spreadingTend", spreadingTendEvent(startTime, endTime, channel, UserThreadLocal.getProjectId(), contend));
......@@ -504,7 +517,8 @@ public class ChannelServiceImpl implements ChannelService {
}
}
} else {
for (Map.Entry<String, List<ChannelIndex.Article>> entry : getSourceContendMap(channelId, contends, startTime, endTime).entrySet()) {
for (Map.Entry<String, List<ChannelIndex.Article>> entry :
getSourceContendMap(channelId, contendSet, startTime, endTime).entrySet()) {
JSONObject json = new JSONObject();
json.put("spreadingTend", spreadingTendData(startTime, endTime, entry.getValue()));
if ("0".equals(entry.getKey())) {
......@@ -519,7 +533,7 @@ public class ChannelServiceImpl implements ChannelService {
}
@Override
public JSONObject getSpreadingTendSummary(String channelId, Set<String> contends, Long startTime, Long endTime) {
public JSONObject getSpreadingTendSummary(String channelId, String contends, Long startTime, Long endTime) {
JSONObject res = new JSONObject();
String projectId = UserThreadLocal.getProjectId();
// 默认搜索一周
......@@ -529,7 +543,7 @@ public class ChannelServiceImpl implements ChannelService {
endTime = timeRangeWeek[1];
}
// 根据品牌分类
Map<String, List<ChannelIndex.Article>> contendMap = getSourceContendMap(channelId, contends, startTime, endTime);
Map<String, List<ChannelIndex.Article>> contendMap = getSourceContendMap(channelId, Arrays.asList(contends.split(",")), startTime, endTime);
Channel channel = channelDao.findOneById(channelId);
long articleTotal = 0;
long eventTotal = 0;
......@@ -542,6 +556,7 @@ public class ChannelServiceImpl implements ChannelService {
eventTotal += eventCount.getLeft();
// 合并统计
dataCount.getRight().putAll(eventCount.getRight());
dataCount.getRight().put("contendId", entry.getKey());
if ("0".equals(contendId)) {
spreadDatas.add(0, dataCount.getRight());
} else {
......@@ -595,7 +610,7 @@ public class ChannelServiceImpl implements ChannelService {
return futureList.stream().map(CompletableFuture::join).collect(Collectors.toList());
}
private Map<String, List<ChannelIndex.Article>> getSourceContendMap(String channelId, Set<String> contendIds, String platform, String keyword, Long startTime,
private Map<String, List<ChannelIndex.Article>> getSourceContendMap(String channelId, Collection<String> contendIds, String platform, String keyword, Long startTime,
Long endTime) {
try {
String projectId = UserThreadLocal.getProjectId();
......@@ -610,7 +625,7 @@ public class ChannelServiceImpl implements ChannelService {
return Collections.emptyMap();
}
private Map<String, List<ChannelIndex.Article>> getSourceContendMap(String channelId, Set<String> contendIds, Long startTime, Long endTime) {
private Map<String, List<ChannelIndex.Article>> getSourceContendMap(String channelId, Collection<String> contendIds, Long startTime, Long endTime) {
return getSourceContendMap(channelId, contendIds, null, null, startTime, endTime);
}
......@@ -746,7 +761,7 @@ public class ChannelServiceImpl implements ChannelService {
}
private EsClientDao.SearchHelper createSearchHelperByChannelCriteria(String projectId, String channelId, Set<String> contendIds, String platform, String keyword, Long startTime, Long endTime) {
private EsClientDao.SearchHelper createSearchHelperByChannelCriteria(String projectId, String channelId, Collection<String> contendIds, String platform, String keyword, Long startTime, Long endTime) {
EsClientDao.SearchHelper helper = EsClientDao.createSearchHelper();
// 默认搜索一周
if (null == startTime || null == endTime) {
......
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