Browse Source

Merge remote-tracking branch 'origin/dev_zxc_bug' into dev_jcet

# Conflicts:
#	epmet-commons/pom.xml
#	epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java
#	epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
#	epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
dev_shibei_match
zxc 5 years ago
parent
commit
f33bbc03ba
  1. 21
      epmet-commons/epmet-commons-rocketmq/pom.xml
  2. 21
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  3. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java
  4. 148
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/InitCustomerMQMsg.java
  5. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  6. 3
      epmet-commons/pom.xml
  7. 7
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageSendApproach.java
  8. 13
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java
  9. 15
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/SystemMsgFormDTO.java
  10. 10
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/feign/EpmetMessageOpenFeignClient.java
  11. 6
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/feign/fallback/EpmetMessageOpenFeignClientFallback.java
  12. 23
      epmet-module/epmet-message/epmet-message-server/pom.xml
  13. 27
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/SystemMessageController.java
  14. 33
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/SystemMessageDao.java
  15. 57
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/SystemMessageEntity.java
  16. 7
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/SystemMessageService.java
  17. 70
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java
  18. 7
      epmet-module/epmet-message/epmet-message-server/src/main/resources/bootstrap.yml
  19. 13
      epmet-module/epmet-message/epmet-message-server/src/main/resources/db/migration/V0.3.13__create_sys_msg_table.sql
  20. 18
      epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/SystemMessageDao.xml
  21. 19
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java
  22. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/IssueConstant.java
  23. 21
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProcessServiceImpl.java
  24. 22
      epmet-module/gov-org/gov-org-server/pom.xml
  25. 87
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/InitCustomerOrgListener.java
  26. 10
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
  27. 5
      epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml
  28. 12
      epmet-module/oper-crm/oper-crm-server/pom.xml
  29. 124
      epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java
  30. 23
      epmet-module/oper-customize/oper-customize-server/pom.xml
  31. 3
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerHomeDao.java
  32. 54
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/mq/listener/InitCustomerCustomizeListener.java
  33. 7
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerHomeServiceImpl.java
  34. 3
      epmet-module/oper-customize/oper-customize-server/src/main/resources/bootstrap.yml
  35. 6
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerHomeDao.xml
  36. 8
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  37. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  38. 6
      epmet-user/epmet-user-server/pom.xml
  39. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GovStaffRoleDao.java
  40. 39
      epmet-user/epmet-user-server/src/main/java/com/epmet/mq/listener/InitCustomerRolesListener.java
  41. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/GovStaffRoleServiceImpl.java
  42. 3
      epmet-user/epmet-user-server/src/main/resources/bootstrap.yml
  43. 6
      epmet-user/epmet-user-server/src/main/resources/mapper/GovStaffRoleDao.xml

21
epmet-commons/epmet-commons-rocketmq/pom.xml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>epmet-commons</artifactId>
<groupId>com.epmet</groupId>
<version>2.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>epmet-commons-rocketmq</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
</project>

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

@ -0,0 +1,21 @@
package com.epmet.commons.rocketmq.constants;
/**
* 消费者组常量
*/
public interface ConsomerGroupConstants {
/**
* 初始化客户角色消费者组
*/
String INIT_CUSTOMER_ROLES_GROUP = "init_customer_roles_group";
/**
* 初始化客户自定义消费者组
*/
String INIT_CUSTOMER_CUSTOMIZE_GROUP = "init_customer_customize_group";
/**
* 初始化客户组织机构信息分组
*/
String INIT_CUSTOMER_ORG_GROUP = "init_customer_org_group";
}

5
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java

@ -0,0 +1,5 @@
package com.epmet.commons.rocketmq.constants;
public interface TopicConstants {
String INIT_CUSTOMER = "init_customer_topic";
}

148
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/InitCustomerMQMsg.java

