licailing 5 年之前
父节点
当前提交
3e46b7f584

+ 4 - 0
src/main/java/com/izouma/jiashanxia/dto/PackageVO.java

@@ -7,6 +7,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Data
@@ -73,4 +74,7 @@ public class PackageVO {
 
     @ApiModelProperty(value = "规格等")
     private List<Stock> stocks;
+
+    @ApiModelProperty(value = "分享得")
+    private BigDecimal shareAmount;
 }

+ 7 - 3
src/main/java/com/izouma/jiashanxia/enums/Member.java

@@ -2,18 +2,22 @@ package com.izouma.jiashanxia.enums;
 
 public enum Member {
     /*
-    普通用户
+    普通会员
      */
     NORMAL,
     /*
-    团长
+    团长/黄金佳人
      */
     EXPERT,
     /*
-    大团长,后台生成
+    大团长/钻石佳人
      */
     BIG_EXPERT,
     /*
+    钻石合伙人
+     */
+    PARTNER,
+    /*
     108将
      */
     GENERAL,

+ 4 - 0
src/main/java/com/izouma/jiashanxia/repo/UserRepo.java

@@ -1,6 +1,7 @@
 package com.izouma.jiashanxia.repo;
 
 import com.izouma.jiashanxia.domain.User;
+import com.izouma.jiashanxia.enums.Member;
 import com.izouma.jiashanxia.security.Authority;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@@ -38,6 +39,9 @@ public interface UserRepo extends JpaRepository<User, Long>, JpaSpecificationExe
 
     long countByParentAndDelFalse(Long parentId);
 
+    // 身份为其他身份的下级的数量
+    long countByParentAndMemberAndDelFalse(Long parent, Member member);
+
     List<User> findAllByCompanyIdIsNullAndDelFalse();
 
     // 按企业id删用户

+ 7 - 0
src/main/java/com/izouma/jiashanxia/service/PackageService.java

@@ -39,6 +39,7 @@ public class PackageService {
     private final UserRepo           userRepo;
     private final OrderInfoRepo      orderInfoRepo;
     private final StockRepo          stockRepo;
+    private final SysConfigService   sysConfigService;
 
     public Page<Package> all(PageQuery pageQuery) {
         return packageRepo.findAll(JpaUtils.toSpecification(pageQuery, Package.class), JpaUtils.toPageRequest(pageQuery));
@@ -143,6 +144,12 @@ public class PackageService {
             vo.setOriginalPrice(min.getOriginalPrice() + "-" + max.getOriginalPrice());
             vo.setStocks(stocks);
         }
+        if (aPackage.isSeparateDistribution() && ObjectUtil.isNotNull(aPackage.getPersonalRatio0())) {
+            vo.setShareAmount(aPackage.getAmount().multiply(aPackage.getPersonalRatio0()));
+        } else {
+            BigDecimal personalRatio = sysConfigService.getBigDecimal("PERSONAL_RATIO_0");
+            vo.setShareAmount(aPackage.getAmount().multiply(personalRatio));
+        }
         return vo;
     }
 }

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

@@ -75,6 +75,7 @@ public class UserService {
     private final OrderInfoRepo        orderInfoRepo;
     private final CommissionRecordRepo commissionRecordRepo;
     private final AttractionsRepo      attractionsRepo;
+    private final SysConfigService     sysConfigService;
 
     public Page<User> all(PageQuery pageQuery) {
         pageQuery.setSort("createdAt,desc");
@@ -146,10 +147,11 @@ public class UserService {
                     if (ObjectUtil.isNull(userInfo.getParent())) {
                         userInfo.setParent(parent);
                     }
-                    // 邀请成为创客
+                    // 邀请成为黄金佳人 就改变上级为邀请者
                     if (expert && !userInfo.isVip()) {
                         userInfo.setVip(true);
                         userInfo.setMember(Member.EXPERT);
+                        userInfo.setParent(parent);
                     }
                     userRepo.saveAndFlush(userInfo);
                 }
@@ -512,6 +514,29 @@ public class UserService {
         });
     }
 
+    /*
+    身份升级
+     */
+    public void upgrade(Long parent) {
+        long num = userRepo.countByParentAndDelFalse(parent);
+        // 成为钻石合伙人
+        int upgradePartner = sysConfigService.getInt("UPGRADE_PARTNER");
+        if (num > upgradePartner) {
+            User user = userRepo.findById(parent).orElseThrow(new BusinessException("无上级"));
+            user.setMember(Member.PARTNER);
+            userRepo.save(user);
+            return;
+        }
+
+        // 成为钻石佳人
+        int upgradeBigExpert = sysConfigService.getInt("UPGRADE_BIG_EXPERT");
+        if (num > upgradeBigExpert) {
+            User user = userRepo.findById(parent).orElseThrow(new BusinessException("无上级"));
+            user.setMember(Member.BIG_EXPERT);
+            userRepo.save(user);
+        }
+    }
+
     public String shareImg(Long userId) throws IOException, WxErrorException {
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
         if (!(StringUtils.isNotEmpty(user.getShareImg()) && user.getShareImg().contains("/v2/"))) {

+ 2 - 2
src/main/java/com/izouma/jiashanxia/service/WithdrawService.java

@@ -88,8 +88,8 @@ public class WithdrawService {
         }
         // 最低提现金额
         BigDecimal minWithdraw = sysConfigService.getBigDecimal("MIN_WITHDRAW");
-        if (amount.compareTo(minWithdraw) < 0) {
-            throw new BusinessException("提现金额必须大于" + minWithdraw);
+        if (amount.compareTo(minWithdraw) <= 0) {
+            throw new BusinessException("提现金额必须大于等于" + minWithdraw);
         }
 
         // 先扣款

+ 4 - 3
src/main/vue/src/views/UserEdit.vue

@@ -184,9 +184,10 @@ export default {
             employee: [],
             id: 0,
             members: [
-                { label: '普通用户', value: 'NORMAL' },
-                { label: '团长', value: 'EXPERT' },
-                { label: '大团长', value: 'BIG_EXPERT' }
+                { label: '普通会员', value: 'NORMAL' },
+                { label: '黄金佳人', value: 'EXPERT' },
+                { label: '钻石佳人', value: 'BIG_EXPERT' },
+                { label: '钻石合伙人', value: 'PARTNER' }
                 // { label: '108将', value: 'GENERAL' },
                 // { label: '创客', value: 'MAKER' },
                 // { label: '全职', value: 'EMPLOYEE' },

+ 4 - 3
src/main/vue/src/views/UserList.vue

@@ -77,9 +77,10 @@ export default {
             downloading: false,
             sortStr: 'createdAt,desc',
             members: [
-                { label: '普通用户', value: 'NORMAL' },
-                { label: '团长', value: 'EXPERT' },
-                { label: '大团长', value: 'BIG_EXPERT' }
+                { label: '普通会员', value: 'NORMAL' },
+                { label: '黄金佳人', value: 'EXPERT' },
+                { label: '钻石佳人', value: 'BIG_EXPERT' },
+                { label: '钻石合伙人', value: 'PARTNER' }
                 // { label: '108将', value: 'GENERAL' },
                 // { label: '创客', value: 'MAKER' },
                 // { label: '全职', value: 'EMPLOYEE' },

+ 4 - 3
src/main/vue/src/views/attractions/WriteOffUserList.vue

@@ -120,9 +120,10 @@ export default {
             downloading: false,
             sortStr: 'createdAt,desc',
             members: [
-                { label: '普通用户', value: 'NORMAL' },
-                { label: '团长', value: 'EXPERT' },
-                { label: '大团长', value: 'BIG_EXPERT' }
+                { label: '普通会员', value: 'NORMAL' },
+                { label: '黄金佳人', value: 'EXPERT' },
+                { label: '钻石佳人', value: 'BIG_EXPERT' },
+                { label: '钻石合伙人', value: 'PARTNER' }
                 // { label: '108将', value: 'GENERAL' },
                 // { label: '创客', value: 'MAKER' },
                 // { label: '全职', value: 'EMPLOYEE' },

+ 4 - 3
src/main/vue/src/views/attractions/WriteOffUserList2.vue

@@ -116,9 +116,10 @@ export default {
             downloading: false,
             sortStr: 'createdAt,desc',
             members: [
-                { label: '普通用户', value: 'NORMAL' },
-                { label: '团长', value: 'EXPERT' },
-                { label: '大团长', value: 'BIG_EXPERT' }
+                { label: '普通会员', value: 'NORMAL' },
+                { label: '黄金佳人', value: 'EXPERT' },
+                { label: '钻石佳人', value: 'BIG_EXPERT' },
+                { label: '钻石合伙人', value: 'PARTNER' }
                 // { label: '108将', value: 'GENERAL' },
                 // { label: '创客', value: 'MAKER' },
                 // { label: '全职', value: 'EMPLOYEE' },

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

@@ -18,7 +18,7 @@ public class WithdrawServiceTest {
 
     @Test
     public void apply() {
-        System.out.println(withdrawService.apply(2L, new BigDecimal("10"), PayMethod.WEIXIN, "xxx", "xxx"));
+        System.out.println(withdrawService.apply(2L, new BigDecimal("1000"), PayMethod.WEIXIN, "xxx", "xxx"));
     }
 
     @Test