Forráskód Böngészése

补助设置数据双向同步功能开发

baiyun 1 éve
szülő
commit
17b2ddf84a
15 módosított fájl, 113 hozzáadás és 51 törlés
  1. 1 0
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemoteSendMessageRecordService.java
  2. 2 1
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemotePtSubsidyBo.java
  3. 2 1
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemotePtSubsidyitemBo.java
  4. 3 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteUserBo.java
  5. 5 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/dubbo/RemoteSendMessageRecordServiceImpl.java
  6. 1 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/ISendMessageRecordService.java
  7. 2 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/impl/SendMessageRecordServiceImpl.java
  8. 3 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/PtSubsidyitem.java
  9. 2 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/bo/PtSubsidyBo.java
  10. 3 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/bo/PtSubsidyitemBo.java
  11. 2 2
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/yktOperation/SyncRemotePtCardCenterService.java
  12. 8 0
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/yktOperation/SyncRemotePtUserAccountService.java
  13. 3 3
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/yktOperation/SyncRemoteSendMessageRecordService.java
  14. 0 41
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/consumer/KafkaConsumer.java
  15. 76 0
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/consumer/KafkaConsumerYkt.java

+ 1 - 0
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemoteSendMessageRecordService.java

@@ -10,6 +10,7 @@ import org.dromara.backstage.api.domain.bo.RemoteSendMessageRecordBo;
 public interface RemoteSendMessageRecordService {
 
     Boolean updateByBo(RemoteSendMessageRecordBo bo) throws Exception;
+    Boolean insertByBo(RemoteSendMessageRecordBo bo) throws Exception;
 
 
 }

+ 2 - 1
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemotePtSubsidyBo.java

@@ -5,6 +5,7 @@ import lombok.NoArgsConstructor;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -38,7 +39,7 @@ public class RemotePtSubsidyBo implements Serializable {
     /**
      * 补助金额
      */
-    private Long fillMoney;
+    private BigDecimal fillMoney;
 
     /**
      * 预计到账时间

+ 2 - 1
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemotePtSubsidyitemBo.java

@@ -5,6 +5,7 @@ import lombok.NoArgsConstructor;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -43,7 +44,7 @@ public class RemotePtSubsidyitemBo implements Serializable {
     /**
      * 补助金额
      */
-    private Long fillMoney;
+    private BigDecimal fillMoney;
 
     /**
      * 预计到账时间

+ 3 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteUserBo.java

@@ -164,6 +164,9 @@ public class RemoteUserBo implements Serializable {
      * 第三方人员状态
      */
     private String userState;
+    private Long cardId;
+
+    private Long cardNo;
     /*
      * 人员部门列表,一人多部门情况
      */

+ 5 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/dubbo/RemoteSendMessageRecordServiceImpl.java

@@ -21,4 +21,9 @@ public class RemoteSendMessageRecordServiceImpl implements RemoteSendMessageReco
     public Boolean updateByBo(RemoteSendMessageRecordBo bo) throws Exception {
         return sendMessageRecordService.updateBoByEventId(BeanUtil.copyProperties(bo, SendMessageRecordBo.class));
     }
+
+    @Override
+    public Boolean insertByBo(RemoteSendMessageRecordBo bo) throws Exception {
+        return sendMessageRecordService.insertByBo(BeanUtil.copyProperties(bo, SendMessageRecordBo.class));
+    }
 }

+ 1 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/ISendMessageRecordService.java

@@ -71,4 +71,5 @@ public interface ISendMessageRecordService {
      * 根据事件ID修改消息发送记录
      */
     Boolean updateBoByEventId(SendMessageRecordBo bo);
+
 }

+ 2 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/impl/SendMessageRecordServiceImpl.java