@ -0,0 +1,148 @@
package com.epmet.commons.rocketmq.messages;
public class InitCustomerMQMsg {
private String customerId;
private InitCustomerAgency agency;
private InitCustomerStaff staff;
public static class InitCustomerStaff {
private String agencyId;
private Integer gender;
private String mobile;
private String name;
private String workType;
public String getAgencyId() {
return agencyId;
}
public void setAgencyId(String agencyId) {
this.agencyId = agencyId;
}
public Integer getGender() {
return gender;
}
public void setGender(Integer gender) {
this.gender = gender;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWorkType() {
return workType;
}
public void setWorkType(String workType) {
this.workType = workType;
}
}
public static class InitCustomerAgency {
private String agencyId;
private String organizationName;
private String level;
private String areaCode;
private String province;
private String city;
private String district;
public String getAgencyId() {
return agencyId;
}
public void setAgencyId(String agencyId) {
this.agencyId = agencyId;
}
public String getOrganizationName() {
return organizationName;
}
public void setOrganizationName(String organizationName) {
this.organizationName = organizationName;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getAreaCode() {
return areaCode;
}
public void setAreaCode(String areaCode) {
this.areaCode = areaCode;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getDistrict() {
return district;
}
public void setDistrict(String district) {
this.district = district;
}
}
public String getCustomerId() {
return customerId;
}
public void setCustomerId(String customerId) {
this.customerId = customerId;
}
public InitCustomerAgency getAgency() {
return agency;
}
public void setAgency(InitCustomerAgency agency) {
this.agency = agency;
}
public InitCustomerStaff getStaff() {
return staff;
}
public void setStaff(InitCustomerStaff staff) {
this.staff = staff;
}
}

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -20,6 +20,7 @@ public enum EpmetErrorCode {
ERR10006(10006, "登录超时,请重新登录"),
ERR10007(10007, "当前帐号已在别处登录"),
ERR10019(10019, "验证码不正确"),
SYSTEM_MQ_MSG_SEND_FAIL(10020, "MQ消息发送失败"),
ERR401(401, "未授权"),
INTERNAL_VALIDATE_ERROR(7000, "内部数据校验异常"),
SERVER_ERROR(8000, "服务器开小差了..."),

3
epmet-commons/pom.xml

@ -24,6 +24,7 @@
<module>epmet-commons-service-call</module>
<module>epmet-commons-extapp-auth</module>
<module>epmet-commons-thirdplat</module>
</modules>
<module>epmet-commons-rocketmq</module>
</modules>
</project>

7
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageSendApproach.java

@ -0,0 +1,7 @@
package com.epmet.constant;
public interface SystemMessageSendApproach {
String MQ = "mq";
}

13
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java

@ -0,0 +1,13 @@
package com.epmet.constant;
/**
* 系统消息类型
*/
public interface SystemMessageType {
/**
* 初始化客户
*/
String INIT_CUSTOMER = "init_customer";
}

15
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/SystemMsgFormDTO.java

@ -0,0 +1,15 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class SystemMsgFormDTO {
@NotNull(message = "消息类型不能为空")
private String messageType;
@NotNull(message = "消息内容不能为空")
private Object content;
}

10
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/feign/EpmetMessageOpenFeignClient.java

@ -5,6 +5,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.SysSmsDTO;
import com.epmet.dto.form.ProjectSendMsgFormDTO;
import com.epmet.dto.form.SendVerificationCodeFormDTO;
import com.epmet.dto.form.SystemMsgFormDTO;
import com.epmet.dto.form.UserMessageFormDTO;
import com.epmet.dto.form.WxSubscribeMessageFormDTO;
import com.epmet.dto.form.WxSubscribeUpdateFormDTO;
@ -96,4 +97,13 @@ public interface EpmetMessageOpenFeignClient {
**/
@PostMapping(value = "message/wxmpmessage/sendwxsubscribeupdate", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
Result sendWxSubscribeUpdate(List<WxSubscribeUpdateFormDTO> msgList);
/**
* @Description 通过mq发送系统消息
* @return
* @author wxz
* @date 2021.01.06 15:16
*/
@PostMapping("/message/system/send-by-mq")
Result sendSystemMsgByMQ(@RequestBody SystemMsgFormDTO form);
}

6
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/feign/fallback/EpmetMessageOpenFeignClientFallback.java

@ -6,6 +6,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.SysSmsDTO;
import com.epmet.dto.form.ProjectSendMsgFormDTO;
import com.epmet.dto.form.SendVerificationCodeFormDTO;
import com.epmet.dto.form.SystemMsgFormDTO;
import com.epmet.dto.form.UserMessageFormDTO;
import com.epmet.dto.form.WxSubscribeMessageFormDTO;
import com.epmet.dto.form.WxSubscribeUpdateFormDTO;
@ -63,4 +64,9 @@ public class EpmetMessageOpenFeignClientFallback implements EpmetMessageOpenFeig
public Result sendWxSubscribeUpdate(List<WxSubscribeUpdateFormDTO> msgList) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_MESSAGE_SERVER, "sendWxSubscribeUpdate", msgList);
}
@Override
public Result sendSystemMsgByMQ(SystemMsgFormDTO form) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_MESSAGE_SERVER, "sendSystemMsgByMQ", form);
}
}

