xiongzhu %!s(int64=4) %!d(string=hai) anos
pai
achega
b33f91dc95

+ 5 - 0
src/main/java/com/izouma/nineth/config/EventNames.java

@@ -0,0 +1,5 @@
+package com.izouma.nineth.config;
+
+public class EventNames {
+    public final static String SWITCH_ACCOUNT = "switchAccount";
+}

+ 16 - 0
src/main/java/com/izouma/nineth/listener/BroadcastEventListener.java

@@ -2,6 +2,8 @@ package com.izouma.nineth.listener;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.izouma.nineth.config.EventNames;
+import com.izouma.nineth.service.AdapayMerchantService;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.spring.annotation.ConsumeMode;
 import org.apache.rocketmq.spring.annotation.ConsumeMode;
@@ -19,9 +21,23 @@ import org.springframework.stereotype.Service;
         topic = "${general.broadcast-event-topic}",
         topic = "${general.broadcast-event-topic}",
         consumeMode = ConsumeMode.CONCURRENTLY)
         consumeMode = ConsumeMode.CONCURRENTLY)
 public class BroadcastEventListener implements RocketMQListener<JSONObject> {
 public class BroadcastEventListener implements RocketMQListener<JSONObject> {
+    private AdapayMerchantService adapayMerchantService;
 
 
     @Override
     @Override
     public void onMessage(JSONObject message) {
     public void onMessage(JSONObject message) {
         log.info("接收到广播事件 {}", JSONObject.toJSONString(message, SerializerFeature.PrettyFormat));
         log.info("接收到广播事件 {}", JSONObject.toJSONString(message, SerializerFeature.PrettyFormat));
+        String name = message.getString("name");
+        if (name != null) {
+            switch (name) {
+                case EventNames.SWITCH_ACCOUNT:
+                    try {
+                        Long id = message.getLong("data");
+                        adapayMerchantService.select(id);
+                    } catch (Exception e) {
+                        log.error("event error", e);
+                    }
+                    break;
+            }
+        }
     }
     }
 }
 }

+ 19 - 0
src/main/java/com/izouma/nineth/service/AdapayMerchantService.java

@@ -1,11 +1,14 @@
 package com.izouma.nineth.service;
 package com.izouma.nineth.service;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.huifu.adapay.Adapay;
 import com.huifu.adapay.Adapay;
 import com.huifu.adapay.core.exception.BaseAdaPayException;
 import com.huifu.adapay.core.exception.BaseAdaPayException;
 import com.huifu.adapay.model.*;
 import com.huifu.adapay.model.*;
 import com.izouma.nineth.config.AdapayProperties;
 import com.izouma.nineth.config.AdapayProperties;
+import com.izouma.nineth.config.EventNames;
+import com.izouma.nineth.config.GeneralProperties;
 import com.izouma.nineth.domain.AdapayMerchant;
 import com.izouma.nineth.domain.AdapayMerchant;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.dto.adapay.MemberInfo;
 import com.izouma.nineth.dto.adapay.MemberInfo;
@@ -18,6 +21,7 @@ import com.izouma.nineth.utils.SnowflakeIdWorker;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.collections.MapUtils;
+import org.apache.rocketmq.spring.core.RocketMQTemplate;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -34,6 +38,8 @@ public class AdapayMerchantService {
 
 
     private final AdapayMerchantRepo adapayMerchantRepo;
     private final AdapayMerchantRepo adapayMerchantRepo;
     private final AdapayProperties   adapayProperties;
     private final AdapayProperties   adapayProperties;
+    private final RocketMQTemplate   rocketMQTemplate;
+    private final GeneralProperties  generalProperties;
 
 
     @PostConstruct
     @PostConstruct
     public void init() {
     public void init() {
@@ -72,6 +78,19 @@ public class AdapayMerchantService {
         return record;
         return record;
     }
     }
 
 
+    public void sendSelectEvent(Long id) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("name", EventNames.SWITCH_ACCOUNT);
+        jsonObject.put("data", id);
+        rocketMQTemplate.convertAndSend(generalProperties.getBroadcastEventTopic(), jsonObject);
+
+        try {
+            Thread.sleep(500);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+
     public void select(Long id) throws Exception {
     public void select(Long id) throws Exception {
         AdapayMerchant merchant = adapayMerchantRepo.findById(id).orElseThrow(new BusinessException("商户不存在"));
         AdapayMerchant merchant = adapayMerchantRepo.findById(id).orElseThrow(new BusinessException("商户不存在"));
 
 

+ 1 - 1
src/main/java/com/izouma/nineth/web/AdapayMerchantController.java

@@ -56,7 +56,7 @@ public class AdapayMerchantController extends BaseController {
 
 
     @PostMapping("/select")
     @PostMapping("/select")
     public void select(@RequestParam Long id) throws Exception {
     public void select(@RequestParam Long id) throws Exception {
-        adapayMerchantService.select(id);
+        adapayMerchantService.sendSelectEvent(id);
     }
     }
 
 
     @PostMapping("/query")
     @PostMapping("/query")