瀏覽代碼

Merge remote-tracking branch 'origin/master'

luoyb 1 年之前
父節點
當前提交
ee15473be5

+ 3 - 0
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemoteBagService.java

@@ -1,5 +1,6 @@
 package org.dromara.backstage.api;
 
+import org.dromara.backstage.api.domain.bo.RemoteCardBo;
 import org.dromara.backstage.api.domain.bo.RemoteConsumptionBo;
 import org.dromara.backstage.api.domain.bo.RemotePurseInOutBo;
 
@@ -30,4 +31,6 @@ public interface RemoteBagService {
     Boolean batchSetBalance(RemotePurseInOutBo bo, Long[] userIds);
     Boolean lockCard(Long cardId);
     Boolean unlockCard(Long cardId);
+
+    Boolean initEntityCard(RemoteCardBo bo);
 }

+ 20 - 0
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemoteCardBo.java

@@ -1,6 +1,7 @@
 package org.dromara.backstage.api.domain.bo;
 
 import lombok.Data;
+import org.dromara.common.core.enums.CardOperateEnum;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -39,6 +40,25 @@ public class RemoteCardBo implements Serializable {
      * 卡片类型
      */
     private Long cardType;
+    private CardOperateEnum operateType;
+    private Long stationNumb;
+    /**
+     * 租户Id
+     */
+    private String tenantId;
+
+    /**
+     * 原卡卡流水号
+     */
+    private Long oldCardNo;
+    /**
+     * 原卡物理卡号
+     */
+    private Long oldFactoryId;
+    /**
+     * 原cardId
+     */
+    private Long oldCardId;
 
     /**
      * 卡片有效期

+ 2 - 0
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemoteSendMessageRecordBo.java

@@ -60,4 +60,6 @@ public class RemoteSendMessageRecordBo implements Serializable {
      * 消费状态
      */
     private String consumeStatus;
+
+    private String tenantId;
 }

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

@@ -135,6 +135,8 @@ 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	SUBSIDY_ADD = "YKT_102_ADD";
 

+ 6 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/controller/CardApiController.java

@@ -18,6 +18,7 @@ import org.dromara.common.core.domain.model.ResultInfo;
 import org.dromara.common.core.enums.CardOperateEnum;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.core.exception.ApiException;
+import org.dromara.common.message.kafka.aop.annotation.SyncDataToLocal;
 import org.dromara.common.web.core.BaseController;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -28,6 +29,8 @@ import org.springframework.web.bind.annotation.RestController;
 import java.text.MessageFormat;
 import java.util.Map;
 
+import static org.dromara.common.message.kafka.constant.MessageEventTypeConstants.*;
+
 /**
  * @ClassName CardApiController
  * @Description 提供给自助客户端对卡片操作的接口
@@ -47,6 +50,7 @@ public class CardApiController extends BaseController {
     private final IPtCardService cardService;
 
     @PostMapping("/api/v1/new")
+    @SyncDataToLocal(eventType = CARD_OPERATION, sender = CARD_CENTER_SENDER)
     public ReturnResult initNewCard(@RequestBody Map<String, Object> initParam) {
         PtCardBo bo = getInitInfo(initParam);
         InitCardVo initCardVo = new InitCardVo();
@@ -57,6 +61,7 @@ public class CardApiController extends BaseController {
         throw new ApiException(result.getData().getDetail(), result.getData().getCode());
     }
     @PostMapping("/api/v1/change")
+    @SyncDataToLocal(eventType = CARD_OPERATION, sender = CARD_CENTER_SENDER)
     public ReturnResult initChangeCard(@RequestBody Map<String, Object> initParam) {
         PtCardBo bo = getInitInfo(initParam);
         InitCardVo initCardVo = new InitCardVo();
@@ -67,6 +72,7 @@ public class CardApiController extends BaseController {
         throw new ApiException(result.getData().getDetail(), result.getData().getCode());
     }
     @PostMapping("/api/v1/reissue")
+    @SyncDataToLocal(eventType = CARD_OPERATION, sender = CARD_CENTER_SENDER)
     public ReturnResult initReissueCard(@RequestBody Map<String, Object> initParam) {
         PtCardBo bo = getInitInfo(initParam);
         InitCardVo initCardVo = new InitCardVo();

+ 13 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/dubbo/RemoteBagServiceImpl.java

@@ -5,16 +5,21 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.dromara.backstage.api.RemoteBagService;
+import org.dromara.backstage.api.domain.bo.RemoteCardBo;
 import org.dromara.backstage.api.domain.bo.RemoteConsumptionBo;
 import org.dromara.backstage.api.domain.bo.RemotePurseInOutBo;
+import org.dromara.backstage.business.card.CardBusiness;
 import org.dromara.backstage.business.errfill.ErrFillBusiness;
 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.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;
 
@@ -37,6 +42,7 @@ public class RemoteBagServiceImpl implements RemoteBagService {
     private final PayOrderBusiness payOrderBusiness;
     private final ErrFillBusiness errFillBusiness;
     private final IPtCardService ptCardService;
+    private final CardBusiness cardBusiness;
     @Override
     public String selectAccountBalanceByIds(String userIds) {
         return bagService.selectAccountBalanceByIds(userIds);
@@ -122,4 +128,11 @@ public class RemoteBagServiceImpl implements RemoteBagService {
         return ptCardService.unlockCard(cardId);
     }
 
+    @Override
+    public Boolean initEntityCard(RemoteCardBo bo) {
+        PtCardBo cardBo = BeanUtil.copyProperties(bo, PtCardBo.class);
+        InitCardVo initCardVo = new InitCardVo();
+        R<ResultInfo> res = cardBusiness.initEntityCard(cardBo, initCardVo);
+        return R.isSuccess(res);
+    }
 }

+ 1 - 1
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfGuestServiceImpl.java

@@ -144,7 +144,7 @@ public class KfGuestServiceImpl implements IKfGuestService {
                 filterGuest = filterExistGuest(guests, kfGuestList);
             }
             //新增不存在的客人
-            baseMapper.insertBatch(guests.stream().map(item -> MapstructUtils.convert(item, KfGuest.class)).toList());
+            baseMapper.insertBatch(guests);
         }
         return R.ok(filterGuest);
     }

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

@@ -1,16 +1,24 @@
 package org.dromara.server.base.service.yktOperation;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.backstage.api.RemoteBagService;
+import org.dromara.backstage.api.domain.bo.RemoteCardBo;
 import org.dromara.backstage.api.domain.bo.RemoteConsumptionBo;
 import org.dromara.backstage.api.domain.bo.RemotePurseInOutBo;
+import org.dromara.common.core.constant.DefaultConstants;
+import org.dromara.common.core.enums.CardOperateEnum;
 import org.dromara.common.core.exception.ServiceException;
 import org.springframework.stereotype.Service;
 
+import java.util.Map;
+
 /**
  * 卡务中心卡务操作同步
  */
