Quellcode durchsuchen

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

luoyb vor 1 Jahr
Ursprung
Commit
980b4761ad
21 geänderte Dateien mit 111 neuen und 92 gelöschten Zeilen
  1. 3 3
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemotePurseInOutBo.java
  2. 2 2
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/consume/ConsumeBusiness.java
  3. 2 2
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/consume/strategy/Impl/ConsumeStrategyContent.java
  4. 2 2
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/errfill/ErrFillBusiness.java
  5. 9 9
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/PayBaseBusiness.java
  6. 19 18
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/PayOrderBusiness.java
  7. 11 5
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/ThirdPayBusiness.java
  8. 18 10
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/TraineeBusiness.java
  9. 2 2
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/ConsumptionBo.java
  10. 3 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/self/TeacherController.java
  11. 1 22
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/mq/KafkaNormalProducer.java
  12. 4 4
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/controller/PtBagController.java
  13. 4 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/PayOrder.java
  14. 5 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PayOrderBo.java
  15. 3 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PtBagBo.java
  16. 3 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PurseInOutBo.java
  17. 5 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/vo/PayOrderVo.java
  18. 3 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/dubbo/RemoteBagServiceImpl.java
  19. 2 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtBagServiceImpl.java
  20. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java
  21. 5 0
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/TrainUtils.java

+ 3 - 3
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemotePurseInOutBo.java

