Browse Source

feat(cf): 全部订单结算迁移到 CfCommissionService(统一 CF 值分佣),废弃旧佣金调用

Sisyphus 2 weeks ago
parent
commit
ecdede6b84

+ 10 - 2
cfc-backend/src/main/java/com/etotem/cfc/service/AssessmentOrderService.java

@@ -9,6 +9,7 @@ import com.etotem.cfc.entity.AssessmentOrder;
 import com.etotem.cfc.entity.AssessmentAppointment;
 import com.etotem.cfc.mapper.AssessmentOrderMapper;
 import com.etotem.cfc.mapper.AssessmentAppointmentMapper;
+import com.etotem.cfc.mapper.UserMapper;
 import com.etotem.cfc.service.CommissionService;
 import org.springframework.stereotype.Service;
 
@@ -33,6 +34,12 @@ public class AssessmentOrderService extends ServiceImpl<AssessmentOrderMapper, A
     @Resource
     private CommissionService commissionService;
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
+    @Resource
+    private UserMapper userMapper;
+
     public AssessmentOrder createOrder(Long familyId, Long userId, Long memberId,
                                        Long guideId, Long packageId,
                                        String guideName, String packageName,
@@ -73,8 +80,9 @@ public class AssessmentOrderService extends ServiceImpl<AssessmentOrderMapper, A
         order.setUpdatedAt(new Date());
         boolean updated = this.updateById(order);
         if (updated) {
-            commissionService.settle(order.getId(), "assessment", order.getUserId(),
-                    order.getActualPrice() != null ? order.getActualPrice().intValue() : null, null);
+            cfCommissionService.settle(order.getId(), "assessment", order.getUserId(),
+                    userMapper.selectById(order.getUserId()).getFamilyId(),
+                    order.getActualPrice() != null ? order.getActualPrice().intValue() : 0, null);
         }
         return updated;
     }

+ 7 - 2
cfc-backend/src/main/java/com/etotem/cfc/service/MemberSubscriptionService.java

