Просмотр исходного кода

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

Sisyphus 2 недель назад
Родитель
Сommit
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.entity.AssessmentAppointment;
 import com.etotem.cfc.mapper.AssessmentOrderMapper;
 import com.etotem.cfc.mapper.AssessmentOrderMapper;
 import com.etotem.cfc.mapper.AssessmentAppointmentMapper;
 import com.etotem.cfc.mapper.AssessmentAppointmentMapper;
+import com.etotem.cfc.mapper.UserMapper;
 import com.etotem.cfc.service.CommissionService;
 import com.etotem.cfc.service.CommissionService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -33,6 +34,12 @@ public class AssessmentOrderService extends ServiceImpl<AssessmentOrderMapper, A
     @Resource
     @Resource
     private CommissionService commissionService;
     private CommissionService commissionService;
 
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
+    @Resource
+    private UserMapper userMapper;
+
     public AssessmentOrder createOrder(Long familyId, Long userId, Long memberId,
     public AssessmentOrder createOrder(Long familyId, Long userId, Long memberId,
                                        Long guideId, Long packageId,
                                        Long guideId, Long packageId,
                                        String guideName, String packageName,
                                        String guideName, String packageName,
@@ -73,8 +80,9 @@ public class AssessmentOrderService extends ServiceImpl<AssessmentOrderMapper, A
         order.setUpdatedAt(new Date());
         order.setUpdatedAt(new Date());
         boolean updated = this.updateById(order);
         boolean updated = this.updateById(order);
         if (updated) {
         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;
         return updated;
     }
     }

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

@@ -34,6 +34,9 @@ public class MemberSubscriptionService {
     @Resource
     @Resource
     private CommissionService commissionService;
     private CommissionService commissionService;
 
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
     @Resource
     @Resource
     private PromotionTierService promotionTierService;
     private PromotionTierService promotionTierService;
 
 
@@ -171,7 +174,8 @@ public class MemberSubscriptionService {
 
 
         Family family = familyMapper.selectById(familyId);
         Family family = familyMapper.selectById(familyId);
         if (family != null && family.getCreatorId() != null) {
         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());
             User buyer = userMapper.selectById(family.getCreatorId());
             if (buyer != null && buyer.getReferrerId() != null) {
             if (buyer != null && buyer.getReferrerId() != null) {
@@ -252,7 +256,8 @@ public class MemberSubscriptionService {
 
 
         Family family = familyMapper.selectById(familyId);
         Family family = familyMapper.selectById(familyId);
         if (family != null && family.getCreatorId() != null) {
         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());
             User buyer = userMapper.selectById(family.getCreatorId());
             if (buyer != null && buyer.getReferrerId() != null) {
             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
     @Resource
     private CommissionService commissionService;
     private CommissionService commissionService;
 
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
     @Resource
     @Resource
     private SysConfigService sysConfigService;
     private SysConfigService sysConfigService;
 
 
@@ -780,14 +783,9 @@ public class MembershipService implements MembershipServiceInterface {
                 log.error("发放JOIN会员券异常: userId={}, levelCode={}", adminUserId, order.getLevelCode(), e);
                 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={}",
             log.info("会员开通完成: orderNo={}, levelCode={}, amount={}, fromLevel={}",
                     order.getOrderNo(), order.getLevelCode(), order.getAmount(), 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
     @Resource
     private CommissionService commissionService;
     private CommissionService commissionService;
 
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
     @Resource
     @Resource
     private CouponService couponService;
     private CouponService couponService;
 
 
@@ -217,8 +220,8 @@ public class PackagePaymentService implements PackagePaymentServiceInterface {
                     couponService.markUsed(order.getUserCouponId(), order.getId());
                     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(幂等)
                 // 购买完成 → 推进旅程 stage=3(幂等)
                 advanceStage(order.getUserId(), 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
     @Resource
     private CommissionService commissionService;
     private CommissionService commissionService;
 
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
     @Lazy
     @Lazy
     @Resource
     @Resource
     private ProductOrderService productOrderService;
     private ProductOrderService productOrderService;
@@ -237,8 +240,8 @@ public class PaymentService implements PaymentServiceInterface {
         order.setUpdatedAt(new Date());
         order.setUpdatedAt(new Date());
         boolean updated = packageOrderMapper.updateById(order) > 0;
         boolean updated = packageOrderMapper.updateById(order) > 0;
         if (updated) {
         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;
         return updated;
     }
     }

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

@@ -84,6 +84,9 @@ public class ProductOrderService {
     @Resource
     @Resource
     private CommissionService commissionService;
     private CommissionService commissionService;
 
 
+    @Resource
+    private CfCommissionService cfCommissionService;
+
     @Resource
     @Resource
     private PaymentService paymentService;
     private PaymentService paymentService;
 
 
@@ -619,32 +622,13 @@ public class ProductOrderService {
         order.setUpdatedAt(new Date());
         order.setUpdatedAt(new Date());
         orderMapper.updateById(order);
         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 {
         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) {
         } catch (Exception e) {
-            log.error("推荐人分润失败: orderId={}, error={}", order.getId(), e.getMessage());
+            log.error("CF值分佣失败: orderId={}, error={}", order.getId(), e.getMessage());
         }
         }
 
 
         // 原佣金结算标记为废弃,保留兼容
         // 原佣金结算标记为废弃,保留兼容