@@ -51,11 +51,11 @@ public class RemotePurseInOutBo implements Serializable {
     /**
      * 资金收支入账对账户余额的操作类型
      */
-    private BalanceUpdateEnum operationMode;
+    private String operationMode;
     /**
      * 交易类型
      */
-    private CreditTypeEnum creditType;
+    private String creditType;
     /**
      * 资金收支入账对应卡片Id,可能为空
      */
@@ -89,7 +89,7 @@ public class RemotePurseInOutBo implements Serializable {
     /**
      * 系统使用类型
      */
-    private SystemUseTypeEnum useType;
+    private String useType;
 
     /**
      * 原始记录Id

+ 2 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/consume/ConsumeBusiness.java

@@ -75,7 +75,7 @@ public class ConsumeBusiness {
         consumptionBo.setRecordStatus(recordBo.getPosRecordState().longValue());
         Long termNo = recordBo.getTermID() == null ? recordBo.getMathineTermID() : recordBo.getTermID();
         consumptionBo.setTermNo(termNo);
-        consumptionBo.setCreditType(recordBo.getCreditType());
+        consumptionBo.setCreditType(recordBo.getCreditType().code().toString());
         return consumptionBo;
     }
 
@@ -240,7 +240,7 @@ public class ConsumeBusiness {
         bagBo.setBagId(bagVo.getBagId());
         bagBo.setBagCode(bagVo.getBagCode());
         bagBo.setReceiptMoney(bo.getConsumeMoney());
-        bagBo.setOperationMode(BalanceUpdateEnum.CONSUME);
+        bagBo.setOperationMode(BalanceUpdateEnum.CONSUME.code().toString());
         return bagService.updateBalanceByBo(bagBo);
     }
 }

+ 2 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/consume/strategy/Impl/ConsumeStrategyContent.java

@@ -29,9 +29,9 @@ public class ConsumeStrategyContent {
     }
 
     public R<Object> createOrder(ConsumptionBo recordBo){
-        return strategyMap.get(recordBo.getCreditType().name()).creteOrder(recordBo);
+        return strategyMap.get(recordBo.getCreditType()).creteOrder(recordBo);
     }
     public R<Object> postOrder(ConsumptionBo bo){
-        return strategyMap.get(bo.getCreditType().name()).postOrder(bo);
+        return strategyMap.get(bo.getCreditType()).postOrder(bo);
     }
 }

+ 2 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/errfill/ErrFillBusiness.java

@@ -173,7 +173,7 @@ public class ErrFillBusiness {
         //xfUserTotalBo.setDeptName(accountVo.getDeptName());
         xfUserTotalBo.setCardNo(cardVo.getCardNo());
         xfUserTotalBo.setDateDay(DateUtil.format(new Date(), "yyyy-MM-dd"));
-        xfUserTotalBo.setUseType(bo.getUseType().code());
+        xfUserTotalBo.setUseType(Integer.valueOf(bo.getUseType()));
         xfUserTotalBo.setConsumeMoney(bo.getOperatorMoney().negate());
 
         return userTotalService.createOrUpdateUserTotal(xfUserTotalBo);
@@ -223,7 +223,7 @@ public class ErrFillBusiness {
         bagBo.setBagId(bagVo.getBagId());
         bagBo.setBagCode(bo.getBagType());
         bagBo.setReceiptMoney(bo.getOperatorMoney());
-        bagBo.setOperationMode(BalanceUpdateEnum.COMPENSATE);
+        bagBo.setOperationMode(BalanceUpdateEnum.COMPENSATE.code().toString());
         return bagService.updateBalanceByBo(bagBo);
     }
 

+ 9 - 9
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/PayBaseBusiness.java

@@ -88,7 +88,7 @@ public class PayBaseBusiness {
             if (CollectionUtil.isNotEmpty(list)) {
                 if (list.parallelStream().anyMatch(
                     p -> ObjUtil.isNotEmpty(p.getCreditId()) && ObjectUtil.equals(p.getOriginalId(), customerSn))) {
-                    log.info("[{}订单信息验证失败-[该笔支付已入账]-[{}]", bo.getCreditType().message(), JSONUtil.toJsonStr(bo));
+                    log.info("[{}订单信息验证失败-[该笔支付已入账]-[{}]", CreditTypeEnum.getMessage(Integer.parseInt(bo.getCreditType())), JSONUtil.toJsonStr(bo));
                     throw new PaymentsException(MessageFormat.format("该笔支付已入账,支付流水号:{0}", customerSn));
                 }
             }
@@ -175,7 +175,7 @@ public class PayBaseBusiness {
      * @param orderBo 收支订单业务对象
      */
     public void calculateBalance(PtBagVo bagVo, PurseInOutBo orderBo) {
-        if (Objects.requireNonNull(orderBo.getCreditType()) == CreditTypeEnum.COMMISSION_CHARGE) {
+        if (Objects.requireNonNull(orderBo.getCreditType()) == CreditTypeEnum.COMMISSION_CHARGE.code().toString()) {
             // 管理费实际是不扣钱包余额的
             orderBo.setBalance(bagVo.getBalance());
         } else {
@@ -224,7 +224,7 @@ public class PayBaseBusiness {
                 PurseInOutBo commissionBo = new PurseInOutBo();
                 BeanUtil.copyProperties(bo, commissionBo);
                 commissionBo.setReceiptMoney(commission);
-                commissionBo.setCreditType(CreditTypeEnum.COMMISSION_CHARGE);
+                commissionBo.setCreditType(CreditTypeEnum.COMMISSION_CHARGE.code().toString());
                 // 个人收支入账的金额要减去收掉的管理费
                 bo.setReceiptMoney(bo.getReceiptMoney().subtract(commission));
                 return commissionBo;
@@ -251,11 +251,11 @@ public class PayBaseBusiness {
 
         // 设置交易数据
         xfCreditaccountbackBo.setCreditTime(new Date());
-        xfCreditaccountbackBo.setCreditType(bo.getCreditType().code().toString());
+        xfCreditaccountbackBo.setCreditType(bo.getCreditType());
         xfCreditaccountbackBo.setReceiptMoney(bo.getReceiptMoney());
         xfCreditaccountbackBo.setPayStyle(bo.getPayStyle());
         xfCreditaccountbackBo.setCreditStatus(CreditStatusEnum.CREATE.code());
-        xfCreditaccountbackBo.setUseType(bo.getUseType().code());
+        xfCreditaccountbackBo.setUseType(Integer.valueOf(bo.getUseType()));
         xfCreditaccountbackBo.setOperatorId(ObjectUtil.isEmpty(bo.getOperatorId()) ? bo.getUserId() : bo.getOperatorId());
         xfCreditaccountbackBo.setCreateBy(ObjectUtil.isEmpty(bo.getOperatorId()) ? bo.getUserId() : bo.getOperatorId());
         xfCreditaccountbackBo.setUpdateBy(ObjectUtil.isEmpty(bo.getOperatorId()) ? bo.getUserId() : bo.getOperatorId());
@@ -313,10 +313,10 @@ public class PayBaseBusiness {
 
         // 设置交易数据
         xfCreditaccountbo.setCreditTime(DateUtil.date());
-        xfCreditaccountbo.setCreditType(bo.getCreditType().code().toString());
+        xfCreditaccountbo.setCreditType(bo.getCreditType());
         xfCreditaccountbo.setReceiptMoney(bo.getReceiptMoney());
         xfCreditaccountbo.setPayStyle(bo.getPayStyle());
-        xfCreditaccountbo.setUseType(bo.getUseType().code());
+        xfCreditaccountbo.setUseType(Integer.valueOf(bo.getUseType()));
 
         // 设置交易账户信息
         xfCreditaccountbo.setUserId(accountVo.getUserId());
@@ -376,7 +376,7 @@ public class PayBaseBusiness {
         xfUserTotalBo.setDeptName(accountVo.getDeptName());
         xfUserTotalBo.setCardNo(cardVo.getCardNo());
         xfUserTotalBo.setDateDay(DateUtil.format(new Date(), "yyyy-MM-dd"));
-        xfUserTotalBo.setUseType(bo.getUseType().code());
+        xfUserTotalBo.setUseType(Integer.valueOf(bo.getUseType()));
         xfUserTotalBo.setCreditMoney(bo.getReceiptMoney());
 
         XfUserTotalVo vo = userTotalService.createOrUpdateUserTotal(xfUserTotalBo);
@@ -444,7 +444,7 @@ public class PayBaseBusiness {
         } else {
             key3 = bo.getReceiptMoney().negate().multiply(a).intValue();
         }
-        return RecordIdUtils.getRecordId(new Date(), Short.parseShort(bo.getCreditType().code().toString()),
+        return RecordIdUtils.getRecordId(new Date(), Short.parseShort(bo.getCreditType()),
                                          Integer.parseInt(accountVo.getUserNo().toString()), key3, Integer.parseInt(bagVo.getBagCode()));
     }
 }

+ 19 - 18
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/PayOrderBusiness.java

@@ -8,11 +8,11 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.backstage.basics.domain.vo.PtWorkstationVo;
 import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyitemBo;
-import org.dromara.backstage.domain.vo.card.PtCardVo;
 import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
 import org.dromara.backstage.consumption.domain.vo.XfCreditAccountBackVo;
 import org.dromara.backstage.consumption.domain.vo.XfCreditAccountVo;
 import org.dromara.backstage.consumption.domain.vo.XfTermVo;
+import org.dromara.backstage.domain.vo.card.PtCardVo;
 import org.dromara.backstage.payment.domain.bo.PurseInOutBo;
 import org.dromara.backstage.payment.domain.vo.PtBagVo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
@@ -52,7 +52,8 @@ public class PayOrderBusiness {
      * @return 原始订单信息
      */
     public XfCreditAccountBackVo createOrder(PurseInOutBo orderBo) {
-        log.info("[{}订单信息验证-[{}]", orderBo.getCreditType().message(), JSONUtil.toJsonStr(orderBo));
+        log.info("[{}订单信息验证-[{}]", CreditTypeEnum.getMessage(Integer.parseInt(orderBo.getCreditType())),
+            JSONUtil.toJsonStr(orderBo));
         // 校验第三方支付入账情况
         payBaseBusiness.checkOriginalRecord(orderBo);
         // 获取创建订单的辅助信息
@@ -63,11 +64,11 @@ public class PayOrderBusiness {
         PtWorkstationVo workstationVo = payBaseBusiness.checkWorkStation(orderBo);
 
         // 生成原始订单记录
-        log.info("[{}订单验证通过,创建订单]-[{}]", orderBo.getCreditType().message(), JSONUtil.toJsonStr(orderBo));
+        log.info("[{}订单验证通过,创建订单]-[{}]", CreditTypeEnum.getMessage(Integer.parseInt(orderBo.getCreditType())), JSONUtil.toJsonStr(orderBo));
         // 生成原始订单记录前先计算收支后的钱包余额,这里只是记录下收支完成后的钱包应有余额,但还没有实际更新钱包余额
         payBaseBusiness.calculateBalance(userBagVo, orderBo);
         return payBaseBusiness.createOriginalRecord(orderBo, userAccountVo,
-                                                    userCardVo, userBagVo, termVo, workstationVo);
+            userCardVo, userBagVo, termVo, workstationVo);
     }
 
     /**
@@ -88,23 +89,23 @@ public class PayOrderBusiness {
         XfTermVo termVo = payBaseBusiness.checkTerm(orderBo);
         PtWorkstationVo workstationVo = payBaseBusiness.checkWorkStation(orderBo);
         // 生成收支明细表
-        log.info("[{}订单处理收支明细]-[{}]", orderBo.getCreditType().message(), JSONUtil.toJsonStr(orderBo));
+        log.info("[{}订单处理收支明细]-[{}]", CreditTypeEnum.getMessage(Integer.parseInt(orderBo.getCreditType())), JSONUtil.toJsonStr(orderBo));
         XfCreditAccountVo orderDetailVo = payBaseBusiness.keepAccounts(orderBo, userAccountVo, userCardVo, userBagVo, termVo, workstationVo,
-                                                                       orderBo.getOriginalId());
+            orderBo.getOriginalId());
         orderBo.setCreditId(orderDetailVo.getCreditId());
         orderBo.setBalance(userBagVo.getBalance());
         // 如果交易类型不为收管理费,则继续下面的操作以完成订单入库
-        if (!orderBo.getCreditType().equals(CreditTypeEnum.COMMISSION_CHARGE)) {
+        if (!orderBo.getCreditType().equals(CreditTypeEnum.COMMISSION_CHARGE.code().toString())) {
             // 处理个人日统计表
-            log.info("[{}订单处理人日统计表]-[{}]", orderBo.getCreditType().message(), JSONUtil.toJsonStr(orderBo));
+            log.info("[{}订单处理人日统计表]-[{}]", CreditTypeEnum.getMessage(Integer.parseInt(orderBo.getCreditType())), JSONUtil.toJsonStr(orderBo));
             payBaseBusiness.createOrUpdateUserTotal(orderBo, userAccountVo, userCardVo);
 
             // 更新个人钱包余额
-            log.info("[{}订单处理钱包余额]-[{}]", orderBo.getCreditType().message(), JSONUtil.toJsonStr(orderBo));
+            log.info("[{}订单处理钱包余额]-[{}]", CreditTypeEnum.getMessage(Integer.parseInt(orderBo.getCreditType())), JSONUtil.toJsonStr(orderBo));
             PtBagVo afterBagVo = payBaseBusiness.updateBalance(orderBo);
             orderBo.setBalance(afterBagVo.getBalance());
             // 入账成功,更新原始订单的入账状态
-            log.info("[{}订单更新入账状态]-[{}]", orderBo.getCreditType().message(), JSONUtil.toJsonStr(orderBo));
+            log.info("[{}订单更新入账状态]-[{}]", CreditTypeEnum.getMessage(Integer.parseInt(orderBo.getCreditType())), JSONUtil.toJsonStr(orderBo));
             payBaseBusiness.updateOriginalOrderStatus(orderBo, CreditStatusEnum.SUCCESS.code(), afterBagVo.getBalance());
         }
         return orderBo;
@@ -119,12 +120,12 @@ public class PayOrderBusiness {
     @Transactional(rollbackFor = ConsumeException.class)
     public R<PurseInOutBo> createNormalOrder(PurseInOutBo orderBo) {
         // 将收支请求写入原始收支记录表
-        log.info("[准备创建{}订单-[{}]", orderBo.getCreditType().message(), JSONUtil.toJsonStr(orderBo));
+        log.info("[准备创建{}订单-[{}]", CreditTypeEnum.getMessage(Integer.parseInt(orderBo.getCreditType())), JSONUtil.toJsonStr(orderBo));
         XfCreditAccountBackVo OriginalOrder = createOrder(orderBo);
         orderBo.setOriginalId(OriginalOrder.getBackId());
 
         // 原始收支记录成功,收支入账
-        log.info("准备[{}订单入账]-[{}]", orderBo.getCreditType().message(), JSONUtil.toJsonStr(orderBo));
+        log.info("准备[{}订单入账]-[{}]", CreditTypeEnum.getMessage(Integer.parseInt(orderBo.getCreditType())), JSONUtil.toJsonStr(orderBo));
         PurseInOutBo result = postOrder(orderBo);
 
         return R.ok(result);
@@ -169,7 +170,7 @@ public class PayOrderBusiness {
                     errorCount++;
                     mapCount.put("errorCount", errorCount);
                     infoList.add(MessageFormat.format("[补助到账失败]-[补助信息:{0}]-[错误信息:{1}]", JSONUtil.toJsonStr(orderBo),
-                                                      result.getData().toString()));
+                        result.getData().toString()));
                 }
             } catch (Exception e) {
                 infoList.add(MessageFormat.format("[补助到账失败]-[补助信息:{0}]-[错误信息:{1}]", JSONUtil.toJsonStr(orderBo), e.getMessage()));
@@ -199,7 +200,7 @@ public class PayOrderBusiness {
      */
     @Transactional(rollbackFor = ConsumeException.class)
     public R<PurseInOutBo> recharge(PurseInOutBo bo) {
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         PurseInOutBo commissionBo = computeCommission(bo);
         try {
             if (commissionBo != null) {
@@ -232,7 +233,7 @@ public class PayOrderBusiness {
         if (bagVo.getBalance().compareTo(boCopy.getReceiptMoney()) < 0) {
             return R.fail(MessageFormat.format("钱包余额不足,当前余额为:{0}", bagVo.getBalance()), boCopy);
         }
-        boCopy.setUseType(SystemUseTypeEnum.CONSUME);
+        boCopy.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         // 退款是记支出,所以金额设置为负数
         boCopy.setReceiptMoney(boCopy.getReceiptMoney().negate());
         try {
@@ -261,11 +262,11 @@ public class PayOrderBusiness {
         orderBo.setPayStyle(PayStyleEnum.OTHER.code().toString());
         orderBo.setTakeCommission("0");
         orderBo.setReceiptMoney(item.getFillMoney());
-        orderBo.setOperationMode(BalanceUpdateEnum.RECHARGE);
-        orderBo.setCreditType(CreditTypeEnum.SUBSIDY_MACHINE_RECHARGE);
+        orderBo.setOperationMode(BalanceUpdateEnum.RECHARGE.code().toString());
+        orderBo.setCreditType(CreditTypeEnum.SUBSIDY_MACHINE_RECHARGE.code().toString());
         orderBo.setOperatorId(item.getOperatorId());
         orderBo.setOperatorName(item.getOperatorName());
-        orderBo.setUseType(SystemUseTypeEnum.CONSUME);
+        orderBo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
 
         return orderBo;
     }

+ 11 - 5
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/ThirdPayBusiness.java

@@ -93,7 +93,11 @@ public class ThirdPayBusiness {
     public R<PayOrderVo> createThirdPayOrder(Map<String, String> mapParams) {
         Long userId = Long.valueOf(mapParams.get("userId"));
         BigDecimal dealValue = new BigDecimal(mapParams.get("dealValue"));
-        R<PayOrderBo> result = createPayOrderBo(userId, dealValue);
+        int stationId=0;
+        if (ObjectUtil.isNotEmpty(mapParams.get("workStationNumb"))) {
+            stationId = Integer.parseInt(mapParams.get("workStationNumb"));
+        }
+        R<PayOrderBo> result = createPayOrderBo(userId, dealValue, stationId);
 
         if (R.isError(result)) {
             return R.fail(result.getMsg());
@@ -114,15 +118,17 @@ public class ThirdPayBusiness {
      *
      * @param userId    人员Id
      * @param dealValue 充值金额
+     * @param stationId 工作站Id
      * @return 订单业务对象
      */
-    public R<PayOrderBo> createPayOrderBo(Long userId, BigDecimal dealValue) {
+    public R<PayOrderBo> createPayOrderBo(Long userId, BigDecimal dealValue, Integer stationId) {
         PtUserAccountVo userAccountVo = userAccountService.queryById(userId);
         if (ObjectUtil.isEmpty(userAccountVo)) {
             return R.fail(String.format("[无此充值账户信息]-[userId:%s]", userId));
         }
         String callBackUrl = thirdPayConfig.getRechargeBackUrl() + "result/";
         PayOrderBo payOrderBo = new PayOrderBo();
+        payOrderBo.setStationId(stationId.longValue());
         payOrderBo.setCreditTime(DateUtil.date());
         payOrderBo.setCreditType(CreditTypeEnum.WECHAT_RECHARGE.code().toString());
         payOrderBo.setPayStyle(PayStyleEnum.WECHAT.code().toString());
@@ -222,9 +228,9 @@ public class ThirdPayBusiness {
         purseInOutBo.setPayStyle(bo.getPayStyle());
         purseInOutBo.setTakeCommission("0");
         purseInOutBo.setReceiptMoney(bo.getReceiptMoney());
-        purseInOutBo.setOperationMode(BalanceUpdateEnum.RECHARGE);
-        purseInOutBo.setCreditType(CreditTypeEnum.fromCode(Integer.valueOf(bo.getCreditType())));
-        //purseInOutBo.setStationId();
+        purseInOutBo.setOperationMode(BalanceUpdateEnum.RECHARGE.code().toString());
+        purseInOutBo.setCreditType(bo.getCreditType());
+        purseInOutBo.setStationId(bo.getStationId());
         purseInOutBo.setOperatorId(bo.getUserId());
         purseInOutBo.setOperatorName(bo.getRealName());
         purseInOutBo.setCustomerSn(bo.getOrderId().toString());

+ 18 - 10
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/TraineeBusiness.java

@@ -1,6 +1,7 @@
 package org.dromara.backstage.business.self;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.codec.Base64;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
@@ -23,6 +24,7 @@ import org.dromara.backstage.domain.vo.yc.YcCardVo;
 import org.dromara.backstage.domain.vo.yc.YcLockCardVo;
 import org.dromara.backstage.domain.vo.yc.YcTraineeVo;
 import org.dromara.backstage.mq.KafkaNormalProducer;
+import org.dromara.backstage.mq.PushKafkaData;
 import org.dromara.backstage.mq.constant.YktEventConstaints;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
@@ -36,6 +38,8 @@ import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.common.core.enums.CardStatusEnum;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.core.enums.RoomCardTypeEnum;
+import org.dromara.common.message.kafka.constant.EventSenderConstants;
+import org.dromara.common.message.kafka.constant.EventTypeConstants;
 import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
 import org.dromara.common.message.kafka.domain.KafkaHeader;
 import org.dromara.common.message.kafka.domain.KafkaMessage;
@@ -88,7 +92,7 @@ public class TraineeBusiness {
     private final IPtCardService cardService;
     private final IPtBagService bagService;
     private final LockBusiness lockBusiness;
-    private final KafkaNormalProducer kafkaProducer;
+    private final PushKafkaData kafkaProducer;
     private final SelfBusiness selfBusiness;
 
     /**
@@ -147,6 +151,9 @@ public class TraineeBusiness {
         // 学员基本信息
         PtUserAccountBo accountBo = new PtUserAccountBo().setUserId(Long.valueOf(bo.getUserId()));
         YcTraineeVo ycTraineeVo = userAccountService.selectTraineeByBo(accountBo, null);
+        if(ycTraineeVo.getMobilePhone().length()>11){
+            ycTraineeVo.setMobilePhone(Base64.decodeStr(ycTraineeVo.getMobilePhone()));
+        }
         if(ycTraineeVo.getCheckinState()==1){
             return R.fail(new ErrorInfo(ResultCodeEnum.RESOURCE_EXISTED.code(),"","您已经报到过了,请勿重复报到"));
         }
@@ -407,16 +414,17 @@ public class TraineeBusiness {
         traineeCheckIn.setPayDate(bo.getCheckoutDate());
 
 
-        KafkaMessage<TraineeCheckIn> message = new KafkaMessage<>();
-        KafkaHeader header = message.getHeader();
-        header.setTimestamp(System.currentTimeMillis());
-        header.setEventId(YktEventConstaints.CHECKIN_STATE);
-        header.setEventType(YktEventConstaints.CHECKIN_STATE);
-        header.setSender(YktEventConstaints.SENDER);
-        message.setHeader(header);
-        message.setBody(traineeCheckIn);
+        //KafkaMessage<TraineeCheckIn> message = new KafkaMessage<>();
+        //KafkaHeader header = message.getHeader();
+        //header.setTimestamp(System.currentTimeMillis());
+        //header.setEventId(YktEventConstaints.CHECKIN_STATE);
+        //header.setEventType(YktEventConstaints.CHECKIN_STATE);
+        //header.setSender(YktEventConstaints.SENDER);
+        //message.setHeader(header);
+        //message.setBody(traineeCheckIn);
 
-        kafkaProducer.sendKafkaMessage(KafkaTopicConstants.OLD_SYNC_TOPIC,message);
+        //kafkaProducer.sendKafkaMessage(KafkaTopicConstants.OLD_SYNC_TOPIC,message);
+        kafkaProducer.sendKafkaMessage(KafkaTopicConstants.OLD_SYNC_TOPIC, EventTypeConstants.REGISTER_STATUS, EventSenderConstants.YKT, traineeCheckIn);
     }
 
     public YcLockCardVo queryLockCardInfo(Map<String, Object> mapQuery){

+ 2 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/ConsumptionBo.java

@@ -105,7 +105,7 @@ public class ConsumptionBo extends BaseEntity {
     /**
      * 系统使用类型
      */
-    private SystemUseTypeEnum useType;
+    private String useType;
     /**
      * 操作员Id
      */
@@ -118,7 +118,7 @@ public class ConsumptionBo extends BaseEntity {
     /**
      * 交易类型
      */
-    private CreditTypeEnum creditType;
+    private String creditType;
 
     /**
      * 租户编号

+ 3 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/self/TeacherController.java

@@ -117,10 +117,10 @@ public class TeacherController {
         bo.setPayStyle(payStyle.code().toString());
         bo.setTakeCommission("N");
         bo.setReceiptMoney(dealValue);
-        bo.setOperationMode(updateType);
-        bo.setCreditType(creditType);
+        bo.setOperationMode(BalanceUpdateEnum.RECHARGE.code().toString());
+        bo.setCreditType(CreditTypeEnum.RECHARGE.code().toString());
         bo.setStationId((long) workStationNumb);
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         bo.setCustomerSn(orderSn);
 
         R<PurseInOutBo> result = payOrderBusiness.recharge(bo);

+ 1 - 22
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/mq/KafkaNormalProducer.java

@@ -6,7 +6,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.kafka.clients.producer.ProducerRecord;
 import org.dromara.backstage.basics.domain.bo.SendMessageRecordBo;
 import org.dromara.backstage.basics.service.ISendMessageRecordService;
-import org.dromara.common.core.enums.CloudMqEventEnum;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
 import org.dromara.common.message.kafka.domain.KafkaHeader;
@@ -72,27 +71,7 @@ public class KafkaNormalProducer {
         this.sendKafkaMessage(topic, createBy, data, true);
     }
 
-    public void sendKafkaMessage(String topic, KafkaMessage<?> data) {
-        String jsonMessage = JSON.toJSONString(data);
-        String eventId = data.getHeader().getEventId();
-        try {
-            ProducerRecord<String, String> record;
-            record = new ProducerRecord<>(topic, jsonMessage);
-
-            CompletableFuture<SendResult<String, String>> send = kafkaTemplate.send(record);
-            send.whenComplete((result, ex) -> {
-                if (ex != null) {
-                    log.error("[后台管理]-[{}]-[发送到kafka消息系统异常]-[{}]", CloudMqEventEnum.getMessage(eventId), data, ex);
-                } else {
-                    log.info("[后台管理]-[{}]-[发送到kafka消息系统成功]-[{}]", CloudMqEventEnum.getMessage(eventId), data);
-                }
-            });
-        } catch (Exception e) {
-            log.error("[后台管理]-[{}]-[发送到kafka消息系统异常]-[{}]", CloudMqEventEnum.getMessage(eventId), data, e);
-        }
-    }
-
-    //记录入库
+        //记录入库
     public void insertRecord(String result, Long createBy, KafkaMessage<?> data) {
         try {
             KafkaHeader header = data.getHeader();

+ 4 - 4
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/controller/PtBagController.java

@@ -169,7 +169,7 @@ public class PtBagController extends BaseController {
         int succesCount = 0;
         int errorCount = 0;
         BigDecimal doValue = bo.getReceiptMoney();
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         for (Long userId : userIds) {
             bo.setUserId(userId);
             bo.setReceiptMoney(doValue);
@@ -203,7 +203,7 @@ public class PtBagController extends BaseController {
         int succesCount = 0;
         int errorCount = 0;
         BigDecimal doValue = bo.getReceiptMoney();
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         for (Long userId : userIds) {
             bo.setUserId(userId);
             bo.setReceiptMoney(doValue);
@@ -233,7 +233,7 @@ public class PtBagController extends BaseController {
     @SyncDataToLocal(eventType = ptCard_multiSet_EDIT, sender = CARD_CENTER_SENDER)
     @PostMapping("/recover/{userIds}")
     public R<Void> batchRecover(@Validated(EditGroup.class) @RequestBody PtBagBo bo, @PathVariable Long[] userIds) {
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         BigDecimal doValue = bo.getReceiptMoney();
         for (Long userId : userIds) {
             bo.setUserId(userId);
@@ -252,7 +252,7 @@ public class PtBagController extends BaseController {
     @SyncDataToLocal(eventType = ptCard_supply_EDIT, sender = CARD_CENTER_SENDER)
     @PostMapping("/err-fill")
     public R<PtBagVo> errFill(@Validated(EditGroup.class) @RequestBody ConsumptionBo bo) {
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         PtBagVo vo = errFillBusiness.createErrFillRecord(bo);
         String message = MessageFormat.format("错扣补款成功,补款后钱包代码:[{0}]的余额:[{1}元]", vo.getBagCode(), vo.getBalance().setScale(2, RoundingMode.HALF_UP));
         return R.ok(message, vo);

+ 4 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/PayOrder.java

@@ -112,4 +112,8 @@ public class PayOrder extends TenantEntity {
      */
     private String originalId;
 
+    /**
+     * 资金收支入账的工作站编号,可能为空
+     */
+    private Long stationId;
 }

+ 5 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PayOrderBo.java

@@ -125,4 +125,9 @@ public class PayOrderBo extends BaseEntity {
      * 第三方支付请求头
      */
     private String userAgent;
+
+    /**
+     * 资金收支入账的工作站编号,可能为空
+     */
+    private Long stationId;
 }

+ 3 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PtBagBo.java

@@ -97,11 +97,11 @@ public class PtBagBo extends BaseEntity {
     /**
      * 卡余的操作类型
      */
-   private BalanceUpdateEnum operationMode;
+   private String operationMode;
     /**
      * 交易类型
      */
-   private CreditTypeEnum creditType;
+   private String creditType;
     /**
      * 卡片Id
      */
@@ -129,7 +129,7 @@ public class PtBagBo extends BaseEntity {
     /**
      * 系统使用类型
      */
-    private SystemUseTypeEnum useType;
+    private String useType;
 
     /**
      * 卡片类型Id

+ 3 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PurseInOutBo.java

@@ -61,11 +61,11 @@ public class PurseInOutBo implements Serializable {
     /**
      * 资金收支入账对账户余额的操作类型
      */
-    private BalanceUpdateEnum operationMode;
+    private String operationMode;
     /**
      * 交易类型
      */
-    private CreditTypeEnum creditType;
+    private String creditType;
     /**
      * 资金收支入账对应卡片Id,可能为空
      */
@@ -99,7 +99,7 @@ public class PurseInOutBo implements Serializable {
     /**
      * 系统使用类型
      */
-    private SystemUseTypeEnum useType;
+    private String useType;
 
     /**
      * 原始记录Id

+ 5 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/vo/PayOrderVo.java

@@ -142,4 +142,9 @@ public class PayOrderVo implements Serializable {
      * 订单入账流水号,对应 t_xf_consumeDetailOriginal 表中的original_id
      */
     private String originalId;
+
+    /**
+     * 资金收支入账的工作站编号,可能为空
+     */
+    private Long stationId;
 }

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

@@ -67,7 +67,7 @@ public class RemoteBagServiceImpl implements RemoteBagService {
     public Boolean batchRecharge(RemotePurseInOutBo bo, Long[] userIds) {
         StringBuilder errIds = new StringBuilder();
         boolean flag = true;
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         for(Long userId : userIds) {
             bo.setUserId(userId);
             if(R.isError(payOrderBusiness.recharge(BeanUtil.copyProperties(bo, PurseInOutBo.class)))){
@@ -85,7 +85,7 @@ public class RemoteBagServiceImpl implements RemoteBagService {
     public Boolean batchRefund(RemotePurseInOutBo bo, Long[] userIds) {
         StringBuilder errIds = new StringBuilder();
         boolean flag = true;
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         for(Long userId : userIds) {
             bo.setUserId(userId);
             if(R.isError(payOrderBusiness.refund(BeanUtil.copyProperties(bo, PurseInOutBo.class)))){
@@ -103,7 +103,7 @@ public class RemoteBagServiceImpl implements RemoteBagService {
     public Boolean batchSetBalance(RemotePurseInOutBo bo, Long[] userIds) {
         StringBuilder errIds = new StringBuilder();
         boolean flag = true;
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         for(Long userId : userIds) {
             bo.setUserId(userId);
             if(null == bagService.updateBalanceByBo(BeanUtil.copyProperties(bo, PtBagBo.class))){

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

@@ -15,6 +15,7 @@ import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.vo.PtBagVo;
 import org.dromara.backstage.payment.mapper.PtBagMapper;
 import org.dromara.backstage.payment.service.IPtBagService;
+import org.dromara.common.core.enums.BalanceUpdateEnum;
 import org.dromara.common.core.exception.consume.BagException;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.SpringUtils;
@@ -232,7 +233,7 @@ public class PtBagServiceImpl implements IPtBagService {
         //校验入库数据
         PtBag entity = verification(bo);
         //根据不同的操作组装入库数据
-        switch (bo.getOperationMode()) {
+        switch (BalanceUpdateEnum.fromCode(Integer.parseInt(bo.getOperationMode()))) {
             case REFUND:
                 refundBag(entity, bo);
                 break;

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java

@@ -184,4 +184,9 @@ public class SysUserVo implements Serializable {
      * 卡流水号
      */
     private Long cardNo;
+
+    /**
+     * 第三方统一标识Id
+     */
+    private String otherId;
 }

+ 5 - 0
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/TrainUtils.java

@@ -50,6 +50,11 @@ public class TrainUtils {
         dept.setPayEnd(DateUtil.parse(data.get("byTime").toString(), DefaultConstants.DATE_TIME_FORMAT));
         dept.setChooseRoom("0");
         dept.setCanEat("1");
+        if (ObjectUtil.isEmpty(data.get("studentNum"))) {
+            dept.setPlanCount(100);
+        } else {
+            dept.setPlanCount(Integer.valueOf(data.get("studentNum").toString()));
+        }
         dept.setPlanCount(Integer.valueOf(data.getOrDefault("studentNum", "0").toString()));
         dept.setPayCheck(ObjectUtil.isEmpty(data.get("noPayAllow")) ? "0" : data.get("noPayAllow").toString());
         dept.setOperatorId(DefaultConstants.KAFKA_SYNC_ADMIN);