浏览代码

fix: 消费服务
1.消费机请求消费时的消费时间改为当前时间,以防消费机时钟错误(仅支持在线消费)
2.所有和消费相关的系统使用类型字段和交易类型字段不再使用枚举,改为整型

luoyb 1 年之前
父节点
当前提交
707d1e59f8
共有 24 个文件被更改,包括 121 次插入156 次删除
  1. 1 5
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemoteConsumptionBo.java
  2. 2 5
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemotePurseInOutBo.java
  3. 2 4
      ruoyi-api/ruoyi-api-consume/src/main/java/org/dromara/consume/api/domain/bo/RemoteConsumeBo.java
  4. 1 2
      ruoyi-api/ruoyi-api-sync/src/main/java/org/dromara/sync/api/domain/bo/RemoteConsumeBo.java
  5. 1 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/CreditTypeEnum.java
  6. 0 3
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/SystemUseTypeEnum.java
  7. 4 4
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/consume/ConsumeBusiness.java
  8. 8 19
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/errfill/ErrFillBusiness.java
  9. 3 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/PayOrderBusiness.java
  10. 0 4
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/ConsumptionBo.java
  11. 10 13
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/self/TeacherController.java
  12. 6 6
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/controller/PtBagController.java
  13. 0 3
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PtBagBo.java
  14. 0 4
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PurseInOutBo.java
  15. 5 5
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/dubbo/RemoteBagServiceImpl.java
  16. 0 2
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/yktOperation/SyncRemotePtCardCenterService.java
  17. 2 5
      ruoyi-server/ruoyi-server-common/src/main/java/org/dromara/server/common/domain/consume/bo/ConsumptionBo.java
  18. 33 12
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/BaseBusiness.java
  19. 11 13
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/ConsumeBusiness.java
  20. 5 5
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/TermBusiness.java
  21. 17 22
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/controller/v1/ConsumeController.java
  22. 2 7
      ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/convert/strategy/impl/YcRecordConvertStrategyImpl.java
  23. 1 1
      ruoyi-server/ruoyi-server-consume/src/main/resources/mapper/consume/ConsumeDetailOriginalMapper.xml
  24. 7 9
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/ConsumeEventStrategyImpl.java

+ 1 - 5
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/bo/RemoteConsumptionBo.java

@@ -1,12 +1,8 @@
 package org.dromara.backstage.api.domain.bo;
 
