Commit eb7f9e2e by shenjunjie

Merge remote-tracking branch 'origin/feature' into feature

parents c3aca1da 4a4dd4ec
...@@ -3,9 +3,11 @@ package com.zhiwei.brandkbs2.common; ...@@ -3,9 +3,11 @@ package com.zhiwei.brandkbs2.common;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.zhiwei.brandkbs2.pojo.ChannelTag; import com.zhiwei.brandkbs2.pojo.ChannelTag;
import com.zhiwei.brandkbs2.pojo.Event;
import com.zhiwei.brandkbs2.pojo.Project; import com.zhiwei.brandkbs2.pojo.Project;
import com.zhiwei.brandkbs2.service.EventService; import com.zhiwei.brandkbs2.service.EventService;
import com.zhiwei.brandkbs2.service.SystemInfoService; import com.zhiwei.brandkbs2.service.SystemInfoService;
import com.zhiwei.middleware.mark.vo.MarkerTag;
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;
...@@ -47,6 +49,11 @@ public class GlobalPojo { ...@@ -47,6 +49,11 @@ public class GlobalPojo {
**/ **/
public static Map<String, List<Tag>> TAGS; public static Map<String, List<Tag>> TAGS;
/**
* 品见情感倾向标签
*/
public static List<Tag> LINKED_GROUP_ID_TAGS;
public static Map<String, String> CHANNEL_TAGS; public static Map<String, String> CHANNEL_TAGS;
...@@ -89,12 +96,13 @@ public class GlobalPojo { ...@@ -89,12 +96,13 @@ public class GlobalPojo {
try { try {
PLATFORMS = systemInfoService.getPlatforms(); PLATFORMS = systemInfoService.getPlatforms();
TAGS = systemInfoService.getTags().stream().collect(Collectors.groupingBy(Tag::getGroupName)); TAGS = systemInfoService.getTags().stream().collect(Collectors.groupingBy(Tag::getGroupName));
LINKED_GROUP_ID_TAGS = systemInfoService.findEmotionTagByLinkedGroupId();
CHANNEL_TAGS = systemInfoService.getChannelTags().stream().collect(Collectors.toMap(ChannelTag::getChannel, ChannelTag::getTag)); CHANNEL_TAGS = systemInfoService.getChannelTags().stream().collect(Collectors.toMap(ChannelTag::getChannel, ChannelTag::getTag));
MEDIA_TYPE = systemInfoService.getMediaTypes(); MEDIA_TYPE = systemInfoService.getMediaTypes();
PROJECT_MAP = systemInfoService.getProjects(); PROJECT_MAP = systemInfoService.getProjects();
YU_QING_PROJECTS = systemInfoService.getYuQingProjects(); YU_QING_PROJECTS = systemInfoService.getYuQingProjects();
log.info("{}-获取PLATFORMS-size:{},TAGS-size:{},CHANNEL_TAGS:{},MEDIA_TYPE:{},PROJECT_MAP:{},YUQING-PROJECTS-size:{}", logMsg, PLATFORMS.size(), TAGS.size(), log.info("{}-获取PLATFORMS-size:{},TAGS-size:{},LINKED_GROUP_ID_TAGS:{},CHANNEL_TAGS:{},MEDIA_TYPE:{},PROJECT_MAP:{},YUQING-PROJECTS-size:{}", logMsg, PLATFORMS.size(), TAGS.size(),
CHANNEL_TAGS.size(), MEDIA_TYPE.size(), PROJECT_MAP.size(), YU_QING_PROJECTS.size()); LINKED_GROUP_ID_TAGS.size(), CHANNEL_TAGS.size(), MEDIA_TYPE.size(), PROJECT_MAP.size(), YU_QING_PROJECTS.size());
} catch (Exception e) { } catch (Exception e) {
log.info("{}-获取缓存值异常", logMsg, e); log.info("{}-获取缓存值异常", logMsg, e);
} }
......
...@@ -14,6 +14,7 @@ import io.swagger.annotations.ApiOperation; ...@@ -14,6 +14,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
/** /**
* @ClassName: InterfaceController * @ClassName: InterfaceController
...@@ -95,4 +96,9 @@ public class InterfaceController { ...@@ -95,4 +96,9 @@ public class InterfaceController {
projectWarnService.newCrisisCaseWarn(caseWarnVO); projectWarnService.newCrisisCaseWarn(caseWarnVO);
} }
@ApiOperation("根据关联组id获取所有的hitTags(舆情项目调用)")
@GetMapping("/hitTags")
public ResponseResult getHitTagsByLinkedGroupId(String linkedGroupId) {
return projectService.getHitTagsByLinkedGroupId(linkedGroupId);
}
} }
...@@ -29,4 +29,10 @@ public interface QbjcPojoDao { ...@@ -29,4 +29,10 @@ public interface QbjcPojoDao {
*/ */
List<Tag> findTagAll(); List<Tag> findTagAll();
/**
* 获取qbjcTag
*
* @return tags
*/
List<Tag> findEmotionTagByLinkedGroupId();
} }
...@@ -5,11 +5,13 @@ import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform; ...@@ -5,11 +5,13 @@ 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.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
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.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @ClassName: QbjcPojoDaoImpl * @ClassName: QbjcPojoDaoImpl
...@@ -33,5 +35,11 @@ public class QbjcPojoDaoImpl implements QbjcPojoDao { ...@@ -33,5 +35,11 @@ public class QbjcPojoDaoImpl implements QbjcPojoDao {
return mongoTemplate.find(new Query(), Tag.class); return mongoTemplate.find(new Query(), Tag.class);
} }
@Override
public List<Tag> findEmotionTagByLinkedGroupId() {
return mongoTemplate.find(new Query(), Tag.class).stream().filter(tag -> tag.getGroupName().equals("情感倾向")).collect(Collectors.toList());
}
} }
package com.zhiwei.brandkbs2.service; package com.zhiwei.brandkbs2.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.AbstractProject; import com.zhiwei.brandkbs2.pojo.AbstractProject;
import com.zhiwei.brandkbs2.pojo.Project; import com.zhiwei.brandkbs2.pojo.Project;
import com.zhiwei.brandkbs2.pojo.vo.PageVO; import com.zhiwei.brandkbs2.pojo.vo.PageVO;
...@@ -126,4 +127,10 @@ public interface ProjectService { ...@@ -126,4 +127,10 @@ public interface ProjectService {
*/ */
List<Project> getAllProjectsWithStart(); List<Project> getAllProjectsWithStart();
/**
* 根据 linkedGroupId 获取该 linkedGroupId 关联的所有 hitTags
* @param linkedGroupId
* @return
*/
ResponseResult getHitTagsByLinkedGroupId(String linkedGroupId);
} }
...@@ -32,6 +32,13 @@ public interface SystemInfoService { ...@@ -32,6 +32,13 @@ public interface SystemInfoService {
List<Tag> getTags(); List<Tag> getTags();
/** /**
* 获取qbjcTag
*
* @return tags
*/
List<Tag> findEmotionTagByLinkedGroupId();
/**
* 获取ChannelTags * 获取ChannelTags
* *
* @return List<ChannelTag> * @return List<ChannelTag>
......
package com.zhiwei.brandkbs2.service.impl; package com.zhiwei.brandkbs2.service.impl;
import com.zhiwei.brandkbs2.auth.UserThreadLocal;
import com.zhiwei.brandkbs2.dao.BehaviorDao; import com.zhiwei.brandkbs2.dao.BehaviorDao;
import com.zhiwei.brandkbs2.dao.UserDao; import com.zhiwei.brandkbs2.dao.UserDao;
import com.zhiwei.brandkbs2.easyexcel.dto.ExportBehaviorDTO; import com.zhiwei.brandkbs2.easyexcel.dto.ExportBehaviorDTO;
...@@ -71,11 +72,13 @@ public class BehaviorServiceImpl implements BehaviorService { ...@@ -71,11 +72,13 @@ public class BehaviorServiceImpl implements BehaviorService {
@Override @Override
public PageVO<BehaviorVO> findBehaviorList(int page, int size, long startTime, long endTime, boolean backstage, String nickname) { public PageVO<BehaviorVO> findBehaviorList(int page, int size, long startTime, long endTime, boolean backstage, String nickname) {
String projectId = UserThreadLocal.getProjectId();
Date start = new Date(startTime); Date start = new Date(startTime);
Date end = new Date(endTime); Date end = new Date(endTime);
String[] collectionNames = behaviorDao.generateCollectionNames(start, end); String[] collectionNames = behaviorDao.generateCollectionNames(start, end);
Query query = new Query(); Query query = new Query();
query.addCriteria(Criteria.where("cTime").gte(startTime).lt(endTime).and("backstage").is(backstage)); query.addCriteria(Criteria.where("cTime").gte(startTime).lt(endTime).and("backstage").is(backstage));
query.addCriteria(Criteria.where("projectId").is(projectId));
behaviorDao.addSort(query, "{\"cTime\":\"descend\"}"); behaviorDao.addSort(query, "{\"cTime\":\"descend\"}");
if (StringUtils.isNotEmpty(nickname)) { if (StringUtils.isNotEmpty(nickname)) {
Query userQuery = new Query(); Query userQuery = new Query();
......
...@@ -4,25 +4,38 @@ import com.alibaba.fastjson.JSONObject; ...@@ -4,25 +4,38 @@ import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.auth.UserThreadLocal; import com.zhiwei.brandkbs2.auth.UserThreadLocal;
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.dao.ProjectDao; import com.zhiwei.brandkbs2.dao.ProjectDao;
import com.zhiwei.brandkbs2.dao.QbjcPojoDao;
import com.zhiwei.brandkbs2.dao.UserDao; import com.zhiwei.brandkbs2.dao.UserDao;
import com.zhiwei.brandkbs2.enmus.response.ProjectCodeEnum; import com.zhiwei.brandkbs2.enmus.response.ProjectCodeEnum;
import com.zhiwei.brandkbs2.exception.ExceptionCast; import com.zhiwei.brandkbs2.exception.ExceptionCast;
import com.zhiwei.brandkbs2.model.CommonCodeEnum; import com.zhiwei.brandkbs2.model.CommonCodeEnum;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.AbstractProject; import com.zhiwei.brandkbs2.pojo.AbstractProject;
import com.zhiwei.brandkbs2.pojo.Contend; import com.zhiwei.brandkbs2.pojo.Contend;
import com.zhiwei.brandkbs2.pojo.Project; import com.zhiwei.brandkbs2.pojo.Project;
import com.zhiwei.brandkbs2.pojo.User; import com.zhiwei.brandkbs2.pojo.User;
import com.zhiwei.brandkbs2.pojo.vo.PageVO; import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import com.zhiwei.brandkbs2.pojo.vo.ProjectVO; import com.zhiwei.brandkbs2.pojo.vo.ProjectVO;
import com.zhiwei.brandkbs2.service.CommonService;
import com.zhiwei.brandkbs2.service.ProjectService; import com.zhiwei.brandkbs2.service.ProjectService;
import com.zhiwei.brandkbs2.service.SystemInfoService;
import com.zhiwei.brandkbs2.service.UserService; import com.zhiwei.brandkbs2.service.UserService;
import com.zhiwei.brandkbs2.util.MongoUtil; import com.zhiwei.brandkbs2.util.MongoUtil;
import com.zhiwei.brandkbs2.util.Tools; import com.zhiwei.brandkbs2.util.Tools;
import com.zhiwei.middleware.auth.util.JwtUtil; import com.zhiwei.middleware.auth.util.JwtUtil;
import com.zhiwei.middleware.event.core.EventTagClient; import com.zhiwei.middleware.event.core.EventTagClient;
import com.zhiwei.middleware.event.pojo.dto.EventTagRelatedDTO; import com.zhiwei.middleware.event.pojo.dto.EventTagRelatedDTO;
import com.zhiwei.middleware.event.pojo.entity.BrandkbsBasicInfo;
import com.zhiwei.middleware.event.pojo.entity.Event;
import com.zhiwei.middleware.mark.pojo.enums.TagField;
import com.zhiwei.middleware.mark.vo.MarkerTag;
import com.zhiwei.qbjc.bean.pojo.common.Tag;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.logging.log4j.LogManager;
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.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
...@@ -34,6 +47,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; ...@@ -34,6 +47,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Array;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -45,6 +59,10 @@ import java.util.stream.Collectors; ...@@ -45,6 +59,10 @@ import java.util.stream.Collectors;
*/ */
@Service("projectServiceImpl") @Service("projectServiceImpl")
public class ProjectServiceImpl implements ProjectService { public class ProjectServiceImpl implements ProjectService {
private static final Logger log = LogManager.getLogger(ProjectServiceImpl.class);
// 品见情感标签默认只需要这些
private static final List<String> EMOTION_MARKER_TAGS = Arrays.asList("正面", "负面", "中性", "敏感");
@Resource(name = "userDao") @Resource(name = "userDao")
private UserDao userDao; private UserDao userDao;
...@@ -52,6 +70,9 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -52,6 +70,9 @@ public class ProjectServiceImpl implements ProjectService {
@Resource(name = "projectDao") @Resource(name = "projectDao")
private ProjectDao projectDao; private ProjectDao projectDao;
@Resource(name = "qbjcPojoDao")
private QbjcPojoDao qbjcPojoDao;
@Resource(name = "mongoUtil") @Resource(name = "mongoUtil")
private com.zhiwei.brandkbs2.util.MongoUtil mongoUtil; private com.zhiwei.brandkbs2.util.MongoUtil mongoUtil;
...@@ -350,6 +371,77 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -350,6 +371,77 @@ public class ProjectServiceImpl implements ProjectService {
return projectDao.findList(Query.query(Criteria.where("isStart").is(true))); return projectDao.findList(Query.query(Criteria.where("isStart").is(true)));
} }
@Override
public ResponseResult getHitTagsByLinkedGroupId(String linkedGroupId) {
try {
List<JSONObject> result = new ArrayList<>();
Query query = new Query();
Criteria criteria = new Criteria();
criteria.orOperator(Criteria.where("brandLinkedGroupId").is(linkedGroupId), Criteria.where("contendList.brandLinkedGroupId").is(linkedGroupId));
query.addCriteria(criteria);
// 暂且将测试项目排除
query.addCriteria(Criteria.where("_id").ne("632052f0abed641ef800476c"));
List<Project> projects = projectDao.findList(query);
for (Project project : projects) {
if (Objects.equals(project.getBrandLinkedGroupId(), linkedGroupId)) {
Map<String, List<MarkerTag>> tagsMap = new HashMap<>();
JSONObject jsonObject = new JSONObject();
if (!Tools.isEmpty(project.getHitTags())) {
tagsMap.putAll(project.getHitTags().stream().collect(Collectors.groupingBy(MarkerTag::getGroupName)));
}
Map<String, List<MarkerTag>> emotionMarkerTags = getEmotionMarkerTags(project.getBrandLinkedGroup());
if (!Tools.isEmpty(tagsMap.get(Constant.EMOTION_LABEL_KEY))) {
tagsMap.get(Constant.EMOTION_LABEL_KEY).addAll(0, emotionMarkerTags.get(Constant.EMOTION_LABEL_KEY));
}else {
tagsMap.putAll(emotionMarkerTags);
}
jsonObject.put("tags", tagsMap);
BrandkbsBasicInfo brandkbsBasicInfo = new BrandkbsBasicInfo(project.getProjectName(), project.getId(), project.getBrandName(), project.getId());
jsonObject.put("brandkbsBasicInfo", brandkbsBasicInfo);
result.add(jsonObject);
}
if (!Tools.isEmpty(project.getContendList())) {
for (Contend contend : project.getContendList()) {
Map<String, List<MarkerTag>> tagsMap = new HashMap<>();
if (Objects.equals(contend.getBrandLinkedGroupId(), linkedGroupId)) {
JSONObject jsonObject = new JSONObject();
if (!Tools.isEmpty(contend.getHitTags())) {
tagsMap.putAll(contend.getHitTags().stream().collect(Collectors.groupingBy(MarkerTag::getGroupName)));
}
if (contend.isHasEmotion()){
Map<String, List<MarkerTag>> emotionMarkerTags = getEmotionMarkerTags(contend.getBrandLinkedGroup());
if (Tools.isEmpty(tagsMap.get(Constant.EMOTION_LABEL_KEY))) {
tagsMap.putAll(emotionMarkerTags);
}
}
jsonObject.put("tags", tagsMap);
BrandkbsBasicInfo brandkbsBasicInfo = new BrandkbsBasicInfo(project.getProjectName(), project.getId(), contend.getBrandName(), contend.getId());
jsonObject.put("brandkbsBasicInfo", brandkbsBasicInfo);
result.add(jsonObject);
}
}
}
}
return ResponseResult.success(result);
}catch (Exception e){
log.error("外部接口获取hitTags出错", e);
return ResponseResult.failure("获取hitTags出错");
}
}
/**
* 获取舆情对应项目的情感标签
* @param brandName
* @return
*/
private Map<String, List<MarkerTag>> getEmotionMarkerTags(String brandName){
return GlobalPojo.LINKED_GROUP_ID_TAGS
.stream().filter(tag -> !Tools.isEmpty(tag.getProject()) && tag.getProject().equals(brandName) && EMOTION_MARKER_TAGS.contains(tag.getName()))
.map(tag -> Tools.convertMap(tag, MarkerTag.class))
.sorted(Comparator.comparing(MarkerTag::getId))
.collect(Collectors.groupingBy(MarkerTag::getGroupName));
}
// public JSONObject getUserInfoAndProjectConfig(User user) { // public JSONObject getUserInfoAndProjectConfig(User user) {
// long start = System.currentTimeMillis(); // long start = System.currentTimeMillis();
// JSONObject result = new JSONObject(); // JSONObject result = new JSONObject();
......
...@@ -67,6 +67,11 @@ public class SystemInfoServiceImpl implements SystemInfoService { ...@@ -67,6 +67,11 @@ public class SystemInfoServiceImpl implements SystemInfoService {
} }
@Override @Override
public List<Tag> findEmotionTagByLinkedGroupId() {
return qbjcPojoDao.findEmotionTagByLinkedGroupId();
}
@Override
public List<ChannelTag> getChannelTags() { public List<ChannelTag> getChannelTags() {
return channelTagDao.findList(null); return channelTagDao.findList(null);
} }
......
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