diff --git a/cash-api/market-server/src/main/java/com/czg/task/DistributionTask.java b/cash-api/market-server/src/main/java/com/czg/task/DistributionTask.java index d1ba61e0..3dc1cee7 100644 --- a/cash-api/market-server/src/main/java/com/czg/task/DistributionTask.java +++ b/cash-api/market-server/src/main/java/com/czg/task/DistributionTask.java @@ -1,13 +1,22 @@ package com.czg.task; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ArrayUtil; +import com.czg.account.entity.ShopInfo; import com.czg.account.entity.ShopUser; +import com.czg.account.service.ShopInfoService; import com.czg.account.service.ShopUserService; +import com.czg.constant.TableValueConstant; import com.czg.market.entity.MkDistributionDeliver; +import com.czg.market.entity.MkDistributionFlow; import com.czg.market.service.MkBirthdayGiftService; import com.czg.market.service.MkDistributionDeliverService; +import com.czg.market.service.MkDistributionFlowService; import com.czg.market.service.MkDistributionUserService; import com.czg.order.entity.OrderInfo; import com.czg.order.service.OrderInfoService; +import com.czg.service.market.enums.OrderStatusEnums; import com.czg.utils.FunUtils; import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; @@ -28,9 +37,13 @@ public class DistributionTask { private MkDistributionDeliverService distributionDeliverService; @Resource private MkDistributionUserService distributionUserService; + @Resource + private MkDistributionFlowService distributionFlowService; @DubboReference private OrderInfoService orderInfoService; + @DubboReference + private ShopInfoService shopInfoService; /** * 生日有礼奖励发放 @@ -38,18 +51,24 @@ public class DistributionTask { */ // @Scheduled(cron = "0 0 0 * * ?") public void deliver() { - distributionDeliverService.list(new QueryWrapper().eq(MkDistributionDeliver::getStatus, "pending")).forEach(item -> { + distributionFlowService.list(new QueryWrapper().ge(MkDistributionFlow::getDeliverTime, DateUtil.date()) + .eq(MkDistributionFlow::getStatus, TableValueConstant.DistributionFlow.Status.PENDING.getCode())).forEach(item -> { FunUtils.safeRunVoid(() -> { - log.info("开始处理延时分账, orderNo: {}, 类型: {}", item.getOrderNo(), item.getType()); + log.info("开始处理延时分账, id: {}, orderNo: {}, 类型: {}", item.getId(), item.getOrderNo(), item.getType()); + OrderInfo orderInfo = orderInfoService.getOne(new QueryWrapper().eq(OrderInfo::getOrderNo, item.getOrderNo())); if (orderInfo == null) { log.warn("订单不存在, 订单号: {}", item.getOrderNo()); return; } - - distributionUserService.distribute(orderInfo.getId(), orderInfo.getOrderNo(), orderInfo.getPayAmount(), orderInfo.getUserId(), orderInfo.getShopId(), "order", true); - item.setStatus("success"); - distributionDeliverService.updateById(item); + if (CollUtil.newArrayList(OrderStatusEnums.REFUND.getCode(), OrderStatusEnums.REFUNDING.getCode(), OrderStatusEnums.PART_REFUND.getCode()).contains(orderInfo.getStatus())) { + log.warn("订单已退款, 订单号: {}", item.getOrderNo()); + item.setStatus(TableValueConstant.DistributionFlow.Status.REFUND.getCode()); + }else { + item.setStatus(TableValueConstant.DistributionFlow.Status.SUCCESS.getCode()); + distributionUserService.updateShopInfoAmount(orderInfo.getShopId(), item.getRewardAmount(), orderInfo.getId()); + } + distributionFlowService.updateById(item); }); }); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkDistributionFlow.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkDistributionFlow.java index 0a44abb7..35b4fcfa 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkDistributionFlow.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkDistributionFlow.java @@ -112,4 +112,5 @@ public class MkDistributionFlow implements Serializable { private BigDecimal commission; private BigDecimal parentCommission; + private LocalDateTime deliverTime; } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkDistributionUserService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkDistributionUserService.java index 9a085b0b..c3d5aecb 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkDistributionUserService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkDistributionUserService.java @@ -114,6 +114,8 @@ public interface MkDistributionUserService extends IService */ void rechargeCallBack(Long shopId, BigDecimal amount, Long paymentId); + BigDecimal updateShopInfoAmount(Long shopId, BigDecimal changeAmount, Long sourceId); + /** * 发放分销奖励 * @@ -123,7 +125,7 @@ public interface MkDistributionUserService extends IService * @param userId 用户id * @param shopId 店铺id */ - void distribute(Long sourceId, String orderNo, BigDecimal amount, Long userId, Long shopId, String type, boolean isTask); + void distribute(Long sourceId, String orderNo, BigDecimal amount, Long userId, Long shopId, String type); void updateIncome(BigDecimal pendingIncome, BigDecimal receivedIncome, BigDecimal withdrawIncome, Long id, Long userId, Long shopId, Integer isOne); diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java b/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java index 1480220d..b96c3b89 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/constant/TableValueConstant.java @@ -85,6 +85,7 @@ public interface TableValueConstant { enum Status { PENDING("pending", "待入账"), SUCCESS("success", "已入账"), + REFUND("REFUND", "已退款"), FAIL("fail", "失败"); private final String code; private final String msg; diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java index 9da38f4c..bf3e3f96 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java @@ -554,7 +554,7 @@ public class MkDistributionUserServiceImpl extends ServiceImpl { AssertUtil.isTrue(amount.compareTo(BigDecimal.ZERO) == 0, "分销金额不能为0"); MkDistributionConfigVO config = mkDistributionConfigService.detail(shopId); AssertUtil.isTrue(config.getIsEnable() != 1, "分销未开启"); - - - if (!isTask) { - if (config.getSettlementDay() != null && config.getSettlementDay() != 0) { - deliver.setShouldDeliverTime(DateUtil.offsetDay(DateUtil.date(), config.getSettlementDay()).toLocalDateTime()); - log.info("延时发放, {}", config.getSettlementDay()); - return; - }else { - deliver.setStatus("success"); - } - } - // 当前用户上级分销员 ShopUser sourceShopUserInfo = shopUserService.getShopUserInfo(shopId, sourceUserId); if (sourceShopUserInfo.getDistributionUserId() == null) { @@ -670,15 +666,16 @@ public class MkDistributionUserServiceImpl extends ServiceImpl