licailing 5 年 前
コミット
51894ec253

+ 0 - 1
src/main/java/com/izouma/jiashanxia/service/CommissionRecordService.java

@@ -9,7 +9,6 @@ import com.izouma.jiashanxia.domain.Withdraw;
 import com.izouma.jiashanxia.dto.CommissionRecordDTO;
 import com.izouma.jiashanxia.dto.PageQuery;
 import com.izouma.jiashanxia.enums.AuthorityName;
-import com.izouma.jiashanxia.enums.Member;
 import com.izouma.jiashanxia.enums.PayMethod;
 import com.izouma.jiashanxia.enums.TransactionType;
 import com.izouma.jiashanxia.repo.CommissionRecordRepo;

+ 61 - 59
src/main/java/com/izouma/jiashanxia/service/OrderInfoService.java

@@ -229,51 +229,18 @@ public class OrderInfoService {
         Package aPackage = packageRepo.findById(orderInfo.getPackageId()).orElseThrow(new BusinessException("无套餐"));
 
         User parentUser = userRepo.findById(parent).orElseThrow(new BusinessException("无用户"));
-        Member member = parentUser.getMember();
-        if (Member.NORMAL.equals(member)) {
-            return;
-        }
+//        Member member = parentUser.getMember();
+//        if (Member.NORMAL.equals(member) || Member.EMPLOYEE.equals(member)) {
+//            return;
+//        }
         BigDecimal amount = orderInfo.getPrice();
         String transactionId = orderInfo.getId().toString();
 
-        BigDecimal ratio;
-        // 保存流水
-        switch (member) {
-            case EXPERT:
-                // 达人分销
-                ratio = aPackage.getPersonalRatio0();
-                // 套餐有额外分销
-                if (ObjectUtil.isNull(ratio)) {
-                    ratio = sysConfigService.getBigDecimal("PERSONAL_RATIO_0");
-                }
-                break;
-            case GENERAL:
-                // 108将分销
-                ratio = aPackage.getGeneralRatio();
-                // 套餐有额外分销
-                if (ObjectUtil.isNull(ratio)) {
-                    ratio = sysConfigService.getBigDecimal("GENERAL_RATIO");
-                }
-                break;
-            case MAKER:
-                // 创客分销
-                ratio = aPackage.getMakerRatio();
-                // 套餐有额外分销
-                if (ObjectUtil.isNull(ratio)) {
-                    ratio = sysConfigService.getBigDecimal("MAKER_RATIO");
-                }
-                break;
-            case GENERAL_MAKER:
-                // 108将+创客分销
-                ratio = aPackage.getGeneralMakerRatio();
-                // 套餐有额外分销
-                if (ObjectUtil.isNull(ratio)) {
-                    ratio = sysConfigService.getBigDecimal("PROMOTE_MAKER_RATIO");
-                }
-                break;
-            default:
-                ratio = BigDecimal.ZERO;
+        BigDecimal ratio = aPackage.getPersonalRatio0();
+        if (ObjectUtil.isNull(ratio)) {
+            ratio = sysConfigService.getBigDecimal("PERSONAL_RATIO_0");
         }
+
         // 钱和流水
         if (BigDecimal.ZERO.compareTo(ratio) < 0) {
             BigDecimal directPushAmount = amount.multiply(ratio);
@@ -288,7 +255,8 @@ public class OrderInfoService {
             commissionRecordRepo.save(commissionRecord1);
         }
 
-
+        // 无限级找创客/108将
+        this.makerGeneralDistribution(parentUser, amount, orderInfo.getId(), userId);
         // 间推
         this.indirect(parentUser, aPackage, userId, transactionId, amount);
     }
@@ -394,30 +362,64 @@ public class OrderInfoService {
     }
 
     /*
-    创客分销
-    创客和108将捞到二者之一就停还是两个都捞到?
+    创客和108将分销
      */
-    public void makerDistribution(User user, BigDecimal amount, Boolean isCache, Long orderId) {
+    public void makerGeneralDistribution(User parent, BigDecimal amount, Long orderId, Long userId) {
         BigDecimal makerRatio = sysConfigService.getBigDecimal("MAKER_RATIO");
         BigDecimal maker = amount.multiply(makerRatio);
 
-        User parent = userRepo.findById(user.getParent()).orElse(null);
+        BigDecimal generalRatio = sysConfigService.getBigDecimal("GENERAL_RATIO");
+        BigDecimal general = amount.multiply(generalRatio);
+
+        boolean isGeneral = true;
+        boolean isMaker = true;
+
         while (parent != null) {
-            if (Member.MAKER.equals(parent.getMember())) {
-                if (isCache) {
+            CommissionRecord record = CommissionRecord.builder()
+                    .userId(parent.getId())
+                    .fromUserId(userId)
+                    .payMethod(PayMethod.YUE)
+                    .transactionId(orderId.toString())
+                    .amount(maker)
+                    .build();
+            // 创客
+            if (isMaker && Member.MAKER.equals(parent.getMember())) {
+                parent.setCacheAmount(parent.getCacheAmount().add(maker));
+                userRepo.save(parent);
+
+                record.setTransactionType(TransactionType.MAKER);
+                commissionRecordRepo.save(record);
+                isMaker = false;
+            }
+            // 108将
+            if (isGeneral && Member.GENERAL.equals(parent.getMember())) {
+                parent.setCacheAmount(parent.getCacheAmount().add(general));
+                userRepo.save(parent);
+
+                record.setTransactionType(TransactionType.GENERAL);
+                commissionRecordRepo.save(record);
+                isGeneral = false;
+            }
+            // 108将+创客
+            if (Member.GENERAL_MAKER.equals(parent.getMember())) {
+                if (isMaker) {
                     parent.setCacheAmount(parent.getCacheAmount().add(maker));
-                } else {
-                    parent.setMaker(maker.add(parent.getCacheAmount()));
+                    userRepo.save(parent);
+
+                    record.setTransactionType(TransactionType.MAKER);
+                    commissionRecordRepo.save(record);
+                    isMaker = false;
                 }
-                userRepo.save(parent);
-                commissionRecordRepo.save(CommissionRecord.builder()
-                        .userId(parent.getId())
-                        .fromUserId(user.getId())
-                        .transactionType(TransactionType.MAKER)
-                        .payMethod(PayMethod.YUE)
-                        .transactionId(orderId.toString())
-                        .amount(maker)
-                        .build());
+                if (isGeneral) {
+                    parent.setCacheAmount(parent.getCacheAmount().add(general));
+                    userRepo.save(parent);
+
+                    record.setTransactionType(TransactionType.GENERAL);
+                    commissionRecordRepo.save(record);
+                    isGeneral = false;
+                }
+            }
+            if (!isGeneral && !isMaker) {
                 return;
             }
             parent = userRepo.findById(parent.getParent()).orElse(null);

+ 10 - 13
src/main/java/com/izouma/jiashanxia/service/UserPackageFlowService.java

@@ -25,10 +25,12 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class UserPackageFlowService {
 
-    private final UserPackageFlowRepo userPackageFlowRepo;
-    private final GoodsInfoRepo       goodsInfoRepo;
-    private final UserPackageRepo     userPackageRepo;
-    private final OrderInfoRepo       orderInfoRepo;
+    private final UserPackageFlowRepo     userPackageFlowRepo;
+    private final GoodsInfoRepo           goodsInfoRepo;
+    private final UserPackageRepo         userPackageRepo;
+    private final OrderInfoRepo           orderInfoRepo;
+    private final CommissionRecordService commissionRecordService;
+
 
     public Page<UserPackageFlow> all(PageQuery pageQuery) {
         pageQuery.setSort("createdAt,desc");
@@ -132,15 +134,6 @@ public class UserPackageFlowService {
                 .stream()
                 .collect(Collectors.toMap(UserPackage::getGoodsInfoId, userPackage -> userPackage));
 
-        // 套餐有效期
-//        UserPackagePeriod userPackagePeriod = userPackagePeriodRepo.findById(writeOffSaveVO.getUserPackagePeriodId())
-//                .orElseThrow(new BusinessException("无套餐"));
-//        LocalDateTime now = LocalDateTime.now();
-//
-//        if (ObjectUtil.isNotEmpty(userPackagePeriod.getEndDate()) && userPackagePeriod.getEndDate().isBefore(now)) {
-//            throw new BusinessException("套餐已过期");
-//        }
-
         // 核销套餐内容
 //        Map<Long, UserPackage> userPackageMap = userPackageRepo.findAllByUserPackagePeriodId(writeOffSaveVO.getUserPackagePeriodId())
 //                .stream()
@@ -201,6 +194,10 @@ public class UserPackageFlowService {
             orderInfoRepo.save(orderInfo);
             UserPackageFlow flow = userPackageFlowRepo.findByOrderInfoId(orderInfoId);
             flow.getContent().forEach(goods -> goods.setNum(-goods.getNum()));
+
+            // 上级分销变 可提现
+            commissionRecordService.canWithdraw(orderInfoId);
+
             return userPackageFlowRepo.save(
                     UserPackageFlow.builder()
                             .userId(writeOffSaveVO.getUserId())

+ 6 - 6
src/main/java/com/izouma/jiashanxia/service/UserService.java

@@ -147,12 +147,12 @@ public class UserService {
                     .member(Member.NORMAL)
                     .build();
             // 插入上级
-            if (ObjectUtil.isNotNull(parent)) {
-                Long parent1 = this.getParent(parent, userInfo);
-                if (ObjectUtil.isNotNull(parent1)) {
-                    userInfo.setParent(parent);
-                }
-            }
+//            if (ObjectUtil.isNotNull(parent)) {
+//                Long parent1 = this.getParent(parent, userInfo);
+//                if (ObjectUtil.isNotNull(parent1)) {
+//                    userInfo.setParent(parent);
+//                }
+//            }
             userInfo = userRepo.saveAndFlush(userInfo);
             log.info("loginMa {}", userInfo.getCreatedAt());
             return userInfo;

+ 1 - 1
src/test/java/com/izouma/jiashanxia/service/OrderInfoServiceTest.java

@@ -28,7 +28,7 @@ public class OrderInfoServiceTest {
 
     @Test
     public void completed() {
-        orderInfoService.completed(47L, "11000001");
+        orderInfoService.completed1(906L, "11000001");
     }
 
     @Test

+ 21 - 0
src/test/java/com/izouma/jiashanxia/web/PackageControllerTest.java

@@ -0,0 +1,21 @@
+package com.izouma.jiashanxia.web;
+
+import com.izouma.jiashanxia.dto.PageQuery;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class PackageControllerTest {
+
+    @Autowired
+    private PackageController packageController;
+
+    @Test
+    public void all() {
+        packageController.all(new PageQuery());
+    }
+}