Browse Source

将客户初始化分类标签操作放入新客户创建的事件监听中

dev_shibei_match
sunyuchao 4 years ago
parent
commit
049e403bf6
  1. 4
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  2. 6
      epmet-module/gov-issue/gov-issue-server/pom.xml
  3. 67
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/mq/listener/IssueProjectCategoryTagInitListener.java
  4. 12
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java
  5. 14
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectTagDictServiceImpl.java

4
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java

@ -17,5 +17,9 @@ public interface ConsomerGroupConstants {
* 初始化客户组织机构信息分组 * 初始化客户组织机构信息分组
*/ */
String INIT_CUSTOMER_ORG_ROLES_GROUP = "init_customer_org_roles_group"; String INIT_CUSTOMER_ORG_ROLES_GROUP = "init_customer_org_roles_group";
/**
* 客户初始化议题项目分类标签数据
*/
String ISSUE_PROJECT_CATEGORY_TAG = "issue_project_category_tag";
} }

6
epmet-module/gov-issue/gov-issue-server/pom.xml

@ -108,6 +108,12 @@
<version>2.0.0</version> <version>2.0.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-rocketmq</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

67
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/mq/listener/IssueProjectCategoryTagInitListener.java

@ -0,0 +1,67 @@
package com.epmet.mq.listener;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.constants.ConsomerGroupConstants;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.rocketmq.messages.InitCustomerMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.dto.form.CategoryTagInitFormDTO;
import com.epmet.service.IssueProjectCategoryDictService;
import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.redisson.api.RLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
* 监听初始化客户动作为客户初始化议题项目的分类标签数据
*/
@RocketMQMessageListener(topic = TopicConstants.INIT_CUSTOMER,
consumerGroup = ConsomerGroupConstants.ISSUE_PROJECT_CATEGORY_TAG,
messageModel = MessageModel.CLUSTERING,
selectorExpression = "*")
@Component
public class IssueProjectCategoryTagInitListener implements RocketMQListener<MessageExt> {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private IssueProjectCategoryDictService issueProjectCategoryDictService;
@Autowired
private DistributedLock distributedLock;
@Override
public void onMessage(MessageExt messageExt) {
String msg = new String(messageExt.getBody());
logger.info("初始化客户-初始化客户自定义信息-收到消息内容:{}", msg);
InitCustomerMQMsg msgObj = JSON.parseObject(msg, InitCustomerMQMsg.class);
CategoryTagInitFormDTO dto = new CategoryTagInitFormDTO();
dto.setCustomerId(msgObj.getCustomerId());
RLock lock = null;
try {
lock = distributedLock.getLock(String.format("lock:init_customer_home:%s", msgObj.getCustomerId()),
30l, 30l, TimeUnit.SECONDS);
issueProjectCategoryDictService.init(dto);
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【RocketMQ】初始化客户组件失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
} catch (Exception e) {
// 不是我们自己抛出的异常,可以让MQ重试
logger.error("【RocketMQ】初始化客户组件失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
throw e;
} finally {
distributedLock.unLock(lock);
}
}
}

12
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java

@ -148,18 +148,6 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl<IssuePr
@Override @Override
public List<CustomerCategoryListResultDTO> categoryList(String customerId) { public List<CustomerCategoryListResultDTO> categoryList(String customerId) {
List<CustomerCategoryListResultDTO> resultList = baseDao.selectCustomerCategoryList(customerId); List<CustomerCategoryListResultDTO> resultList = baseDao.selectCustomerCategoryList(customerId);
//2021.3.24 sun 客户初始化分类标签的接口不想加到新客户创建的程序里,因此加到这里 在标签列表的查询方法中也有关于初始化分类标签的逻辑
try {
if(CollectionUtils.isEmpty(resultList)){
CategoryTagInitFormDTO dto = new CategoryTagInitFormDTO();
dto.setCustomerId(customerId);
init(dto);
resultList = baseDao.selectCustomerCategoryList(customerId);
}
} catch (Exception e) {
logger.error("客户初始化分类、标签失败,客户Id->"+customerId, e);
}
//end
return resultList; return resultList;
} }

14
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectTagDictServiceImpl.java

@ -131,20 +131,6 @@ public class IssueProjectTagDictServiceImpl extends BaseServiceImpl<IssueProject
Map<String,List<IssueCategoryTagResultDTO>> map = issueProjectTagDictRedis.getDefaultTagsSortedByCategoryAndCustomizedTagsOrderByRank(tokenDto.getCustomerId(), Map<String,List<IssueCategoryTagResultDTO>> map = issueProjectTagDictRedis.getDefaultTagsSortedByCategoryAndCustomizedTagsOrderByRank(tokenDto.getCustomerId(),
formDTO.getCategoryIdList()); formDTO.getCategoryIdList());
result.setDefaulted(map.get(ModuleConstants.DEFAULT_TAG_CATEGORY_NAME)); result.setDefaulted(map.get(ModuleConstants.DEFAULT_TAG_CATEGORY_NAME));
//2021.3.24 sun 客户初始化分类标签的接口不想加到新客户创建的程序里,因此加到这里 在分类列表的查询方法中也有关于初始化分类标签的逻辑
try {
if(CollectionUtils.isEmpty(result.getDefaulted())){
CategoryTagInitFormDTO dto = new CategoryTagInitFormDTO();
dto.setCustomerId(tokenDto.getCustomerId());
issueProjectCategoryDictService.init(dto);
Map<String,List<IssueCategoryTagResultDTO>> map1 = issueProjectTagDictRedis.getDefaultTagsSortedByCategoryAndCustomizedTagsOrderByRank(tokenDto.getCustomerId(),
formDTO.getCategoryIdList());
result.setDefaulted(map1.get(ModuleConstants.DEFAULT_TAG_CATEGORY_NAME));
}
} catch (Exception e) {
logger.error("客户初始化分类、标签失败,客户Id->"+tokenDto.getCustomerId(), e);
}
//end
List<IssueCategoryTagResultDTO> list = map.get(ModuleConstants.CUSTOMIZED_TAG_CATEGORY_NAME); List<IssueCategoryTagResultDTO> list = map.get(ModuleConstants.CUSTOMIZED_TAG_CATEGORY_NAME);
if (CollectionUtils.isNotEmpty(list)) { if (CollectionUtils.isNotEmpty(list)) {
result.setCustomized(list.stream().limit(NumConstant.TEN).collect(Collectors.toList())); result.setCustomized(list.stream().limit(NumConstant.TEN).collect(Collectors.toList()));

Loading…
Cancel
Save