Browse Source

修改:

完成项目流转->third->区块链MQ的动作
dev_shibei_match
wangxianzhang 4 years ago
parent
commit
353b57c56d
  1. 1
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainCreateProjectFormDTO.java
  2. 40
      epmet-module/epmet-third/epmet-third-server/pom.xml
  3. 3
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/EpmetThirdApplication.java
  4. 7
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java
  5. 88
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java
  6. 33
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/properties/RocketMQProperties.java
  7. 14
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/BlockChainProjectService.java
  8. 44
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java
  9. 12
      epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml
  10. 30
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

1
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/BlockChainCreateProjectFormDTO.java

@ -23,3 +23,4 @@ public class BlockChainCreateProjectFormDTO {
private List<BlockChainProjectProcessAssignedStaffFormDTO> assignedStaffs;
}

40
epmet-module/epmet-third/epmet-third-server/pom.xml

@ -220,6 +220,16 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
</dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>true</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.1.140:9876;192.168.1.141:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>true</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server>192.168.1.144:9876</rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key>EpmetCloud</rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key>12345678</rocketmq.block-chain.secret-key>
</properties>
</profile>
<profile>
@ -260,6 +270,16 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
</dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>true</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.1.140:9876;192.168.1.141:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>true</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server>192.168.1.144:9876</rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key>EpmetCloud</rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key>12345678</rocketmq.block-chain.secret-key>
</properties>
</profile>
<profile>
@ -300,6 +320,16 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd
</dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>false</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.10.161:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>false</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server></rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key></rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key></rocketmq.block-chain.secret-key>
</properties>
</profile>
@ -342,6 +372,16 @@
</dingTalk.robot.webHook>
<dingTalk.robot.secret>SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1
</dingTalk.robot.secret>
<!-- epmet-cloud内部用的rocketmq配置 -->
<!--<rocketmq.epmet-cloud-inner.enable>true</rocketmq.epmet-cloud-inner.enable>
<rocketmq.epmet-cloud-inner.name-server>192.168.11.187:9876;192.168.11.184:9876</rocketmq.epmet-cloud-inner.name-server>-->
<!-- 区块链用的rocketmq配置 -->
<rocketmq.block-chain.enable>false</rocketmq.block-chain.enable>
<rocketmq.block-chain.name-server></rocketmq.block-chain.name-server>
<rocketmq.block-chain.access-key></rocketmq.block-chain.access-key>
<rocketmq.block-chain.secret-key></rocketmq.block-chain.secret-key>
</properties>
</profile>
</profiles>

3
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/EpmetThirdApplication.java

@ -1,11 +1,14 @@
package com.epmet;
import com.epmet.mq.properties.RocketMQProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@EnableConfigurationProperties(RocketMQProperties.class)
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients

7
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java

