rk
4 小时以前 cd6b21f04e08a61d79e4aea2593c41fdc5cd0766
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -2121,21 +2121,37 @@
            DriverInfo originalDriver = originalDriverId != null ? driverInfoMapper.selectById(originalDriverId) : null;
            ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId());
            // 取件点信息更新为存件门店,使用 UpdateWrapper 确保 null 字段也能生效
            // 计算就地寄存存件门店分成比例
            Integer cityId = Integer.valueOf(order.getCityId());
            boolean isCompany = depositShop != null && Constants.equalsInteger(depositShop.getCompanyType(), Constants.ONE);
            int fallbackFieldA = isCompany ? Constants.FIVE : Constants.SIX;
            BigDecimal localDepositRata = getShopRevenueShare(depositShop, "localDeposit", cityId, fallbackFieldA);
            Long totalAmount = order.getTotalAmount() != null ? order.getTotalAmount() : 0L;
            Long localDepositFee = new BigDecimal(totalAmount).multiply(localDepositRata)
                    .setScale(0, RoundingMode.HALF_UP).longValue();
            // 取件点信息更新为存件门店,重算分成
            UpdateWrapper<Orders> updateWrapper = new UpdateWrapper<>();
            updateWrapper.lambda()
                    .eq(Orders::getId, order.getId())
                    .set(Orders::getType, Constants.ZERO)
                    .set(Orders::getStatus, Constants.OrderStatus.arrived.getKey())
                    .set(Orders::getIsConverted, Constants.ONE)
                    .set(Orders::getTakeShopId, order.getDepositShopId())
                    .set(Orders::getTakeShopName, order.getDepositShopName())
                    .set(Orders::getTakeShopAddress, order.getDepositShopAddress())
                    .set(Orders::getTakeShopLinkPhone, order.getDepositShopLinkPhone())
                    .set(Orders::getTakeLocation, order.getDepositLocation())
                    .set(Orders::getTakeLocationRemark, order.getDepositLocationRemark())
                    .set(Orders::getTakeLat, order.getDepositLat())
                    .set(Orders::getTakeLgt, order.getDepositLgt())
                    .set(Orders::getExpectedTakeTime, new Date());
                    .set(Orders::getExpectedTakeTime, new Date())
                    // 存件门店分成按就地寄存重算
                    .set(Orders::getDepositShopFeeRata, localDepositRata)
                    .set(Orders::getDepositShopFee, localDepositFee)
                    // 司机、取件门店分成归零
                    .set(Orders::getDriverFeeRata, BigDecimal.ZERO)
                    .set(Orders::getDriverFee, 0L)
                    .set(Orders::getTakeShopFeeRata, BigDecimal.ZERO)
                    .set(Orders::getTakeShopFee, 0L);
            if (Constants.equalsInteger(status, Constants.OrderStatus.accepted.getStatus())) {
                updateWrapper.lambda()
                        .set(Orders::getAcceptDriver, null)