@@ -111,6 +111,7 @@ public class SendMessageRecordServiceImpl implements ISendMessageRecordService {
     @Override
     public Boolean insertByBo(SendMessageRecordBo bo) {
         SendMessageRecord add = MapstructUtils.convert(bo, SendMessageRecord.class);
+        add.setUpdateTime(new Date());
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
@@ -162,4 +163,5 @@ public class SendMessageRecordServiceImpl implements ISendMessageRecordService {
         update.setUpdateTime(new Date());
         return baseMapper.update(update,updateWrapper) > 0;
     }
+
 }

+ 3 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/PtSubsidyitem.java

@@ -4,6 +4,8 @@ import org.dromara.common.tenant.core.TenantEntity;
 import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
 
@@ -47,7 +49,7 @@ public class PtSubsidyitem extends TenantEntity {
     /**
      * 补助金额
      */
-    private Long fillMoney;
+    private BigDecimal fillMoney;
 
     /**
      * 预计到账时间

+ 2 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/bo/PtSubsidyBo.java

@@ -13,6 +13,7 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
 import org.dromara.common.tenant.core.TenantEntity;
 
 import java.io.Serial;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -51,7 +52,7 @@ public class PtSubsidyBo extends TenantEntity {
      * 补助金额
      */
     @NotNull(message = "补助金额不能为空", groups = { AddGroup.class, EditGroup.class })
-    private Long fillMoney;
+    private BigDecimal fillMoney;
 
     /**
      * 预计到账时间

+ 3 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/domain/bo/PtSubsidyitemBo.java

@@ -8,6 +8,8 @@ import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import jakarta.validation.constraints.*;
+
+import java.math.BigDecimal;
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
 
@@ -50,7 +52,7 @@ public class PtSubsidyitemBo extends BaseEntity {
      * 补助金额
      */
     @NotNull(message = "补助金额不能为空", groups = { AddGroup.class, EditGroup.class })
-    private Long fillMoney;
+    private BigDecimal fillMoney;
 
     /**
      * 预计到账时间

+ 2 - 2
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/yktOperation/SyncRemotePtCardCenterService.java

@@ -94,7 +94,7 @@ public class SyncRemotePtCardCenterService {
      * 远程调用卡片挂失
      */
     public void lockCard(Object msg) throws ServiceException{
-        boolean flag = bagService.lockCard(JSONUtil.parseObj(msg).getLong("cardId"));
+        boolean flag = bagService.lockCard(Long.valueOf(msg.toString()));
         if (!flag){
             throw new ServiceException("卡片挂失失败");
         }
@@ -103,7 +103,7 @@ public class SyncRemotePtCardCenterService {
      * 远程调用卡片解挂
      */
     public void unlockCard(Object msg) throws ServiceException{
-        boolean flag = bagService.unlockCard(JSONUtil.parseObj(msg).getLong("cardId"));
+        boolean flag = bagService.unlockCard(Long.valueOf(msg.toString()));
         if (!flag){
             throw new ServiceException("卡片解挂失败");
         }

+ 8 - 0
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/yktOperation/SyncRemotePtUserAccountService.java

@@ -94,4 +94,12 @@ public class SyncRemotePtUserAccountService {
             throw new ServiceException("新增用户失败");
         }
     }
+
+    public static void main(String[] args) {
+        Object msg = "{\"lifespan\":\"2024-11-29 00:00:00\",\"nickName\":\"你长寿\",\"cardType\":8," +
+            "\"deptId\":1850785191038996481,\"postId\":105,\"params\":{},\"userName\":\"你长寿\",\"cardNo\":38043,\"userId\":1854830279290028034,\"realName\":\"你长寿\",\"password\":\"$2a$10$roLuAeDviuPNDN/f/Fom.OCwq.TtAFuwV9GMIYykaU1J.5dTzri6q\",\"roleIds\":[1833306814969163778],\"phone\":\"15674973710\",\"postIds\":[],\"cardId\":1854830283673108482,\"tenantId\":\"20200813044411\",\"category\":\"3\",\"userNumb\":\"15674973710\",\"status\":\"0\"}";
+        JSONObject obj = JSONUtil.parseObj(msg);
+        RemoteUserBo bo = obj.toBean(RemoteUserBo.class);
+        System.out.println(bo);
+    }
 }

+ 3 - 3
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/yktOperation/SyncRemoteSendMessageRecordService.java

@@ -20,10 +20,10 @@ public class SyncRemoteSendMessageRecordService {
     private final RemoteSendMessageRecordService sendMessageRecordService;
 
     /**
-     * 远程调用消息发送记录修改
+     * 远程调用消息发送新增
      */
-    public void editSendMessageRecord(RemoteSendMessageRecordBo bo) throws Exception{
-        boolean flag = sendMessageRecordService.updateByBo(bo);
+    public void insertSendMessageRecord(RemoteSendMessageRecordBo bo) throws Exception{
+        boolean flag = sendMessageRecordService.insertByBo(bo);
         if (!flag){
             throw new ServiceException("消息发送记录修改失败");
         }

+ 0 - 41
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/consumer/KafkaConsumer.java

@@ -32,11 +32,6 @@ import static org.dromara.common.message.kafka.constant.KafkaTopicConstants.SYNC
 public class KafkaConsumer {
 
     private final EventStrategyContext eventStrategyContext;
-    private final YktEventStrategyContext yktEventStrategyContext;
-    private final SyncRemoteSendMessageRecordService syncRemoteSendMessageRecordService;
-
-    @Value("${spring.system.tenantId}")
-    private String tenantId;
 
 //    @KafkaListener(topics = "eventBus", groupId = "test-group-id")
     public void kafkaReceiveHandler(ConsumerRecord<String, String> record) {
@@ -51,40 +46,4 @@ public class KafkaConsumer {
             log.error("[kafka消息处理失败]-[消息:{}-[错误:{}]", receiveMsg, e.getMessage());
         }
     }
-
-    /**
-     * 一卡通云端业务操作本地同步处理
-     * @param record kafka消息
-     */
-    @KafkaListener(topics = SYNC_DATA_TOPIC, groupId = "YTK_${spring.system.tenantId}")
-    public void cloudOperationSync(ConsumerRecord<String, String> record){
-        KafkaMessage<?> receiveMsg = JSONUtil.toBean(record.value(), KafkaMessage.class);
-        try{
-            if(receiveMsg.getHeader().getTenantId().equals(this.tenantId)){
-                String eventType = receiveMsg.getHeader().getEventType();
-                String sender = receiveMsg.getHeader().getSender();
-                yktEventStrategyContext.doMsgHandle(sender, eventType, receiveMsg.getBody());
-                syncRemoteSendMessageRecordService.editSendMessageRecord(initBo(receiveMsg.getHeader().getEventId(), "Y"));
-            }
-        } catch (Exception e){
-            try {
-                syncRemoteSendMessageRecordService.editSendMessageRecord(initBo(receiveMsg.getHeader().getEventId(), "N"));
-            } catch (Exception ex) {
-                log.error("消息发送记录更新失败", e);
-            }
-            log.error("[kafka消息处理失败]-[消息:{}-[错误:{}]", record.value(), e.getMessage(), e);
-        }
-    }
-
-    /**
-     * 初始化消息记录Bo
-     * @param eventId 事件id
-     * @param consumeStatus 消费状态
-     */
-    private static RemoteSendMessageRecordBo initBo(String eventId, String consumeStatus){
-        RemoteSendMessageRecordBo bo = new RemoteSendMessageRecordBo();
-        bo.setEventId(eventId);
-        bo.setConsumeStatus(consumeStatus);
-        return bo;
-    }
 }

+ 76 - 0
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/consumer/KafkaConsumerYkt.java

@@ -0,0 +1,76 @@
+package org.dromara.server.mq.consumer;
+
+import cn.hutool.json.JSONUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.dromara.backstage.api.domain.bo.RemoteSendMessageRecordBo;
+import org.dromara.common.message.kafka.domain.KafkaHeader;
+import org.dromara.common.message.kafka.domain.KafkaMessage;
+import org.dromara.server.base.service.yktOperation.SyncRemoteSendMessageRecordService;
+import org.dromara.server.mq.event.kafka.YktEventStrategyContext;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
+import org.springframework.kafka.annotation.KafkaListener;
+import org.springframework.stereotype.Component;
+
+import static org.dromara.common.message.kafka.constant.KafkaTopicConstants.SYNC_DATA_TOPIC;
+
+/**
+ * 一卡通内部操作双向同步kafka消息接收处理
+ */
+@RequiredArgsConstructor
+@Slf4j
+@Component
+@ConditionalOnExpression("'local'.equals('${locationFlag}')")
+public class KafkaConsumerYkt {
+
+    private final YktEventStrategyContext yktEventStrategyContext;
+    private final SyncRemoteSendMessageRecordService syncRemoteSendMessageRecordService;
+
+    @Value("${spring.system.tenantId}")
+    private String tenantId;
+
+    /**
+     * 一卡通云端业务操作本地同步处理
+     * @param record kafka消息
+     */
+    @KafkaListener(topics = SYNC_DATA_TOPIC, groupId = "YTK_${spring.system.tenantId}")
+    public void cloudOperationSync(ConsumerRecord<String, String> record){
+        KafkaMessage<?> receiveMsg = JSONUtil.toBean(record.value(), KafkaMessage.class);
+        try{
+            if(receiveMsg.getHeader().getTenantId().equals(this.tenantId)){
+                String eventType = receiveMsg.getHeader().getEventType();
+                String sender = receiveMsg.getHeader().getSender();
+                yktEventStrategyContext.doMsgHandle(sender, eventType, receiveMsg.getBody());
+                try {
+                    syncRemoteSendMessageRecordService.insertSendMessageRecord(initBo(receiveMsg, "Y"));
+                }catch (Exception e){
+                    log.error("消息发送记录更新失败", e);
+                }
+            }
+        } catch (Exception e){
+            try {
+                syncRemoteSendMessageRecordService.insertSendMessageRecord(initBo(receiveMsg, "N"));
+            } catch (Exception ex) {
+                log.error("消息发送记录更新失败", e);
+            }
+            log.error("[kafka消息处理失败]-[消息:{}-[错误:{}]", record.value(), e.getMessage(), e);
+        }
+    }
+
+    /**
+     * 初始化消息记录Bo
+     * @param consumeStatus 消费状态
+     */
+    private static RemoteSendMessageRecordBo initBo(KafkaMessage msg, String consumeStatus){
+        RemoteSendMessageRecordBo bo = new RemoteSendMessageRecordBo();
+        KafkaHeader header = msg.getHeader();
+        bo.setEventId(header.getEventId());
+        bo.setSender(header.getSender());
+        bo.setEventType(header.getEventType());
+        bo.setMessage(msg.getBody().toString());
+        bo.setConsumeStatus(consumeStatus);
+        return bo;
+    }
+}