@ -4,6 +4,8 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.BlockChainCreateProjectFormDTO;
import com.epmet.dto.form.BlockChainProcessProjectFormDTO;
import com.epmet.service.BlockChainProjectService;
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;
@ -16,6 +18,9 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/blockchain/project")
public class BlockChainProjectController {
@Autowired
private BlockChainProjectService blockChainProjectService;
/**
* 立项
* @param input
@ -24,6 +29,7 @@ public class BlockChainProjectController {
@PostMapping("create")
public Result blockChainCreateProject(@RequestBody BlockChainCreateProjectFormDTO input) {
ValidatorUtils.validateEntity(input);
blockChainProjectService.blockChainCreateProject(input);
return new Result();
}
@ -35,6 +41,7 @@ public class BlockChainProjectController {
@PostMapping("process")
public Result blockChainProcessProject(@RequestBody BlockChainProcessProjectFormDTO input) {
ValidatorUtils.validateEntity(input);
blockChainProjectService.blockChainProcessProject(input);
return new Result();
}
}

88
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/producer/BlockChainProducer.java

@ -0,0 +1,88 @@
package com.epmet.mq.producer;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.mq.properties.RocketMQProperties;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.acl.common.AclClientRPCHook;
import org.apache.rocketmq.acl.common.SessionCredentials;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.client.producer.SendStatus;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
/**
* @Description 描述
* @Author wangxianzhang
* @Date 2021/11/26 12:33 下午
* @Version 1.0
*/
@Component
@Slf4j
public class BlockChainProducer {
// topic
public static final String TOPIC_PROJECT = "project";
public static final String TOPIC_AUTH = "auth";
// tag
public static final String TAG_SEND_PROJECT = "send_project";
public static final String TAG_SEND_PROCESS = "send_process";
public static final String TAG_SEND_ASSIGNED_STAFFS = "send_assigned_staffs";
// 组
public static final String GROUP_EPMET_CLOUD_PROJECT_SENDER = "epmet_cloud_project_sender";
private DefaultMQProducer producer;
@Autowired
private RocketMQProperties rocketMQProperties;
@PostConstruct
private void postConstruct() {
try {
producer = new DefaultMQProducer(GROUP_EPMET_CLOUD_PROJECT_SENDER,
new AclClientRPCHook(new SessionCredentials(rocketMQProperties.getBlockChain().getAccessKey(), rocketMQProperties.getBlockChain().getSecretKey())));
producer.setNamesrvAddr(rocketMQProperties.getBlockChain().getNameServer());
producer.start();
} catch (MQClientException e) {
e.printStackTrace();
}
}
/**
* 销毁producer
*/
@PreDestroy
private void preDestroy() {
producer.shutdown();
}
/**
* 发送消息
*
* @param topic
* @param tag
*/
public void sendMsg(String topic, String tag, String content) {
try {
Message msg = new Message(topic, tag, content.getBytes(RemotingHelper.DEFAULT_CHARSET));
SendResult sendResult = producer.send(msg);
if (SendStatus.SEND_OK == sendResult.getSendStatus()
|| SendStatus.SLAVE_NOT_AVAILABLE == sendResult.getSendStatus()) {
log.info("消息发送区块链MQ成功, topic:{}, tag:{}, content:{}", topic, tag, content);
} else {
log.error("消息发送区块链MQ失败, topic:{}, tag:{}, content:{}, status: {}", topic, tag, content, sendResult.getSendStatus());
}
} catch (Exception e) {
log.error("消息发送区块链MQ出错, topic:{}, tag:{}, content:{}, 错误信息:{]", topic, tag, content, ExceptionUtils.getErrorStackTrace(e));
}
}
}

33
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/mq/properties/RocketMQProperties.java

@ -0,0 +1,33 @@
package com.epmet.mq.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* @Description 描述
* @Author wangxianzhang
* @Date 2021/11/26 10:03 上午
* @Version 1.0
*/
@ConfigurationProperties(prefix = "rocketmq")
@Data
public class RocketMQProperties {
// 这里必须new出对象来才能成功封装
private EpmetCloudInnerProperties epmetCloudInner = new EpmetCloudInnerProperties();
private BlockChainProperties blockChain = new BlockChainProperties();
@Data
public class EpmetCloudInnerProperties {
private Boolean enable;
private String nameServer;
}
@Data
public class BlockChainProperties {
private Boolean enable;
private String nameServer;
private String accessKey;
private String secretKey;
}
}

14
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/BlockChainProjectService.java

@ -0,0 +1,14 @@
package com.epmet.service;
import com.epmet.dto.form.BlockChainCreateProjectFormDTO;
import com.epmet.dto.form.BlockChainProcessProjectFormDTO;
/**
* 区块链项目service
*/
public interface BlockChainProjectService {
void blockChainCreateProject(BlockChainCreateProjectFormDTO input);
void blockChainProcessProject(BlockChainProcessProjectFormDTO input);
}

44
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/BlockChainProjectServiceImpl.java

@ -0,0 +1,44 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.epmet.dto.form.BlockChainCreateProjectFormDTO;
import com.epmet.dto.form.BlockChainProcessProjectFormDTO;
import com.epmet.mq.producer.BlockChainProducer;
import com.epmet.mq.properties.RocketMQProperties;
import com.epmet.service.BlockChainProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Description 描述
* @Author wangxianzhang
* @Date 2021/11/26 9:59 上午
* @Version 1.0
*/
@Service
public class BlockChainProjectServiceImpl implements BlockChainProjectService {
@Autowired
private BlockChainProducer blockChainProducer;
@Override
public void blockChainCreateProject(BlockChainCreateProjectFormDTO input) {
String projectString = JSON.toJSONString(input.getProject());
String processString = JSON.toJSONString(input.getProcess());
String assignedStaffsString = JSON.toJSONString(input.getAssignedStaffs());
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_PROJECT, projectString);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_PROCESS, processString);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_ASSIGNED_STAFFS, assignedStaffsString);
}
@Override
public void blockChainProcessProject(BlockChainProcessProjectFormDTO input) {
String processString = JSON.toJSONString(input.getProcess());
String assignedStaffsString = JSON.toJSONString(input.getAssignedStaffs());
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_PROCESS, processString);
blockChainProducer.sendMsg(BlockChainProducer.TOPIC_PROJECT, BlockChainProducer.TAG_SEND_ASSIGNED_STAFFS, assignedStaffsString);
}
}

12
epmet-module/epmet-third/epmet-third-server/src/main/resources/bootstrap.yml

@ -149,3 +149,15 @@ shutdown:
graceful:
enable: true #是否开启优雅停机
waitTimeSecs: 30 # 优雅停机等待时间,超过30秒,发出告警
rocketmq:
# epmet-cloud集群内部用的rocketmq
# epmet-cloud-inner:
# enable: @rocketmq.epmet-cloud-inner.enable@
# name-server: @rocketmq.epmet-cloud-inner.name-server@
# 区块链对接用的rocketmq
block-chain:
enable: @rocketmq.block-chain.enable@
name-server: @rocketmq.block-chain.name-server@
access-key: @rocketmq.block-chain.access-key@
secret-key: @rocketmq.block-chain.secret-key@

30
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -2198,21 +2198,21 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
@Override
public void responseV2(ProjectResponseFormDTO formDTO) {
//公开回复内容审核
//if (com.alibaba.nacos.client.utils.StringUtils.isNotBlank(formDTO.getPublicReply())) {
// TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
// TextTaskDTO taskDTO = new TextTaskDTO();
// taskDTO.setDataId(UUID.randomUUID().toString().replace("-", ""));
// taskDTO.setContent(formDTO.getPublicReply());
// textScanParamDTO.getTasks().add(taskDTO);
// Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO);
// if (!textSyncScanResult.success()) {
// throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
// } else {
// if (!textSyncScanResult.getData().isAllPass()) {
// throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode());
// }
// }
//}
if (com.alibaba.nacos.client.utils.StringUtils.isNotBlank(formDTO.getPublicReply())) {
TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
TextTaskDTO taskDTO = new TextTaskDTO();
taskDTO.setDataId(UUID.randomUUID().toString().replace("-", ""));
taskDTO.setContent(formDTO.getPublicReply());
textScanParamDTO.getTasks().add(taskDTO);
Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO);
if (!textSyncScanResult.success()) {
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!textSyncScanResult.getData().isAllPass()) {
throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode());
}
}
}
//获取项目相关信息
ProjectEntity projectEntity = baseDao.selectById(formDTO.getProjectId());

Loading…
Cancel
Save