Przeglądaj źródła

bugfix: 错扣补扣等bug修复

xiari 1 rok temu
rodzic
commit
36733312d7

+ 23 - 2
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/CreditTypeEnum.java

@@ -193,6 +193,22 @@ public enum CreditTypeEnum {
         return null;
     }
 
+    public static CreditTypeEnum fromNameOrCode(String nameOrCode) {
+        for (CreditTypeEnum item : CreditTypeEnum.values()) {
+            if (item.name().equals(nameOrCode)) {
+                return item;
+            }
+        }
+        Integer code = Integer.valueOf(nameOrCode);
+
+        for (CreditTypeEnum item : CreditTypeEnum.values()) {
+            if (item.code().equals(code)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
     @Override
     public String toString() {
         return this.name();
@@ -202,12 +218,17 @@ public enum CreditTypeEnum {
      * 校验重复的code值
      */
     public static void main(String[] args) {
-        CreditTypeEnum[] thisEnums = CreditTypeEnum.values();
+        /*CreditTypeEnum[] thisEnums = CreditTypeEnum.values();
         List<Integer> codeList = new ArrayList<>();
         for (CreditTypeEnum thisEnum : thisEnums) {
             if (!codeList.contains(thisEnum.code)) {
                 codeList.add(thisEnum.code());
             }
-        }
+        }*/
+        CreditTypeEnum term_consume = fromNameOrCode("TERM_CONSUME");
+        System.err.println(term_consume);
+        CreditTypeEnum creditTypeEnum = fromNameOrCode("25000");
+        System.err.println(creditTypeEnum);
+
     }
 }

+ 23 - 2
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/SystemUseTypeEnum.java

@@ -78,16 +78,37 @@ public enum SystemUseTypeEnum {
         return null;
     }
 
+    public static SystemUseTypeEnum fromNameOrCode(String nameOrCode) {
+        for (SystemUseTypeEnum item : SystemUseTypeEnum.values()) {
+            if (item.name().equals(nameOrCode)) {
+                return item;
+            }
+        }
+        Integer code = Integer.valueOf(nameOrCode);
+
+        for (SystemUseTypeEnum item : SystemUseTypeEnum.values()) {
+            if (item.code().equals(code)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
     /***
      * 校验重复的code值
      */
     public static void main(String[] args) {
-        SystemUseTypeEnum[] thisEnums = SystemUseTypeEnum.values();
+        /*SystemUseTypeEnum[] thisEnums = SystemUseTypeEnum.values();
         List<Integer> codeList = new ArrayList<>();
         for (SystemUseTypeEnum thisEnum : thisEnums) {
             if (!codeList.contains(thisEnum.code)) {
                 codeList.add(thisEnum.code());
             }
-        }
+        }*/
+        SystemUseTypeEnum consume = fromNameOrCode("CONSUME");
+        System.err.println(consume);
+        SystemUseTypeEnum consume2 = fromNameOrCode("100");
+        System.err.println(consume2);
+
     }
 }

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

@@ -41,6 +41,7 @@ import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * name: ErrFill
@@ -177,7 +178,13 @@ public class ErrFillBusiness {
         //xfUserTotalBo.setDeptName(accountVo.getDeptName());
         xfUserTotalBo.setCardNo(cardVo.getCardNo());
         xfUserTotalBo.setDateDay(DateUtil.format(new Date(), "yyyy-MM-dd"));
-        xfUserTotalBo.setUseType(Integer.valueOf(bo.getUseType()));
+        // 解决 bo.getUseType() 有时候传递的是枚举类的code,有时候传递的是name
+        SystemUseTypeEnum systemUseTypeEnum = SystemUseTypeEnum.fromNameOrCode(bo.getUseType());
+        Integer userType = null;
+        if(systemUseTypeEnum !=null){
+            userType = systemUseTypeEnum.code();
+        }
+        xfUserTotalBo.setUseType(userType);
         xfUserTotalBo.setConsumeMoney(bo.getOperatorMoney().negate());
 
         return userTotalService.createOrUpdateUserTotal(xfUserTotalBo);

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

@@ -61,7 +61,12 @@ public class YcRecordConvertStrategyImpl implements IRecordConvertStrategy {
             }
             //CreditType
             if(ObjectUtil.isNotEmpty(yc.get("creditType"))){
-                consumptionBo.setCreditType(CreditTypeEnum.fromCode(Integer.parseInt(yc.get("creditType").toString())));
+                String creditType = yc.get("creditType").toString();
+                CreditTypeEnum creditTypeEnum = CreditTypeEnum.fromNameOrCode(creditType);
+                if(ObjectUtil.isEmpty(creditTypeEnum)){
+                    creditTypeEnum = CreditTypeEnum.TERM_CONSUME;
+                }
+                consumptionBo.setCreditType(creditTypeEnum);
             }else{
                 consumptionBo.setCreditType(CreditTypeEnum.TERM_CONSUME);
             }