23
epmet-module/epmet-message/epmet-message-server/pom.xml

@ -118,6 +118,13 @@
<artifactId>oper-crm-client</artifactId>
<version>2.0.0</version>
</dependency>
<!--rocketmq-->
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-rocketmq</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
@ -184,6 +191,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.1.130:9876;192.168.1.132:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
<profile>
@ -228,6 +239,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.1.130:9876;192.168.1.132:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
<profile>
@ -272,6 +287,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.10.161:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
<profile>
@ -313,6 +332,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.11.187:9876;192.168.11.184:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
</profiles>

27
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();
}
}

33
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<SystemMessageEntity> {
}

57
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
}

7
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);
}

70
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;
}
}

7
epmet-module/epmet-message/epmet-message-server/src/main/resources/bootstrap.yml

@ -137,4 +137,9 @@ dingTalk:
shutdown:
graceful:
enable: true #是否开启优雅停机
waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
rocketmq:
name-server: @rocketmq.nameserver@
producer:
group: @rocketmq.producer.group@

13
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='系统消息表'

18
epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/SystemMessageDao.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.SystemMessageDao">
<resultMap type="com.epmet.entity.SystemMessageEntity" id="systemMessageMap">
<result property="id" column="ID"/>
<result property="content" column="CONTENT"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

19
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;
}
}

2
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 = "查询项目进展失败......";
}

21
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<IssueProcessDao, Is
List<ProcessListResultDTO> listResult = new ArrayList<ProcessListResultDTO>();
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<List<ProcessListResultDTO>> 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<>();

22
epmet-module/gov-org/gov-org-server/pom.xml

@ -95,6 +95,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<!--rocketmq-->
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-rocketmq</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
@ -156,6 +162,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.1.130:9876;192.168.1.132:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
<profile>
@ -194,6 +204,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.1.130:9876;192.168.1.132:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
<profile>
@ -233,6 +247,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.10.161:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
<profile>
@ -269,6 +287,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.11.187:9876;192.168.11.184:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
</profiles>

87
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<MessageExt> {
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;
}
}

10
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");

5
epmet-module/gov-org/gov-org-server/src/main/resources/bootstrap.yml

@ -141,4 +141,7 @@ dingTalk:
shutdown:
graceful:
enable: true #是否开启优雅停机
waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
rocketmq:
name-server: @rocketmq.nameserver@

12
epmet-module/oper-crm/oper-crm-server/pom.xml

@ -87,6 +87,18 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-message-client</artifactId>
<version>2.0.0</version>
</dependency>
<!--rocketmq-->
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-rocketmq</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>

