Commit 42eacde3 by shenjunjie

2022/8/4 9:33

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