From 24681c81c09022f584a57006f2534b5f74723414 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 30 六月 2026 09:27:31 +0800
Subject: [PATCH] 初始化项目

---
 yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordServiceImpl.java |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordServiceImpl.java b/yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordServiceImpl.java
index ed314c3..845fea7 100644
--- a/yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordServiceImpl.java
+++ b/yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordServiceImpl.java
@@ -38,7 +38,6 @@
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getMaxValue;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getMinValue;
-import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId;
 import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.BROKERAGE_WITHDRAW_USER_BALANCE_NOT_ENOUGH;
 
 /**
@@ -143,7 +142,7 @@
     int calculatePrice(Integer basePrice, Integer percent, Integer fixedPrice) {
         // 1. 浼樺厛浣跨敤鍥哄畾浣i噾
         if (fixedPrice != null && fixedPrice >= 0) {
-            return ObjectUtil.defaultIfNull(fixedPrice, 0);
+            return fixedPrice;
         }
         // 2. 鏍规嵁姣斾緥璁$畻浣i噾
         if (basePrice != null && basePrice > 0 && percent != null && percent > 0) {
@@ -329,7 +328,7 @@
             return respVO;
         }
         // 2.2 鏍¢獙鐢ㄦ埛鏄惁鏈夊垎閿�璧勬牸
-        respVO.setEnabled(brokerageUserService.getUserBrokerageEnabled(getLoginUserId()));
+        respVO.setEnabled(brokerageUserService.getUserBrokerageEnabled(userId));
         if (BooleanUtil.isFalse(respVO.getEnabled())) {
             return respVO;
         }
@@ -339,22 +338,24 @@
             return respVO;
         }
 
-        // 3.1 鍟嗗搧鍗曠嫭鍒嗕剑妯″紡
-        Integer fixedMinPrice = 0;
-        Integer fixedMaxPrice = 0;
-        Integer spuMinPrice = 0;
-        Integer spuMaxPrice = 0;
+        // 3.1 鑾峰彇鍟嗗搧 SKU 鍒楄〃
         List<ProductSkuRespDTO> skuList = productSkuApi.getSkuListBySpuId(ListUtil.of(spuId));
         if (BooleanUtil.isTrue(spu.getSubCommissionType())) {
-            fixedMinPrice = getMinValue(skuList, ProductSkuRespDTO::getFirstBrokeragePrice);
-            fixedMaxPrice = getMaxValue(skuList, ProductSkuRespDTO::getFirstBrokeragePrice);
-            // 3.2 鍏ㄥ眬鍒嗕剑妯″紡锛堟牴鎹晢鍝佷环鏍兼瘮渚嬭绠楋級
+            // 3.2.1 鍟嗗搧鐙珛鍒嗛攢妯″紡锛氱洿鎺ュ彇 SKU 鍥哄畾浣i噾
+            // 娉ㄦ剰锛氬浐瀹氫剑閲戝厑璁镐负 0锛岃〃绀哄晢瀹朵富鍔ㄨ涓洪浂浣i噾锛涗负绌烘椂锛屼篃鎸� 0 澶勭悊
+            Integer fixedMinPrice = getMinValue(skuList,
+                    sku -> ObjectUtil.defaultIfNull(sku.getFirstBrokeragePrice(), 0));
+            Integer fixedMaxPrice = getMaxValue(skuList,
+                    sku -> ObjectUtil.defaultIfNull(sku.getFirstBrokeragePrice(), 0));
+            respVO.setBrokerageMinPrice(calculatePrice(null, tradeConfig.getBrokerageFirstPercent(), fixedMinPrice))
+                    .setBrokerageMaxPrice(calculatePrice(null, tradeConfig.getBrokerageFirstPercent(), fixedMaxPrice));
         } else {
-            spuMinPrice = getMinValue(skuList, ProductSkuRespDTO::getPrice);
-            spuMaxPrice = getMaxValue(skuList, ProductSkuRespDTO::getPrice);
+            // 3.2.2 鍏ㄥ眬姣斾緥妯″紡锛氬浐瀹氫剑閲戜紶 null锛岄伩鍏嶈榛樿鍊� 0 鎻愬墠鎷︽埅
+            Integer spuMinPrice = getMinValue(skuList, ProductSkuRespDTO::getPrice);
+            Integer spuMaxPrice = getMaxValue(skuList, ProductSkuRespDTO::getPrice);
+            respVO.setBrokerageMinPrice(calculatePrice(spuMinPrice, tradeConfig.getBrokerageFirstPercent(), null))
+                    .setBrokerageMaxPrice(calculatePrice(spuMaxPrice, tradeConfig.getBrokerageFirstPercent(), null));
         }
-        respVO.setBrokerageMinPrice(calculatePrice(spuMinPrice, tradeConfig.getBrokerageFirstPercent(), fixedMinPrice));
-        respVO.setBrokerageMaxPrice(calculatePrice(spuMaxPrice, tradeConfig.getBrokerageFirstPercent(), fixedMaxPrice));
         return respVO;
     }
 

--
Gitblit v1.9.3