Răsfoiți Sursa

fix: 消费服务
1.消费明细与原始消费记录Id生成规则调整,参数全部改为int

luoyb 10 luni în urmă
părinte
comite
78dd56544c

+ 4 - 3
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/RecordIdUtils.java

@@ -32,7 +32,7 @@ public class RecordIdUtils {
      * @param key4 钱包代码
      * @return java.lang.String
      */
-    public static String getRecordId(Date date, short key1, int key2, int key3, int key4){
+    public static String getRecordId(Date date, int key1, int key2, int key3, int key4){
         StringBuilder recordId = new StringBuilder();
 
         // 10位时间
@@ -41,8 +41,8 @@ public class RecordIdUtils {
         recordId.append(Long.toHexString(time));
 
         // 4位 消费:设备机号   资金收支:收支类型
-        int i = DigitUtils.shortToUnsigned(key1);
-        StringBuilder str1 = new StringBuilder(Integer.toHexString(i));
+        long i = DigitUtils.intToUnsigned(key1);
+        StringBuilder str1 = new StringBuilder(Long.toHexString(i));
         while (str1.length() < 4) {
             str1.insert(0, "0");
         }
@@ -55,6 +55,7 @@ public class RecordIdUtils {
         }
         recordId.append(str2);
         //8位 消费:卡片流水号  资金收支:充值金额*100去掉小数点
+
         long l2 = DigitUtils.intToUnsigned(key3);
         StringBuilder str3 = new StringBuilder(Long.toHexString(l2));
         while (str3.length() < 8) {

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

@@ -108,8 +108,8 @@ public class ConsumeBusiness {
      * @return 生成的记录Id
      */
     @NotNull
-    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);
+    private String getRecordKeyId(Integer termNo, Long termRecordId, Long userNo, Integer bagCode) {
+        return RecordIdUtils.getRecordId(new Date(), termNo, termRecordId.shortValue(), userNo.intValue(), bagCode);
     }
 
     public PtUserAccountVo getPtUserAccountVo(ConsumptionBo recordBo) {

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

@@ -306,7 +306,7 @@ public class ErrFillBusiness {
      */
     @NotNull
     private 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()));
+        return RecordIdUtils.getRecordId(new Date(), bo.getTermNo().intValue(), 0, accountVo.getUserNo().intValue(), Integer.parseInt(bagVo.getBagCode()));
     }
 
     private void updateCacheBalanceByUserId(Long id, BigDecimal dealMoney) {

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

@@ -445,6 +445,6 @@ public class PayBaseBusiness {
             key3 = bo.getReceiptMoney().negate().multiply(a).intValue();
         }
         return RecordIdUtils.getRecordId(new Date(), Short.parseShort(bo.getCreditType()),
-                                         Integer.parseInt(accountVo.getUserNo().toString()), key3, Integer.parseInt(bagVo.getBagCode()));
+                                         accountVo.getUserNo().intValue(), key3, Integer.parseInt(bagVo.getBagCode()));
     }
 }

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

@@ -102,8 +102,8 @@ public class BaseBusiness {
                                             XfConsumeDetailOriginalVo originalVo) {
         String originalId = consumeBo.getOriginalId();
         if (ObjectUtil.isEmpty(originalId)) {
-            originalId = RecordIdUtils.getRecordId(consumeBo.getConsumeDate(), consumeBo.getTermNo().shortValue(),
-                consumeBo.getTermRecordId().shortValue(),
+            originalId = RecordIdUtils.getRecordId(consumeBo.getConsumeDate(), consumeBo.getTermNo().intValue(),
+                consumeBo.getTermRecordId().intValue(),
                 accountVo.getUserNo().intValue(), 0);
         }
 
@@ -320,7 +320,7 @@ public class BaseBusiness {
     private XfConsumeDetailBo createConsumeDetailBo(ConsumptionBo bo, RemoteUserAccountVo userAccountVo,
                                                     RemoteCardVo cardVo, PtBagVo bagVo, XfTermVo termVo,
                                                     RemoteMealTypeVo mealTypeVo, String remark) {
-        String recordId = RecordIdUtils.getRecordId(bo.getConsumeDate(), Short.parseShort(bo.getTermNo().toString()),
+        String recordId = RecordIdUtils.getRecordId(bo.getConsumeDate(), bo.getTermNo().intValue(),
             bo.getTermRecordId().intValue(),
             userAccountVo.getUserNo().intValue(),
             Integer.parseInt(bagVo.getBagCode()));

+ 2 - 3
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/check/ConsumeRequestCheck.java

@@ -173,12 +173,11 @@ public class ConsumeRequestCheck {
      * @return 如果原始消费记录ID重复,返回包含错误信息的响应对象;否则返回成功的响应对象
      */
     private R<ErrorInfo> checkRepeatOriginalId(ConsumptionBo bo) {
-        //Set<String> originalIdSet = RedisUtils.getCacheSet(CacheNames.XF_ORIGINAL_ID);
 
         String originalId = bo.getOriginalId();
         if (ObjectUtil.isEmpty(originalId)) {
-            originalId = RecordIdUtils.getRecordId(bo.getConsumeDate(), bo.getTermNo().shortValue(),
-                bo.getTermRecordId().shortValue(), bo.getUserNo().shortValue(), 0);
+            originalId = RecordIdUtils.getRecordId(bo.getConsumeDate(), bo.getTermNo().intValue(),
+                bo.getTermRecordId().intValue(), bo.getUserNo().intValue(), 0);
         }
         String originalIdCache = RedisUtils.getCacheMapValue(CacheNames.XF_ORIGINAL_ID, originalId);
         if (originalIdCache != null && originalIdCache.equals(originalId)) {

+ 7 - 7
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/check/ConsumeUploadCheck.java

@@ -63,8 +63,8 @@ public class ConsumeUploadCheck {
     public R<ErrorInfo> checkBill(ConsumptionBo bo, RemoteUserAccountVo userAccountVo,
                                   XfTermVo useTermVo, List<PtBagVo> bagVoList, RemoteMealTypeVo mealTypeVo) {
         // 检验之前先检查这条记录是否上传过,如果上传过则返回已上传的错误,如未上传,将记录Id存入缓存
-        String detailId = RecordIdUtils.getRecordId(bo.getConsumeDate(), bo.getTermNo().shortValue(),
-            bo.getTermRecordId().shortValue(), bo.getUserNo().intValue(), 0);
+        String detailId = RecordIdUtils.getRecordId(bo.getConsumeDate(), bo.getTermNo().intValue(),
+            bo.getTermRecordId().intValue(), bo.getUserNo().intValue(), 0);
         //Set<String> detailIdSet = RedisUtils.getCacheSet(CacheNames.XF_DETAIL_ID);
         String detailIdSet = RedisUtils.getCacheMapValue(CacheNames.XF_DETAIL_ID,detailId);
 
@@ -104,9 +104,9 @@ public class ConsumeUploadCheck {
     }
 
     private R<ErrorInfo> checkOriginalRecord(ConsumptionBo bo, RemoteUserAccountVo userAccountVo) {
-        String originalId = RecordIdUtils.getRecordId(bo.getConsumeDate(), bo.getTermNo().shortValue(),
-            bo.getTermRecordId().shortValue(), bo.getUserNo().intValue(), 0);
-        //  补偿性措施:防止消费时间错乱问题(在线模式)
+        String originalId = RecordIdUtils.getRecordId(bo.getConsumeDate(), bo.getTermNo().intValue(),
+            bo.getTermRecordId().intValue(), userAccountVo.getUserNo().intValue(), 0);
+           //  补偿性措施:防止消费时间错乱问题(在线模式)
         int recordType = bo.getRecordStatus().intValue();
         long uniqueRecordId = bo.getRecordId();
         bo.setOriginalId(originalId);
@@ -266,8 +266,8 @@ public class ConsumeUploadCheck {
                 if (bo.getRecordId() == 0) {
                     if (bo.getConsumeDate().getTime() > currentDate.getTime()) {
                         bo.setConsumeDate(currentDate);
-                        originalId = RecordIdUtils.getRecordId(bo.getConsumeDate(), bo.getTermNo().shortValue(),
-                            bo.getTermRecordId().shortValue(), bo.getUserNo().intValue(), 0);
+                        originalId = RecordIdUtils.getRecordId(bo.getConsumeDate(), bo.getTermNo().intValue(),
+                            bo.getTermRecordId().intValue(), bo.getUserNo().intValue(), 0);
                         bo.setOriginalId(originalId);
                     }
                     vo = new XfConsumeDetailOriginalVo();