Merge branch 'cc_20260415_trans'

This commit is contained in:
suzhuhong
2026-04-20 16:43:02 +08:00
23 changed files with 702 additions and 17 deletions

View File

@@ -419,5 +419,11 @@ public class RedisConstant {
*/
public static final String XGJ_CALLBACK_SHOP = "xgj_callback_shop:{0}";
/**
* 预分账单 分账key
*/
public static final String PRE_ALLOCATION = "pre_allocation:{0}";
public static final String STORE_ID_MAPPING = "store_id_mapping";
}

View File

@@ -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),

View File

@@ -175,6 +175,7 @@ public enum ShopSubStageStatusEnum {
SHOP_SUB_STAGE_STATUS_283(ShopSubStageEnum.SHOP_STAGE_28, 2830, "审批拒绝", Boolean.FALSE),
SHOP_SUB_STAGE_STATUS_284(ShopSubStageEnum.SHOP_STAGE_28, 2840, "待缴费", Boolean.FALSE),
SHOP_SUB_STAGE_STATUS_284_5(ShopSubStageEnum.SHOP_STAGE_28, 2845, "对账中", Boolean.FALSE),
SHOP_SUB_STAGE_STATUS_284_7(ShopSubStageEnum.SHOP_STAGE_28, 2847, "其他费用待扣款", Boolean.FALSE),
SHOP_SUB_STAGE_STATUS_285(ShopSubStageEnum.SHOP_STAGE_28, 2850, "已完成", Boolean.TRUE),
SHOP_SUB_STAGE_STATUS_290(ShopSubStageEnum.SHOP_STAGE_29, 2900, "待通知发货", Boolean.FALSE),

View File

@@ -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返回1a=b返回0a<b返回-1
*/
public static int safeCompare(BigDecimal a, BigDecimal b) {
if (a == null && b == null) return 0;
if (a == null) return -1;
if (b == null) return 1;
return a.compareTo(b);
}
}