124
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<CustomerDao, CustomerEn
private CustomerDao customerDao;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Override
public PageData<CustomerDTO> page(Map<String, Object> params) {
@ -469,48 +473,62 @@ public class CustomerServiceImpl extends BaseServiceImpl<CustomerDao, CustomerEn
throw new RenException(EpmetErrorCode.OPER_ADD_CUSTOMER_ERROR.getCode());
}
//3.调用epmet-user服务,初始化客户对应的角色;调用access服务给角色分配权限信息
Result initResult = epmetUserFeignClient.initGovStaffRolesForCustomer(formDTO.getCustomerId());
if (!initResult.success()) {
throw new RenException("客户新增:调用user服务为客户初始化角色数据失败:".concat(initResult.toString()));
}
//4.调用oper-customize服务,初始化客户定制化首页模板数据
CustomerHomeDTO initHomeForm = new CustomerHomeDTO();
initHomeForm.setCustomerId(formDTO.getCustomerId());
Result initHomeResult = operCustomizeFeignClient.init(initHomeForm);
if (!initHomeResult.success()) {
throw new RenException("初始化客户首页数据失败:".concat(initHomeResult.getInternalMsg()));
}
//5.调用gov-org服务,初始化客户根级组织信息、客户管理员信息
AddAgencyAndStaffFormDTO agencyAndStaff = new AddAgencyAndStaffFormDTO();
//客户组织信息
CustomerAgencyDTO agencyDTO = new CustomerAgencyDTO();
agencyDTO.setId(paAgency.getId());
agencyDTO.setCustomerId(formDTO.getCustomerId());
agencyDTO.setOrganizationName(paAgency.getAgencyName());
agencyDTO.setLevel(paAgency.getLevel());
agencyDTO.setAreaCode(paAgency.getAreaCode());
agencyDTO.setProvince(paAgency.getProvince());
agencyDTO.setCity(paAgency.getCity());
agencyDTO.setDistrict(paAgency.getDistrict());
agencyAndStaff.setAgencyDTO(agencyDTO);
//客户管理员信息
AdminStaffFromDTO staffSubmitFrom = new AdminStaffFromDTO();
staffSubmitFrom.setCustomerId(formDTO.getCustomerId());
staffSubmitFrom.setAgencyId(paAgency.getId());
staffSubmitFrom.setGender(Integer.parseInt(paUser.getGender()));
staffSubmitFrom.setMobile(paUser.getPhone());
staffSubmitFrom.setName(paUser.getRealName());
staffSubmitFrom.setWorkType(UserWorkType.FULL_TIME);
agencyAndStaff.setStaffDTO(staffSubmitFrom);
Result agencyResult = govOrgOpenFeignClient.saveRootAgency(agencyAndStaff);
if (!agencyResult.success()) {
throw new RenException(agencyResult.getCode(), agencyResult.getInternalMsg());
}
// *.发送初始化客户信息到mq,让监听者完成初始化操作
InitCustomerMQMsg msgContent = new InitCustomerMQMsg();
msgContent.setCustomerId(formDTO.getCustomerId());
msgContent.setAgency(constructAgencyInfo4CustomerInit(paAgency));
msgContent.setStaff(constructStaffInfo4CustomerInit(paAgency.getId(), paUser));
SystemMsgFormDTO systemMsgFormDTO = new SystemMsgFormDTO();
systemMsgFormDTO.setMessageType(SystemMessageType.INIT_CUSTOMER);
systemMsgFormDTO.setContent(msgContent);
Result sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(systemMsgFormDTO);
if (! sendMsgResult.success()) {
throw new RenException("发送(初始化客户信息)系统消息到message服务失败:{}", sendMsgResult.getInternalMsg());
}
////3.调用epmet-user服务,初始化客户对应的角色;调用access服务给角色分配权限信息
//Result initResult = epmetUserFeignClient.initGovStaffRolesForCustomer(formDTO.getCustomerId());
//if (!initResult.success()) {
// throw new RenException("客户新增:调用user服务为客户初始化角色数据失败:".concat(initResult.toString()));
//}
//
////4.调用oper-customize服务,初始化客户定制化首页模板数据
//CustomerHomeDTO initHomeForm = new CustomerHomeDTO();
//initHomeForm.setCustomerId(formDTO.getCustomerId());
//Result initHomeResult = operCustomizeFeignClient.init(initHomeForm);
//if (!initHomeResult.success()) {
// throw new RenException("初始化客户首页数据失败:".concat(initHomeResult.getInternalMsg()));
//}
//
////5.调用gov-org服务,初始化客户根级组织信息、客户管理员信息
//AddAgencyAndStaffFormDTO agencyAndStaff = new AddAgencyAndStaffFormDTO();
////客户组织信息
//CustomerAgencyDTO agencyDTO = new CustomerAgencyDTO();
//agencyDTO.setId(paAgency.getId());
//agencyDTO.setCustomerId(formDTO.getCustomerId());
//agencyDTO.setOrganizationName(paAgency.getAgencyName());
//agencyDTO.setLevel(paAgency.getLevel());
//agencyDTO.setAreaCode(paAgency.getAreaCode());
//agencyDTO.setProvince(paAgency.getProvince());
//agencyDTO.setCity(paAgency.getCity());
//agencyDTO.setDistrict(paAgency.getDistrict());
//agencyAndStaff.setAgencyDTO(agencyDTO);
//
////客户管理员信息
//AdminStaffFromDTO staffSubmitFrom = new AdminStaffFromDTO();
//staffSubmitFrom.setCustomerId(formDTO.getCustomerId());
//staffSubmitFrom.setAgencyId(paAgency.getId());
//staffSubmitFrom.setGender(Integer.parseInt(paUser.getGender()));
//staffSubmitFrom.setMobile(paUser.getPhone());
//staffSubmitFrom.setName(paUser.getRealName());
//staffSubmitFrom.setWorkType(UserWorkType.FULL_TIME);
//agencyAndStaff.setStaffDTO(staffSubmitFrom);
//
//Result agencyResult = govOrgOpenFeignClient.saveRootAgency(agencyAndStaff);
//if (!agencyResult.success()) {
// throw new RenException(agencyResult.getCode(), agencyResult.getInternalMsg());
//}
//6.更新第三方数据库中客户数据状态为已初始化
String customerUrl = "https://epmet-cloud.elinkservice.cn/api/third/pacustomer/updatecustomer/" + formDTO.getCustomerId();
@ -534,6 +552,28 @@ public class CustomerServiceImpl extends BaseServiceImpl<CustomerDao, CustomerEn
}
private InitCustomerMQMsg.InitCustomerStaff constructStaffInfo4CustomerInit(String agencyId, PaUserDTO paUser) {
InitCustomerMQMsg.InitCustomerStaff staff = new InitCustomerMQMsg.InitCustomerStaff();
staff.setAgencyId(agencyId);
staff.setGender(Integer.parseInt(paUser.getGender()));
staff.setMobile(paUser.getPhone());
staff.setName(paUser.getRealName());
staff.setWorkType(UserWorkType.FULL_TIME);
return staff;
}
private InitCustomerMQMsg.InitCustomerAgency constructAgencyInfo4CustomerInit(PaCustomerAgencyDTO paAgency) {
InitCustomerMQMsg.InitCustomerAgency initCustomerAgency = new InitCustomerMQMsg.InitCustomerAgency();
initCustomerAgency.setAgencyId(paAgency.getId());
initCustomerAgency.setOrganizationName(paAgency.getAgencyName());
initCustomerAgency.setLevel(paAgency.getLevel());
initCustomerAgency.setAreaCode(paAgency.getAreaCode());
initCustomerAgency.setProvince(paAgency.getProvince());
initCustomerAgency.setCity(paAgency.getCity());
initCustomerAgency.setDistrict(paAgency.getDistrict());
return initCustomerAgency;
}
@Override
public List<CustomerDTO> getAllList() {
List<CustomerEntity> list = baseDao.getAllList();

23
epmet-module/oper-customize/oper-customize-server/pom.xml

@ -70,6 +70,13 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<!--rocketmq-->
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-rocketmq</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
@ -129,6 +136,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.1.130:9876;192.168.1.132:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
<profile>
@ -167,6 +178,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.1.130:9876;192.168.1.132:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
<profile>
@ -205,6 +220,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC080aac67ff78e79fdaba132aa51e3fb3f6060dec99492feaac82cabf9f8b6a19
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.10.161:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
<profile>
@ -241,6 +260,10 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1
</dingTalk.robot.secret>
<!--rocketmq-->
<rocketmq.nameserver>192.168.11.187:9876;192.168.11.184:9876</rocketmq.nameserver>
<rocketmq.producer.group>epmet_message</rocketmq.producer.group>
</properties>
</profile>
</profiles>

3
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<CustomerHomeEntity> {
* @date 2020/3/16 14:02
**/
List<CustomerHomeEntity> selectCustomerHomeList(HomeDesignFormDTO formDTO);
int countByCustomerId(@Param("customerId") String customerId);
}

54
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<MessageExt> {
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;
}
}
}

