Quellcode durchsuchen

feature: 管理后台
1.自助机充值后更新本地余额

luoyb vor 1 Jahr
Ursprung
Commit
a2cc5cb3ea

+ 10 - 0
ruoyi-common/ruoyi-common-message/src/main/java/org/dromara/common/message/kafka/constant/EventTypeConstants.java

@@ -33,6 +33,16 @@ public interface EventTypeConstants {
      * 卡片数据
      */
     String CARD = "11000002";
+
+    /**
+     * 卡片数据
+     */
+    String BAG = "11000003";
+
+    /**
+     * 充值
+     */
+    String RECHARGE = "11000004";
     //endregion
 
     /**

+ 22 - 13
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/ThirdPayBusiness.java

@@ -11,6 +11,7 @@ import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.backstage.config.ThirdPayConfig;
+import org.dromara.backstage.mq.PushKafkaData;
 import org.dromara.backstage.payment.domain.bo.PayOrderBo;
 import org.dromara.backstage.payment.domain.bo.PurseInOutBo;
 import org.dromara.backstage.payment.domain.vo.PayOrderVo;
@@ -19,6 +20,9 @@ import org.dromara.backstage.payment.service.IPayOrderService;
 import org.dromara.backstage.payment.service.IPtUserAccountService;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.enums.*;
+import org.dromara.common.message.kafka.constant.EventTypeConstants;
+import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
+import org.dromara.common.message.kafka.enums.EventSenderEnum;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -44,9 +48,11 @@ public class ThirdPayBusiness {
     private final PayOrderBusiness payOrderBusiness;
     private final ThirdPayConfig thirdPayConfig;
     private final IPtUserAccountService userAccountService;
+    private final PushKafkaData kafkaNormalProducer;
 
     /**
      * 创建二维码支付的收款码
+     *
      * @param mapParams 二维码参数
      * @return 二维信息
      */
@@ -63,10 +69,11 @@ public class ThirdPayBusiness {
 
     /**
      * 创建直接支付
+     *
      * @param mapParams 直接支付订单参数
      * @return 支付结果
      */
-    public R<String> createDirectPayment(Map<String, String> mapParams){
+    public R<String> createDirectPayment(Map<String, String> mapParams) {
         R<PayOrderVo> result = createThirdPayOrder(mapParams);
         if (R.isError(result)) {
             return R.fail(result.getMsg());
@@ -79,12 +86,13 @@ public class ThirdPayBusiness {
 
     /**
      * 创建第三方充值支付订单
+     *
      * @param mapParams 订单参数
      * @return 订单信息
      */
     public R<PayOrderVo> createThirdPayOrder(Map<String, String> mapParams) {
         Long userId = Long.valueOf(mapParams.get("userId"));
-        BigDecimal dealValue =  new BigDecimal(mapParams.get("dealValue"));
+        BigDecimal dealValue = new BigDecimal(mapParams.get("dealValue"));
         R<PayOrderBo> result = createPayOrderBo(userId, dealValue);
 
         if (R.isError(result)) {
@@ -103,7 +111,8 @@ public class ThirdPayBusiness {
 
     /**
      * 组装第三方充值支付订单业务对象
-     * @param userId 人员Id
+     *
+     * @param userId    人员Id
      * @param dealValue 充值金额
      * @return 订单业务对象
      */
@@ -162,16 +171,14 @@ public class ThirdPayBusiness {
             return R.fail("订单入账失败");
         }
         // 3.更新订单的入账状态
-        if (R.isSuccess(postResult)) {
-            // 更新支付订单表的入账状态
-            PayOrderBo updateBo = new PayOrderBo();
-            updateBo.setOrderId(postBo.getOrderId());
-            updateBo.setOriginalId(postResult.getData().getOriginalId());
-            updateBo.setCreditStatus(CreditStatusEnum.SUCCESS.code().toString());
+        PayOrderBo updateBo = new PayOrderBo();
+        updateBo.setOrderId(postBo.getOrderId());
+        updateBo.setOriginalId(postResult.getData().getOriginalId());
+        updateBo.setCreditStatus(CreditStatusEnum.SUCCESS.code().toString());
+        //充值信息发送kafka
+        kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.RECHARGE, EventSenderEnum.BACKSTAGE.code(), postResult.getData());
 
-            return setOrderPostResult(updateBo);
-        }
-        return R.ok();
+        return setOrderPostResult(updateBo);
     }
 
     /**
@@ -245,6 +252,7 @@ public class ThirdPayBusiness {
 
     /**
      * 根据一卡通订单号查询充值订单支付结果
+     *
      * @param orderSn 订单号
      * @return 查询结果
      */
@@ -261,6 +269,7 @@ public class ThirdPayBusiness {
 
     /**
      * 生成微信的二维码
+     *
      * @param vo 订单信息
      * @return 二维码
      */
@@ -287,7 +296,7 @@ public class ThirdPayBusiness {
         }
     }
 
-    private R<String> requestForPayment(PayOrderVo vo, Map<String, String> mapParams){
+    private R<String> requestForPayment(PayOrderVo vo, Map<String, String> mapParams) {
         String sendUrl = thirdPayConfig.getPayApi() + "toPay";
         vo.setBackUrl(thirdPayConfig.getRechargeBackUrl() + vo.getOrderId());
         HttpRequest req = HttpUtil.createPost(sendUrl);

+ 4 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtBagServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import org.apache.poi.ss.formula.functions.T;
+import org.dromara.backstage.mq.PushKafkaData;
 import org.dromara.backstage.payment.domain.PtBag;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.vo.PtBagVo;
@@ -19,6 +20,9 @@ import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.encrypt.utils.YcEncryptUtil;
+import org.dromara.common.message.kafka.constant.EventTypeConstants;
+import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
+import org.dromara.common.message.kafka.enums.EventSenderEnum;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.springframework.stereotype.Service;
@@ -35,9 +39,7 @@ import java.util.*;
 @RequiredArgsConstructor
 @Service
 public class PtBagServiceImpl implements IPtBagService {
-
     private final PtBagMapper baseMapper;
-
     /**
      * 查询账户钱包
      *

+ 9 - 0
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/local/BackStageEventStrategyImpl.java

@@ -5,9 +5,11 @@ 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.RemoteCardService;
 import org.dromara.backstage.api.RemoteUserAccountService;
 import org.dromara.backstage.api.domain.bo.RemoteCardBo;
+import org.dromara.backstage.api.domain.bo.RemotePurseInOutBo;
 import org.dromara.backstage.api.domain.bo.RemoteUserAccountBo;
 import org.dromara.backstage.api.domain.vo.RemoteUserAccountVo;
 import org.dromara.common.message.kafka.constant.EventSenderConstants;
@@ -31,6 +33,8 @@ public class BackStageEventStrategyImpl implements IYktEventStrategy {
     private final RemoteUserAccountService remoteAccountService;
     @DubboReference
     private final RemoteCardService remoteCardService;
+    @DubboReference
+    private final RemoteBagService remoteBagService;
 
     @Override
     public void doMsgHandle(String eventType, Object msg) throws Exception {
@@ -50,6 +54,11 @@ public class BackStageEventStrategyImpl implements IYktEventStrategy {
                 log.info("[处理云端->本地卡片同步请求]-[卡片信息:{}]", JSONUtil.toJsonStr(remoteBo));
                 remoteCardService.saveOrUpdate(remoteBo);
             }
+            case EventTypeConstants.RECHARGE -> {
+                RemotePurseInOutBo remoteBo = JSONUtil.toBean(JSONUtil.parseObj(msg), RemotePurseInOutBo.class);
+                log.info("[处理云端->本地充值请求]-[充值信息:{}]", JSONUtil.toJsonStr(remoteBo));
+                remoteBagService.recharge(remoteBo);
+            }
         }
     }
 }