Переглянути джерело

资金分配 分销的用户回填

785834757 2 роки тому
батько
коміт
dcd2fdd889

+ 1 - 0
src/main/java/com/ydtech/modules/esm/service/EsmUserReferrerService.java

@@ -22,6 +22,7 @@ import java.util.Map;
 public interface EsmUserReferrerService extends IService<EsmUserReferrer> {
 
 
+    List<EsmUserReferrer> findParents(String userId);
     Map buildLevelInfo(SysUser agent);
 
     boolean deldeleteByReferrerId(String userId);

+ 27 - 0
src/main/java/com/ydtech/modules/esm/service/impl/EsmUserReferrerServiceImpl.java

@@ -31,6 +31,7 @@ import javax.sql.DataSource;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -46,6 +47,32 @@ public class EsmUserReferrerServiceImpl extends ServiceImpl<EsmUserReferrerMappe
     @Autowired
     private EsmUserReferrerService esmUserReferrerService;
 
+
+    // 递归查找节点的所有父级节点
+    public List<EsmUserReferrer> findParents(String userId) {
+        List<EsmUserReferrer> referrers = new ArrayList<>();
+        EsmUserReferrer esmUserReferrer = esmUserReferrerService.getById(userId);
+        //找不到用户的推荐关系
+        if(esmUserReferrer == null){
+            return null;
+        }
+        List<EsmUserReferrer> esmUserReferrers = esmUserReferrerService.list(new LambdaQueryWrapper<EsmUserReferrer>().eq(EsmUserReferrer::getAffiliation, esmUserReferrer.getAffiliation()));
+        findParentsRecursive(userId, esmUserReferrers, referrers);
+        return referrers;
+    }
+
+    private static void findParentsRecursive(String userId, List<EsmUserReferrer> esmUserReferrers,List<EsmUserReferrer> referrers) {
+        EsmUserReferrer collect = esmUserReferrers.stream().filter(item -> item.getId().equals(userId)).findFirst().get();
+        if(collect != null){
+            if(collect.getId().equals(collect.getReferrerId())){
+                referrers.add(collect);
+            }else{
+                referrers.add(collect);
+                findParentsRecursive(collect.getReferrerId(), esmUserReferrers, referrers);
+            }
+        }
+    }
+
     @Override
     public Map buildLevelInfo(SysUser agent) {
         Map m = new HashMap();

+ 16 - 46
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -355,69 +355,39 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         //计算分销费用
         InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
         SysUser sysUser = sysUserService.findByUserId(insOrders.getUserid());
+
+        //获取分销比例
         List<EsmRetail> esmRetailList = esmRetailService.selectList(" where t.deptid=? and t.status = '1' ",
                 new Object[]{sysUser.getDeptId()});
 
+
         if (esmRetailList != null && !esmRetailList.isEmpty()) {
             EsmRetail esmRetail = esmRetailList.get(0);
+            //分销等级
+            insFeeOrderNew.setDistributionStatus(esmRetailList.get(0).getRetailtype());
+            //用户分销人员id
+            List<EsmUserReferrer> parents = esmUserReferrerService.findParents(sysUser.getId());
+
             if (esmRetail != null) {
                 if(Integer.parseInt(esmRetail.getRetailtype()) >= 3){
                     insFeeOrderNew.setFirstDetailProportion(new BigDecimal(esmRetail.getDisrate1()));
                     insFeeOrderNew.setFirstDetailPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(new BigDecimal(esmRetail.getDisrate1())).divide(new BigDecimal("100")));
+                    if(parents.size() > 2){
+                        insFeeOrderNew.setThreeLevelUserId(parents.get(2).getId());
+                    }
                 }
                 if(Integer.parseInt(esmRetail.getRetailtype()) >= 2){
                     insFeeOrderNew.setSecondDetailProportion(new BigDecimal(esmRetail.getDisrate2()));
                     insFeeOrderNew.setSecondDetailPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(new BigDecimal(esmRetail.getDisrate2())).divide(new BigDecimal("100")));
+                    if(parents.size() > 1){
+                        insFeeOrderNew.setTwoLevelUserId(parents.get(1).getId());
+                    }
                 }
                 if(Integer.parseInt(esmRetail.getRetailtype()) >= 1){
                     insFeeOrderNew.setThirdDetailProportion(new BigDecimal(esmRetail.getDisrate3()));
                     insFeeOrderNew.setThirdDetailPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(new BigDecimal(esmRetail.getDisrate3())).divide(new BigDecimal("100")));
-                }
-            }
-        }
-//      判断分销等级   通过userId  去查询  esm_user_referrer  如果 referrer_id  与 userId  相同时 一级分销   不同且还有上级为三级分销   其余  则二级分销
-        String userId = insFeeOrderNew.getUserId();
-        EsmUserReferrer esmUserReferrerServiceById = esmUserReferrerService.getById(userId);
-        if (ObjectUtils.isNotEmpty(esmUserReferrerServiceById)) {
-            String referrerId = esmUserReferrerServiceById.getReferrerId();
-//              如果相等则为一级
-            if (StringUtils.isNotEmpty(referrerId) && referrerId.equals(userId)) {
-                BigDecimal jqPremium = insFeeOrderNew.getJqPremium();  // 交强
-                BigDecimal bigdecimalFomat = new BigDecimal("100");
-                BigDecimal firstDetailProportion = insFeeOrderNew.getFirstDetailProportion();   // 一级分销比例
-                BigDecimal divide = firstDetailProportion.divide(bigdecimalFomat, 2, RoundingMode.HALF_UP);
-                BigDecimal jqAmount = jqPremium.multiply(divide);    //交强分销费用
-
-                BigDecimal jaLevelAmount1 = insFeeOrderNew.getJqDeptProportionLevel1() != null ? jqAmount.multiply(insFeeOrderNew.getJqDeptProportionLevel1().divide(bigdecimalFomat, 2, RoundingMode.HALF_UP)) : BigDecimal.ZERO;
-                BigDecimal jaLevelAmount2 = insFeeOrderNew.getJqDeptProportionLevel2() != null ? jqAmount.multiply(insFeeOrderNew.getJqDeptProportionLevel2().divide(bigdecimalFomat, 2, RoundingMode.HALF_UP)) : BigDecimal.ZERO;
-                BigDecimal jaLevelAmount3 = insFeeOrderNew.getJqDeptProportionLevel3() != null ? jqAmount.multiply(insFeeOrderNew.getJqDeptProportionLevel3().divide(bigdecimalFomat, 2, RoundingMode.HALF_UP)) : BigDecimal.ZERO;
-                BigDecimal jaLevelAmount4 = insFeeOrderNew.getJqDeptProportionLevel4() != null ? jqAmount.multiply(insFeeOrderNew.getJqDeptProportionLevel4().divide(bigdecimalFomat, 2, RoundingMode.HALF_UP)) : BigDecimal.ZERO;
-                BigDecimal jaLevelAmount5 = insFeeOrderNew.getJqDeptProportionLevel4() != null ? jqAmount.multiply(insFeeOrderNew.getJqDeptProportionLevel5().divide(bigdecimalFomat, 2, RoundingMode.HALF_UP)) : BigDecimal.ZERO;
-
-                insFeeOrderNew.setJqDeptPremiumsLevel1(insFeeOrderNew.getJqDeptPremiumsLevel1().add(jaLevelAmount1));//    交强一级机构管理费
-                insFeeOrderNew.setJqDeptPremiumsLevel2(insFeeOrderNew.getJqDeptPremiumsLevel2().add(jaLevelAmount2));//    交强二级机构管理费
-                insFeeOrderNew.setJqDeptPremiumsLevel3(insFeeOrderNew.getJqDeptPremiumsLevel3().add(jaLevelAmount3));//    交强三级机构管理费
-                insFeeOrderNew.setJqDeptPremiumsLevel4(insFeeOrderNew.getJqDeptPremiumsLevel4().add(jaLevelAmount4));//    交强四级机构管理费
-                insFeeOrderNew.setJqDeptPremiumsLevel5(insFeeOrderNew.getJqDeptPremiumsLevel5().add(jaLevelAmount5));//    交强五级机构管理费
-
-            } else {
-                EsmUserReferrer secondReferrer = esmUserReferrerService.getById(referrerId);
-                if (ObjectUtils.isNotEmpty(secondReferrer)) {
-                    //                二级分销
-                    BigDecimal secondDetailPremiums = insFeeOrderNew.getSecondDetailPremiums();
-                    BigDecimal thirdDetailPremiums = insFeeOrderNew.getThirdDetailPremiums();
-                    if (StringUtils.isNotEmpty(secondReferrer.getReferrerId()) && secondReferrer.getReferrerId().equals(referrerId)) {
-//                     二级分销  则  添加到 sys_user_account  表的 promotion  推广金 字段里
-                        SysUserAccount sysUserAccount = new SysUserAccount();
-                        sysUserAccount.setUserId(referrerId);
-                        sysUserAccount.setPromotion(secondDetailPremiums);
-                        sysUserAccountService.addOrUpdate(sysUserAccount);
-                    } else {
-//                     最后为三级
-                        SysUserAccount sysUserAccount = new SysUserAccount();
-                        sysUserAccount.setUserId(secondReferrer.getReferrerId());
-                        sysUserAccount.setPromotion(thirdDetailPremiums);
-                        sysUserAccountService.addOrUpdate(sysUserAccount);
+                    if(parents.size() > 0) {
+                        insFeeOrderNew.setFirstLevelUserId(parents.get(0).getId());
                     }
                 }
             }

+ 0 - 13
src/main/java/com/ydtech/modules/protocols/entity/po/InsFeeOrderNew.java

@@ -341,19 +341,6 @@ public class InsFeeOrderNew {
     @TableField(value = "dept_distribution")
     private BigDecimal deptDistribution;
 
-    @ApiModelProperty(value = "一级用户分销费用")
-    @TableField(value = "first_amount_user")
-    private BigDecimal firstAmountUser;
-
-    @ApiModelProperty(value = "二级用户分销费用")
-    @TableField(value = "second_amount_user")
-    private BigDecimal secondAmountUser;
-
-
-    @ApiModelProperty(value = "三级级用户分销费用")
-    @TableField(value = "three_amount_user")
-    private BigDecimal threeAmountUser;
-