@@ -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/db/migration/V0.3.13__create_sys_msg_table.sql b/epmet-module/epmet-message/epmet-message-server/src/main/resources/db/migration/V0.3.13__create_sys_msg_table.sql
new file mode 100644
index 0000000000..4796003268
--- /dev/null
+++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/db/migration/V0.3.13__create_sys_msg_table.sql
@@ -0,0 +1,13 @@
+CREATE TABLE `system_message` (
+ `ID` varchar(64) NOT NULL COMMENT '主键',
+ `MSG_TYPE` varchar(32) NOT NULL COMMENT '消息类型。init_customer:客户初始化',
+ `SEND_APPROACH` varchar(32) NOT NULL COMMENT '消息发送途径',
+ `CONTENT` varchar(1024) NOT NULL COMMENT '消息内容',
+ `REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
+ `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人(发布消息的人)',
+ `CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
+ `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
+ `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
+ `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标记 0:未删除,1:已删除',
+ PRIMARY KEY (`ID`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='系统消息表'
\ 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-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java
index e230b87f3b..adabeb3a69 100644
--- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java
+++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java
@@ -141,15 +141,19 @@ public class CodeServiceImpl implements CodeService {
if(CodeConstant.RESI.equals(formDTO.getClientType())) {
resiName = getNickName(authInfo.getAuthorizerAppid());
AuthorizationInfoDTO workAuthInfo = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), CodeConstant.WORK);
- workName = getNickName(workAuthInfo.getAuthorizerAppid());
+ if (null != workAuthInfo) {
+ workName = getNickName(workAuthInfo.getAuthorizerAppid());
+ miniInfoDao.updateNickName(formDTO.getCustomerId(), CodeConstant.WORK, workName);
+ }
miniInfoDao.updateNickName(formDTO.getCustomerId(), formDTO.getClientType(), resiName);
- miniInfoDao.updateNickName(formDTO.getCustomerId(), CodeConstant.WORK, workName);
} else {
workName = getNickName(authInfo.getAuthorizerAppid());
AuthorizationInfoDTO resiAuthInfo = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), CodeConstant.RESI);
- resiName = getNickName(resiAuthInfo.getAuthorizerAppid());
+ if (null != resiAuthInfo) {
+ resiName = getNickName(resiAuthInfo.getAuthorizerAppid());
+ miniInfoDao.updateNickName(formDTO.getCustomerId(), CodeConstant.RESI, resiName);
+ }
miniInfoDao.updateNickName(formDTO.getCustomerId(), formDTO.getClientType(), workName);
- miniInfoDao.updateNickName(formDTO.getCustomerId(), CodeConstant.RESI, resiName);
}
//获取小程序居民端与工作端名称
@@ -828,6 +832,7 @@ public class CodeServiceImpl implements CodeService {
}
private String getNickName(String appId) {
+ String nickName = "";
JSONObject jsonObject = new JSONObject();
jsonObject.put(ModuleConstant.COMPONENT_APP_ID,componentAppId);
jsonObject.put(ModuleConstant.AUTHORIZER_APP_ID,appId);
@@ -835,8 +840,10 @@ public class CodeServiceImpl implements CodeService {
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_GET_AUTHORIZER_INFO + componentAccessToken , JSON.toJSONString(jsonObject)).getData();
Map map = JSON.parseObject(data, Map.class);
Map authInfo = (Map) map.get(ModuleConstant.AUTHORIZER_INFO);
- ConvertUtils.mapToEntity(authInfo, MiniInfoFormDTO.class).getNick_name();
- return ConvertUtils.mapToEntity(authInfo, MiniInfoFormDTO.class).getNick_name();
+ if (StringUtils.isNotEmpty(ConvertUtils.mapToEntity(authInfo, MiniInfoFormDTO.class).getNick_name())) {
+ nickName = ConvertUtils.mapToEntity(authInfo, MiniInfoFormDTO.class).getNick_name();
+ }
+ return nickName;
}
}
diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/IssueConstant.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/IssueConstant.java
index 9d0ac9efd7..1db853f6db 100644
--- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/IssueConstant.java
+++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/IssueConstant.java
@@ -112,4 +112,6 @@ public interface IssueConstant {
* 审核状态:驳回
*/
String REJECTED="rejected";
+
+ String PROJECT_PROCESS_LIST_FAILURE = "查询项目进展失败......";
}
diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProcessServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProcessServiceImpl.java
index db8fb0d7eb..5f674801ca 100644
--- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProcessServiceImpl.java
+++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProcessServiceImpl.java
@@ -20,9 +20,11 @@ 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.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
+import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.IssueConstant;
import com.epmet.dao.IssueProcessDao;
import com.epmet.dao.IssueProjectRelationDao;
@@ -39,6 +41,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
@@ -137,17 +140,27 @@ public class IssueProcessServiceImpl extends BaseServiceImpl listResult = new ArrayList();
IssueDTO issueDTO = issueService.get(issueId.getIssueId());
String issueStatus = issueDTO.getIssueStatus();
- if (issueStatus.equals(IssueConstant.ISSUE_CLOSED)){//已关闭——处理进展
+ if (issueStatus.equals(IssueConstant.ISSUE_CLOSED)){
+ //已关闭——处理进展
listResult = baseDao.issueProcess(issueId);
- }else if (issueStatus.equals(IssueConstant.ISSUE_SHIFT_PROJECT)){//已转项目——处理进展
+ }else if (issueStatus.equals(IssueConstant.ISSUE_SHIFT_PROJECT)){
+ //已转项目——处理进展
String projectId = issueProjectRelationDao.selectProjectIdByIssueId(issueId.getIssueId());
if (!StringUtils.isBlank(projectId)) {
ProcessProjectIdFormDTO formDTO = new ProcessProjectIdFormDTO();
formDTO.setProjectId(projectId);
- listResult = govProjectFeignClient.projectProcessList(formDTO).getData();
+ Result> resultDTO = govProjectFeignClient.projectProcessList(formDTO);
+ if (!resultDTO.success()){
+ throw new RenException(IssueConstant.PROJECT_PROCESS_LIST_FAILURE);
+ }
+ if (!CollectionUtils.isEmpty(resultDTO.getData())){
+ listResult = resultDTO.getData();
+ }
//转议题信息
ProcessListResultDTO issueProcessResultDTO = issueProcessDao.issueBeginInfo(issueId);
- listResult.add(issueProcessResultDTO);
+ if (null != issueProcessResultDTO) {
+ listResult.add(issueProcessResultDTO);
+ }
}
}else {
return new ArrayList<>();
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 f67c225748..f1c5896f0e 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;
@@ -33,6 +34,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ModuleConstant;
import com.epmet.constant.RoleKeyConstants;
import com.epmet.constant.ThirdConstant;
+import com.epmet.constant.SystemMessageType;
import com.epmet.constant.UserWorkType;
import com.epmet.dao.CustomerDao;
import com.epmet.dto.*;
@@ -81,6 +83,8 @@ public class CustomerServiceImpl extends BaseServiceImpl page(Map params) {
@@ -469,48 +473,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 a36f6d46d1..5bd66523f2 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 2e8729fb15..d48703ffb4 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
@@ -470,6 +470,14 @@ 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);
+
/**
* @Description 新增或更新用户信息
* @Param formDTO
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 3ed6c85e73..195f1a0c38 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
@@ -336,4 +336,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
public Result saveUserInfo(UserInfoFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "saveUserInfo", formDTO);
}
+
+ @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