@@ -184,6 +191,10 @@
SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
+
+
+ 192.168.1.130:9876;192.168.1.132:9876
+ epmet_message
@@ -228,6 +239,10 @@
SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
+
+
+ 192.168.1.130:9876;192.168.1.132:9876
+ epmet_message
@@ -272,6 +287,10 @@
SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
+
+
+ 192.168.10.161:9876
+ epmet_message
@@ -313,6 +332,10 @@
SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1
+
+
+ 192.168.11.187:9876;192.168.11.184:9876
+ epmet_message
diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/SystemMessageController.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/SystemMessageController.java
new file mode 100644
index 0000000000..7a31e91785
--- /dev/null
+++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/SystemMessageController.java
@@ -0,0 +1,27 @@
+package com.epmet.controller;
+
+import com.epmet.commons.tools.utils.Result;
+import com.epmet.commons.tools.validator.ValidatorUtils;
+import com.epmet.dto.form.SystemMsgFormDTO;
+import com.epmet.service.SystemMessageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("system")
+public class SystemMessageController {
+
+ @Autowired
+ private SystemMessageService systemMessageService;
+
+ @PostMapping("send-by-mq")
+ public Result sendSystemMsgByMQ(@RequestBody SystemMsgFormDTO form) {
+ ValidatorUtils.validateEntity(form);
+ systemMessageService.sendMQMessage(form.getMessageType(), form.getContent());
+ return new Result();
+ }
+
+}
diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/SystemMessageDao.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/SystemMessageDao.java
new file mode 100644
index 0000000000..7770c58547
--- /dev/null
+++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/SystemMessageDao.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright 2018 人人开源 https://www.renren.io
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.epmet.dao;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.entity.SystemMessageEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 系统消息表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-01-06
+ */
+@Mapper
+public interface SystemMessageDao extends BaseDao {
+
+}
\ No newline at end of file
diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/SystemMessageEntity.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/SystemMessageEntity.java
new file mode 100644
index 0000000000..effdb2d59b
--- /dev/null
+++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/SystemMessageEntity.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright 2018 人人开源 https://www.renren.io
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.epmet.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.omg.CORBA.StringHolder;
+
+import java.util.Date;
+
+/**
+ * 系统消息表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-01-06
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("system_message")
+public class SystemMessageEntity extends BaseEpmetEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 消息类型
+ */
+ private String msgType;
+
+ /**
+ * 发送途径
+ */
+ private String sendApproach;
+
+ /**
+ * 消息内容
+ */
+ private String content;
+
+}
diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/SystemMessageService.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/SystemMessageService.java
new file mode 100644
index 0000000000..2985b550c9
--- /dev/null
+++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/SystemMessageService.java
@@ -0,0 +1,7 @@
+package com.epmet.service;
+
+public interface SystemMessageService {
+
+ void sendMQMessage(String messageType, Object content);
+
+}
diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java
new file mode 100644
index 0000000000..64a067af56
--- /dev/null
+++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java
@@ -0,0 +1,70 @@
+package com.epmet.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.epmet.commons.rocketmq.constants.TopicConstants;
+import com.epmet.commons.tools.exception.EpmetErrorCode;
+import com.epmet.commons.tools.exception.ExceptionUtils;
+import com.epmet.commons.tools.exception.RenException;
+import com.epmet.constant.SystemMessageSendApproach;
+import com.epmet.constant.SystemMessageType;
+import com.epmet.dao.SystemMessageDao;
+import com.epmet.entity.SystemMessageEntity;
+import com.epmet.service.SystemMessageService;
+import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.remoting.common.RemotingHelper;
+import org.apache.rocketmq.spring.core.RocketMQTemplate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+public class SystemMessageServiceImpl implements SystemMessageService {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Autowired
+ private SystemMessageDao systemMessageDao;
+
+ @Autowired
+ private RocketMQTemplate rocketMQTemplate;
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void sendMQMessage(String messageType, Object content) {
+ String contentStr = JSON.toJSONString(content);
+ //存储消息到表
+ SystemMessageEntity systemMessageEntity = new SystemMessageEntity();
+ systemMessageEntity.setMsgType(messageType);
+ systemMessageEntity.setSendApproach(SystemMessageSendApproach.MQ);
+ systemMessageEntity.setContent(contentStr);
+ systemMessageDao.insert(systemMessageEntity);
+
+ //发送mq消息
+ try {
+ Message meMessage = new Message(getTopicByMsgType(messageType), contentStr.getBytes(RemotingHelper.DEFAULT_CHARSET));
+ rocketMQTemplate.getProducer().send(meMessage);
+ } catch (Exception e) {
+ String errorStackTrace = ExceptionUtils.getErrorStackTrace(e);
+ logger.error("发送系统消息失败,堆栈信息:{}", errorStackTrace);
+ throw new RenException(EpmetErrorCode.SYSTEM_MQ_MSG_SEND_FAIL.getCode());
+ }
+ }
+
+ /**
+ * @Description 根据消息类型获取topic
+ * @return
+ * @author wxz
+ * @date 2021.01.06 13:42
+ */
+ private String getTopicByMsgType(String msgType) {
+ String topic = null;
+ switch (msgType) {
+ case SystemMessageType.INIT_CUSTOMER:
+ topic = TopicConstants.INIT_CUSTOMER;
+ break;
+ }
+ return topic;
+ }
+}
diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/bootstrap.yml
index fc82a1608a..0639ecbfd2 100644
--- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/bootstrap.yml
+++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/bootstrap.yml
@@ -137,4 +137,9 @@ dingTalk:
shutdown:
graceful:
enable: true #是否开启优雅停机
- waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
\ No newline at end of file
+ waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
+
+rocketmq:
+ name-server: @rocketmq.nameserver@
+ producer:
+ group: @rocketmq.producer.group@
\ No newline at end of file
diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/SystemMessageDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/SystemMessageDao.xml
new file mode 100644
index 0000000000..a5ce6d9da5
--- /dev/null
+++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/SystemMessageDao.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AddTemplateFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AddTemplateFormDTO.java
index edb391eb73..16491eb32e 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AddTemplateFormDTO.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AddTemplateFormDTO.java
@@ -48,4 +48,9 @@ public class AddTemplateFormDTO implements Serializable {
* 关键字名称
*/
private List nameList;
+
+ /**
+ * 是否同步到所有客户
+ */
+ private Boolean isSync = true;
}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/DelPersonalTempFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/DelPersonalTempFormDTO.java
new file mode 100644
index 0000000000..9c49eeeccf
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/DelPersonalTempFormDTO.java
@@ -0,0 +1,31 @@
+package com.epmet.dto.form;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author zhaoqifeng
+ * @dscription
+ * @date 2021/1/11 14:53
+ */
+@NoArgsConstructor
+@Data
+public class DelPersonalTempFormDTO implements Serializable {
+
+ private static final long serialVersionUID = -1445036628319660147L;
+ /**
+ * 客户ID
+ */
+ private String customerId;
+ /**
+ * 所属端 居民端resi 工作端work
+ */
+ private String clientType;
+ /**
+ * 模板id
+ */
+ private List tempIdList;
+}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitAllFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitAllFormDTO.java
new file mode 100644
index 0000000000..ed476cc3b6
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitAllFormDTO.java
@@ -0,0 +1,26 @@
+package com.epmet.dto.form;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author zhaoqifeng
+ * @dscription
+ * @date 2021/1/11 14:47
+ */
+@NoArgsConstructor
+@Data
+public class InitAllFormDTO implements Serializable {
+
+ private static final long serialVersionUID = 5198153778356904936L;
+ /**
+ * 测试号APPID
+ */
+ private String appId;
+ /**
+ * 模板ID
+ */
+ private String tempId;
+}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitFormDTO.java
index ab154a196a..196128aff2 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitFormDTO.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitFormDTO.java
@@ -36,4 +36,9 @@ public class InitFormDTO implements Serializable {
* 工作端需要同步的模板id数组
*/
private List workTempIdList;
+
+ /**
+ * 1 已同步,0 未同步
+ */
+ private String sync;
}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java
index 0229316e01..1fccf69f2d 100644
--- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java
@@ -17,9 +17,14 @@ public class TemplateDTO implements Serializable {
*/
private String id;
/**
- * 模板ID
+ * 公共模板ID
*/
private String tmplId;
+ private String personalId;
+ /**
+ * 客户模板ID
+ */
+ private String personalTempId;
/**
* 标题
*/
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/SubscribeController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/SubscribeController.java
index 47d3b6d653..63a31e73b2 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/SubscribeController.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/SubscribeController.java
@@ -146,4 +146,30 @@ public class SubscribeController {
CustomerTempResultDTO result = subscribeService.getCustomerTemplate(formDTO);
return new Result().ok(result);
}
+
+ /**
+ * 同步单一模板到所有客户
+ * @author zhaoqifeng
+ * @date 2021/1/11 14:49
+ * @param formDTO
+ * @return com.epmet.commons.tools.utils.Result
+ */
+ @PostMapping("initall")
+ public Result initAll(@RequestBody InitAllFormDTO formDTO) {
+ subscribeService.initAll(formDTO);
+ return new Result();
+ }
+
+ /**
+ * 删除客户模板
+ * @author zhaoqifeng
+ * @date 2021/1/11 14:54
+ * @param formDTO
+ * @return com.epmet.commons.tools.utils.Result
+ */
+ @PostMapping("delpersonaltemp")
+ public Result delPersonalTemp(@RequestBody DelPersonalTempFormDTO formDTO) {
+ subscribeService.delPersonalTemp(formDTO);
+ return new Result();
+ }
}
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java
index 93fe3d2d95..054712bea0 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java
@@ -105,4 +105,6 @@ public interface PersonalTemplateDao extends BaseDao {
List selectListByKey(@Param("appId") String appId, @Param("tid") String tid, @Param("keyIds") String keyIds);
List selectTemplateListV2(TemplateListV2FormDTO formDTO);
+
+ PersonalTemplateDTO getTempByPid();
}
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java
index 1f3540a90f..a586844667 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java
@@ -156,4 +156,14 @@ public interface PersonalTemplateService extends BaseService getListByKey(String appId, String tid, String keyIds);
List templateListV2(TemplateListV2FormDTO formDTO);
+
+ /**
+ * 获取个人模板
+ * @author zhaoqifeng
+ * @date 2021/1/11 15:32
+ * @param customerId
+ * @param pid
+ * @return com.epmet.dto.PersonalTemplateDTO
+ */
+ PersonalTemplateDTO getTempByPid(String customerId, String pid);
}
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/SubscribeService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/SubscribeService.java
index c56d17487a..6790a2aa15 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/SubscribeService.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/SubscribeService.java
@@ -102,4 +102,22 @@ public interface SubscribeService {
*/
CustomerTempResultDTO getCustomerTemplate(InitFormDTO formDTO);
+ /**
+ * 同步单一模板到所有客户
+ * @author zhaoqifeng
+ * @date 2021/1/11 14:49
+ * @param formDTO
+ * @return void
+ */
+ void initAll(InitAllFormDTO formDTO);
+
+ /**
+ * 删除客户模板
+ * @author zhaoqifeng
+ * @date 2021/1/11 14:54
+ * @param formDTO
+ * @return void
+ */
+ void delPersonalTemp(DelPersonalTempFormDTO formDTO);
+
}
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java
index 65e2f87e51..96e257c141 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java
@@ -165,4 +165,18 @@ public class PersonalTemplateServiceImpl extends BaseServiceImpl templateListV2(TemplateListV2FormDTO formDTO) {
return baseDao.selectTemplateListV2(formDTO);
}
+
+ /**
+ * 获取个人模板
+ *
+ * @param customerId
+ * @param pid
+ * @return com.epmet.dto.PersonalTemplateDTO
+ * @author zhaoqifeng
+ * @date 2021/1/11 15:32
+ */
+ @Override
+ public PersonalTemplateDTO getTempByPid(String customerId, String pid) {
+ return baseDao.selectSetTemp(customerId, pid);
+ }
}
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java
index 6d212b75ee..b51c32632e 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java
@@ -199,44 +199,46 @@ public class SubscribeServiceImpl implements SubscribeService {
personalTemplateDTO.setKeyWords(keywords);
personalTemplateDTO.setType(formDTO.getType());
personalTemplateService.save(personalTemplateDTO);
- //获取客户列表
- List customerList = paCustomerService.getCustomerListByTestId(authInfo.getCustomerId());
- List customerNames = new ArrayList<>();
- if (null != customerList && customerList.size() > NumConstant.ZERO) {
- for (PaCustomerDTO paCustomerDTO : customerList) {
- //获取小程序调用令牌
- AuthorizationInfoDTO authDTO = authorizationInfoDao.getAuthInfoByCustomer(paCustomerDTO.getId(), authInfo.getClientType());
- if (null == authDTO) {
- log.error("客户[" + paCustomerDTO.getCustomerName() + "]未授权");
- customerNames.add(paCustomerDTO.getCustomerName());
- continue;
- }
- WxResult wxResult1 = wxMaSubscribeService.addTemplate(authDTO.getAuthorizerAccessToken(), request);
- if (!wxResult1.success()) {
- log.error("客户[" + paCustomerDTO.getCustomerName() + "]添加模板失败,原因:" + wxResult1.getErrorCode() + wxResult1.getErrorMsg());
- customerNames.add(paCustomerDTO.getCustomerName());
- continue;
+ if (formDTO.getIsSync()) {
+ //获取客户列表
+ List customerList = paCustomerService.getCustomerListByTestId(authInfo.getCustomerId());
+ List customerNames = new ArrayList<>();
+ if (null != customerList && customerList.size() > NumConstant.ZERO) {
+ for (PaCustomerDTO paCustomerDTO : customerList) {
+ //获取小程序调用令牌
+ AuthorizationInfoDTO authDTO = authorizationInfoDao.getAuthInfoByCustomer(paCustomerDTO.getId(), authInfo.getClientType());
+ if (null == authDTO) {
+ log.error("客户[" + paCustomerDTO.getCustomerName() + "]未授权");
+ customerNames.add(paCustomerDTO.getCustomerName());
+ continue;
+ }
+ WxResult wxResult1 = wxMaSubscribeService.addTemplate(authDTO.getAuthorizerAccessToken(), request);
+ if (!wxResult1.success()) {
+ log.error("客户[" + paCustomerDTO.getCustomerName() + "]添加模板失败,原因:" + wxResult1.getErrorCode() + wxResult1.getErrorMsg());
+ customerNames.add(paCustomerDTO.getCustomerName());
+ continue;
+ }
+ String tmplId = wxResult1.getData();
+ PersonalTemplateDTO templateDTO = new PersonalTemplateDTO();
+ templateDTO.setCustomerId(paCustomerDTO.getId());
+ templateDTO.setClientType(authInfo.getClientType());
+ templateDTO.setAppId(authDTO.getAuthorizerAppid());
+ templateDTO.setPid(priTmplId);
+ templateDTO.setPriTmplId(tmplId);
+ templateDTO.setTid(formDTO.getTid());
+ templateDTO.setKeyIds(keyIds);
+ templateDTO.setTitle(formDTO.getTitle());
+ templateDTO.setSceneDesc(formDTO.getSceneDesc());
+ templateDTO.setKeyWords(keywords);
+ templateDTO.setType(formDTO.getType());
+ personalTemplateService.save(templateDTO);
}
- String tmplId = wxResult1.getData();
- PersonalTemplateDTO templateDTO = new PersonalTemplateDTO();
- templateDTO.setCustomerId(paCustomerDTO.getId());
- templateDTO.setClientType(authInfo.getClientType());
- templateDTO.setAppId(authDTO.getAuthorizerAppid());
- templateDTO.setPid(priTmplId);
- templateDTO.setPriTmplId(tmplId);
- templateDTO.setTid(formDTO.getTid());
- templateDTO.setKeyIds(keyIds);
- templateDTO.setTitle(formDTO.getTitle());
- templateDTO.setSceneDesc(formDTO.getSceneDesc());
- templateDTO.setKeyWords(keywords);
- templateDTO.setType(formDTO.getType());
- personalTemplateService.save(templateDTO);
}
- }
- if (customerNames.size() > NumConstant.ZERO) {
- String names = String.join(",", customerNames);
- throw new RenException("客户[" + names + "]添加模板失败");
+ if (customerNames.size() > NumConstant.ZERO) {
+ String names = String.join(",", customerNames);
+ throw new RenException("客户[" + names + "]添加模板失败");
+ }
}
}
@@ -348,7 +350,6 @@ public class SubscribeServiceImpl implements SubscribeService {
log.error("居民端同步失败:" + wxResult.getErrorCode() + wxResult.getErrorMsg());
}
});
- resultDTO.setResiList(resiList);
AuthorizationInfoDTO workAuthDTO = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), "work");
if (null == workAuthDTO) {
@@ -371,10 +372,100 @@ public class SubscribeServiceImpl implements SubscribeService {
log.error("工作端同步失败:" + wxResult.getErrorCode() + wxResult.getErrorMsg());
}
});
+
+// resultDTO.setResiList(resiList.stream().filter(item -> formDTO.getSync().equals(item.getState())).collect(Collectors.toList()));
+// resultDTO.setWorkList(workList.stream().filter(item -> formDTO.getSync().equals(item.getState())).collect(Collectors.toList()));
+ resultDTO.setResiList(resiList);
resultDTO.setWorkList(workList);
return resultDTO;
}
+ /**
+ * 同步单一模板到所有客户
+ *
+ * @param formDTO
+ * @return void
+ * @author zhaoqifeng
+ * @date 2021/1/11 14:49
+ */
+ @Override
+ public void initAll(InitAllFormDTO formDTO) {
+ AuthorizationInfoDTO authInfo = authorizationInfoDao.selectInfoByAppId(formDTO.getAppId());
+ PersonalTemplateDTO publicDTO = personalTemplateService.getTempByPid(authInfo.getCustomerId(), formDTO.getTempId());
+
+ //获取客户列表
+ List customerList = paCustomerService.getCustomerListByTestId(authInfo.getCustomerId());
+ List customerNames = new ArrayList<>();
+ if (null != customerList && customerList.size() > NumConstant.ZERO) {
+ for (PaCustomerDTO paCustomerDTO : customerList) {
+ PersonalTemplateDTO personalTemplateDTO = personalTemplateService.getTempByPid(paCustomerDTO.getId(), publicDTO.getPriTmplId());
+ if (null == personalTemplateDTO) {
+ //获取小程序调用令牌
+ AuthorizationInfoDTO authDTO = authorizationInfoDao.getAuthInfoByCustomer(paCustomerDTO.getId(), authInfo.getClientType());
+
+ List keyIds = Arrays.asList(publicDTO.getKeyIds().split(","));
+ List keyIdList = keyIds.stream().map(Integer::parseInt).collect(Collectors.toList());
+ WxAddTemplateReq request = new WxAddTemplateReq();
+ request.setTid(publicDTO.getTid());
+ request.setKidList(keyIdList);
+ request.setSceneDesc(publicDTO.getSceneDesc());
+ WxResult wxResult = wxMaSubscribeService.addTemplate(authInfo.getAuthorizerAccessToken(), request);
+ if (null == authDTO) {
+ log.error("客户[" + paCustomerDTO.getCustomerName() + "]未授权");
+ customerNames.add(paCustomerDTO.getCustomerName());
+ continue;
+ }
+
+ String tmplId = wxResult.getData();
+ PersonalTemplateDTO templateDTO = new PersonalTemplateDTO();
+ templateDTO.setCustomerId(paCustomerDTO.getId());
+ templateDTO.setClientType(authInfo.getClientType());
+ templateDTO.setAppId(authDTO.getAuthorizerAppid());
+ templateDTO.setPid(publicDTO.getPriTmplId());
+ templateDTO.setPriTmplId(tmplId);
+ templateDTO.setTid(publicDTO.getTid());
+ templateDTO.setKeyIds(publicDTO.getKeyIds());
+ templateDTO.setTitle(publicDTO.getTitle());
+ templateDTO.setSceneDesc(publicDTO.getSceneDesc());
+ templateDTO.setKeyWords(publicDTO.getKeyWords());
+ templateDTO.setType(publicDTO.getType());
+ personalTemplateService.save(templateDTO);
+ }
+ }
+ }
+
+ if (customerNames.size() > NumConstant.ZERO) {
+ String names = String.join(",", customerNames);
+ log.error("客户[" + names + "]添加模板失败");
+ }
+ }
+
+ /**
+ * 删除客户模板
+ *
+ * @param formDTO
+ * @return void
+ * @author zhaoqifeng
+ * @date 2021/1/11 14:54
+ */
+ @Override
+ public void delPersonalTemp(DelPersonalTempFormDTO formDTO) {
+ AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), formDTO.getClientType());
+ if (null == authInfo) {
+ throw new RenException("未授权或token已过期");
+ }
+ formDTO.getTempIdList().forEach(tempId -> {
+ PersonalTemplateDTO dto = personalTemplateService.get(tempId);
+ WxDelTemplateReq request = new WxDelTemplateReq();
+ request.setPriTmplId(dto.getPriTmplId());
+ WxResult wxResult = wxMaSubscribeService.delTemplate(authInfo.getAuthorizerAccessToken(), request);
+ if (!wxResult.success()) {
+ throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg());
+ }
+ personalTemplateService.deleteById(dto.getId());
+ });
+ }
+
private WxGetCategoryResult getCategoryResult(String accessToken) {
WxResult wxResult = wxMaSubscribeService.getCategory(accessToken);
diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml
index 26c12ac4ec..644cda2bc6 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml
@@ -39,7 +39,17 @@
SELECT ID,
- TITLE
+ CUSTOMER_ID,
+ CLIENT_TYPE,
+ APP_ID,
+ PID,
+ PRI_TMPL_ID,
+ TYPE,
+ TID,
+ TITLE,
+ KEY_IDS,
+ KEY_WORDS,
+ SCENE_DESC
FROM personal_template
WHERE DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
@@ -49,13 +59,16 @@
SELECT
t1.ID AS id,
t1.PRI_TMPL_ID AS tmplId,
+ IFNULL(t2.ID, '') AS personalId,
+ IFNULL(t2.PRI_TMPL_ID, '') AS personalTempId,
t1.TITLE AS title,
IF(ISNULL(t2.ID),'0','1') AS state
FROM
(SELECT
ID,
TITLE,
- PRI_TMPL_ID
+ PRI_TMPL_ID,
+ CREATED_TIME
FROM
personal_template
WHERE
@@ -74,6 +87,7 @@
AND CUSTOMER_ID = #{customerId}
AND CLIENT_TYPE = #{clientType}) t2
ON t1.PRI_TMPL_ID = t2.PID
+ ORDER BY t1.CREATED_TIME DESC
diff --git a/epmet-module/gov-org/gov-org-server/pom.xml b/epmet-module/gov-org/gov-org-server/pom.xml
index aa5fe041a6..595c20f348 100644
--- a/epmet-module/gov-org/gov-org-server/pom.xml
+++ b/epmet-module/gov-org/gov-org-server/pom.xml
@@ -95,6 +95,12 @@
2.0.0
compile
+
+
+ com.epmet
+ epmet-commons-rocketmq
+ 2.0.0
+
@@ -156,6 +162,10 @@
SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
+
+
+ 192.168.1.130:9876;192.168.1.132:9876
+ epmet_message
@@ -194,6 +204,10 @@
SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
+
+
+ 192.168.1.130:9876;192.168.1.132:9876
+ epmet_message
@@ -233,6 +247,10 @@
SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
+
+
+ 192.168.10.161:9876
+ epmet_message
@@ -269,6 +287,10 @@
SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1
+
+
+ 192.168.11.187:9876;192.168.11.184:9876
+ epmet_message
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/InitCustomerOrgListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/InitCustomerOrgListener.java
new file mode 100644
index 0000000000..1308d09a36
--- /dev/null
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/InitCustomerOrgListener.java
@@ -0,0 +1,87 @@
+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.exception.ExceptionUtils;
+import com.epmet.commons.tools.exception.RenException;
+import com.epmet.constant.UserWorkType;
+import com.epmet.dto.CustomerAgencyDTO;
+import com.epmet.dto.form.AddAgencyAndStaffFormDTO;
+import com.epmet.dto.form.AdminStaffFromDTO;
+import com.epmet.service.AgencyService;
+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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 监听初始化客户动作,为客户初始化角色列表
+ */
+@RocketMQMessageListener(topic = TopicConstants.INIT_CUSTOMER,
+ consumerGroup = ConsomerGroupConstants.INIT_CUSTOMER_ORG_GROUP,
+ messageModel = MessageModel.CLUSTERING,
+ selectorExpression = "*")
+@Component
+public class InitCustomerOrgListener implements RocketMQListener {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Autowired
+ private AgencyService agencyService;
+
+ @Override
+ public void onMessage(MessageExt messageExt) {
+ String msg = new String(messageExt.getBody());
+ logger.info("初始化客户-初始化组织信息-收到消息内容:{}", msg);
+ InitCustomerMQMsg msgObj = JSON.parseObject(msg, InitCustomerMQMsg.class);
+ try {
+ agencyService.saveRootAgency(constructRootAndAgencyDTO(msgObj));
+ } catch (RenException e) {
+ // 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
+ logger.error("【RocketMQ】初始化客户组织失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
+ } catch (Exception e) {
+ // 不是我们自己抛出的异常,可以让MQ重试
+ logger.error("【RocketMQ】初始化客户组织失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
+ throw e;
+ }
+ }
+
+ /**
+ * @Description 构造dto
+ * @return
+ * @author wxz
+ * @date 2021.01.06 15:03
+ */
+ private AddAgencyAndStaffFormDTO constructRootAndAgencyDTO(InitCustomerMQMsg msgObj) {
+ AddAgencyAndStaffFormDTO agencyAndStaff = new AddAgencyAndStaffFormDTO();
+ //客户组织信息
+ CustomerAgencyDTO agencyDTO = new CustomerAgencyDTO();
+ agencyDTO.setId(msgObj.getAgency().getAgencyId());
+ agencyDTO.setCustomerId(msgObj.getCustomerId());
+ agencyDTO.setOrganizationName(msgObj.getAgency().getOrganizationName());
+ agencyDTO.setLevel(msgObj.getAgency().getLevel());
+ agencyDTO.setAreaCode(msgObj.getAgency().getAreaCode());
+ agencyDTO.setProvince(msgObj.getAgency().getProvince());
+ agencyDTO.setCity(msgObj.getAgency().getCity());
+ agencyDTO.setDistrict(msgObj.getAgency().getDistrict());
+ agencyAndStaff.setAgencyDTO(agencyDTO);
+
+ //客户管理员信息
+ AdminStaffFromDTO staffSubmitFrom = new AdminStaffFromDTO();
+ staffSubmitFrom.setCustomerId(msgObj.getCustomerId());
+ staffSubmitFrom.setAgencyId(msgObj.getStaff().getAgencyId());
+ staffSubmitFrom.setGender(msgObj.getStaff().getGender());
+ staffSubmitFrom.setMobile(msgObj.getStaff().getMobile());
+ staffSubmitFrom.setName(msgObj.getStaff().getName());
+ staffSubmitFrom.setWorkType(UserWorkType.FULL_TIME);
+ agencyAndStaff.setStaffDTO(staffSubmitFrom);
+
+ return agencyAndStaff;
+ }
+}
diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
index cc04700841..f507af7c29 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
+++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
@@ -351,7 +351,13 @@ public class AgencyServiceImpl implements AgencyService {
throw new RenException(EpmetErrorCode.OPER_ADD_CUSTOMER_ROOT_AGENCY_ERROR.getCode());
}
- //3.查询客户具有指定RoleKey的角色信息
+ //3.调用epmet-user服务,初始化客户对应的角色;其内部会调用access服务给角色分配权限信息
+ Result initResult = epmetUserOpenFeignClient.initGovStaffRolesForCustomer(agencyDTO.getCustomerId());
+ if (!initResult.success()) {
+ throw new RenException("客户新增:调用user服务为客户初始化角色数据失败:".concat(initResult.toString()));
+ }
+
+ //4.查询客户具有指定RoleKey的角色信息
CustomerRoleFormDTO customerRoleForm = new CustomerRoleFormDTO();
customerRoleForm.setCustomerId(agencyDTO.getCustomerId());
customerRoleForm.setRoleKey(RoleKeyConstants.ROLE_KEY_ROOT_MANAGER);
@@ -361,7 +367,7 @@ public class AgencyServiceImpl implements AgencyService {
throw new RenException("查询客户具有指定RoleKey的角色信息失败:".concat(getRoleResult.toString()));
}
- //4.新增客户管理员信息
+ //5.新增客户管理员信息
StaffSubmitFromDTO staffSubmitFrom = ConvertUtils.sourceToTarget(staffDTO, StaffSubmitFromDTO.class);
staffSubmitFrom.setRoles(Arrays.asList(getRoleResult.getData().getId()));
staffSubmitFrom.setApp("gov");
diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml b/epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml
index 4183b9c159..6f63c9a156 100644
--- a/epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml
+++ b/epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml
@@ -141,4 +141,7 @@ dingTalk:
shutdown:
graceful:
enable: true #是否开启优雅停机
- waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
\ No newline at end of file
+ waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
+
+rocketmq:
+ name-server: @rocketmq.nameserver@
\ No newline at end of file
diff --git a/epmet-module/oper-crm/oper-crm-server/pom.xml b/epmet-module/oper-crm/oper-crm-server/pom.xml
index 1ee199269a..610cdd9734 100644
--- a/epmet-module/oper-crm/oper-crm-server/pom.xml
+++ b/epmet-module/oper-crm/oper-crm-server/pom.xml
@@ -87,6 +87,18 @@
2.0.0
compile
+
+
+ com.epmet
+ epmet-message-client
+ 2.0.0
+
+
+
+ com.epmet
+ epmet-commons-rocketmq
+ 2.0.0
+
diff --git a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java
index 9857f910c5..9080d1573f 100644
--- a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java
+++ b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java
@@ -22,6 +22,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.rocketmq.messages.InitCustomerMQMsg;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
@@ -32,6 +33,7 @@ import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ModuleConstant;
import com.epmet.constant.RoleKeyConstants;
+import com.epmet.constant.SystemMessageType;
import com.epmet.constant.UserWorkType;
import com.epmet.dao.CustomerDao;
import com.epmet.dto.*;
@@ -80,6 +82,8 @@ public class CustomerServiceImpl extends BaseServiceImpl page(Map params) {
@@ -468,48 +472,62 @@ public class CustomerServiceImpl extends BaseServiceImpl getAllList() {
List list = baseDao.getAllList();
diff --git a/epmet-module/oper-customize/oper-customize-server/pom.xml b/epmet-module/oper-customize/oper-customize-server/pom.xml
index e8e170aec9..12641ab159 100644
--- a/epmet-module/oper-customize/oper-customize-server/pom.xml
+++ b/epmet-module/oper-customize/oper-customize-server/pom.xml
@@ -70,6 +70,13 @@
2.0.0
compile
+
+
+
+ com.epmet
+ epmet-commons-rocketmq
+ 2.0.0
+
@@ -129,6 +136,10 @@
SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
+
+
+ 192.168.1.130:9876;192.168.1.132:9876
+ epmet_message
@@ -167,6 +178,10 @@
SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
+
+
+ 192.168.1.130:9876;192.168.1.132:9876
+ epmet_message
@@ -205,6 +220,10 @@
SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
+
+
+ 192.168.10.161:9876
+ epmet_message
@@ -241,6 +260,10 @@
SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1
+
+
+ 192.168.11.187:9876;192.168.11.184:9876
+ epmet_message
diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerHomeDao.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerHomeDao.java
index 42bc2824b4..c804d757ed 100644
--- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerHomeDao.java
+++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerHomeDao.java
@@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.HomeDesignFormDTO;
import com.epmet.entity.CustomerHomeEntity;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -43,4 +44,6 @@ public interface CustomerHomeDao extends BaseDao {
* @date 2020/3/16 14:02
**/
List selectCustomerHomeList(HomeDesignFormDTO formDTO);
+
+ int countByCustomerId(@Param("customerId") String customerId);
}
\ No newline at end of file
diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/mq/listener/InitCustomerCustomizeListener.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/mq/listener/InitCustomerCustomizeListener.java
new file mode 100644
index 0000000000..df2fea0902
--- /dev/null
+++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/mq/listener/InitCustomerCustomizeListener.java
@@ -0,0 +1,54 @@
+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.exception.ExceptionUtils;
+import com.epmet.commons.tools.exception.RenException;
+import com.epmet.dto.CustomerHomeDTO;
+import com.epmet.service.CustomerHomeService;
+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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 监听初始化客户动作,为客户初始化角色列表
+ */
+@RocketMQMessageListener(topic = TopicConstants.INIT_CUSTOMER,
+ consumerGroup = ConsomerGroupConstants.INIT_CUSTOMER_CUSTOMIZE_GROUP,
+ messageModel = MessageModel.CLUSTERING,
+ selectorExpression = "*")
+@Component
+public class InitCustomerCustomizeListener implements RocketMQListener {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Autowired
+ private CustomerHomeService customerHomeService;
+
+ @Override
+ public void onMessage(MessageExt messageExt) {
+ String msg = new String(messageExt.getBody());
+ logger.info("初始化客户-初始化客户自定义信息-收到消息内容:{}", msg);
+ InitCustomerMQMsg msgObj = JSON.parseObject(msg, InitCustomerMQMsg.class);
+
+ CustomerHomeDTO customerHomeDTO = new CustomerHomeDTO();
+ customerHomeDTO.setCustomerId(msgObj.getCustomerId());
+ try {
+ customerHomeService.init(customerHomeDTO);
+ } catch (RenException e) {
+ // 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
+ logger.error("【RocketMQ】初始化客户组件失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
+ } catch (Exception e) {
+ // 不是我们自己抛出的异常,可以让MQ重试
+ logger.error("【RocketMQ】初始化客户组件失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
+ throw e;
+ }
+ }
+}
\ No newline at end of file
diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerHomeServiceImpl.java b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerHomeServiceImpl.java
index 8ba5ba26bd..7b326bfbb3 100644
--- a/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerHomeServiceImpl.java
+++ b/epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerHomeServiceImpl.java
@@ -20,6 +20,8 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.exception.EpmetErrorCode;
+import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
@@ -119,6 +121,11 @@ public class CustomerHomeServiceImpl extends BaseServiceImpl 0) {
+ throw new RenException("用户Home组件已存在,请勿重复初始化");
+ }
+
//居民端模板
List resiTempList = customerHomeTemplateService.getTemplateByClient(OperCustomizeConstant.RESIDENT);
//居民端草稿
diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/bootstrap.yml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/bootstrap.yml
index 988bd0c217..d9b167d150 100644
--- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/bootstrap.yml
+++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/bootstrap.yml
@@ -124,6 +124,9 @@ dingTalk:
webHook: @dingTalk.robot.webHook@
secret: @dingTalk.robot.secret@
+rocketmq:
+ name-server: @rocketmq.nameserver@
+
# 停机选项
shutdown:
graceful:
diff --git a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerHomeDao.xml b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerHomeDao.xml
index 3bc7dfdb23..76b5f185ef 100644
--- a/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerHomeDao.xml
+++ b/epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerHomeDao.xml
@@ -29,5 +29,11 @@
AND DEL_FLAG = '0'
+
+ select count(1)
+ from customer_home
+ where CUSTOMER_ID = #{customerId}
+
+
\ No newline at end of file
diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
index b31f94ddff..494fce4e3f 100644
--- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
+++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
@@ -469,4 +469,12 @@ public interface EpmetUserOpenFeignClient {
@PostMapping(value = "epmetuser/staffrole/specificrolesstaffs", consumes = MediaType.APPLICATION_JSON_VALUE)
Result> specificRolesStaffs(RolesUsersListFormDTO rolesUsersListFormDTO);
+
+ /**
+ * 为客户初始化政府端工作人员角色
+ * @param customerId
+ * @return
+ */
+ @PostMapping("/epmetuser/staffrole/initrolesforcustomer/{customerId}")
+ Result initGovStaffRolesForCustomer(@PathVariable String customerId);
}
diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
index 69371a19cd..7137d3ad1d 100644
--- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
+++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
@@ -331,4 +331,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
public Result> specificRolesStaffs(RolesUsersListFormDTO rolesUsersListFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "specificRolesStaffs", rolesUsersListFormDTO);
}
+
+ @Override
+ public Result initGovStaffRolesForCustomer(String customerId) {
+ return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "initGovStaffRolesForCustomer", customerId);
+ }
}
diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml
index 67888acc41..847367216c 100644
--- a/epmet-user/epmet-user-server/pom.xml
+++ b/epmet-user/epmet-user-server/pom.xml
@@ -112,6 +112,12 @@
2.0.0
compile
+
+
+ com.epmet
+ epmet-commons-rocketmq
+ 2.0.0
+
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GovStaffRoleDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GovStaffRoleDao.java
index f7875d63d5..5992dfb720 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GovStaffRoleDao.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GovStaffRoleDao.java
@@ -77,4 +77,6 @@ public interface GovStaffRoleDao extends BaseDao {
int updateSortById(@Param("roleId") String roleId, @Param("sort") int sort);
List listRolesByRoleKey(@Param("roleKey") String roleKey);
+
+ Integer countRolesByCustomerId(@Param("customerId") String customerId);
}
\ No newline at end of file
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/mq/listener/InitCustomerRolesListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/mq/listener/InitCustomerRolesListener.java
new file mode 100644
index 0000000000..a50da7561e
--- /dev/null
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/mq/listener/InitCustomerRolesListener.java
@@ -0,0 +1,39 @@
+//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.service.GovStaffRoleService;
+//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.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//
+///**
+// * 监听初始化客户动作,为客户初始化角色列表
+// */
+//@RocketMQMessageListener(topic = TopicConstants.INIT_CUSTOMER,
+// consumerGroup = ConsomerGroupConstants.INIT_CUSTOMER_ROLES_GROUP,
+// messageModel = MessageModel.CLUSTERING,
+// selectorExpression = "*")
+//@Component
+//public class InitCustomerRolesListener implements RocketMQListener {
+//
+// private Logger logger = LoggerFactory.getLogger(getClass());
+//
+// @Autowired
+// private GovStaffRoleService govStaffRoleService;
+//
+// @Override
+// public void onMessage(MessageExt messageExt) {
+// String msg = new String(messageExt.getBody());
+// logger.info("初始化客户-初始化角色列表-收到消息内容:{}", msg);
+// InitCustomerMQMsg msgObj = JSON.parseObject(msg, InitCustomerMQMsg.class);
+// govStaffRoleService.initGovStaffRolesForCustomer(msgObj.getCustomerId());
+// }
+//}
diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java
index 726be2370d..16c6a375e2 100644
--- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java
+++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java
@@ -39,6 +39,8 @@ import com.epmet.feign.GovAccessFeignClient;
import com.epmet.redis.GovStaffRoleRedis;
import com.epmet.service.GovStaffRoleService;
import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -57,6 +59,8 @@ import java.util.Map;
@Service
public class GovStaffRoleServiceImpl extends BaseServiceImpl implements GovStaffRoleService {
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
@Autowired
private GovStaffRoleRedis govStaffRoleRedis;
@@ -140,8 +144,13 @@ public class GovStaffRoleServiceImpl extends BaseServiceImpl 0) {
+ logger.info("为客户初始化角色列表-该客户【客户ID:%s】已存在角色信息,无需再次初始化。", customerId);
+ return;
+ }
// 增加角色列表
List validRoles = govStaffRoleTemplateDao.listValidateRoles();
diff --git a/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml b/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml
index e05a958192..68f5492ae8 100644
--- a/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml
+++ b/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml
@@ -146,6 +146,9 @@ dingTalk:
webHook: @dingTalk.robot.webHook@
secret: @dingTalk.robot.secret@
+rocketmq:
+ name-server: 192.168.1.130:9876;192.168.1.132:9876
+
# 停机选项
shutdown:
graceful:
diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml
index 40539c565f..87a5fc01e7 100644
--- a/epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml
+++ b/epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml
@@ -111,4 +111,10 @@
where gsr.ROLE_KEY = #{roleKey}
and gsr.DEL_FLAG=0
+
+
+ select count(0)
+ from gov_staff_role
+ where CUSTOMER_ID = #{customerId}
+
\ No newline at end of file