Przeglądaj źródła

卡务中心双向同步

baiyun 1 rok temu
rodzic
commit
8896441973

+ 2 - 1
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemoteBagService.java

@@ -30,7 +30,8 @@ public interface RemoteBagService {
     Boolean batchRefund(RemotePurseInOutBo bo, Long[] userIds);
     Boolean batchSetBalance(RemotePurseInOutBo bo, Long[] userIds);
     Boolean lockCard(Long cardId);
+    Boolean lockCardByBo(RemoteCardBo bo);
     Boolean unlockCard(Long cardId);
 
-    Boolean initEntityCard(RemoteCardBo bo);
+    Boolean writeCardSuccess(RemoteCardBo bo);
 }

+ 5 - 2
ruoyi-common/ruoyi-common-message/src/main/java/org/dromara/common/message/kafka/constant/MessageEventTypeConstants.java

@@ -135,8 +135,11 @@ public class MessageEventTypeConstants {
     public static final String	ptCard_CARD_LOCK = "YKT_109_LOCK";
     /** 卡务中心解挂 */
     public static final String	ptCard_CARD_UNLOCK = "YKT_109_UNLOCK";
-    /** 卡片状态操作[发卡、换卡、补卡]*/
-    public static final String CARD_OPERATION = "YKT_109_OPERATION";
+    /** 卡务中心卡片状态操作[发卡、换卡、补卡]*/
+    public static final String CARD_OPERATION = "YKT_109_CARD_WRITE";
+    /** 卡务中心 挂失*/
+    public static final String	CARD_LOCK = "YKT_109_CARD_LOCK";
+
     /** 补助设置新增 */
     public static final String	SUBSIDY_ADD = "YKT_102_ADD";
 

+ 2 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/CardApiController.java

@@ -51,7 +51,6 @@ public class CardApiController extends BaseController {
     private final IPtCardService cardService;
 
     @PostMapping({"/api/v1/new", "/api/v1/init","/api/v1/change","/api/v1/reissue"})
-    @SyncDataToLocal(eventType = CARD_OPERATION, sender = CARD_CENTER_SENDER)
     public ReturnResult initNewCard(@RequestBody Map<String, Object> initParam) {
         return getReturnResult(initParam);
     }
@@ -78,6 +77,7 @@ public class CardApiController extends BaseController {
     }
 
     @PostMapping("/api/v1/write/success")
+    @SyncDataToLocal(eventType = CARD_OPERATION, sender = CARD_CENTER_SENDER)
     public ReturnResult writeNewCardOk(@RequestBody Map<String, Object> initParam) throws InterruptedException {
         PtCardBo bo = getInitInfo(initParam);
         R<PtCardVo> vo = cardBusiness.writeCardSuccess(bo);
@@ -97,6 +97,7 @@ public class CardApiController extends BaseController {
      * @return 返回结果
      */
     @PostMapping("/api/v1/lock")
+    @SyncDataToLocal(eventType = CARD_LOCK, sender = CARD_CENTER_SENDER)
     public ReturnResult lockCard(@RequestBody Map<String, String> mapParams){
         Long cardNo = Long.parseLong(mapParams.get("cardNo"));
         Long FactorId = Long.parseLong(mapParams.get("factoryFixId"));

+ 14 - 5
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/dubbo/RemoteBagServiceImpl.java

@@ -14,12 +14,11 @@ import org.dromara.backstage.business.payments.PayOrderBusiness;
 import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
 import org.dromara.backstage.cardCenter.service.IPtCardService;
 import org.dromara.backstage.consumption.domain.bo.ConsumptionBo;
-import org.dromara.backstage.domain.vo.card.InitCardVo;
+import org.dromara.backstage.domain.vo.card.PtCardVo;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.bo.PurseInOutBo;
 import org.dromara.backstage.payment.service.IPtBagService;
 import org.dromara.common.core.domain.R;
-import org.dromara.common.core.domain.model.ResultInfo;
 import org.dromara.common.core.enums.SystemUseTypeEnum;
 import org.springframework.stereotype.Service;
 
@@ -123,16 +122,26 @@ public class RemoteBagServiceImpl implements RemoteBagService {
         return ptCardService.lockCard(cardId);
     }
 
+    @Override
+    public Boolean lockCardByBo(RemoteCardBo bo) {
+        ptCardService.lockCardByBo(BeanUtil.copyProperties(bo, PtCardBo.class));
+        return true;
+    }
+
     @Override
     public Boolean unlockCard(Long cardId) {
         return ptCardService.unlockCard(cardId);
     }
 
     @Override
-    public Boolean initEntityCard(RemoteCardBo bo) {
+    public Boolean writeCardSuccess(RemoteCardBo bo) {
         PtCardBo cardBo = BeanUtil.copyProperties(bo, PtCardBo.class);
-        InitCardVo initCardVo = new InitCardVo();
-        R<ResultInfo> res = cardBusiness.initEntityCard(cardBo, initCardVo);
+        R<PtCardVo> res = null;
+        try {
+            res = cardBusiness.writeCardSuccess(cardBo);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
         return R.isSuccess(res);
     }
 }

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

@@ -117,15 +117,29 @@ public class SyncRemotePtCardCenterService {
         }
     }
 
-    public void cardOperation(Object msg) throws ServiceException{
+    /** 卡务中心取卡*/
+    public void cardWrite(Object msg) throws ServiceException{
         //json转map
         Map<String, Object> initParam = JSONUtil.parseObj(msg).toBean(Map.class);
-        boolean flag = bagService.initEntityCard(getInitInfo(initParam));
+        boolean flag = bagService.writeCardSuccess(getInitInfo(initParam));
         if (!flag){
             throw new ServiceException("卡片操作失败");
         }
     }
-
+    /** 卡务中心挂失*/
+    public void cardLock(Object msg) throws ServiceException{
+        //json转map
+        Map<String, Object> initParam = JSONUtil.parseObj(msg).toBean(Map.class);
+        Long cardNo = Long.parseLong(initParam.get("cardNo").toString());
+        Long FactorId = Long.parseLong(initParam.get("factoryFixId").toString());
+        RemoteCardBo bo = new RemoteCardBo();
+        bo.setFactoryId(FactorId);
+        bo.setCardNo(cardNo);
+        boolean flag = bagService.lockCardByBo(bo);
+        if (!flag){
+            throw new ServiceException("卡片挂失失败");
+        }
+    }
     private RemoteCardBo getInitInfo(Map<String, Object> initParam) {
         RemoteCardBo bo = new RemoteCardBo();
         bo.setCardId(ObjUtil.isNotEmpty(initParam.get("cardId")) ? Long.parseLong(initParam.get("cardId").toString()) : null);

+ 2 - 1
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/yktOperation/PtCardCenterEventStrategyImpl.java

@@ -30,7 +30,8 @@ public class PtCardCenterEventStrategyImpl implements IYktEventStrategy {
             case MessageEventTypeConstants.ptCard_multiSet_EDIT -> cardCenterService.batchSetBalance(msg);
             case MessageEventTypeConstants.ptCard_CARD_LOCK -> cardCenterService.lockCard(msg);
             case MessageEventTypeConstants.ptCard_CARD_UNLOCK -> cardCenterService.unlockCard(msg);
-            case MessageEventTypeConstants.CARD_OPERATION -> cardCenterService.cardOperation(msg);
+            case MessageEventTypeConstants.CARD_OPERATION -> cardCenterService.cardWrite(msg);
+            case MessageEventTypeConstants.CARD_LOCK -> cardCenterService.cardLock(msg);
             default -> log.info("未知事件");
         }
     }