From c6ac1561db0b2f1c8e3a799d7f49808f4bae67c7 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 27 May 2025 15:55:58 +0800 Subject: [PATCH] refactor(mall): 优化订单收货类型判断逻辑 --- src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java index 1343f35..31a2347 100644 --- a/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java @@ -42,6 +42,7 @@ public class VipCommonServiceImpl implements IVipCommonService { private final MallOrderInfoMapper mallOrderInfoMapper; + private final MallOrderItemMapper mallOrderItemMapper; private final IMallVipConfigService mallVipConfigService; private final IMallMoneyFlowService mallMoneyFlowService; private final IApiMallMemberWalletService mallMemberWalletService; @@ -279,7 +280,7 @@ .eq(MallMember::getAccountStatus, MallMember.ACCOUNT_STATUS_ENABLE) .eq(MallMember::getAccountType, MallMember.ACCOUNT_TYPE_NORMAL) .ne(MallMember::getStoreMaster, 0) - .orderByAsc(MallMember::getStoreMaster) + .orderByDesc(MallMember::getId) .last("limit 1") ); // 如果没有找到符合条件的团长,则记录日志并返回 @@ -298,15 +299,24 @@ return; } // 计算返佣金额 + List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectList( + new LambdaQueryWrapper<MallOrderItem>() + .eq(MallOrderItem::getOrderId, orderId) + .eq(MallOrderItem::getState, 1) + ); + if(CollUtil.isEmpty(mallOrderItems)){ + return; + } + BigDecimal amount = mallOrderItems.stream().map(MallOrderItem::getLevelOnePrice).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal returnPercent = happySaleLevel.getReturnPercent(); - BigDecimal multiply = mallOrderInfo.getAmount().multiply(returnPercent).setScale(2, RoundingMode.HALF_DOWN); + BigDecimal multiply = amount.multiply(returnPercent).setScale(2, RoundingMode.HALF_DOWN); log.info("团长获得返佣:{}",multiply); // 如果返佣金额小于等于0,则直接返回 if(BigDecimal.ZERO.compareTo(multiply) >=0){ return; } // 如果返佣金额大于等于订单金额,则直接返回 - if(multiply.compareTo(mallOrderInfo.getAmount()) >= 0){ + if(multiply.compareTo(amount) > 0){ return; } // 记录团长获得返佣 -- Gitblit v1.9.1