Commit 69474fa9 by 陈健智

事件标签

parent 2ea3bc62
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
<dubbo.version>2.7.4.1</dubbo.version> <dubbo.version>2.7.4.1</dubbo.version>
<curator.version>2.12.0</curator.version> <curator.version>2.12.0</curator.version>
<push.log.version>2.17.0-SNAPSHOT</push.log.version> <push.log.version>2.17.0-SNAPSHOT</push.log.version>
<event-client.version>0.0.1-SNAPSHOT</event-client.version>
</properties> </properties>
<dependencies> <dependencies>
...@@ -237,7 +238,12 @@ ...@@ -237,7 +238,12 @@
<artifactId>zhiwei-tools</artifactId> <artifactId>zhiwei-tools</artifactId>
<version>0.3.3-SNAPSHOT</version> <version>0.3.3-SNAPSHOT</version>
</dependency> </dependency>
<!--事件中间件-->
<dependency>
<groupId>com.zhiwei.middleware</groupId>
<artifactId>event-client</artifactId>
<version>${event-client.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
......
package com.zhiwei.brandkbs2.common; package com.zhiwei.brandkbs2.common;
import com.zhiwei.middleware.event.core.EventClientFactory;
import com.zhiwei.middleware.event.core.EventTagClient;
import com.zhiwei.middleware.mark.service.MarkerClient; import com.zhiwei.middleware.mark.service.MarkerClient;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -26,6 +28,12 @@ public class CommonConfig { ...@@ -26,6 +28,12 @@ public class CommonConfig {
@Value("${mark.provider.group}") @Value("${mark.provider.group}")
private String providerGroup; private String providerGroup;
@Value("${event.registry.address}")
private String eventClientRegistry;
@Value("${event.provider.group}")
private String eventProviderGroup;
@Bean @Bean
public RestTemplate restTemplate() { public RestTemplate restTemplate() {
final OkHttpClient client = new OkHttpClient().newBuilder() final OkHttpClient client = new OkHttpClient().newBuilder()
...@@ -45,4 +53,13 @@ public class CommonConfig { ...@@ -45,4 +53,13 @@ public class CommonConfig {
return MarkerClient.getService(clientRegistry, providerGroup, appName); return MarkerClient.getService(clientRegistry, providerGroup, appName);
} }
/**
* 获取事件中间件客户端
*
* @return 事件中间件客户端
*/
@Bean
public EventTagClient getEventTagClient(){
return EventClientFactory.markEventTagClient(eventClientRegistry, eventProviderGroup, appName);
}
} }
...@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONArray; ...@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.auth.Auth; import com.zhiwei.brandkbs2.auth.Auth;
import com.zhiwei.brandkbs2.auth.UserThreadLocal; import com.zhiwei.brandkbs2.auth.UserThreadLocal;
import com.zhiwei.brandkbs2.common.GlobalPojo; import com.zhiwei.brandkbs2.common.GenericAttribute;
import com.zhiwei.brandkbs2.controller.BaseController; import com.zhiwei.brandkbs2.controller.BaseController;
import com.zhiwei.brandkbs2.easyexcel.EasyExcelUtil; import com.zhiwei.brandkbs2.easyexcel.EasyExcelUtil;
import com.zhiwei.brandkbs2.easyexcel.dto.UploadKeywordDTO; import com.zhiwei.brandkbs2.easyexcel.dto.UploadKeywordDTO;
...@@ -16,6 +16,9 @@ import com.zhiwei.brandkbs2.service.BehaviorService; ...@@ -16,6 +16,9 @@ import com.zhiwei.brandkbs2.service.BehaviorService;
import com.zhiwei.brandkbs2.service.CommonService; import com.zhiwei.brandkbs2.service.CommonService;
import com.zhiwei.brandkbs2.service.ProjectService; import com.zhiwei.brandkbs2.service.ProjectService;
import com.zhiwei.brandkbs2.util.Tools; import com.zhiwei.brandkbs2.util.Tools;
import com.zhiwei.middleware.auth.util.JwtUtil;
import com.zhiwei.middleware.event.core.EventTagClient;
import com.zhiwei.middleware.event.pojo.dto.EventTagRelatedDTO;
import com.zhiwei.middleware.mark.vo.MarkerTag; import com.zhiwei.middleware.mark.vo.MarkerTag;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
...@@ -50,6 +53,9 @@ public class ProjectController extends BaseController { ...@@ -50,6 +53,9 @@ public class ProjectController extends BaseController {
@Autowired @Autowired
private RestTemplate restTemplate; private RestTemplate restTemplate;
@Autowired
private EventTagClient eventTagClient;
@Resource(name = "projectServiceImpl") @Resource(name = "projectServiceImpl")
private ProjectService ProjectService; private ProjectService ProjectService;
...@@ -67,6 +73,9 @@ public class ProjectController extends BaseController { ...@@ -67,6 +73,9 @@ public class ProjectController extends BaseController {
@Value("${brandkbs.image.url}") @Value("${brandkbs.image.url}")
private String brandkbsImageUrl; private String brandkbsImageUrl;
@Value("${qbjc.project.url}")
private String yqProjectUrl;
@Value("${hqd.groupAll.url}") @Value("${hqd.groupAll.url}")
private String hqdGroupAllUrl; private String hqdGroupAllUrl;
...@@ -160,7 +169,15 @@ public class ProjectController extends BaseController { ...@@ -160,7 +169,15 @@ public class ProjectController extends BaseController {
@ApiImplicitParams({@ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false, defaultValue = "", paramType = "query", dataType = "string")}) @ApiImplicitParams({@ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false, defaultValue = "", paramType = "query", dataType = "string")})
@GetMapping("/get/linkedGroups") @GetMapping("/get/linkedGroups")
public ResponseResult getLinkedGroups(@RequestParam(value = "keyword", defaultValue = "") String keyword) { public ResponseResult getLinkedGroups(@RequestParam(value = "keyword", defaultValue = "") String keyword) {
List<JSONObject> resList = GlobalPojo.YU_QING_PROJECTS.stream().filter(json -> json.getString("groupName").contains(keyword)).collect(Collectors.toList()); ResponseEntity<JSONObject> entity = restTemplate.getForEntity(yqProjectUrl, JSONObject.class);
List<JSONObject> dataList = Objects.requireNonNull(entity.getBody()).getJSONArray("data").toJavaList(JSONObject.class);
List<JSONObject> resList = dataList.stream().filter(json -> json.getString("projectName").contains(keyword)).map(json -> {
JSONObject res = new JSONObject();
res.put("groupName", json.getString("projectName"));
res.put("id", json.getString("id"));
return res;
}).collect(Collectors.toList());
// List<String> groupNames = jsonArray.stream().map(object -> ((JSONObject) object).getString("groupName")).filter(group -> group.contains(keyword)).collect(Collectors.toList());
return ResponseResult.success(resList); return ResponseResult.success(resList);
} }
...@@ -195,4 +212,12 @@ public class ProjectController extends BaseController { ...@@ -195,4 +212,12 @@ public class ProjectController extends BaseController {
return ResponseResult.success(ProjectService.getUserAllProjects()); return ResponseResult.success(ProjectService.getUserAllProjects());
} }
@ApiOperation("获取事件标签信息")
@ApiImplicitParam(name = "yuQingProjectId", value = "舆情项目id", required = true, paramType = "query", dataType = "string")
@GetMapping("/get/eventTags")
public ResponseResult getEventTagsInfo(@RequestParam(value = "yuQingProjectId") String yuQingProjectId){
Object eventTags = eventTagClient.getEventTagGroupInfoBrandkbsWithoutEmotion(yuQingProjectId).getData();
return ResponseResult.success(eventTags);
}
} }
package com.zhiwei.brandkbs2.pojo; package com.zhiwei.brandkbs2.pojo;
import com.zhiwei.middleware.event.pojo.dto.EventTagRelatedDTO;
import com.zhiwei.middleware.mark.vo.MarkerTag; import com.zhiwei.middleware.mark.vo.MarkerTag;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -55,4 +56,9 @@ public abstract class AbstractProject extends AbstractBaseMongo{ ...@@ -55,4 +56,9 @@ public abstract class AbstractProject extends AbstractBaseMongo{
*/ */
private String avatarUrl; private String avatarUrl;
/**
* 竞品事件标签
*/
private List<EventTagRelatedDTO> eventTagsList;
} }
package com.zhiwei.brandkbs2.pojo; package com.zhiwei.brandkbs2.pojo;
import com.zhiwei.middleware.event.pojo.dto.EventTagRelatedDTO;
import lombok.*; import lombok.*;
import org.springframework.data.annotation.Transient;
import java.util.List;
/** /**
* @author sjj * @author sjj
......
package com.zhiwei.brandkbs2.pojo; package com.zhiwei.brandkbs2.pojo;
import com.zhiwei.brandkbs2.pojo.vo.ProjectVO; import com.zhiwei.brandkbs2.pojo.vo.ProjectVO;
import com.zhiwei.middleware.event.pojo.dto.EventTagRelatedDTO;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
...@@ -91,7 +92,7 @@ public class Project extends AbstractProject { ...@@ -91,7 +92,7 @@ public class Project extends AbstractProject {
* *
* @return 项目对象 * @return 项目对象
*/ */
public ProjectVO creatProjectVo() { public ProjectVO creatProjectVo(List<EventTagRelatedDTO> eventTagsList) {
ProjectVO projectVO = new ProjectVO(); ProjectVO projectVO = new ProjectVO();
projectVO.setId(this.getId()); projectVO.setId(this.getId());
// 主品牌 // 主品牌
...@@ -115,6 +116,8 @@ public class Project extends AbstractProject { ...@@ -115,6 +116,8 @@ public class Project extends AbstractProject {
projectVO.setNegativeChannelParams(this.getNegativeChannelParams()); projectVO.setNegativeChannelParams(this.getNegativeChannelParams());
projectVO.setPositiveChannelParams(this.getPositiveChannelParams()); projectVO.setPositiveChannelParams(this.getPositiveChannelParams());
projectVO.setBlackChannelGroup(this.getBlackChannelGroup()); projectVO.setBlackChannelGroup(this.getBlackChannelGroup());
projectVO.setEventTagsList(eventTagsList);
return projectVO; return projectVO;
} }
......
...@@ -2,6 +2,8 @@ package com.zhiwei.brandkbs2.pojo.vo; ...@@ -2,6 +2,8 @@ package com.zhiwei.brandkbs2.pojo.vo;
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.middleware.event.pojo.dto.EventTagRelatedDTO;
import com.zhiwei.middleware.event.pojo.vo.EventTagBrandkbsBindingVO;
import com.zhiwei.middleware.mark.vo.MarkerTag; import com.zhiwei.middleware.mark.vo.MarkerTag;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -123,6 +125,11 @@ public class ProjectVO { ...@@ -123,6 +125,11 @@ public class ProjectVO {
private Map<String,Double> positiveChannelParams; private Map<String,Double> positiveChannelParams;
/** /**
* 主品牌事件标签传输
*/
private List<EventTagRelatedDTO> eventTagsList;
/**
* 项目主品牌配置信息转换 * 项目主品牌配置信息转换
* *
* @return 项目对象 * @return 项目对象
......
...@@ -2,6 +2,7 @@ package com.zhiwei.brandkbs2.service.impl; ...@@ -2,6 +2,7 @@ package com.zhiwei.brandkbs2.service.impl;
import com.alibaba.fastjson.JSONObject; 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.GlobalPojo; import com.zhiwei.brandkbs2.common.GlobalPojo;
import com.zhiwei.brandkbs2.dao.ProjectDao; import com.zhiwei.brandkbs2.dao.ProjectDao;
import com.zhiwei.brandkbs2.dao.UserDao; import com.zhiwei.brandkbs2.dao.UserDao;
...@@ -15,15 +16,25 @@ import com.zhiwei.brandkbs2.pojo.User; ...@@ -15,15 +16,25 @@ 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.ProjectService; import com.zhiwei.brandkbs2.service.ProjectService;
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.middleware.auth.util.JwtUtil;
import com.zhiwei.middleware.event.core.EventTagClient;
import com.zhiwei.middleware.event.pojo.dto.EventTagRelatedDTO;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
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;
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;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.net.URLEncoder;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -45,6 +56,15 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -45,6 +56,15 @@ public class ProjectServiceImpl implements ProjectService {
@Resource(name = "mongoUtil") @Resource(name = "mongoUtil")
private com.zhiwei.brandkbs2.util.MongoUtil mongoUtil; private com.zhiwei.brandkbs2.util.MongoUtil mongoUtil;
@Resource(name = "userServiceImpl")
private UserService userService;
@Value("${jwt.key}")
private String jwtKey;
@Autowired
private EventTagClient eventTagClient;
@Value("${brandkbs.file.url}") @Value("${brandkbs.file.url}")
private String brandkbsFileUrl; private String brandkbsFileUrl;
...@@ -66,7 +86,27 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -66,7 +86,27 @@ public class ProjectServiceImpl implements ProjectService {
// for (Integer SUPER_ADMINUid : userMapper.getAllSUPER_ADMINUids()) { // for (Integer SUPER_ADMINUid : userMapper.getAllSUPER_ADMINUids()) {
// UserService.insertAdminRoleAndWarn(SUPER_ADMINUid, project.getId()); // UserService.insertAdminRoleAndWarn(SUPER_ADMINUid, project.getId());
// } // }
projectDao.insertOneWithoutId(projectVO.creatProject(new Date())); Project project = projectVO.creatProject(new Date());
projectDao.insertOneWithoutId(project);
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = Objects.requireNonNull(requestAttributes).getRequest();
String submitterId = JwtUtil.unsign(request.getHeader(jwtKey), Map.class).get(GenericAttribute.USER_ID).toString();
String submitter = userService.queryUserInfo(submitterId, project.getId()).getNickname();
// 主品牌绑定事件标签
List<EventTagRelatedDTO> eventTagsList = projectVO.getEventTagsList();
eventTagClient.bindBrandkbs(project.getBrandLinkedGroup(), project.getBrandLinkedGroupId(), eventTagsList,
project.getProjectName(), project.getId(), project.getBrandName(), project.getId(), submitter, submitterId);
// 竞品绑定事件标签
List<Contend> contendList = project.getContendList();
if (CollectionUtils.isNotEmpty(contendList)) {
for (Contend contend : contendList) {
List<EventTagRelatedDTO> contendEventTagsList = contend.getEventTagsList();
eventTagClient.bindBrandkbs(contend.getBrandLinkedGroup(), contend.getBrandLinkedGroupId(), contendEventTagsList, project.getProjectName(),
project.getId(), contend.getBrandName(), contend.getId(), submitter, submitterId);
}
}
} }
@Override @Override
...@@ -98,7 +138,18 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -98,7 +138,18 @@ public class ProjectServiceImpl implements ProjectService {
//如果项目不存在,抛出非法参数异常 //如果项目不存在,抛出非法参数异常
ExceptionCast.cast(CommonCodeEnum.INVALID_PARAM, "该项目不存在"); ExceptionCast.cast(CommonCodeEnum.INVALID_PARAM, "该项目不存在");
} }
return project.creatProjectVo(); Map<String, List<EventTagRelatedDTO>> eventTagsMap = (Map<String, List<EventTagRelatedDTO>>) eventTagClient.getBrandkbsBindingEventTags(id).getData();
List<EventTagRelatedDTO> eventTagsList = new ArrayList<>();
if (!Tools.isEmpty(eventTagsMap)) {
eventTagsList = eventTagsMap.get(project.getId());
List<Contend> contendList = project.getContendList();
if (!Tools.isEmpty(contendList)) {
for (Contend contend : contendList) {
contend.setEventTagsList(eventTagsMap.get(contend.getId()));
}
}
}
return project.creatProjectVo(eventTagsList);
} }
@Override @Override
...@@ -121,6 +172,25 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -121,6 +172,25 @@ public class ProjectServiceImpl implements ProjectService {
} }
Project project = packageProject(projectVO, existsProject); Project project = packageProject(projectVO, existsProject);
projectDao.updateOne(project); projectDao.updateOne(project);
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = Objects.requireNonNull(requestAttributes).getRequest();
String submitterId = JwtUtil.unsign(request.getHeader(jwtKey), Map.class).get(GenericAttribute.USER_ID).toString();
String submitter = userService.queryUserInfo(submitterId, project.getId()).getNickname();
// 主品牌修改绑定事件标签
List<EventTagRelatedDTO> eventTagsList = projectVO.getEventTagsList();
eventTagClient.modifyBrandkbsEventTags(project.getBrandLinkedGroup(), project.getBrandLinkedGroupId(), eventTagsList,
project.getProjectName(), project.getId(), project.getBrandName(), project.getId(), submitter, submitterId);
// 竞品修改绑定事件标签
List<Contend> contendList = project.getContendList();
if (CollectionUtils.isNotEmpty(contendList)) {
for (Contend contend : contendList) {
List<EventTagRelatedDTO> contendEventTagsList = contend.getEventTagsList();
eventTagClient.modifyBrandkbsEventTags(contend.getBrandLinkedGroup(), contend.getBrandLinkedGroupId(), contendEventTagsList, project.getProjectName(),
project.getId(), contend.getBrandName(), contend.getId(), submitter, submitterId);
}
}
} }
@Override @Override
......
...@@ -48,6 +48,9 @@ hqd.groupAll.url= https://sensitive.zhiweidata.com/sensitive/planA/groupAll ...@@ -48,6 +48,9 @@ hqd.groupAll.url= https://sensitive.zhiweidata.com/sensitive/planA/groupAll
#\u6807\u6CE8\u4E2D\u95F4\u4EF6 #\u6807\u6CE8\u4E2D\u95F4\u4EF6
mark.registry.address=zookeeper://192.168.0.11:2181?backup=192.168.0.30:2181,192.168.0.35:2181 mark.registry.address=zookeeper://192.168.0.11:2181?backup=192.168.0.30:2181,192.168.0.35:2181
mark.provider.group=zhiwei-mark-test_liuyu mark.provider.group=zhiwei-mark-test_liuyu
#\u4E8B\u4EF6\u4E2D\u95F4\u4EF6
event.registry.address=zookeeper://192.168.0.11:2181?backup=192.168.0.30:2181,192.168.0.35:2181
event.provider.group=zhiwei-event
#\u7528\u6237\u4E2D\u5FC3 #\u7528\u6237\u4E2D\u5FC3
auth.center.client.consumer.group=zhiwei-auth-dev-liuyu auth.center.client.consumer.group=zhiwei-auth-dev-liuyu
auth.center.client.registry.address=zookeeper://192.168.0.11:2181?backup=192.168.0.30:2181,192.168.0.35:2181 auth.center.client.registry.address=zookeeper://192.168.0.11:2181?backup=192.168.0.30:2181,192.168.0.35:2181
......
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