@@ -108,4 +116,42 @@ public class SyncRemotePtCardCenterService {
             throw new ServiceException("卡片解挂失败");
         }
     }
+
+    public void cardOperation(Object msg) throws ServiceException{
+        //json转map
+        Map<String, Object> initParam = JSONUtil.parseObj(msg).toBean(Map.class);
+        boolean flag = bagService.initEntityCard(getInitInfo(initParam));
+        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);
+        bo.setUserId(ObjUtil.isNotEmpty(initParam.get("userId")) ? Long.parseLong(initParam.get("userId").toString()) : 0);
+        bo.setCardType(ObjUtil.isNotEmpty(initParam.get("cardTypeId")) ? Long.parseLong(initParam.get("cardTypeId").toString()) : 0);
+        bo.setLifespan(ObjUtil.isNotEmpty(initParam.get("expiryDate")) ? DateUtil.parse(initParam.get("expiryDate").toString(),
+            DefaultConstants.DATE_TIME_FORMAT) : null);
+        bo.setFactoryId(ObjUtil.isNotEmpty(initParam.get("factoryFixId")) ? Long.parseLong(initParam.get("factoryFixId").toString()) : 0);
+        if (ObjUtil.isNotEmpty(initParam.get("mainDeputyType"))) {
+            bo.setMainCard(ObjectUtil.equals(initParam.get("mainDeputyType"), "1") ? "Y" : "N");
+        } else {
+            bo.setMainCard("Y");
+        }
+        bo.setCardNo(ObjectUtil.isNotEmpty(initParam.get("cardNo")) ? Long.parseLong(initParam.get("cardNo").toString()) : 0);
+        // 默认为发新卡
+        String temp = initParam.get("cardOperate").toString();
+        if(ObjUtil.isNotEmpty(temp)){
+            bo.setOperateType(CardOperateEnum.valueOf(temp));
+        } else {
+            bo.setOperateType(CardOperateEnum.ISSUE);
+        }
+        bo.setStationNumb(ObjUtil.isNotEmpty(initParam.get("workStationNumb")) ? Long.parseLong(initParam.get("workStationNumb").toString()) : 0);
+        bo.setTenantId(ObjUtil.isNotEmpty(initParam.get("tenantId")) ? initParam.get("tenantId").toString() : DefaultConstants.TENANT_ID);
+        bo.setOldCardNo(ObjUtil.isNotEmpty(initParam.get("oldCardNo")) ? Long.parseLong(initParam.get("oldCardNo").toString()) : 0);
+        bo.setOldFactoryId(ObjUtil.isNotEmpty(initParam.get("oldFactoryFixId")) ? Long.parseLong(initParam.get("oldFactoryFixId").toString()) : 0);
+        bo.setOldCardId(ObjUtil.isNotEmpty(initParam.get("oldCardId")) ? Long.parseLong(initParam.get("oldCardId").toString()) : 0);
+        return bo;
+    }
 }

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

@@ -30,6 +30,7 @@ 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);
             default -> log.info("未知事件");
         }
     }