-import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.enums.SystemUseTypeEnum;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -103,7 +99,7 @@ public class RemoteConsumptionBo implements Serializable {
     /**
      * 系统使用类型
      */
-    private SystemUseTypeEnum useType;
+    private String useType;
     /**
      * 操作员Id
      */

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

@@ -2,9 +2,6 @@ package org.dromara.backstage.api.domain.bo;
 
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.dromara.common.core.enums.BalanceUpdateEnum;
-import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.enums.SystemUseTypeEnum;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -55,7 +52,7 @@ public class RemotePurseInOutBo implements Serializable {
     /**
      * 交易类型
      */
-    private String creditType;
+    private Integer creditType;
     /**
      * 资金收支入账对应卡片Id,可能为空
      */
@@ -89,7 +86,7 @@ public class RemotePurseInOutBo implements Serializable {
     /**
      * 系统使用类型
      */
-    private String useType;
+    private Integer useType;
 
     /**
      * 原始记录Id

+ 2 - 4
ruoyi-api/ruoyi-api-consume/src/main/java/org/dromara/consume/api/domain/bo/RemoteConsumeBo.java

@@ -1,8 +1,6 @@
 package org.dromara.consume.api.domain.bo;
 
 import lombok.Data;
-import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.enums.SystemUseTypeEnum;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -108,7 +106,7 @@ public class RemoteConsumeBo implements Serializable {
     /**
      * 系统使用类型
      */
-    private SystemUseTypeEnum useType;
+    private Integer useType;
     /**
      * 操作员Id
      */
@@ -121,7 +119,7 @@ public class RemoteConsumeBo implements Serializable {
     /**
      * 交易类型
      */
-    private CreditTypeEnum creditType;
+    private Integer creditType;
 
     /**
      * 租户编号

+ 1 - 2
ruoyi-api/ruoyi-api-sync/src/main/java/org/dromara/sync/api/domain/bo/RemoteConsumeBo.java

@@ -2,7 +2,6 @@ package org.dromara.consume.api.domain.bo;
 
 import lombok.Data;
 import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.enums.SystemUseTypeEnum;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -108,7 +107,7 @@ public class RemoteConsumeBo implements Serializable {
     /**
      * 系统使用类型
      */
-    private SystemUseTypeEnum useType;
+    private String useType;
     /**
      * 操作员Id
      */

+ 1 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/CreditTypeEnum.java

@@ -184,6 +184,7 @@ public enum CreditTypeEnum {
         }
         return null;
     }
+
     public static CreditTypeEnum fromMessage(String message) {
         for (CreditTypeEnum item : CreditTypeEnum.values()) {
             if (item.message().equals(message)) {

+ 0 - 3
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/SystemUseTypeEnum.java

@@ -1,8 +1,5 @@
 package org.dromara.common.core.enums;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * name: SystemUseTypeEnum
  * package: org.dromara.common.core.enums

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

@@ -80,7 +80,7 @@ public class ConsumeBusiness {
     }
 
     public XfConsumeDetailOriginalVo createConsumeOriginalRecord(ConsumptionBo consumeBo, PtUserAccountVo accountVo) {
-        String originalId = getRecordKeyId(consumeBo.getTermNo().intValue(), consumeBo.getTermRecordId(), accountVo.getUserNo(), 0);
+        java.lang.String originalId = getRecordKeyId(consumeBo.getTermNo().intValue(), consumeBo.getTermRecordId(), accountVo.getUserNo(), 0);
 
         XfConsumeDetailOriginalBo originalBo = new XfConsumeDetailOriginalBo();
         BeanUtil.copyProperties(consumeBo, originalBo);
@@ -108,7 +108,7 @@ public class ConsumeBusiness {
      * @return 生成的记录Id
      */
     @NotNull
-    private String getRecordKeyId(Integer termNo, Long termRecordId, Long userNo, Integer bagCode) {
+    private java.lang.String getRecordKeyId(Integer termNo, Long termRecordId, Long userNo, Integer bagCode) {
         return RecordIdUtils.getRecordId(new Date(), termNo.shortValue(), termRecordId.shortValue(), userNo.intValue(), bagCode);
     }
 
@@ -155,8 +155,8 @@ public class ConsumeBusiness {
         return beforeValue.subtract(recordBo.getConsumeMoney());
     }
 
-    public XfConsumeDetailVo createConsumeRecord(ConsumptionBo bo, PtUserAccountVo userAccountVo, PtCardVo cardVo, PtBagVo bagVo, XfTermVo termVo, PtMealTypeVo mealTypeVo, String remark) {
-        String recordId = getRecordKeyId(termVo.getTermNo().intValue(), bo.getTermNo(), userAccountVo.getUserNo(), Integer.valueOf(bagVo.getBagCode()));
+    public XfConsumeDetailVo createConsumeRecord(ConsumptionBo bo, PtUserAccountVo userAccountVo, PtCardVo cardVo, PtBagVo bagVo, XfTermVo termVo, PtMealTypeVo mealTypeVo, java.lang.String remark) {
+        java.lang.String recordId = getRecordKeyId(termVo.getTermNo().intValue(), bo.getTermNo(), userAccountVo.getUserNo(), Integer.valueOf(bagVo.getBagCode()));
         XfConsumeDetailBo consumeDetailBo = new XfConsumeDetailBo();
         BeanUtil.copyProperties(bo, consumeDetailBo);
         consumeDetailBo.setConsumeId(recordId);

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

@@ -41,7 +41,6 @@ import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Optional;
 
 /**
  * name: ErrFill
@@ -68,7 +67,7 @@ public class ErrFillBusiness {
 
     @Transactional(rollbackFor = ConsumeException.class)
     public PtBagVo createErrFillRecord(ConsumptionBo bo) {
-        String message;
+        java.lang.String message;
         //1.处理入账需要的其它信息
         log.info("[开始错扣补款前的验证]-[{}]", JSONUtil.toJsonStr(bo));
         List<Object> list = getOtherInfo(bo);
@@ -79,7 +78,7 @@ public class ErrFillBusiness {
         PtMealTypeVo mealTypeVo = list.get(4) == null ? new PtMealTypeVo() : (PtMealTypeVo) list.get(4);
 
         log.info("[验证通过,开始写入消费明细数据]-[{}]", JSONUtil.toJsonStr(bo));
-        String remark = MessageFormat.format("[错扣补款]-[{0}]", JSONUtil.toJsonStr(bo));
+        java.lang.String remark = MessageFormat.format("[错扣补款]-[{0}]", JSONUtil.toJsonStr(bo));
         XfConsumeDetailVo consumeDetailVo = createConsumeRecord(bo, userAccountVo, cardVo, bagVo, termVo, mealTypeVo,remark);
         if (consumeDetailVo == null) {
             message = MessageFormat.format("[错扣补款]->[写消费明细表失败]-[{0}]", JSONUtil.toJsonStr(bo));
@@ -124,8 +123,8 @@ public class ErrFillBusiness {
      * @param mealTypeVo 消费餐类视图
      * @return 消费明细视图
      */
-    private XfConsumeDetailVo createConsumeRecord(ConsumptionBo bo, PtUserAccountVo userAccountVo, PtCardVo cardVo, PtBagVo bagVo, XfTermVo termVo, PtMealTypeVo mealTypeVo,String remark) {
-        String recordId = getRecordKeyId(bo, userAccountVo, bagVo);
+    private XfConsumeDetailVo createConsumeRecord(ConsumptionBo bo, PtUserAccountVo userAccountVo, PtCardVo cardVo, PtBagVo bagVo, XfTermVo termVo, PtMealTypeVo mealTypeVo, java.lang.String remark) {
+        java.lang.String recordId = getRecordKeyId(bo, userAccountVo, bagVo);
         XfConsumeDetailBo consumeDetailBo = new XfConsumeDetailBo();
         BeanUtil.copyProperties(bo, consumeDetailBo);
         consumeDetailBo.setConsumeId(recordId);
@@ -172,19 +171,9 @@ public class ErrFillBusiness {
     private XfUserTotalVo createOrUpdateUserTotal(ConsumptionBo bo, PtUserAccountVo accountVo, PtCardVo cardVo) {
         XfUserTotalBo xfUserTotalBo = new XfUserTotalBo();
         BeanUtil.copyProperties(accountVo, xfUserTotalBo);
-        //xfUserTotalBo.setUserId(accountVo.getUserId());
-        //xfUserTotalBo.setUserNumb(accountVo.getUserNumb());
-        //xfUserTotalBo.setRealName(accountVo.getRealName());
-        //xfUserTotalBo.setDeptName(accountVo.getDeptName());
         xfUserTotalBo.setCardNo(cardVo.getCardNo());
         xfUserTotalBo.setDateDay(DateUtil.format(new Date(), "yyyy-MM-dd"));
-        // 解决 bo.getUseType() 有时候传递的是枚举类的code,有时候传递的是name
-        SystemUseTypeEnum systemUseTypeEnum = SystemUseTypeEnum.fromNameOrCode(bo.getUseType());
-        Integer userType = null;
-        if(systemUseTypeEnum !=null){
-            userType = systemUseTypeEnum.code();
-        }
-        xfUserTotalBo.setUseType(userType);
+        xfUserTotalBo.setUseType(Integer.valueOf(bo.getUseType()));
         xfUserTotalBo.setConsumeMoney(bo.getOperatorMoney().negate());
 
         return userTotalService.createOrUpdateUserTotal(xfUserTotalBo);
@@ -214,7 +203,7 @@ public class ErrFillBusiness {
      * @param consumeId 消费明细Id
      * @param balance   卡余
      */
-    private void updateConsumeRecordBalance(String consumeId, BigDecimal balance){
+    private void updateConsumeRecordBalance(java.lang.String consumeId, BigDecimal balance){
         XfConsumeDetailBo consumeDetailBo = new XfConsumeDetailBo();
         consumeDetailBo.setConsumeId(consumeId);
         consumeDetailBo.setCardValue(balance);
@@ -246,7 +235,7 @@ public class ErrFillBusiness {
      */
     private List<Object> getOtherInfo(ConsumptionBo bo) {
         List<Object> list = new ArrayList<>();
-        String message;
+        java.lang.String message;
         //1.人员辅助信息
         PtUserAccountVo userAccountVo = userAccountService.queryById(bo.getUserId());
         if (userAccountVo == null) {
@@ -305,7 +294,7 @@ public class ErrFillBusiness {
      * @return 生成的记录Id
      */
     @NotNull
-    private String getRecordKeyId(ConsumptionBo bo, PtUserAccountVo accountVo, PtBagVo bagVo) {
+    private java.lang.String getRecordKeyId(ConsumptionBo bo, PtUserAccountVo accountVo, PtBagVo bagVo) {
         return RecordIdUtils.getRecordId(new Date(), Short.parseShort(bo.getTermNo().toString()), 0, accountVo.getUserNo().intValue(), Integer.parseInt(bagVo.getBagCode()));
     }
 }

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

@@ -138,8 +138,8 @@ public class PayOrderBusiness {
      */
     @Transactional(rollbackFor = ConsumeException.class)
     public R<Object> createSubsidyOrder() {
-        List<String> infoList = new ArrayList<>();
-        Map<String, Integer> mapCount = new HashMap<>();
+        List<java.lang.String> infoList = new ArrayList<>();
+        Map<java.lang.String, Integer> mapCount = new HashMap<>();
         mapCount.put("successCount", 0);
         mapCount.put("errorCount", 0);
         // 获取需要入账的补助明细
@@ -176,7 +176,7 @@ public class PayOrderBusiness {
                 infoList.add(MessageFormat.format("[补助到账失败]-[补助信息:{0}]-[错误信息:{1}]", JSONUtil.toJsonStr(orderBo), e.getMessage()));
             }
         });
-        String message = MessageFormat.format("补助到账完成,成功[{0}]条,失败[{1}]条", mapCount.get("successCount"), mapCount.get("errorCount"));
+        java.lang.String message = MessageFormat.format("补助到账完成,成功[{0}]条,失败[{1}]条", mapCount.get("successCount"), mapCount.get("errorCount"));
         infoList.forEach(log::error);
         log.info(message);
         return R.ok(message);

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

@@ -1,12 +1,8 @@
 package org.dromara.backstage.consumption.domain.bo;
 
-import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.dromara.common.core.enums.BalanceUpdateEnum;
-import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.enums.SystemUseTypeEnum;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
 import org.dromara.common.mybatis.core.domain.BaseEntity;

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

@@ -46,11 +46,11 @@ public class TeacherController {
      * @return 教职工信息
      */
     @GetMapping("/api/v1/account/mobile/{mobile}")
-    public ReturnResult getUserByMobile(@PathVariable("mobile") String mobile) {
+    public ReturnResult getUserByMobile(@PathVariable("mobile") java.lang.String mobile) {
         if (ObjectUtil.isEmpty(mobile)) {
             return ReturnResult.failure(ResultCodeEnum.PARAM_IS_BLANK, "手机号不能为空");
         }
-        String dePhone = Base64.decodeStr(mobile);
+        java.lang.String dePhone = Base64.decodeStr(mobile);
         PtUserAccountBo bo = new PtUserAccountBo().setPhone(dePhone).setCategory("1,3,4");
         R<AccountInfoVo> result = userAccountBusiness.getAccountInfo(bo);
         if (R.isError(result)) {
@@ -66,11 +66,11 @@ public class TeacherController {
      * @return 教职工信息
      */
     @GetMapping("/api/v1/account/identity/{identity}")
-    public ReturnResult getUserByIdentity(@PathVariable("identity") String identity) {
+    public ReturnResult getUserByIdentity(@PathVariable("identity") java.lang.String identity) {
         if (ObjectUtil.isEmpty(identity)) {
             return ReturnResult.failure(ResultCodeEnum.PARAM_IS_BLANK, "身份证号不能为空");
         }
-        String deIdentity = Base64.decodeStr(identity);
+        java.lang.String deIdentity = Base64.decodeStr(identity);
         PtUserAccountBo bo = new PtUserAccountBo().setIdNumber(deIdentity).setCategory("1,3,4");
         R<AccountInfoVo> result = userAccountBusiness.getAccountInfo(bo);
         if (R.isError(result)) {
@@ -86,8 +86,8 @@ public class TeacherController {
      * @return 二维码
      */
     @PostMapping("/api/v1/wechat/recharge/qrcode")
-    public ReturnResult getWeChatRechargeCode(@RequestBody Map<String, String> mapParams) throws Exception {
-        R<Map<String,String>> result = selfBusiness.getWechatRechargeQrCode(mapParams);
+    public ReturnResult getWeChatRechargeCode(@RequestBody Map<java.lang.String, java.lang.String> mapParams) throws Exception {
+        R<Map<java.lang.String, java.lang.String>> result = selfBusiness.getWechatRechargeQrCode(mapParams);
         if (R.isSuccess(result)) {
             return ReturnResult.success(result.getData());
         }
@@ -103,14 +103,11 @@ public class TeacherController {
      * @return 入账结果
      */
     @GetMapping("/recharge/{userId}/{dealValue}/{workStationNumb}/{orderSn}")
-    public boolean wechatRecharge(@PathVariable("userId") String userId,@PathVariable("dealValue") BigDecimal dealValue
-        , @PathVariable("workStationNumb") int workStationNumb, @PathVariable("orderSn") String orderSn) {
-        // 收支类型
-        CreditTypeEnum creditType = CreditTypeEnum.RECHARGE;
+    public boolean wechatRecharge(@PathVariable("userId") java.lang.String userId, @PathVariable("dealValue") BigDecimal dealValue
+        , @PathVariable("workStationNumb") int workStationNumb, @PathVariable("orderSn") java.lang.String orderSn) {
         // 支付方式
         PayStyleEnum payStyle = PayStyleEnum.WECHAT;
         // 钱包更新类型
-        BalanceUpdateEnum updateType = BalanceUpdateEnum.RECHARGE;
         PurseInOutBo bo = new PurseInOutBo();
         bo.setUserId(Long.valueOf(userId));
         bo.setBagCode("1");
@@ -134,8 +131,8 @@ public class TeacherController {
      * @return 入账结果
      */
     @PostMapping("/api/v1/wechat/recharge/result")
-    public ReturnResult queryWxRechargeResult(@RequestBody Map<String, String> queryMap) {
-        String orderSn = queryMap.get("orderSn");
+    public ReturnResult queryWxRechargeResult(@RequestBody Map<java.lang.String, java.lang.String> queryMap) {
+        java.lang.String orderSn = queryMap.get("orderSn");
         return selfBusiness.getCreditBackByOrderSn(orderSn);
     }
 }

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

@@ -59,8 +59,8 @@ public class PtBagController extends BaseController {
     //根据userId查询账户余额
 //    @SaCheckPermission("payment:ptBag:query")
     @GetMapping("/selectSelfAccountBalance")
-    public R<String> selectAccountBalanceByIds() {
-        String userIds = String.valueOf(LoginHelper.getUserId());
+    public R<java.lang.String> selectAccountBalanceByIds() {
+        java.lang.String userIds = java.lang.String.valueOf(LoginHelper.getUserId());
         return R.ok("", ptBagService.selectAccountBalanceByIds(userIds));
     }
 
@@ -163,9 +163,9 @@ public class PtBagController extends BaseController {
     @RepeatSubmit()
     @SyncDataToLocal(eventType = ptCard_multicharge_EDIT, sender = CARD_CENTER_SENDER)
     @PostMapping("/recharge/{userIds}")
-    public R<String> batchRecharge(@Validated(EditGroup.class) @RequestBody PurseInOutBo bo, @PathVariable Long[] userIds) {
+    public R<java.lang.String> batchRecharge(@Validated(EditGroup.class) @RequestBody PurseInOutBo bo, @PathVariable Long[] userIds) {
         // TODO 2024-10-30 09:49:36 luoyibo 这里最好是提前处理下工作站信息
-        List<String> resultList = new ArrayList<>();
+        List<java.lang.String> resultList = new ArrayList<>();
         int succesCount = 0;
         int errorCount = 0;
         BigDecimal doValue = bo.getReceiptMoney();
@@ -199,7 +199,7 @@ public class PtBagController extends BaseController {
     @SyncDataToLocal(eventType = ptCard_multirefund_EDIT, sender = CARD_CENTER_SENDER)
     @PostMapping("/refund/{userIds}")
     public R<Void> batchRefund(@Validated(EditGroup.class) @RequestBody PurseInOutBo bo, @PathVariable Long[] userIds) {
-        List<String> resultList = new ArrayList<>();
+        List<java.lang.String> resultList = new ArrayList<>();
         int succesCount = 0;
         int errorCount = 0;
         BigDecimal doValue = bo.getReceiptMoney();
@@ -254,7 +254,7 @@ public class PtBagController extends BaseController {
     public R<PtBagVo> errFill(@Validated(EditGroup.class) @RequestBody ConsumptionBo bo) {
         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));
+        java.lang.String message = MessageFormat.format("错扣补款成功,补款后钱包代码:[{0}]的余额:[{1}元]", vo.getBagCode(), vo.getBalance().setScale(2, RoundingMode.HALF_UP));
         return R.ok(message, vo);
     }
 }

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

@@ -6,9 +6,6 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.dromara.backstage.payment.domain.PtBag;
-import org.dromara.common.core.enums.BalanceUpdateEnum;
-import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.enums.SystemUseTypeEnum;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
 import org.dromara.common.mybatis.core.domain.BaseEntity;

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

@@ -1,11 +1,7 @@
 package org.dromara.backstage.payment.domain.bo;
 
 import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
 import lombok.Data;
-import org.dromara.common.core.enums.BalanceUpdateEnum;
-import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.enums.SystemUseTypeEnum;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
 

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

@@ -43,7 +43,7 @@ public class RemoteBagServiceImpl implements RemoteBagService {
     private final IPtCardService ptCardService;
     private final CardBusiness cardBusiness;
     @Override
-    public String selectAccountBalanceByIds(String userIds) {
+    public java.lang.String selectAccountBalanceByIds(java.lang.String userIds) {
         return bagService.selectAccountBalanceByIds(userIds);
     }
 
@@ -64,7 +64,7 @@ public class RemoteBagServiceImpl implements RemoteBagService {
 
     @Override
     public Boolean createErrFillRecord(RemoteConsumptionBo bo) {
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
         return null != errFillBusiness.createErrFillRecord(BeanUtil.copyProperties(bo, ConsumptionBo.class));
     }
 
@@ -72,7 +72,7 @@ public class RemoteBagServiceImpl implements RemoteBagService {
     public Boolean batchRecharge(RemotePurseInOutBo bo, Long[] userIds) {
         StringBuilder errIds = new StringBuilder();
         boolean flag = true;
-        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code());
         for(Long userId : userIds) {
             bo.setUserId(userId);
             if(R.isError(payOrderBusiness.recharge(BeanUtil.copyProperties(bo, PurseInOutBo.class)))){
@@ -90,7 +90,7 @@ public class RemoteBagServiceImpl implements RemoteBagService {
     public Boolean batchRefund(RemotePurseInOutBo bo, Long[] userIds) {
         StringBuilder errIds = new StringBuilder();
         boolean flag = true;
-        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code());
         for(Long userId : userIds) {
             bo.setUserId(userId);
             if(R.isError(payOrderBusiness.refund(BeanUtil.copyProperties(bo, PurseInOutBo.class)))){
@@ -108,7 +108,7 @@ public class RemoteBagServiceImpl implements RemoteBagService {
     public Boolean batchSetBalance(RemotePurseInOutBo bo, Long[] userIds) {
         StringBuilder errIds = new StringBuilder();
         boolean flag = true;
-        bo.setUseType(SystemUseTypeEnum.CONSUME.code().toString());
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code());
         for(Long userId : userIds) {
             bo.setUserId(userId);
             if(null == bagService.updateBalanceByBo(BeanUtil.copyProperties(bo, PtBagBo.class))){

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

@@ -16,9 +16,7 @@ import org.dromara.common.core.config.DefaultConfig;
 import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.enums.CardOperateEnum;
 import org.dromara.common.core.enums.CardStatusEnum;
-import org.dromara.common.core.enums.SystemUseTypeEnum;
 import org.dromara.common.core.exception.ServiceException;
-import org.dromara.common.message.kafka.domain.KafkaMessage;
 import org.springframework.stereotype.Service;
 
 import java.util.Map;

+ 2 - 5
ruoyi-server/ruoyi-server-common/src/main/java/org/dromara/server/common/domain/consume/bo/ConsumptionBo.java

@@ -1,9 +1,6 @@
 package org.dromara.server.common.domain.consume.bo;
 
 import lombok.Data;
-import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.enums.SystemUseTypeEnum;
-
 import java.math.BigDecimal;
 import java.util.Date;
 
@@ -103,7 +100,7 @@ public class ConsumptionBo {
     /**
      * 系统使用类型
      */
-    private SystemUseTypeEnum useType;
+    private Integer useType;
     /**
      * 操作员Id
      */
@@ -116,7 +113,7 @@ public class ConsumptionBo {
     /**
      * 交易类型
      */
-    private CreditTypeEnum creditType;
+    private Integer creditType;
 
     /**
      * 租户编号

+ 33 - 12
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/BaseBusiness.java

@@ -17,6 +17,7 @@ import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.common.core.enums.BalanceUpdateEnum;
+import org.dromara.common.core.enums.CreditTypeEnum;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.core.exception.consume.ConsumeException;
 import org.dromara.common.core.utils.RecordIdUtils;
@@ -135,8 +136,9 @@ public class BaseBusiness {
         // 1.入消费明细表,根据消费金额与扣款方式及扣款钱包的余额,可能会从多个钱包扣钱,则对应的有多笔消费明细记录
         AtomicReference<Boolean> result = new AtomicReference<>();
         List<XfConsumeDetailVo> detailVos = new ArrayList<>();
-        log.info("扣费钱包个数:{}",bagVos.size());
+
         for (PtBagVo bagVo : bagVos) {
+            log.info("钱包代码:{},钱包余额:{},消费金额:{}", bagVo.getBagCode(), bagVo.getBalance(), bo.getConsumeMoney());
             XfConsumeDetailVo vo = createConsumeRecord(bo, userAccountVo, cardVo, bagVo, termVo, mealTypeVo, remark);
             // 多钱包扣费时,只要有一个钱包入消费明细表失败,则都失败
             if (ObjUtil.isEmpty(vo)) {
@@ -186,7 +188,7 @@ public class BaseBusiness {
         xfUserTotalBo.setDeptName(accountVo.getDeptName());
         xfUserTotalBo.setCardNo(cardVo.getCardNo());
         xfUserTotalBo.setDateDay(DateUtil.format(new Date(), DefaultConstants.DATE_FORMAT));
-        xfUserTotalBo.setUseType(bo.getUseType().code());
+        xfUserTotalBo.setUseType(bo.getUseType());
         xfUserTotalBo.setConsumeMoney(bo.getConsumeMoney());
 
         XfUserTotalVo vo = userTotalService.createOrUpdateUserTotal(xfUserTotalBo);
@@ -206,16 +208,19 @@ public class BaseBusiness {
         BeanUtil.copyProperties(termVo, termTotalBo);
         termTotalBo.setDateDay(DateUtil.format(new Date(), "yyyy-MM-dd"));
         termTotalBo.setMealType(Long.valueOf(mealTypeVo.getTypeId()));
-        termTotalBo.setUseType(bo.getUseType().code());
-        switch (bo.getCreditType()) {
-            case TERM_CONSUME:
-                termTotalBo.setMealCount(1L);
-                termTotalBo.setMealAmount(bo.getConsumeMoney());
-                break;
-            case ERROR_FILL:
-                termTotalBo.setErrFillCount(1L);
-                termTotalBo.setErrFillMoney(bo.getOperatorMoney());
-                break;
+        termTotalBo.setUseType(bo.getUseType());
+        CreditTypeEnum creditType = CreditTypeEnum.fromCode(bo.getCreditType());
+        if (creditType != null) {
+            switch (creditType) {
+                case TERM_CONSUME,HAND_CONSUME:
+                    termTotalBo.setMealCount(1L);
+                    termTotalBo.setMealAmount(bo.getConsumeMoney());
+                    break;
+                case ERROR_FILL:
+                    termTotalBo.setErrFillCount(1L);
+                    termTotalBo.setErrFillMoney(bo.getOperatorMoney());
+                    break;
+            }
         }
         XfTermTotalVo vo = termTotalService.createOrUpdateTermTotal(termTotalBo);
         return !ObjUtil.isEmpty(vo);
@@ -335,6 +340,22 @@ public class BaseBusiness {
             remoteRegisterInfoService.queryRegisterInfo();
         }
     }
+
+    /**
+     * 根据消费记录的状态标志获取
+     * @param statusFlag 状态标志
+     *         1,4--消费机消费=25000
+     *         3-消费补扣=25020
+     *         0-错扣补款=25010
+     * @return 根据状态转换的消费类型
+     */
+    public Integer getCreditType(Integer statusFlag){
+        return switch (statusFlag) {
+            case 0 -> CreditTypeEnum.ERROR_FILL.code();
+            case 3 -> CreditTypeEnum.HAND_CONSUME.code();
+            default -> CreditTypeEnum.TERM_CONSUME.code();
+        };
+    }
     /**
      * 将消费信息发送到kafka,教务消费此消息实现就餐打卡
      * @param consumeList 消费记录列表

+ 11 - 13
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/ConsumeBusiness.java

@@ -13,7 +13,6 @@ import org.dromara.common.core.config.AsyncConfig;
 import org.dromara.common.core.constant.ApiErrorTypeConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
-import org.dromara.common.core.enums.CreditTypeEnum;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.core.enums.SystemUseTypeEnum;
 import org.dromara.common.json.utils.JsonUtils;
@@ -55,12 +54,11 @@ public class ConsumeBusiness {
      * @param xfPwd 消费密码
      * @return 请求结果
      */
-    public R<ErrorInfo> createOrder(ConsumptionBo bo, String mac, String xfPwd) {
-        // baseBusiness.sendCloudConsume(bo);
+    public R<ErrorInfo> createOrder(ConsumptionBo bo, java.lang.String mac, java.lang.String xfPwd) {
         //检查下客户的公钥与么钥
         baseBusiness.getRegisterInfo();
 
-        log.info("[请求交易]-[开始参数验证]-[{}]", JSONUtil.toJsonStr(bo));
+        log.warn("[请求交易]-[开始参数验证]-[{}]", JSONUtil.toJsonStr(bo));
         R<ErrorInfo> result = checkBusiness.checkParam(bo);
         if (R.isError(result)) {
             log.error("[请求交易]-[参数验证失败]-[{}]", JSONUtil.toJsonStr(result.getData()));
@@ -74,7 +72,7 @@ public class ConsumeBusiness {
         //    return result;
         //}
 
-        log.info("[请求交易]-[用户信息验证]-[{}]", JSONUtil.toJsonStr(bo));
+        log.warn("[请求交易]-[用户信息验证]-[{}]", JSONUtil.toJsonStr(bo));
         RemoteUserAccountVo userAccountVo = new RemoteUserAccountVo();
         RemoteCardVo userCardVo = new RemoteCardVo();
         result = checkBusiness.checkUser(bo, userAccountVo, userCardVo);
@@ -83,7 +81,7 @@ public class ConsumeBusiness {
             return result;
         }
 
-        log.info("[请求交易]-[设备信息验证]-[{}]", JSONUtil.toJsonStr(bo));
+        log.warn("[请求交易]-[设备信息验证]-[{}]", JSONUtil.toJsonStr(bo));
         XfTermVo termVo = new XfTermVo();
          result = checkBusiness.checkTerm(bo, termVo);
         if (R.isError(result)) {
@@ -91,14 +89,14 @@ public class ConsumeBusiness {
             return result;
         }
 
-        log.info("[请求交易]-[交易流程验证]-[{}]", JSONUtil.toJsonStr(bo));
+        log.warn("[请求交易]-[交易流程验证]-[{}]", JSONUtil.toJsonStr(bo));
         result = checkBusiness.checkConsume(bo, userAccountVo, userCardVo, termVo);
         if (R.isError(result)) {
             log.error("[请求交易]-[交易验证失败]-[{}]", JSONUtil.toJsonStr(result.getData()));
             return result;
         }
 
-        log.info("[请求交易]-[生成原始消费记录]-[{}]", JSONUtil.toJsonStr(bo));
+        log.warn("[请求交易]-[生成原始消费记录]-[{}]", JSONUtil.toJsonStr(bo));
         XfConsumeDetailOriginalVo originalVo = new XfConsumeDetailOriginalVo();
         result = baseBusiness.createOriginalOrder(bo, userAccountVo, originalVo);
         if (R.isError(result)) {
@@ -119,7 +117,7 @@ public class ConsumeBusiness {
      * @param xfPwd 消费密码
      * @return 上传结果
      */
-    public R<ErrorInfo> postOrder(ConsumptionBo bo, String mac, String xfPwd) {
+    public R<ErrorInfo> postOrder(ConsumptionBo bo, java.lang.String mac, java.lang.String xfPwd) {
         log.info("[上传交易]-[开始参数验证]-[{}]", JSONUtil.toJsonStr(bo));
         R<ErrorInfo> result = checkBusiness.checkParam(bo);
         if (R.isError(result)) {
@@ -160,7 +158,7 @@ public class ConsumeBusiness {
      * @param xfPwd 消费密码
      * @return 处理结果
      */
-    public R<ErrorInfo> fullOrder(ConsumptionBo bo, String mac, String xfPwd) {
+    public R<ErrorInfo> fullOrder(ConsumptionBo bo, java.lang.String mac, java.lang.String xfPwd) {
         R<ErrorInfo> result = this.createOrder(bo, mac, xfPwd);
         if(!R.isSuccess(result)) {
             log.error("[请求交易]-[请求交易处理失败]-[{}]", JSONUtil.toJsonStr(result.getData()));
@@ -184,14 +182,14 @@ public class ConsumeBusiness {
         if (CollectionUtil.isEmpty(list)) {
             return R.ok(new ErrorInfo(ResultCodeEnum.DATA_NOT_FOUND.code(), ApiErrorTypeConstants.NOT_FOUND, "没有待入账的原始消费记录"));
         }
-        List<String> doMessage = new ArrayList<>();
+        List<java.lang.String> doMessage = new ArrayList<>();
         //循环写入原始消费记录
         int total = list.size();
         AtomicInteger success = new AtomicInteger();
         AtomicInteger fail = new AtomicInteger();
         list.forEach(p->{
-            p.setUseType(SystemUseTypeEnum.CONSUME);
-            p.setCreditType(CreditTypeEnum.TERM_CONSUME);
+            p.setUseType(SystemUseTypeEnum.CONSUME.code());
+            p.setCreditType(baseBusiness.getCreditType(p.getStatusFlag()));
             try {
                 R<ErrorInfo> result = fullOrder(p, "", "");
                 if (R.isSuccess(result)) {

+ 5 - 5
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/TermBusiness.java

@@ -56,7 +56,7 @@ public class TermBusiness {
     private final TokenManager tokenManager;
     private final DefaultConfig defaultConfig;
 
-    public R<TermToken> getTermToken(Long termNo, String admin, String pwd) {
+    public R<TermToken> getTermToken(Long termNo, java.lang.String admin, java.lang.String pwd) {
         // XfTermVo termVo = termService.queryVoOneByNo(termNo);
         RemoteXfTermVo remoteVo = remoteTermService.queryByNo(termNo, defaultConfig.getTenantId());
         if (ObjectUtil.isEmpty(remoteVo)) {
@@ -68,7 +68,7 @@ public class TermBusiness {
         }
         TermToken termToken = null;
         synchronized (locker) {
-            String strTermNo = String.valueOf(termNo);
+            java.lang.String strTermNo = java.lang.String.valueOf(termNo);
             termToken = tokenManager.getTermToken().get(strTermNo);
             if (ObjectUtil.isEmpty(termToken)) {
                 LocalDateTime ldt = LocalDateTime.of(2000, 1, 1, 0, 0, 0);
@@ -106,7 +106,7 @@ public class TermBusiness {
         return this.getTermInfoByTermNo(termNo, defaultConfig.getTenantId());
     }
 
-    public R<TermInfo> getTermInfoByTermNo(Long termNo, String tenantId) {
+    public R<TermInfo> getTermInfoByTermNo(Long termNo, java.lang.String tenantId) {
         RemoteXfTermVo remoteVo = remoteTermService.queryByNo(termNo, tenantId);
         if (ObjectUtil.isEmpty(remoteVo)) {
             return R.fail(MessageFormat.format("机号为[{0}]的设备不存在", termNo), null);
@@ -117,12 +117,12 @@ public class TermBusiness {
         return R.ok(termInfo);
     }
 
-    public R<Map<String, Object>> checkTermTime(Integer termNo) {
+    public R<Map<java.lang.String, Object>> checkTermTime(Integer termNo) {
         XfTermVo termVo = termService.queryVoOneByNo(Long.valueOf(termNo));
         if (ObjectUtil.isEmpty(termVo)) {
             return R.fail(MessageFormat.format("机号为[{0}]的设备不存在", termNo), null);
         }
-        Map<String, Object> resultMap = new HashMap<>();
+        Map<java.lang.String, Object> resultMap = new HashMap<>();
         if (!lastCheckModify.containsKey(termNo)) {
             lastCheckModify.put(termNo, 0L);
         }

+ 17 - 22
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/controller/v1/ConsumeController.java

@@ -2,6 +2,7 @@ package org.dromara.server.consume.controller.v1;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -25,6 +26,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
 import java.util.Objects;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -62,9 +64,9 @@ public class ConsumeController {
      * @return 请求消费结果
      */
     @PostMapping("/ConsumeOriginal/virtualCard")
-    public Object consumeOriginalVirtualCard(@RequestBody Object record, @RequestParam(name = "mac", required = false) String mac,
-                                             @RequestParam(name = "qrcode") String qrcode,
-                                             @RequestParam(name = "xfPwd", required = false) String xfPwd) {
+    public Object consumeOriginalVirtualCard(@RequestBody Object record, @RequestParam(name = "mac", required = false) java.lang.String mac,
+                                             @RequestParam(name = "qrcode") java.lang.String qrcode,
+                                             @RequestParam(name = "xfPwd", required = false) java.lang.String xfPwd) {
         JSONObject yc = JSONUtil.parseObj(record);
         long userNo = ObjectUtil.isEmpty(yc.get("employeeID")) ? 0L : Long.parseLong(yc.get("employeeID").toString());
         Object redisQrCode = RedisUtils.getCacheMapValue(CacheNames.SCHOOL_CODE, Long.toString(userNo));
@@ -94,8 +96,8 @@ public class ConsumeController {
      * @return 请求消费结果
      */
     @PostMapping("/ConsumeOriginal")
-    public Object consumeOriginal(@RequestBody Object record, @RequestParam(name = "mac", required = false) String mac,
-                                  @RequestParam(name = "xfPwd", required = false) String xfPwd) {
+    public Object consumeOriginal(@RequestBody Object record, @RequestParam(name = "mac", required = false) java.lang.String mac,
+                                  @RequestParam(name = "xfPwd", required = false) java.lang.String xfPwd) {
 
         Object object = doRecordData(record, "requestConsume", mac, xfPwd);
         JSONObject jsonObject = JSONUtil.parseObj(object);
@@ -113,7 +115,7 @@ public class ConsumeController {
      * @return 上传消费记录结果
      */
     @PostMapping("/Consume")
-    public Object uploadRecord(@RequestBody Object record, @RequestParam(name = "mac", required = false) String mac) {
+    public Object uploadRecord(@RequestBody Object record, @RequestParam(name = "mac", required = false) java.lang.String mac) {
         return doRecordData(record, "uploadRecord", mac, "");
     }
 
@@ -126,8 +128,8 @@ public class ConsumeController {
      * @return 处理结果
      */
     @PostMapping("/Consume/all")
-    public Object consumeAll(@RequestBody Object record, @RequestParam(name = "mac", required = false) String mac,
-                             @RequestParam(name = "xfPwd", required = false) String xfPwd) {
+    public Object consumeAll(@RequestBody Object record, @RequestParam(name = "mac", required = false) java.lang.String mac,
+                             @RequestParam(name = "xfPwd", required = false) java.lang.String xfPwd) {
         return doRecordData(record, "fullRecord", "", "");
     }
 
@@ -147,7 +149,7 @@ public class ConsumeController {
      * @return 对账结果
      */
     @PostMapping("/consume/original/reconciliation/{consumeDate}")
-    public R<ErrorInfo> originalReconciliation(@PathVariable("consumeDate") String consumeDate){
+    public R<ErrorInfo> originalReconciliation(@PathVariable("consumeDate") java.lang.String consumeDate){
         return consumeBusiness.originalReconciliation(consumeDate);
     }
     /**
@@ -159,29 +161,24 @@ public class ConsumeController {
      * @param xfPwd  消费密码
      * @return 处理结果
      */
-    private Object doRecordData(Object record, String type, String mac, String xfPwd) {
+    private Object doRecordData(Object record, java.lang.String type, java.lang.String mac, java.lang.String xfPwd) {
         if (ObjectUtil.length(record) == 0) {
             ErrorResult result = ErrorResult.instance(HttpStatus.FORBIDDEN, "处理失败", 1, "PARAM_ERROR", "参数错误",
                                                       "json字符串无法还原为对象,可能原因是格式不正确。");
             return new ResponseEntity<Object>(result, null, HttpStatus.FORBIDDEN);
         }
         ConsumptionBo bo = recordConvertStrategy.convert(record, "YC");
-        ConsumptionBo cloudConsumeBo = BeanUtil.copyProperties(bo, ConsumptionBo.class);
-//        bo.setStatusFlag(4);
-        bo.setUseType(SystemUseTypeEnum.CONSUME);
-//        bo.setCreditType(CreditTypeEnum.TERM_CONSUME);
+        bo.setUseType(SystemUseTypeEnum.CONSUME.code());
 
         R<ErrorInfo> errorInfo;
         if (Objects.equals(type, "requestConsume")) {
-            if (ObjectUtil.equals(bo.getCreditType(), CreditTypeEnum.TERM_CONSUME)) {
+            if (ObjectUtil.equals(bo.getCreditType(), CreditTypeEnum.TERM_CONSUME.code())) {
                 // 如果是消费机请求消费,将消费时间设置为当前时间,以防消费时时钟不对造成实际消费时间不正确
+                String requestTime = DateUtil.format(bo.getConsumeDate(), DefaultConstants.DATE_TIME_FORMAT);
                 bo.setConsumeDate(DateUtil.date());
+                log.info("[请求消费时间:{},调整后消费时间:{}",requestTime, DateUtil.format(bo.getConsumeDate(), DefaultConstants.DATE_TIME_FORMAT));
             }
             errorInfo = consumeBusiness.createOrder(bo, mac, xfPwd);
-            // 是否推送云端消费
-            //if (ObjectUtil.equals(defaultConfig.getLocationFlag(), DefaultConstants.LOCAL_FLAG)) {
-            //    baseBusiness.sendCloudConsume(cloudConsumeBo);
-            //}
         } else if (Objects.equals(type, "uploadRecord")) {
             errorInfo = consumeBusiness.postOrder(bo, mac, xfPwd);
         } else {
@@ -202,9 +199,7 @@ public class ConsumeController {
             //发送消息
             if (ObjectUtil.equals(defaultConfig.getLocationFlag(), DefaultConstants.LOCAL_FLAG)) {
                 ConsumptionBo bo = recordConvertStrategy.convert(record, "YC");
-                scheduledExecutorService.schedule(() -> {
-                    baseBusiness.sendCloudConsume(bo);
-                }, 1, TimeUnit.SECONDS);
+                ThreadUtil.execAsync(() -> baseBusiness.sendCloudConsume(bo));
             }
         }
     }

+ 2 - 7
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/convert/strategy/impl/YcRecordConvertStrategyImpl.java

@@ -61,14 +61,9 @@ public class YcRecordConvertStrategyImpl implements IRecordConvertStrategy {
             }
             //CreditType
             if(ObjectUtil.isNotEmpty(yc.get("creditType"))){
-                String creditType = yc.get("creditType").toString();
-                CreditTypeEnum creditTypeEnum = CreditTypeEnum.fromNameOrCode(creditType);
-                if(ObjectUtil.isEmpty(creditTypeEnum)){
-                    creditTypeEnum = CreditTypeEnum.TERM_CONSUME;
-                }
-                consumptionBo.setCreditType(creditTypeEnum);
+                consumptionBo.setCreditType(Integer.valueOf(yc.getStr("creditType")));
             }else{
-                consumptionBo.setCreditType(CreditTypeEnum.TERM_CONSUME);
+                consumptionBo.setCreditType(CreditTypeEnum.TERM_CONSUME.code());
             }
 
             return consumptionBo;

+ 1 - 1
ruoyi-server/ruoyi-server-consume/src/main/resources/mapper/consume/ConsumeDetailOriginalMapper.xml

@@ -43,7 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectReconciliationData" resultType="org.dromara.server.common.domain.consume.bo.ConsumptionBo">
         SELECT term_no as termNo,user_numb as userNumb,card_no as cardNo,factory_id as factoryId
-             ,consume_date  as consumeDate,consume_money as consumeMoney,term_record_id as termRecordId
+             ,consume_date  as consumeDate,consume_money as consumeMoney,term_record_id as termRecordId,status_flag  as statusFlag
         FROM t_xf_consumedetailoriginal txc
         <where>
             and original_id NOT IN (SELECT original_id FROM t_xf_consumedetail )

+ 7 - 9
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/ConsumeEventStrategyImpl.java

@@ -6,8 +6,6 @@ import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
-import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.enums.SystemUseTypeEnum;
 import org.dromara.common.message.kafka.constant.EventSenderConstants;
 import org.dromara.common.message.kafka.constant.EventTypeConstants;
 import org.dromara.consume.api.RemoteConsumeService;
@@ -35,19 +33,19 @@ public class ConsumeEventStrategyImpl implements IYktEventStrategy {
         if (ObjectUtil.equals(eventType, EventTypeConstants.CONSUME)) {
             // 解决枚举类转换异常的问题
             JSONObject entries = JSONUtil.parseObj(msg);
-            entries.set("creditType", null);
-            entries.set("useType", null);
+            //entries.set("creditType", null);
+            //entries.set("useType", null);
             RemoteConsumeBo recordBo = JSONUtil.toBean(entries, RemoteConsumeBo.class);
-            recordBo.setStatusFlag(4);
-            recordBo.setUseType(SystemUseTypeEnum.CONSUME);
-            recordBo.setCreditType(CreditTypeEnum.TERM_CONSUME);
+            //recordBo.setStatusFlag(4);
+            //recordBo.setUseType(String.CONSUME);
+            //recordBo.setCreditType(CreditTypeEnum.TERM_CONSUME);
             log.info("[处理本地->云端消费请求]-[消费信息:{}]", JSONUtil.toJsonStr(recordBo));
             remoteConsumeService.dealKafkaConsumeData(recordBo);
         }
     }
 
-    public static void main(String[] args) {
-        String msg = "{\n" +
+    public static void main(java.lang.String[] args) {
+        java.lang.String msg = "{\n" +
             "    \"cardNo\": 35193,\n" +
             "    \"consumeDate\": \"2025-02-19 19:32:30\",\n" +
             "    \"consumeMoney\": 0.00,\n" +