@@ -34,6 +34,9 @@ public class MemberSubscriptionService {
     @Resource
     private CommissionService commissionService;
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
     @Resource
     private PromotionTierService promotionTierService;
 
@@ -171,7 +174,8 @@ public class MemberSubscriptionService {
 
         Family family = familyMapper.selectById(familyId);
         if (family != null && family.getCreatorId() != null) {
-            commissionService.settleTwoLevel(order.getId(), "subscription", family.getCreatorId(), amount, null);
+            cfCommissionService.settleReferrerOnly(order.getId(), "subscription", family.getCreatorId(),
+                    family.getId(), amount);
 
             User buyer = userMapper.selectById(family.getCreatorId());
             if (buyer != null && buyer.getReferrerId() != null) {
@@ -252,7 +256,8 @@ public class MemberSubscriptionService {
 
         Family family = familyMapper.selectById(familyId);
         if (family != null && family.getCreatorId() != null) {
-            commissionService.settleTwoLevel(order.getId(), "subscription", family.getCreatorId(), amount, null);
+            cfCommissionService.settleReferrerOnly(order.getId(), "subscription", family.getCreatorId(),
+                    family.getId(), amount);
 
             User buyer = userMapper.selectById(family.getCreatorId());
             if (buyer != null && buyer.getReferrerId() != null) {

+ 6 - 8
cfc-backend/src/main/java/com/etotem/cfc/service/MembershipService.java

@@ -45,6 +45,9 @@ public class MembershipService implements MembershipServiceInterface {
     @Resource
     private CommissionService commissionService;
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
     @Resource
     private SysConfigService sysConfigService;
 
@@ -780,14 +783,9 @@ public class MembershipService implements MembershipServiceInterface {
                 log.error("发放JOIN会员券异常: userId={}, levelCode={}", adminUserId, order.getLevelCode(), e);
             }
 
-            // 结算佣金(L1+L2)
-            commissionService.settleTwoLevel(
-                    order.getId(),
-                    "membership",
-                    adminUserId,
-                    order.getAmount(),
-                    null
-            );
+            // 结算佣金(推荐人分润)
+            cfCommissionService.settleReferrerOnly(order.getId(), "membership", adminUserId,
+                    userMapper.selectById(adminUserId).getFamilyId(), order.getAmount());
 
             log.info("会员开通完成: orderNo={}, levelCode={}, amount={}, fromLevel={}",
                     order.getOrderNo(), order.getLevelCode(), order.getAmount(), fromLevel);

+ 5 - 2
cfc-backend/src/main/java/com/etotem/cfc/service/PackagePaymentService.java

@@ -37,6 +37,9 @@ public class PackagePaymentService implements PackagePaymentServiceInterface {
     @Resource
     private CommissionService commissionService;
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
     @Resource
     private CouponService couponService;
 
@@ -217,8 +220,8 @@ public class PackagePaymentService implements PackagePaymentServiceInterface {
                     couponService.markUsed(order.getUserCouponId(), order.getId());
                 }
 
-                commissionService.settle(order.getId(), "package", order.getUserId(),
-                        order.getPrice(), null);
+                cfCommissionService.settle(order.getId(), "package", order.getUserId(),
+                        order.getFamilyId(), order.getPrice(), null);
 
                 // 购买完成 → 推进旅程 stage=3(幂等)
                 advanceStage(order.getUserId(), 3);

+ 5 - 2
cfc-backend/src/main/java/com/etotem/cfc/service/PaymentService.java

@@ -57,6 +57,9 @@ public class PaymentService implements PaymentServiceInterface {
     @Resource
     private CommissionService commissionService;
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
     @Lazy
     @Resource
     private ProductOrderService productOrderService;
@@ -237,8 +240,8 @@ public class PaymentService implements PaymentServiceInterface {
         order.setUpdatedAt(new Date());
         boolean updated = packageOrderMapper.updateById(order) > 0;
         if (updated) {
-            commissionService.settle(order.getId(), "package", order.getUserId(),
-                    order.getPrice(), null);
+            cfCommissionService.settle(order.getId(), "package", order.getUserId(),
+                    order.getFamilyId(), order.getPrice(), null);
         }
         return updated;
     }

+ 8 - 24
cfc-backend/src/main/java/com/etotem/cfc/service/ProductOrderService.java

@@ -84,6 +84,9 @@ public class ProductOrderService {
     @Resource
     private CommissionService commissionService;
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
     @Resource
     private PaymentService paymentService;
 
@@ -619,32 +622,13 @@ public class ProductOrderService {
         order.setUpdatedAt(new Date());
         orderMapper.updateById(order);
 
-        // CF值:购买者本人按分润公式获得
-        try {
-            Product p = productMapper.selectById(order.getProductId());
-            if (p != null) {
-                int effectivePpoint = ppointConfigService.getEffectivePpoint(p.getId(), p.getCategoryId());
-                if (effectivePpoint > 0) {
-                    String shareStr = sysConfigService.getValue("product_platform_points_share");
-                    int shareBps = shareStr != null && !shareStr.isEmpty()
-                            ? Integer.parseInt(shareStr) : 1000;
-                    int cfValue = order.getTotalAmount() * effectivePpoint / 100 * shareBps / 10000;
-                    if (cfValue > 0) {
-                        platformPointsService.earn(order.getBuyerId(), cfValue,
-                                "product_order", order.getId(),
-                                "购买商品: " + order.getProductName());
-                    }
-                }
-            }
-        } catch (Exception e) {
-            log.error("购买者CF值发放失败: orderId={}, error={}", order.getId(), e.getMessage());
-        }
-
-        // CF值:推荐人按推荐链分润
+        // CF值:统一分佣(当前人 + 推荐人)
         try {
-            commissionDistService.distribute(order.getBuyerId(), order.getId(), order.getProductId());
+            cfCommissionService.settle(order.getId(), "product", order.getBuyerId(),
+                    userMapper.selectById(order.getBuyerId()).getFamilyId(),
+                    order.getTotalAmount(), order.getProductId());
         } catch (Exception e) {
-            log.error("推荐人分润失败: orderId={}, error={}", order.getId(), e.getMessage());
+            log.error("CF值分佣失败: orderId={}, error={}", order.getId(), e.getMessage());
         }
 
         // 原佣金结算标记为废弃,保留兼容