From aa3746705d1131917a4dc4ae3f5033ee6c649a1b Mon Sep 17 00:00:00 2001
From: wyb <1977763549@qq.com>
Date: Fri, 30 Jun 2023 15:47:14 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=8F=91=E9=80=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...onfig.json => message-forward-config.json} | 2 +-
src/main/java/com/docus/server/CxfConfig.java | 2 -
...dConfig.java => MessageForwardConfig.java} | 18 +--
.../message/consts/InteractiveMethod.java | 16 +--
.../controller/MessagePushController.java | 3 -
.../server/message/entity/UnifyMessage.java | 39 +++++++
.../message/mapper/UnifyMessageMapper.java | 8 ++
.../message/service/MessageCarrier.java | 25 +++++
.../message/service/UnifyMessageService.java | 1 +
.../impl/HttpUnifyMessageServiceImpl.java | 16 ---
.../SdWebServiceUnifyMessageServiceImpl.java | 4 +-
.../service/impl/UnifyMessageServiceImpl.java | 103 ++++++++++++++++++
.../WebServiceUnifyMessageServiceImpl.java | 61 -----------
13 files changed, 195 insertions(+), 103 deletions(-)
rename data-config/{ws-message-forward-config.json => message-forward-config.json} (75%)
rename src/main/java/com/docus/server/message/config/{WsMessageForwardConfig.java => MessageForwardConfig.java} (61%)
create mode 100644 src/main/java/com/docus/server/message/entity/UnifyMessage.java
create mode 100644 src/main/java/com/docus/server/message/mapper/UnifyMessageMapper.java
create mode 100644 src/main/java/com/docus/server/message/service/MessageCarrier.java
delete mode 100644 src/main/java/com/docus/server/message/service/impl/HttpUnifyMessageServiceImpl.java
create mode 100644 src/main/java/com/docus/server/message/service/impl/UnifyMessageServiceImpl.java
delete mode 100644 src/main/java/com/docus/server/message/service/impl/WebServiceUnifyMessageServiceImpl.java
diff --git a/data-config/ws-message-forward-config.json b/data-config/message-forward-config.json
similarity index 75%
rename from data-config/ws-message-forward-config.json
rename to data-config/message-forward-config.json
index 0e3f128..fc32b6e 100644
--- a/data-config/ws-message-forward-config.json
+++ b/data-config/message-forward-config.json
@@ -1,7 +1,7 @@
[
{
"method": "WS_RECORD_SUBMIT",
- "urls": ["http://127.0.0.1:9312/message/receive1/wsRecordSubmit/do"],
+ "urls": ["http://127.0.0.1:9312/message/receive/wsRecordSubmit/do"],
"errorResult": "${{system:STANDARD_NO_CONNECT}} ${{xpath:/A/B/C/@val}}系统错误!",
"messageDataType": 1
}
diff --git a/src/main/java/com/docus/server/CxfConfig.java b/src/main/java/com/docus/server/CxfConfig.java
index 166d5c6..c2b554c 100644
--- a/src/main/java/com/docus/server/CxfConfig.java
+++ b/src/main/java/com/docus/server/CxfConfig.java
@@ -1,7 +1,6 @@
package com.docus.server;
import com.docus.server.message.consts.HospitalWsMethod;
-import com.docus.server.message.consts.InteractiveMethod;
import com.docus.server.message.service.SdWebServiceUnifyMessageService;
import com.docus.server.message.service.UnifyMessageService;
import org.apache.cxf.Bus;
@@ -24,7 +23,6 @@ public class CxfConfig {
private SdWebServiceUnifyMessageService sdWebServiceUnifyMessageService;
@Autowired
- @Qualifier(InteractiveMethod.WS)
public void setUnifyMessageService(UnifyMessageService unifyMessageService) {
this.unifyMessageService = unifyMessageService;
}
diff --git a/src/main/java/com/docus/server/message/config/WsMessageForwardConfig.java b/src/main/java/com/docus/server/message/config/MessageForwardConfig.java
similarity index 61%
rename from src/main/java/com/docus/server/message/config/WsMessageForwardConfig.java
rename to src/main/java/com/docus/server/message/config/MessageForwardConfig.java
index 4b9424c..ff3deb6 100644
--- a/src/main/java/com/docus/server/message/config/WsMessageForwardConfig.java
+++ b/src/main/java/com/docus/server/message/config/MessageForwardConfig.java
@@ -11,31 +11,31 @@ import java.util.Objects;
/**
* @author wyb
*/
-public class WsMessageForwardConfig {
+public class MessageForwardConfig {
private final static String CONFIG_FILE_PATH = "data-config";
- private final static String CONFIG_FILE_NAME = "ws-message-forward-config.json";
+ private final static String CONFIG_FILE_NAME = "message-forward-config.json";
- public static WsMessageForward wsMessageForward(String method) {
+ public static MessageForward wsMessageForward(String method) {
Objects.requireNonNull(method);
TableJsonRead jsonReader = new TableJsonRead();
String wsMessageForwardConfigJson = jsonReader.ReadContent(CONFIG_FILE_PATH, CONFIG_FILE_NAME);
if (wsMessageForwardConfigJson == null) {
return null;
}
- List wsMessageForwardList = Func.parseJsonArray(wsMessageForwardConfigJson, WsMessageForward.class);
- if (Func.isEmpty(wsMessageForwardList)) {
+ List messageForwardList = Func.parseJsonArray(wsMessageForwardConfigJson, MessageForward.class);
+ if (Func.isEmpty(messageForwardList)) {
return null;
}
- for (WsMessageForward wsMessageForward : wsMessageForwardList) {
- if (method.equals(wsMessageForward.getMethod())) {
- return wsMessageForward;
+ for (MessageForward messageForward : messageForwardList) {
+ if (method.equals(messageForward.getMethod())) {
+ return messageForward;
}
}
return null;
}
@Data
- public static class WsMessageForward {
+ public static class MessageForward {
private String method;
private List urls;
private String errorResult;
diff --git a/src/main/java/com/docus/server/message/consts/InteractiveMethod.java b/src/main/java/com/docus/server/message/consts/InteractiveMethod.java
index f2ab7d5..e70cd12 100644
--- a/src/main/java/com/docus/server/message/consts/InteractiveMethod.java
+++ b/src/main/java/com/docus/server/message/consts/InteractiveMethod.java
@@ -5,13 +5,13 @@ package com.docus.server.message.consts;
* @author wyb
*/
public interface InteractiveMethod {
- /**
- * Http接收消息统一服务处理方式
- */
- String HTTP = "HttpUnifyMessageService";
- /**
- * WebService接收消息统一服务处理方式"
- */
- String WS = "WebServiceUnifyMessageService";
+// /**
+// * Http接收消息统一服务处理方式
+// */
+// String HTTP = "HTTP";
+// /**
+// * WebService接收消息统一服务处理方式"
+// */
+// String WS = "WS";
}
diff --git a/src/main/java/com/docus/server/message/controller/MessagePushController.java b/src/main/java/com/docus/server/message/controller/MessagePushController.java
index adcd2af..b0614dc 100644
--- a/src/main/java/com/docus/server/message/controller/MessagePushController.java
+++ b/src/main/java/com/docus/server/message/controller/MessagePushController.java
@@ -1,12 +1,10 @@
package com.docus.server.message.controller;
-import com.docus.server.message.consts.InteractiveMethod;
import com.docus.server.message.dto.Message;
import com.docus.server.message.service.UnifyMessageService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -25,7 +23,6 @@ public class MessagePushController {
private UnifyMessageService unifyMessageService;
@Autowired
- @Qualifier(InteractiveMethod.HTTP)
public void setUnifyMessageService(UnifyMessageService unifyMessageService) {
this.unifyMessageService = unifyMessageService;
}
diff --git a/src/main/java/com/docus/server/message/entity/UnifyMessage.java b/src/main/java/com/docus/server/message/entity/UnifyMessage.java
new file mode 100644
index 0000000..2180f27
--- /dev/null
+++ b/src/main/java/com/docus/server/message/entity/UnifyMessage.java
@@ -0,0 +1,39 @@
+package com.docus.server.message.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "消息对象", description = "消息对象")
+public class UnifyMessage implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "id 主键")
+ @TableId(value = "id")
+ private Long id;
+
+ @ApiModelProperty(value = "接收到的消息")
+ @TableField(value = "message")
+ private String message;
+
+ @ApiModelProperty(value = "转发方法")
+ @TableField(value = "method")
+ private String method;
+
+ @ApiModelProperty(value = "消息接收时间")
+ @TableField(value = "create_time")
+ private Date createTime;
+
+ @ApiModelProperty(value = "状态 0:失败 1:成功")
+ @TableField(value = "state")
+ private Integer state;
+
+}
diff --git a/src/main/java/com/docus/server/message/mapper/UnifyMessageMapper.java b/src/main/java/com/docus/server/message/mapper/UnifyMessageMapper.java
new file mode 100644
index 0000000..e410116
--- /dev/null
+++ b/src/main/java/com/docus/server/message/mapper/UnifyMessageMapper.java
@@ -0,0 +1,8 @@
+package com.docus.server.message.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.docus.server.message.entity.UnifyMessage;
+
+public interface UnifyMessageMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/docus/server/message/service/MessageCarrier.java b/src/main/java/com/docus/server/message/service/MessageCarrier.java
new file mode 100644
index 0000000..1713223
--- /dev/null
+++ b/src/main/java/com/docus/server/message/service/MessageCarrier.java
@@ -0,0 +1,25 @@
+package com.docus.server.message.service;
+
+import cn.hutool.http.HttpUtil;
+import com.docus.core.util.Func;
+import com.docus.server.message.config.MessageForwardConfig;
+import com.docus.server.message.dto.Message;
+import com.docus.server.message.dto.MessageResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+@Slf4j
+public class MessageCarrier {
+ public List send(Message message, MessageForwardConfig.MessageForward messageForward) {
+ List responseLis = new ArrayList<>();
+ for (String url : messageForward.getUrls()) {
+ String resp = HttpUtil.post(url, Func.toJson(message));
+ responseLis.add(Func.readJson(resp, MessageResponse.class));
+ }
+ return responseLis;
+ }
+}
diff --git a/src/main/java/com/docus/server/message/service/UnifyMessageService.java b/src/main/java/com/docus/server/message/service/UnifyMessageService.java
index aadff63..dd64e61 100644
--- a/src/main/java/com/docus/server/message/service/UnifyMessageService.java
+++ b/src/main/java/com/docus/server/message/service/UnifyMessageService.java
@@ -12,4 +12,5 @@ public interface UnifyMessageService {
* @return 处理结果
*/
String pushInformation(@WebParam(name = "method") String method,@WebParam(name = "message") String message);
+
}
diff --git a/src/main/java/com/docus/server/message/service/impl/HttpUnifyMessageServiceImpl.java b/src/main/java/com/docus/server/message/service/impl/HttpUnifyMessageServiceImpl.java
deleted file mode 100644
index bfa2c24..0000000
--- a/src/main/java/com/docus/server/message/service/impl/HttpUnifyMessageServiceImpl.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.docus.server.message.service.impl;
-
-import com.docus.server.message.consts.InteractiveMethod;
-import com.docus.server.message.service.UnifyMessageService;
-import org.springframework.stereotype.Service;
-
-/**
- * @author wyb
- */
-@Service(InteractiveMethod.HTTP)
-public class HttpUnifyMessageServiceImpl implements UnifyMessageService {
- @Override
- public String pushInformation(String method,String message) {
- return null;
- }
-}
diff --git a/src/main/java/com/docus/server/message/service/impl/SdWebServiceUnifyMessageServiceImpl.java b/src/main/java/com/docus/server/message/service/impl/SdWebServiceUnifyMessageServiceImpl.java
index 0aee64e..c7aa500 100644
--- a/src/main/java/com/docus/server/message/service/impl/SdWebServiceUnifyMessageServiceImpl.java
+++ b/src/main/java/com/docus/server/message/service/impl/SdWebServiceUnifyMessageServiceImpl.java
@@ -1,14 +1,13 @@
package com.docus.server.message.service.impl;
import com.docus.server.message.consts.HospitalWsMethod;
-import com.docus.server.message.consts.InteractiveMethod;
import com.docus.server.message.service.SdWebServiceUnifyMessageService;
import com.docus.server.message.service.UnifyMessageService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
/**
+ * 一般统一使用UnifyMessageService即可,因为文档已经先给了第三方,所以在这里开发
* @author WYBDEV
*/
@Service(HospitalWsMethod.WS_RECORD_SUBMIT)
@@ -17,7 +16,6 @@ public class SdWebServiceUnifyMessageServiceImpl implements SdWebServiceUnifyMes
private UnifyMessageService unifyMessageService;
@Autowired
- @Qualifier(InteractiveMethod.WS)
public void setUnifyMessageService(UnifyMessageService unifyMessageService) {
this.unifyMessageService = unifyMessageService;
}
diff --git a/src/main/java/com/docus/server/message/service/impl/UnifyMessageServiceImpl.java b/src/main/java/com/docus/server/message/service/impl/UnifyMessageServiceImpl.java
new file mode 100644
index 0000000..5a8a252
--- /dev/null
+++ b/src/main/java/com/docus/server/message/service/impl/UnifyMessageServiceImpl.java
@@ -0,0 +1,103 @@
+package com.docus.server.message.service.impl;
+
+import com.docus.core.util.Func;
+import com.docus.infrastructure.redis.service.IdService;
+import com.docus.infrastructure.web.api.ResultCode;
+import com.docus.server.message.config.MessageForwardConfig;
+import com.docus.server.message.dto.Message;
+import com.docus.server.message.dto.MessageResponse;
+import com.docus.server.message.entity.UnifyMessage;
+import com.docus.server.message.enums.DataFormatEnum;
+import com.docus.server.message.mapper.UnifyMessageMapper;
+import com.docus.server.message.result.MessageInfo;
+import com.docus.server.message.result.ResultUtil;
+import com.docus.server.message.service.MessageCarrier;
+import com.docus.server.message.service.UnifyMessageService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author WYBDEV
+ */
+@Service
+@Slf4j
+public class UnifyMessageServiceImpl implements UnifyMessageService {
+ private UnifyMessageMapper unifyMessageMapper;
+ private IdService idService;
+ private MessageCarrier messageCarrier;
+
+ @Autowired
+ public void setUnifyMessageMapper(UnifyMessageMapper unifyMessageMapper) {
+ this.unifyMessageMapper = unifyMessageMapper;
+ }
+
+ @Autowired
+ public void setIdService(IdService idService) {
+ this.idService = idService;
+ }
+
+ @Autowired
+ public void setMessageCarrier(MessageCarrier messageCarrier) {
+ this.messageCarrier = messageCarrier;
+ }
+
+ @Override
+ public String pushInformation(String method, String message) {
+ MessageForwardConfig.MessageForward messageForward = MessageForwardConfig.wsMessageForward(method);
+ if (messageForward == null || Func.isEmpty(messageForward.getUrls())) {
+ return "方法匹配错误!";
+ }
+ DataFormatEnum dataFormatEnum = DataFormatEnum.fromValue(messageForward.getMessageDataType());
+ if (dataFormatEnum == null) {
+ return "格式匹配错误!";
+ }
+ UnifyMessage unifyMessage = saveMessage(method, message);
+ try {
+ List responseLis = messageCarrier.send(new Message(method, message), messageForward);
+ return verifyMessageResponseAndGetReturnMessage(responseLis);
+ } catch (Exception ex) {
+ log.error(ex.getMessage(), ex);
+ messageFailed(unifyMessage);
+ MessageInfo messageInfo = new MessageInfo(dataFormatEnum, message);
+ return ResultUtil.dynamicParameterReplace(messageInfo, messageForward.getErrorResult());
+ }
+ }
+
+ private void messageFailed(UnifyMessage unifyMessage) {
+ UnifyMessage updateMessage = new UnifyMessage();
+ updateMessage.setId(unifyMessage.getId());
+ updateMessage.setState(0);
+ unifyMessageMapper.updateById(updateMessage);
+ }
+
+ private String verifyMessageResponseAndGetReturnMessage(List responseLis) {
+ responseLis = responseLis.stream().filter(item -> Func.isNotEmpty(item.getRespCode())).collect(Collectors.toList());
+ if (Func.isEmpty(responseLis)) {
+ throw new RuntimeException("未收到成功和失败的返回结果!");
+ }
+ for (MessageResponse response : responseLis) {
+ if (ResultCode.FAILED.getCode().equals(response.getRespCode())) {
+ return response.getRespMessage();
+ }
+ }
+ return responseLis.get(0).getRespMessage();
+ }
+
+ private UnifyMessage saveMessage(String method, String message) {
+ UnifyMessage unifyMessage = new UnifyMessage();
+ unifyMessage.setId(idService.getDateSeq());
+ unifyMessage.setMessage(message);
+ unifyMessage.setMethod(method);
+ unifyMessage.setState(1);
+ unifyMessage.setCreateTime(new Date());
+ unifyMessageMapper.insert(unifyMessage);
+ return unifyMessage;
+ }
+
+
+}
diff --git a/src/main/java/com/docus/server/message/service/impl/WebServiceUnifyMessageServiceImpl.java b/src/main/java/com/docus/server/message/service/impl/WebServiceUnifyMessageServiceImpl.java
deleted file mode 100644
index 06cdc87..0000000
--- a/src/main/java/com/docus/server/message/service/impl/WebServiceUnifyMessageServiceImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.docus.server.message.service.impl;
-
-import cn.hutool.http.HttpUtil;
-import com.docus.core.util.Func;
-import com.docus.infrastructure.web.api.ResultCode;
-import com.docus.server.message.config.WsMessageForwardConfig;
-import com.docus.server.message.consts.InteractiveMethod;
-import com.docus.server.message.dto.Message;
-import com.docus.server.message.dto.MessageResponse;
-import com.docus.server.message.enums.DataFormatEnum;
-import com.docus.server.message.result.MessageInfo;
-import com.docus.server.message.result.ResultUtil;
-import com.docus.server.message.service.UnifyMessageService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author WYBDEV
- */
-@Service(InteractiveMethod.WS)
-@Slf4j
-public class WebServiceUnifyMessageServiceImpl implements UnifyMessageService {
- @Override
- public String pushInformation(String method, String message) {
- Message messageObj = new Message(method, message);
- WsMessageForwardConfig.WsMessageForward wsMessageForward = WsMessageForwardConfig.wsMessageForward(method);
- if (wsMessageForward == null || Func.isEmpty(wsMessageForward.getUrls())) {
- return "方法匹配错误!";
- }
- DataFormatEnum dataFormatEnum = DataFormatEnum.fromValue(wsMessageForward.getMessageDataType());
- if (dataFormatEnum == null) {
- return "格式匹配错误!";
- }
- try {
- List responseLis = new ArrayList<>();
- for (String url : wsMessageForward.getUrls()) {
- String resp = HttpUtil.post(url, Func.toJson(messageObj));
- responseLis.add(Func.readJson(resp, MessageResponse.class));
- }
- for (MessageResponse response : responseLis) {
- if (ResultCode.FAILED.getCode().equals(response.getRespCode())) {
- return response.getRespMessage();
- }
- }
- responseLis = responseLis.stream().filter(item -> Func.isNotEmpty(item.getRespCode())).collect(Collectors.toList());
- if (Func.isEmpty(responseLis)) {
- throw new RuntimeException("未收到成功和失败的返回结果!");
- }
- return responseLis.get(0).getRespMessage();
- } catch (Exception ex) {
-// save(method,message);
- log.error(ex.getMessage(), ex);
- MessageInfo messageInfo = new MessageInfo(dataFormatEnum, message);
- return ResultUtil.dynamicParameterReplace(messageInfo, wsMessageForward.getErrorResult());
- }
- }
-}