diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java index db06d61c9..c38184148 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java @@ -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"; } 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 ebfcfe168..b3d42bd84 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/enums/point/ShopSubStageStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java index 59fe54912..a706ab31c 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java @@ -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), 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 0; } + public boolean updateByPrimaryKeySelective(PreAllocationRecordDO record) { + return preAllocationRecordMapper.updateByPrimaryKeySelective(record) > 0; + } + public PreAllocationRecordDO getById(Long id) { return preAllocationRecordMapper.getById(id); } @@ -74,4 +78,21 @@ public class PreAllocationRecordDAO { } return preAllocationRecordMapper.deleteByIdsNotPaid(ids) > 0; } + + /** + * 软删除 + */ + public boolean softDeleteById(Long id) { + return preAllocationRecordMapper.softDeleteById(id) > 0; + } + + /** + * 批量软删除 + */ + public boolean softDeleteByIds(List ids) { + if (ids == null || ids.isEmpty()) { + return false; + } + return preAllocationRecordMapper.softDeleteByIds(ids) > 0; + } } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/wallet/WalletTradeDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/wallet/WalletTradeDAO.java index d29fe2a0f..311f2e4ef 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/wallet/WalletTradeDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/wallet/WalletTradeDAO.java @@ -67,6 +67,17 @@ public class WalletTradeDAO { return walletTradeMapper.getPayingOrderBatchCode(module, type); } + /** + * 查询支付中的 单次支付的数据 非批量 + * @param module + * @param type + * @return + */ + public List 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/order/PreAllocationRecordMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/PreAllocationRecordMapper.java index aa46e31af..7f9803a22 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/PreAllocationRecordMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/PreAllocationRecordMapper.java @@ -33,4 +33,14 @@ public interface PreAllocationRecordMapper extends Mapper int deleteByIdsNotPaid(@Param("ids") List ids); Integer updateByPayNoList(@Param("payNoList") List payNoList, @Param("status") Integer status); + + /** + * 软删除 + */ + int softDeleteById(@Param("id") Long id); + + /** + * 批量软删除 + */ + int softDeleteByIds(@Param("ids") List ids); } 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/order/PreAllocationRecordMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/order/PreAllocationRecordMapper.xml index 2c9cfbf6a..522e8895d 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/order/PreAllocationRecordMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/order/PreAllocationRecordMapper.xml @@ -14,11 +14,17 @@ + + id, order_id, shop_id, pay_no, expense_type, payee_name, payee_code, - pay_amount, allocation_status, create_time, update_time + pay_amount, allocation_status, create_time, update_time, remark, deleted + + + + deleted = 0 @@ -38,6 +45,7 @@ SELECT FROM zxjp_pre_allocation_record WHERE shop_id = #{shopId} + AND ORDER BY create_time DESC @@ -45,14 +53,16 @@ SELECT FROM zxjp_pre_allocation_record WHERE shop_id = #{shopId} - and expense_type = #{expenseType} + AND expense_type = #{expenseType} ORDER BY create_time DESC + limit 1 @@ -130,6 +140,23 @@ + + UPDATE zxjp_pre_allocation_record + SET deleted = 1, + update_time = NOW() + WHERE id = #{id} + AND + + + UPDATE zxjp_pre_allocation_record + SET deleted = 1, + update_time = NOW() + WHERE id IN + + #{id} + + AND + 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 + +