7
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<CustomerHomeDao, Cu
@Transactional(rollbackFor = Exception.class)
public void init(CustomerHomeDTO dto) {
int homeCount = baseDao.countByCustomerId(dto.getCustomerId());
if (homeCount > 0) {
throw new RenException("用户Home组件已存在,请勿重复初始化");
}
//居民端模板
List<CustomerHomeTemplateDTO> resiTempList = customerHomeTemplateService.getTemplateByClient(OperCustomizeConstant.RESIDENT);
//居民端草稿

3
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:

6
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerHomeDao.xml

@ -29,5 +29,11 @@
AND DEL_FLAG = '0'
</select>
<select id="countByCustomerId" resultType="java.lang.Integer">
select count(1)
from customer_home
where CUSTOMER_ID = #{customerId}
</select>
</mapper>

8
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<List<String>> specificRolesStaffs(RolesUsersListFormDTO rolesUsersListFormDTO);
/**
* 为客户初始化政府端工作人员角色
* @param customerId
* @return
*/
@PostMapping("/epmetuser/staffrole/initrolesforcustomer/{customerId}")
Result initGovStaffRolesForCustomer(@PathVariable String customerId);
/**
* @Description 新增或更新用户信息
* @Param formDTO

5
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<UserDTO> 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);
}
}

6
epmet-user/epmet-user-server/pom.xml

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

2
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/GovStaffRoleDao.java

@ -77,4 +77,6 @@ public interface GovStaffRoleDao extends BaseDao<GovStaffRoleEntity> {
int updateSortById(@Param("roleId") String roleId, @Param("sort") int sort);
List<GovStaffRoleResultDTO> listRolesByRoleKey(@Param("roleKey") String roleKey);
Integer countRolesByCustomerId(@Param("customerId") String customerId);
}

39
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<MessageExt> {
//
// 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());
// }
//}

11
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<GovStaffRoleDao, GovStaffRoleEntity> implements GovStaffRoleService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private GovStaffRoleRedis govStaffRoleRedis;
@ -140,8 +144,13 @@ public class GovStaffRoleServiceImpl extends BaseServiceImpl<GovStaffRoleDao, Go
}
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
public void initGovStaffRolesForCustomer(String customerId) {
Integer rolesCount = baseDao.countRolesByCustomerId(customerId);
if (rolesCount > 0) {
logger.info("为客户初始化角色列表-该客户【客户ID:%s】已存在角色信息,无需再次初始化。", customerId);
return;
}
// 增加角色列表
List<GovStaffRoleTemplateDTO> validRoles = govStaffRoleTemplateDao.listValidateRoles();

3
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:

6
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>
<select id="countRolesByCustomerId" resultType="java.lang.Integer">
select count(0)
from gov_staff_role
where CUSTOMER_ID = #{customerId}
</select>
</mapper>
Loading…
Cancel
Save