diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 9f0155cab..16b6aa942 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -394,10 +394,12 @@ public enum ErrorCodeEnum { TRADE_EXIST(1621006, "部分交易流水号已被使用,请检查!", null), NOT_COMPLETE_TRANS_SHEET(1621007, "存在关联未分账完成的分账单,请完成之后再操作!", null), PENDING_TRANS_AMOUNT(1621008, "分账金额不能大于待分账金额!", null), - TRANSFER_ERROR(1621009, "分账异常!", null), + TRANSFER_ERROR(1621009, "分账异常:{0}", null), TRANSFER_ING(1621010, "分账中,请勿重复分账!", null), WITHDRAW_APPLY_NOT_EXIST(1621011, "提现申请单不存在!", null), WITHDRAW_ING(1621012, "提现中,请勿重复分账!", null), + WALLET_BALANCE_INSUFFICIENT(1621013, "钱包余额不足!", null), + diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/BigDecimalUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/BigDecimalUtils.java new file mode 100644 index 000000000..025edeb7e --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/BigDecimalUtils.java @@ -0,0 +1,240 @@ +package com.cool.store.utils; + +import java.math.BigDecimal; + +/** + * @Auther zx_szh + * @Date 2026/4/16 10:03 + * @Version 1.0 + */ +public class BigDecimalUtils { + + /** + * 比较两个BigDecimal是否相等(忽略精度差异) + * + * @param a 第一个值 + * @param b 第二个值 + * @return 如果相等返回true + */ + public static boolean equals(BigDecimal a, BigDecimal b) { + if (a == b) return true; + if (a == null || b == null) return false; + return a.compareTo(b) == 0; + } + + /** + * 比较两个BigDecimal是否相等(指定精度) + * + * @param a 第一个值 + * @param b 第二个值 + * @param scale 保留小数位数 + * @param roundingMode 舍入模式 + * @return 如果相等返回true + */ + public static boolean equals(BigDecimal a, BigDecimal b, int scale, int roundingMode) { + if (a == b) return true; + if (a == null || b == null) return false; + return a.setScale(scale, roundingMode).compareTo(b.setScale(scale, roundingMode)) == 0; + } + + /** + * 判断a是否大于b + * + * @param a 第一个值 + * @param b 第二个值 + * @return 如果a大于b返回true + */ + public static boolean greaterThan(BigDecimal a, BigDecimal b) { + if (a == null || b == null) return false; + return a.compareTo(b) > 0; + } + + /** + * 判断a是否大于或等于b + * + * @param a 第一个值 + * @param b 第二个值 + * @return 如果a大于或等于b返回true + */ + public static boolean greaterThanOrEqual(BigDecimal a, BigDecimal b) { + if (a == null || b == null) return false; + return a.compareTo(b) >= 0; + } + + /** + * 判断a是否小于b + * + * @param a 第一个值 + * @param b 第二个值 + * @return 如果a小于b返回true + */ + public static boolean lessThan(BigDecimal a, BigDecimal b) { + if (a == null || b == null) return false; + return a.compareTo(b) < 0; + } + + /** + * 判断a是否小于或等于b + * + * @param a 第一个值 + * @param b 第二个值 + * @return 如果a小于或等于b返回true + */ + public static boolean lessThanOrEqual(BigDecimal a, BigDecimal b) { + if (a == null || b == null) return false; + return a.compareTo(b) <= 0; + } + + /** + * 判断value是否在min和max之间(包含边界) + * + * @param value 要判断的值 + * @param min 最小值 + * @param max 最大值 + * @return 如果在范围内返回true + */ + public static boolean between(BigDecimal value, BigDecimal min, BigDecimal max) { + if (value == null || min == null || max == null) return false; + return value.compareTo(min) >= 0 && value.compareTo(max) <= 0; + } + + /** + * 判断value是否在min和max之间(不包含边界) + * + * @param value 要判断的值 + * @param min 最小值 + * @param max 最大值 + * @return 如果在范围内返回true + */ + public static boolean betweenExclusive(BigDecimal value, BigDecimal min, BigDecimal max) { + if (value == null || min == null || max == null) return false; + return value.compareTo(min) > 0 && value.compareTo(max) < 0; + } + + /** + * 判断value是否在min和max之间(左闭右开) + * + * @param value 要判断的值 + * @param min 最小值(包含) + * @param max 最大值(不包含) + * @return 如果在范围内返回true + */ + public static boolean betweenLeftClosedRightOpen(BigDecimal value, BigDecimal min, BigDecimal max) { + if (value == null || min == null || max == null) return false; + return value.compareTo(min) >= 0 && value.compareTo(max) < 0; + } + + /** + * 判断value是否在min和max之间(左开右闭) + * + * @param value 要判断的值 + * @param min 最小值(不包含) + * @param max 最大值(包含) + * @return 如果在范围内返回true + */ + public static boolean betweenLeftOpenRightClosed(BigDecimal value, BigDecimal min, BigDecimal max) { + if (value == null || min == null || max == null) return false; + return value.compareTo(min) > 0 && value.compareTo(max) <= 0; + } + + /** + * 判断value是否大于0 + * + * @param value 要判断的值 + * @return 如果大于0返回true + */ + public static boolean isPositive(BigDecimal value) { + return greaterThan(value, BigDecimal.ZERO); + } + + /** + * 判断value是否大于或等于0 + * + * @param value 要判断的值 + * @return 如果大于或等于0返回true + */ + public static boolean isNonNegative(BigDecimal value) { + return greaterThanOrEqual(value, BigDecimal.ZERO); + } + + /** + * 判断value是否小于0 + * + * @param value 要判断的值 + * @return 如果小于0返回true + */ + public static boolean isNegative(BigDecimal value) { + return lessThan(value, BigDecimal.ZERO); + } + + /** + * 判断value是否小于或等于0 + * + * @param value 要判断的值 + * @return 如果小于或等于0返回true + */ + public static boolean isNonPositive(BigDecimal value) { + return lessThanOrEqual(value, BigDecimal.ZERO); + } + + /** + * 判断value是否等于0 + * + * @param value 要判断的值 + * @return 如果等于0返回true + */ + public static boolean isZero(BigDecimal value) { + return equals(value, BigDecimal.ZERO); + } + + /** + * 判断value是否非零 + * + * @param value 要判断的值 + * @return 如果不等于0返回true + */ + public static boolean isNotZero(BigDecimal value) { + return !isZero(value); + } + + /** + * 判断两个BigDecimal中的较大值 + * + * @param a 第一个值 + * @param b 第二个值 + * @return 较大值,如果都为null返回null + */ + public static BigDecimal max(BigDecimal a, BigDecimal b) { + if (a == null) return b; + if (b == null) return a; + return a.compareTo(b) >= 0 ? a : b; + } + + /** + * 判断两个BigDecimal中的较小值 + * + * @param a 第一个值 + * @param b 第二个值 + * @return 较小值,如果都为null返回null + */ + public static BigDecimal min(BigDecimal a, BigDecimal b) { + if (a == null) return b; + if (b == null) return a; + return a.compareTo(b) <= 0 ? a : b; + } + + /** + * 安全比较,处理null情况 + * + * @param a 第一个值 + * @param b 第二个值 + * @return 比较结果:a>b返回1,a=b返回0,a getPayingOrder(String module, Integer type) { + return walletTradeMapper.getPayingOrder(module, type); + } + + public List transferTradeList(String module, Integer type) { return walletTradeMapper.transferTradeList(module, type); } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/wallet/WalletTradeMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/wallet/WalletTradeMapper.java index 752fe574a..182b1def5 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/wallet/WalletTradeMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/wallet/WalletTradeMapper.java @@ -21,5 +21,7 @@ public interface WalletTradeMapper extends Mapper { */ List getPayingOrderBatchCode(@Param("module") String module, @Param("type") Integer type); + List getPayingOrder(@Param("module") String module, @Param("type") Integer type); + List transferTradeList(@Param("module") String module, @Param("type") Integer type); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/wallet/WalletTradeMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/wallet/WalletTradeMapper.xml index 0eddf36ec..50762f1cb 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/wallet/WalletTradeMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/wallet/WalletTradeMapper.xml @@ -72,6 +72,12 @@ GROUP BY batch_code + +