Explorar el Código

Merge branch 'hehuoren' into test

helixiao hace 1 año
padre
commit
2069c82187
Se han modificado 42 ficheros con 1789 adiciones y 399 borrados
  1. 9 0
      src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java
  2. 34 2
      src/main/java/com/ydtech/modules/admin/controller/SysAgencyLeaderController.java
  3. 6 0
      src/main/java/com/ydtech/modules/admin/controller/SysLoginController.java
  4. 59 0
      src/main/java/com/ydtech/modules/admin/controller/SysPartnerController.java
  5. 138 2
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  6. 3 0
      src/main/java/com/ydtech/modules/admin/dao/SysAgencyLeaderMapper.java
  7. 8 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerMapper.java
  8. 20 0
      src/main/java/com/ydtech/modules/admin/dao/SysProportionConfigMapper.java
  9. 54 0
      src/main/java/com/ydtech/modules/admin/model/SysProportionConfig.java
  10. 4 0
      src/main/java/com/ydtech/modules/admin/model/SysRelationPerson.java
  11. 23 1
      src/main/java/com/ydtech/modules/admin/model/SysUser.java
  12. 15 0
      src/main/java/com/ydtech/modules/admin/model/dto/CountUserDto.java
  13. 15 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderDeptDto.java
  14. 2 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderDto.java
  15. 13 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderListDto.java
  16. 4 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerDto.java
  17. 7 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerPageDto.java
  18. 2 0
      src/main/java/com/ydtech/modules/admin/model/vo/AAPLoginVo.java
  19. 4 0
      src/main/java/com/ydtech/modules/admin/model/vo/AppSysPartnerVo.java
  20. 3 0
      src/main/java/com/ydtech/modules/admin/model/vo/AppUserInfoVo.java
  21. 14 0
      src/main/java/com/ydtech/modules/admin/model/vo/CountUserNumVo.java
  22. 20 0
      src/main/java/com/ydtech/modules/admin/model/vo/CountUserVo.java
  23. 15 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysAgencyLeaderDeptVo.java
  24. 5 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysDeptVo.java
  25. 24 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysPartnerVo.java
  26. 7 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUser2Vo.java
  27. 2 2
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserPartner.java
  28. 4 0
      src/main/java/com/ydtech/modules/admin/service/SysAgencyLeaderService.java
  29. 1 1
      src/main/java/com/ydtech/modules/admin/service/SysDeptService.java
  30. 4 0
      src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java
  31. 17 0
      src/main/java/com/ydtech/modules/admin/service/SysProportionConfigService.java
  32. 8 0
      src/main/java/com/ydtech/modules/admin/service/SysUserService.java
  33. 74 19
      src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyLeaderServiceImpl.java
  34. 3 1
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java
  35. 595 271
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java
  36. 18 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysProportionConfigServiceImpl.java
  37. 267 1
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  38. 25 25
      src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java
  39. 129 74
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  40. 18 0
      src/main/resources/mapper/modules/admin/SysAgencyLeaderMapper.xml
  41. 97 0
      src/main/resources/mapper/modules/admin/SysPartnerMapper.xml
  42. 19 0
      src/main/resources/mapper/modules/admin/SysProportionConfigMapper.xml

+ 9 - 0
src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java

@@ -144,6 +144,15 @@ public class APPPartnerController extends BaseController {
 
         return HttpResult.ok(this.sysPartnerService.getCommissionInfo(commissionInfoDto));
     }
+    /**
+     *  新增人员统计
+     */
+    @PostMapping("/getCountUser")
+    @ApiOperation(value = "总佣金组成明细")
+    public HttpResult getCountUser(@RequestBody CountUserDto countUserDto) {
+
+        return HttpResult.ok(this.sysPartnerService.getCountUser(countUserDto));
+    }
 
 
 }

+ 34 - 2
src/main/java/com/ydtech/modules/admin/controller/SysAgencyLeaderController.java

@@ -47,6 +47,17 @@ public class SysAgencyLeaderController extends BaseController {
         return HttpResult.ok("success", this.sysAgencyLeaderService.queryById(id));
     }
 
+    /**+
+     * 改版后的根据id查看信息
+     * @param id
+     * @return
+     */
+    @GetMapping("/queryInfoById/{id}")
+    @ApiOperation(value = "根据id查询")
+    public HttpResult<SysAgencyLeaderDeptVo> queryInfoById(@PathVariable("id") Integer id) {
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryInfoById(id));
+    }
+
     /**
      * 五级机构下的合伙人
      * @param id
@@ -96,16 +107,37 @@ public class SysAgencyLeaderController extends BaseController {
     }
 
     /**
-     * 保存配置机构负责人的信息
+     * 修改比例配置
      *
      * @param sysAgencyLeaderDto 实体
      * @return 新增结果
      */
     @PostMapping("/edit")
-    @ApiOperation(value = "编辑配置机构负责人的信息")
+    @ApiOperation(value = "修改比例配置")
     public HttpResult edit(@RequestBody SysAgencyLeaderDto sysAgencyLeaderDto) {
         return HttpResult.ok(this.sysAgencyLeaderService.edit(sysAgencyLeaderDto));
     }
+    /**
+     * 批量修改配置
+     */
+    @PostMapping("/editAll")
+    @ApiOperation(value = "批量修改配置")
+    public HttpResult editAll(@RequestBody SysAgencyLeaderListDto sysAgencyLeaderDto) {
+        return HttpResult.ok(this.sysAgencyLeaderService.editAll(sysAgencyLeaderDto));
+    }
+
+    /**
+     * 编辑工作室信息的信息
+     *
+     * @param sysAgencyLeaderDeptDto 实体
+     * @return 新增结果
+     */
+    @PostMapping("/editInfo")
+    @ApiOperation(value = "编辑工作室信息的信息")
+    public HttpResult editInfo(@RequestBody SysAgencyLeaderDeptDto sysAgencyLeaderDeptDto) {
+        this.sysAgencyLeaderService.editInfo(sysAgencyLeaderDeptDto);
+        return HttpResult.ok("编辑成功");
+    }
 
 
     @GetMapping("/del/{id}")

+ 6 - 0
src/main/java/com/ydtech/modules/admin/controller/SysLoginController.java

@@ -12,6 +12,8 @@ import com.ydtech.constants.SysConstants;
 import com.ydtech.constants.sys.SysPasswordEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.dao.SysPartnerMapper;
+import com.ydtech.modules.admin.model.SysPartner;
 import com.ydtech.modules.admin.model.SysPassword;
 import com.ydtech.modules.admin.model.SysRole;
 import com.ydtech.modules.admin.model.SysUser;
@@ -79,6 +81,8 @@ public class SysLoginController {
 
     private final SysPartnerService sysPartnerService;
 
+    private final SysPartnerMapper sysPartnerMapper;
+
     private final SysAgencyLeaderService sysAgencyLeaderService;
 
     @GetMapping("captcha.jpg")
@@ -270,8 +274,10 @@ public class SysLoginController {
         boolean a = sysPartnerService.checkPartner(user.getId());
         boolean b = sysAgencyLeaderService.checkUserId(user.getId());
         if (a) {
+            SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getUserId, user.getId()));
             //类型:1.合伙人;2机构负责人
             aapLoginVo.setType(1);
+            aapLoginVo.setLevel(sysPartner.getType());
         } else if (b) {
             aapLoginVo.setType(2);
         } else {

+ 59 - 0
src/main/java/com/ydtech/modules/admin/controller/SysPartnerController.java

@@ -1,8 +1,12 @@
 package com.ydtech.modules.admin.controller;
 
+import com.ydtech.aop.exception.DescribeException;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.dao.SysProportionConfigMapper;
 import com.ydtech.modules.admin.model.SysAgencyLeader;
 import com.ydtech.modules.admin.model.SysPartner;
+import com.ydtech.modules.admin.model.SysProportionConfig;
 import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerAPPPageDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerDto;
@@ -12,11 +16,13 @@ import com.ydtech.modules.admin.model.vo.SysAgencyLeaderVo;
 import com.ydtech.modules.admin.model.vo.SysPartnerAPPPageVo;
 import com.ydtech.modules.admin.model.vo.SysUserPartner;
 import com.ydtech.modules.admin.service.SysPartnerService;
+import com.ydtech.modules.admin.service.SysProportionConfigService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -37,6 +43,11 @@ public class SysPartnerController extends BaseController {
      */
     @Resource
     private SysPartnerService sysPartnerService;
+    @Resource
+    private SysProportionConfigService sysProportionConfigService;
+
+    @Resource
+    private SysProportionConfigMapper sysProportionConfigMapper;
 
     /**
      * 分页查询
@@ -176,6 +187,54 @@ public class SysPartnerController extends BaseController {
         return HttpResult.ok("success", this.sysPartnerService.queryAgencyLeaderById(sysAgencyLeaderPageDto));
     }
 
+    /**
+     * 比例配置
+     *
+     * @param sysProportionConfig 实体
+     * @return 新增结果
+     */
+    @PostMapping("/addProportionConfig")
+    @ApiOperation(value = "比例配置")
+    public HttpResult add(@RequestBody SysProportionConfig sysProportionConfig) {
+        String proportion = sysProportionConfig.getProportion();
+        String proportionNum = sysProportionConfig.getOneProportion()+sysProportionConfig.getTwoProportion()
+                +sysProportionConfig.getThreeProportion()+sysProportionConfig.getFourProportion()
+                +sysProportionConfig.getFiveProportion();
+
+        if (proportion.equals(proportionNum)) {
+            throw new SystemException("总比例必须等于每级合伙人比例和");
+        }
+        Long id = sysProportionConfig.getId();
+        boolean b =false;
+        if (id == null) {
+            b = sysProportionConfigMapper.insert(sysProportionConfig)>0;
+        }else {
+            b = sysProportionConfigMapper.updateWithNull(sysProportionConfig);
+        }
+        return HttpResult.ok(b);
+    }
+
+    /**
+     * 编辑查询
+     * @param id
+     * @return
+     */
+    @GetMapping("/getProportionConfig")
+    @ApiOperation(value = "根据用户id查看比例配置")
+    public HttpResult getProportionConfig(@RequestParam("id") String id) {
+        return HttpResult.ok(sysProportionConfigService.getProportionConfig(id));
+    }
+    /**
+     * 血缘关系
+     */
+    @GetMapping("/getRelationInfo/{userId}")
+    @ApiOperation(value = "血缘关系")
+    public HttpResult getRelationInfo(@PathVariable("userId") String userId) {
+        return HttpResult.ok(sysPartnerService.getRelationInfo(userId));
+    }
+
+
+
 
 
 

+ 138 - 2
src/main/java/com/ydtech/modules/admin/controller/SysUserController.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.admin.controller;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -18,6 +19,9 @@ import com.ydtech.modules.admin.components.request.UnionPayRequest;
 import com.ydtech.modules.admin.components.response.UnionPayResponse;
 import com.ydtech.modules.admin.constants.RoleConstants;
 import com.ydtech.modules.admin.constants.UserWorkStatus;
+import com.ydtech.modules.admin.dao.SysAgencyLeaderMapper;
+import com.ydtech.modules.admin.dao.SysPartnerMapper;
+import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.dao.SysUserRecordMapper;
 import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.dto.*;
@@ -48,6 +52,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.models.auth.In;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -56,7 +61,9 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
+import java.time.LocalDate;
 import java.util.*;
 
 import static com.ydtech.constants.RedisConstant.PHONE_VERIFICATION_CODE_KEY;
@@ -101,6 +108,18 @@ public class SysUserController extends BaseController {
     private final SysUserTrackService sysUserTrackService;
 
     private final UnionPayRequestApiComponent unionPayRequestApiComponent;
+
+    private final SysPartnerService sysPartnerService;
+
+    private final SysPartnerMapper sysPartnerMapper;
+
+    private final SysAgencyLeaderService sysAgencyLeaderService;
+
+    private final SysUserMapper sysUserMapper;
+
+
+
+
     //    @PreAuthorize("hasAuthority('sys:user:delete')")
     @ApiOperation(value = "逻辑删除")
     @PostMapping(value = "/deleteFlag")
@@ -473,11 +492,54 @@ public class SysUserController extends BaseController {
         SysUserTrack sysUserTrack = new SysUserTrack(sysUser);
 
         sysUserTrackService.save(sysUserTrack);
-        return HttpResult.ok(sysUserService.updateById(sysUser));
-
+        Integer type = sysUser.getType();
+        if (type == 1) {
+            SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getUserId, sysUser.getId()));
+            if (sysPartner == null) {
+                //保存合伙人信息
+                SysPartnerDto sysPartnerDto = new SysPartnerDto();
+                sysPartnerDto.setUserId(sysUser.getId());
+                sysPartnerDto.setUserName(sysUser.getName());
+                sysPartnerDto.setSuggestId(sysUser.getReferrerId());
+                sysPartnerDto.setLevel(sysUser.getLevel());
+                sysPartnerService.insert(sysPartnerDto);
+            }
+        } else if (type == 2){
+            SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
+            SysDept sysDeptParent = sysDeptService.getById(sysDept.getParentId());
+            SysUser sysUserReferrerId = sysUserService.getById(sysUser.getReferrerId());
+            SysDeptVo sysDeptVo = new SysDeptVo();
+            sysDeptVo.setComlevel("5"); // 默认机构等级为5级
+            sysDeptVo.setComtype(sysUser.getDeptType());
+            sysDeptVo.setName(sysUser.getName() + "工作室"); // 以人名设置工作室名称
+            sysDeptVo.setDeptType("C"); // 默认为子公司
+            sysDeptVo.setParentId(sysDept.getParentId());
+            sysDeptVo.setManagementSource("jiameng"); //机构来源默认为加盟
+            sysDeptVo.setLeaderId(sysUser.getId()); // 负责人ID
+            sysDeptVo.setOrderNum(0);
+            sysDeptVo.setComattribute("procar"); //机构性质 车险
+            sysDeptVo.setProvince(sysDeptParent.getProvince()); // 默认省与负责人所在机构一样
+            sysDeptVo.setCity(sysDeptParent.getCity()); // 默认市与负责人所在机构一样
+            sysDeptVo.setArea(sysDeptParent.getArea()); // 默认区县与负责人所在机构一样
+            sysDeptVo.setAddress(""); // 工作室地址
+            sysDeptService.addDept(sysDeptVo);
+            SysAgencyLeaderDto sysAgencyLeaderDto = new SysAgencyLeaderDto();
+            sysAgencyLeaderDto.setUserId(sysUser.getId());
+            sysAgencyLeaderDto.setUserName(sysUser.getName());
+            sysAgencyLeaderDto.setDeptId(sysDeptVo.getId());
+            sysAgencyLeaderDto.setDeptName(sysDeptVo.getName());
+            sysAgencyLeaderDto.setSource(sysUser.getDeptSource());
+            sysAgencyLeaderDto.setComlevel(sysDeptVo.getComlevel());
+            sysAgencyLeaderDto.setSuggestId(sysUser.getReferrerId());
+            sysAgencyLeaderDto.setSuggestName(sysUser.getSuggestName());
+            sysAgencyLeaderDto.setSuggestLevel(sysUserReferrerId.getLevel());
+            sysAgencyLeaderService.insert(sysAgencyLeaderDto);
 
+        }
+        return HttpResult.ok(sysUserService.updateById(sysUser));
     }
 
+
     @ApiOperation(value = "(重构)审批不通过")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "userId", value = "用户ID"),
@@ -498,6 +560,10 @@ public class SysUserController extends BaseController {
         SysUserTrack sysUserTrack = new SysUserTrack(sysUser);
         sysUserTrack.setApproveMess(reason);
         sysUserTrackService.save(sysUserTrack);
+        Integer type = sysUser.getType();
+        if (type != null && type != 0) {
+            sysUserService.sendMsgPantner(sysUser.getMobile());
+        }
 
         return HttpResult.ok(sysUserService.updateById(sysUser));
 
@@ -758,6 +824,15 @@ public class SysUserController extends BaseController {
         //by gws 21	团队长 20	代理人 必须归属团队
         // 22	后线人员 必须归属部门
         SysUser sysUser = sysUserVo.getSysUser();
+        if (sysUserVo.getIsPartner() != null && sysUserVo.getIsPartner().equals("1")) {
+            SysUserInfo sysUserInfo = new SysUserInfo();
+            SysUser partnerId = sysUserService.getById(sysUserVo.getSysUser().getReferrerId());
+            sysUser.setDeptId(partnerId.getDeptId());
+            sysUser.setStatus(2); //直接默认为入司待审核
+            LocalDate birthday = LocalDate.parse(sysUser.getIdentity().substring(6, 10) + "-" + sysUser.getIdentity().substring(10, 12) + "-" + sysUser.getIdentity().substring(12, 14));
+            sysUserInfo.setBirthday(birthday);
+            sysUserVo.setSysUserInfo(sysUserInfo);
+        }
         if (StringUtils.isNullOrEmpty(sysUser)) {
             return HttpResult.error("用户信息不能为空");
         }
@@ -799,6 +874,67 @@ public class SysUserController extends BaseController {
         return sysUserService.saveUserInfo(sysUserVo);
     }
 
+    @ApiOperation(value = "保存用户基本详情信息")
+    @PostMapping(value = "/saveTeamLeader")
+    public HttpResult saveTeamLeader(@RequestBody SysUser2Vo sysUserVo) {
+        SysUser sysUser = sysUserVo.getSysUser();
+        sysUser.setType(3);
+        SysUserInfo sysUserInfo = new SysUserInfo();
+        LocalDate birthday = LocalDate.parse(sysUser.getIdentity().substring(6, 10) + "-" + sysUser.getIdentity().substring(10, 12) + "-" + sysUser.getIdentity().substring(12, 14));
+        sysUserInfo.setBirthday(birthday);
+        sysUserVo.setSysUserInfo(sysUserInfo);
+        // 先创建工作室下的团队
+        SysDept sysDept = sysDeptService.getOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getLeaderId, sysUser.getReferrerId()));
+        SysDeptVo sysDeptVo = new SysDeptVo();
+        sysDeptVo.setName(sysUser.getName() + "团队"); // 以人名设置工作室名称
+        sysDeptVo.setDeptType("D"); // 默认为子公司
+        sysDeptVo.setParentId(sysDept.getId());
+        sysDeptVo.setManagementSource(sysDept.getManagementSource()); //机构来源
+        sysDeptVo.setOrderNum(0);
+        sysDeptService.addDept(sysDeptVo);
+
+
+        if (StringUtils.isNullOrEmpty(sysUser)) {
+            return HttpResult.error("用户信息不能为空");
+        }
+        if (StringUtils.isNullOrEmpty(sysDeptVo.getId())) {
+            return HttpResult.error("机构ID不能为空");
+        }
+        if (StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
+            throw new SystemException("角色id不能为空");
+        }
+        //获取机构层级
+        int deptLevel = sysUserService.getDeptLevel1(sysDeptVo.getId());
+        if (!StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
+            if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())
+                    || RoleConstants.R20.getCode().equals(sysUser.getRoleId())
+                    || RoleConstants.R19.getCode().equals(sysUser.getRoleId())) {//19 出单员 21	团队长 20	代理人
+
+                if (deptLevel != 6) {
+                    throw new SystemException("团队长、代理人、出单员只能归属团队中");
+                }
+                //如果为团队长,判断是否已经存在团队长,存在不允许添加   add by  hxl  2024-05-07  ============begin
+                if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())) {
+                    int count = sysUserService.getCountByDeptAndRoleId(sysUser);
+                    if (count > 0) {
+                        throw new SystemException("该机构已存在团队长,不允许再添加!!");
+                    }
+                }
+                // =========================add by hxl   end ====================
+            } else if (RoleConstants.R18.getCode().equals(sysUser.getRoleId())) { // 42 门店长
+                if (deptLevel != 5) {
+                    throw new SystemException("机构管理员只能归属机构中");
+                }
+            } else if (RoleConstants.R17.getCode().equals(sysUser.getRoleId())) {
+                if (deptLevel != 4) {
+                    throw new SystemException("部长只能归属于4级");
+                }
+            }
+
+        }
+        return sysUserService.saveUserInfo1(sysUserVo, sysDeptVo);
+    }
+
 
     @ApiOperation(value = "修改用户详情信息")
     @PostMapping(value = "/updateUserInfo/{userId}")

+ 3 - 0
src/main/java/com/ydtech/modules/admin/dao/SysAgencyLeaderMapper.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.SysAgencyLeader;
 import com.ydtech.modules.admin.model.dto.AgencyUserInsAreaDto;
 import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
+import com.ydtech.modules.admin.model.dto.SysAgencyLeaderListDto;
 import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
 import com.ydtech.modules.admin.model.vo.AgencyUserInsAreaVo;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
@@ -48,5 +49,7 @@ public interface SysAgencyLeaderMapper extends BaseMapper<SysAgencyLeader> {
      * @return
      */
     IPage<SysAgencyLeader> queryLeaderPage(Page page,@Param("dto") SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
+
+    int updateByIds(@Param("dto") SysAgencyLeaderListDto sysAgencyLeaderDto);
 }
 

+ 8 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPartnerMapper.java

@@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.SysAgencyLeader;
 import com.ydtech.modules.admin.model.SysPartner;
+import com.ydtech.modules.admin.model.dto.CountUserDto;
 import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
+import com.ydtech.modules.admin.model.vo.CountUserNumVo;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
 import com.ydtech.modules.admin.model.vo.PartnerBalanceVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -36,5 +38,11 @@ public interface SysPartnerMapper extends BaseMapper<SysPartner> {
     List<SysPartnerConsoleDto> getTreeDeptUser(PartnerBalanceVo partnerBalanceVo);
 
     List<SysPartner> queryByLoginId(@Param("userId") String userId);
+
+    List<CountUserNumVo> queryDeptByTime(@Param("userId") String userId, @Param("dto") CountUserDto countUserDto);
+    List<CountUserNumVo> queryDeptByTimes(@Param("userId") String userId, @Param("dto") CountUserDto countUserDto);
+
+    List<CountUserNumVo> queryUserByTimes(@Param("deptIds") List<String> deptIds,@Param("dto") CountUserDto countUserDto);
+    List<CountUserNumVo> queryUserByTime(@Param("deptIds") List<String> deptIds,@Param("dto") CountUserDto countUserDto);
 }
 

+ 20 - 0
src/main/java/com/ydtech/modules/admin/dao/SysProportionConfigMapper.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysProportionConfig;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * (SysPortionalConfiguration)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-10-21 10:02:25
+ */
+@Mapper
+public interface SysProportionConfigMapper extends BaseMapper<SysProportionConfig> {
+
+    boolean updateWithNull(SysProportionConfig sysProportionConfig);
+
+
+}
+

+ 54 - 0
src/main/java/com/ydtech/modules/admin/model/SysProportionConfig.java

@@ -0,0 +1,54 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * (SysPortionalConfiguration)实体类
+ *
+ * @author makejava
+ * @since 2024-10-21 10:02:25
+ */
+@Data
+public class SysProportionConfig implements Serializable {
+    private static final long serialVersionUID = -52994380963075044L;
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Long id;
+    /**
+     * 一级合伙人
+     */
+    private String userId;
+    /**
+     * 总比例
+     */
+    private String proportion;
+    /**
+     * 一级比例
+     */
+    private String oneProportion;
+    /**
+     * 二级比例
+     */
+    private String twoProportion;
+    /**
+     * 三级比例
+     */
+    private String threeProportion;
+    /**
+     * 四级比例
+     */
+    private String fourProportion;
+    /**
+     * 五级比例
+     */
+    private String fiveProportion;
+
+
+}
+

+ 4 - 0
src/main/java/com/ydtech/modules/admin/model/SysRelationPerson.java

@@ -33,6 +33,10 @@ public class SysRelationPerson implements Serializable {
      * 推荐人id
      */
     private String suggestId;
+    /**
+     * 推荐人level
+     */
+    private int suggestLevel;
     /**
      * '推荐等级(0:直接推荐;1:间接推荐)'
      */

+ 23 - 1
src/main/java/com/ydtech/modules/admin/model/SysUser.java

@@ -178,7 +178,7 @@ public class SysUser extends BaseEntity {
     @TableField(value = "operatorCode")
     private String operatorCode;
 
-    @TableField(exist = false)
+    @TableField(value = "referrer_id")
     @Excel(name = "推荐人ID")
     private String referrerId;
 
@@ -225,6 +225,28 @@ public class SysUser extends BaseEntity {
     @ApiModelProperty("电销管理人名称")
     private String managerName;
 
+    @ApiModelProperty(value = "用户类型:0:普通用户 1:合伙人 2:工作室管理员")
+    private Integer type;
+
+    @ApiModelProperty(value = "合伙人等级;1,2,3,4,5")
+    private Integer level;
+
+    @ApiModelProperty(value = "推荐人id")
+    @TableField(exist = false)
+    private String suggestId;
+
+    @ApiModelProperty(value = "推荐人name")
+    @TableField(exist = false)
+    private String suggestName;
+
+    @ApiModelProperty(value = "申请机构来源 1 渠道 2 个代")
+    @TableField(value = "dept_source")
+    private String deptSource;
+
+    @ApiModelProperty(value = "申请机构类型 股份 直营 加盟" )
+    @TableField(value = "dept_type")
+    private String deptType;
+
     /**
      * 验证用户
      *

+ 15 - 0
src/main/java/com/ydtech/modules/admin/model/dto/CountUserDto.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CountUserDto {
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+    @ApiModelProperty(value = "类型:1:团队 2:代理人")
+    private int type;
+}

+ 15 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderDeptDto.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.ydtech.modules.admin.model.SysAgencyLeader;
+import com.ydtech.modules.admin.model.SysDept;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SysAgencyLeaderDeptDto {
+
+    @ApiModelProperty(value = "工作室信息")
+    private SysDept sysDept;
+    @ApiModelProperty(value = "工作室管理员信息")
+    private SysAgencyLeader sysAgencyLeader;
+}

+ 2 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderDto.java

@@ -54,4 +54,6 @@ public class SysAgencyLeaderDto {
     @ApiModelProperty(value = "推荐人name")
     private String suggestName;
 
+    @ApiModelProperty(value = "推荐人等级")
+    private int suggestLevel;
 }

+ 13 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderListDto.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.admin.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SysAgencyLeaderListDto {
+
+    private String proportional;
+
+    private List<Integer> ids;
+}

+ 4 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerDto.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.admin.model.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -34,6 +35,9 @@ public class SysPartnerDto {
     @ApiModelProperty(value = "推荐人name")
     private String suggestName;
 
+    @ApiModelProperty(value = "合伙人等级;1,2,3,4,5")
+    private Integer level;
+
 
 
 

+ 7 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerPageDto.java

@@ -40,4 +40,11 @@ public class SysPartnerPageDto {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "结束时间")
     private String endTime;
+
+    @ApiModelProperty(value = "合伙人等级;1,2,3,4,5")
+    private Integer level;
+    @ApiModelProperty(value = "状态  1:正常   0:删除 2:新注册 3:审批不通过")
+    private Integer status;
+
+
 }

+ 2 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AAPLoginVo.java

@@ -13,4 +13,6 @@ public class AAPLoginVo {
 
     @ApiModelProperty(value = "类型:1.合伙人;2机构负责人")
     private int type;
+    @ApiModelProperty(value = "类型:合伙人等级")
+    private int level;
 }

+ 4 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AppSysPartnerVo.java

@@ -2,12 +2,16 @@ package com.ydtech.modules.admin.model.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
 import java.util.List;
 
 @Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class AppSysPartnerVo {
 
     /**

+ 3 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AppUserInfoVo.java

@@ -53,4 +53,7 @@ public class AppUserInfoVo {
     @ApiModelProperty(value = "等级背景")
     private SysPartnerConfig sysPartnerConfig;
 
+    @ApiModelProperty(value = "类型:合伙人等级")
+    private int level;
+
 }

+ 14 - 0
src/main/java/com/ydtech/modules/admin/model/vo/CountUserNumVo.java

@@ -0,0 +1,14 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CountUserNumVo {
+
+    @ApiModelProperty("时间段")
+    private String time;
+
+    @ApiModelProperty("人数")
+    private Long countNum;
+}

+ 20 - 0
src/main/java/com/ydtech/modules/admin/model/vo/CountUserVo.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CountUserVo {
+
+    @ApiModelProperty(value = "总的前线人数")
+    private Integer countSum;
+    @ApiModelProperty(value = "团队数")
+    private Integer deptSum;
+    @ApiModelProperty(value = "团队长数")
+    private Integer deptLeaderSum;
+
+    private List<CountUserNumVo> countUserNumVoList;
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysAgencyLeaderDeptVo.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.ydtech.modules.admin.model.SysAgencyLeader;
+import com.ydtech.modules.admin.model.SysDept;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SysAgencyLeaderDeptVo {
+
+    @ApiModelProperty(value = "工作室信息")
+    private SysDept sysDept;
+    @ApiModelProperty(value = "工作室管理员信息")
+    private SysAgencyLeader sysAgencyLeader;
+}

+ 5 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysDeptVo.java

@@ -19,6 +19,8 @@ import java.util.List;
 public class SysDeptVo implements Serializable {
 
     private static final long serialVersionUID = 4759609045226731089L;
+    @ApiModelProperty(value = "机构id")
+    private String id;
 
     @ApiModelProperty(value = "机构名称")
     private String name;
@@ -53,6 +55,9 @@ public class SysDeptVo implements Serializable {
     @ApiModelProperty(value = "机构地址")
     private String address;
 
+    @ApiModelProperty(value = "负责人Id")
+    private String leaderId;
+
     @ApiModelProperty(value = "负责人姓名")
     private String leadername;
 

+ 24 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysPartnerVo.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.admin.model.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ydtech.modules.admin.model.SysPartner;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class SysPartnerVo extends SysPartner {
+
+    @ApiModelProperty(value = "部门name")
+    private String deptName;
+
+    @ApiModelProperty(value = "机构name")
+    private String agencyName;
+
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+
+
+}

+ 7 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUser2Vo.java

@@ -22,11 +22,18 @@ public class SysUser2Vo {
     @ApiModelProperty("用户详情信息")
     private SysUserInfo sysUserInfo;
 
+    @ApiModelProperty("是否是合伙人")
+    private String isPartner;
+
+    @ApiModelProperty("推荐人Id")
+    private String referrerId;
 
     @ApiModelProperty("影像信息")
     private List<EsmUserImageVo> esmUserImageVo;
 
 
+
+
     public List<EsmUserImageVo> getEsmUserImageVo() {
         return ObjectUtils.isEmpty(esmUserImageVo) ? Collections.emptyList() : esmUserImageVo;
     }

+ 2 - 2
src/main/java/com/ydtech/modules/admin/model/vo/SysUserPartner.java

@@ -47,8 +47,8 @@ public class SysUserPartner {
     @TableField(exist = false)
     @ApiModelProperty(value = "所属机构父ID")
     private String parentId;
-    @ApiModelProperty(value = "是否为合伙人: 1:是  0:否")
-    private String type;
+    @ApiModelProperty(value = "合伙人等级")
+    private Integer type;
 
 
 

+ 4 - 0
src/main/java/com/ydtech/modules/admin/service/SysAgencyLeaderService.java

@@ -31,6 +31,8 @@ public interface SysAgencyLeaderService extends IService<SysAgencyLeader> {
 
 
     boolean edit(SysAgencyLeaderDto sysAgencyLeaderDto);
+    boolean editAll(SysAgencyLeaderListDto sysAgencyLeaderDto);
+    void editInfo(SysAgencyLeaderDeptDto sysAgencyLeaderDeptDto);
 
     boolean delById(Integer id);
 
@@ -64,4 +66,6 @@ public interface SysAgencyLeaderService extends IService<SysAgencyLeader> {
     IPage<AgencyUserInsAreaVo> queryInsAreaPageById(AgencyUserInsAreaDto agencyUserInsAreaDto);
 
     HttpResult queryUserInsAreaExcel(AgencyUserInsAreaDto agencyUserInsAreaDto);
+
+    SysAgencyLeaderDeptVo queryInfoById(Integer id);
 }

+ 1 - 1
src/main/java/com/ydtech/modules/admin/service/SysDeptService.java

@@ -40,7 +40,7 @@ public interface SysDeptService extends IService<SysDept> {
      *
      * @param sysDeptVo 机构信息
      */
-    void addDept(SysDeptVo sysDeptVo);
+    SysDeptVo addDept(SysDeptVo sysDeptVo);
 
 
     /**

+ 4 - 0
src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java

@@ -59,4 +59,8 @@ public interface SysPartnerService extends IService<SysPartner> {
     FilterPartnerInfoVo queryFilterPartnerInfo(FilterPartnerInfoDto filterPartnerInfoDto);
 
     PartnerLeaderInfoVo partnerLeaderInfo(PartnerGradeInfo partnerGradeInfo);
+
+    List<SysPartnerVo> getRelationInfo(String userId);
+
+    CountUserVo getCountUser(CountUserDto countUserDto);
 }

+ 17 - 0
src/main/java/com/ydtech/modules/admin/service/SysProportionConfigService.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.admin.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysProportionConfig;
+
+/**
+ * (SysPortionalConfiguration)表服务接口
+ *
+ * @author makejava
+ * @since 2024-10-21 10:02:25
+ */
+public interface SysProportionConfigService extends IService<SysProportionConfig> {
+
+
+    SysProportionConfig getProportionConfig(String id);
+}

+ 8 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserService.java

@@ -14,13 +14,17 @@ import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.base.model.dto.PageDto;
 import com.ydtech.modules.base.model.vo.PageVo;
+import org.springframework.web.bind.annotation.RequestParam;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 public interface SysUserService extends BaseIService<SysUser> {
 
+    HttpResult sendMsgPantner(String phone);
+
 
     SysUser findByUsername(String username);
 
@@ -125,6 +129,8 @@ public interface SysUserService extends BaseIService<SysUser> {
 
     HttpResult saveUserInfo(SysUser2Vo sysUserVo);
 
+    HttpResult saveUserInfo1(SysUser2Vo sysUserVo,SysDeptVo sysDeptVo);
+
     /**
      * 人员修改
      *
@@ -138,6 +144,8 @@ public interface SysUserService extends BaseIService<SysUser> {
 
     int getDeptLevel(SysUser2Vo sysUser2Vo);
 
+    int getDeptLevel1(String deptId);
+
     /**
      * 根据机构代码,查询所有人员
      *

+ 74 - 19
src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyLeaderServiceImpl.java

@@ -112,14 +112,6 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
             }
         }
 
-        List<SysPartner> sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
-        if (sysPartners.size() > 0) {
-            List<String> userIdList = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
-            if (userIdList.contains(sysAgencyLeaderDto.getUserId())) {
-                throw new DescribeException(sysAgencyLeaderDto.getUserName() + "已是合伙人,不可设置为机构负责人");
-            }
-        }
-
 
         SysAgencyLeader sysAgencyLeader = BeanUtil.copyProperties(sysAgencyLeaderDto, SysAgencyLeader.class);
         sysAgencyLeader.setCreateTime(new Date());
@@ -132,6 +124,7 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
             sysRelationPerson.setAgencyLeaderId(sysAgencyLeader.getUserId());
             sysRelationPerson.setCreateBy(user.getId());
             sysRelationPerson.setCreateTime(new Date());
+            sysRelationPerson.setSuggestLevel(sysAgencyLeaderDto.getSuggestLevel());
             sysRelationPerson.setSuggestId(sysAgencyLeaderDto.getSuggestId());
             sysRelationPerson.setSource(0);
             sysRelationPerson.setType(1);
@@ -144,10 +137,13 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
             if (sysRelationPersonList.size() > 0) {
                 for (SysRelationPerson sysRelation : sysRelationPersonList) {
                     SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
+                    SysPartner sysPartner2 = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                            .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysRelation.getSuggestId()));
                     sysRelationPerson1.setAgencyLeaderId(sysAgencyLeader.getUserId());
                     sysRelationPerson1.setCreateBy(user.getId());
                     sysRelationPerson1.setCreateTime(new Date());
                     sysRelationPerson1.setSuggestId(sysRelation.getSuggestId());
+                    sysRelationPerson1.setSuggestLevel(sysPartner2.getType());
                     sysRelationPerson1.setSource(1);
                     sysRelationPerson1.setType(1);
                     b = sysRelationPersonMapper.insert(sysRelationPerson1) > 0;
@@ -155,17 +151,6 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
 
             }
         }
-        //添加抽层比例,一个月只能设置一次
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-        String format = simpleDateFormat.format(new Date());
-        SysPartnerTime sysPartnerTime = new SysPartnerTime();
-        sysPartnerTime.setType(2);
-        sysPartnerTime.setCreateTime(format);
-        sysPartnerTime.setUserId(sysAgencyLeaderDto.getUserId());
-        sysPartnerTime.setUserName(sysAgencyLeaderDto.getUserName());
-        sysPartnerTime.setNewProportional(sysAgencyLeaderDto.getProportional());
-
-        sysPartnerTimeMapper.insert(sysPartnerTime);
         return b;
     }
 
@@ -347,6 +332,51 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
         return b;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void editInfo(SysAgencyLeaderDeptDto sysAgencyLeaderDeptDto) {
+        SysDept sysDept = sysAgencyLeaderDeptDto.getSysDept();
+        SysDept byId = sysDeptService.getById(sysDept.getId());
+        if (sysDept.getManagementSource() != null){
+            if (!sysDept.getManagementSource().equals(byId.getManagementSource())) {
+                throw new DescribeException("机构已被设置来源无法修改");
+            }
+        }
+        sysDeptService.updateDept(sysDept);
+
+        //不修改负责人userId传null
+//        String userId = sysAgencyLeaderDeptDto.getSysAgencyLeader().getUserId();
+//        String loginId = BaseController.getUserId();
+//        SysAgencyLeader sysAgencyLeader1 = sysAgencyLeaderMapper.selectById(sysAgencyLeaderDeptDto.getSysAgencyLeader().getId());
+//        //修改管理员
+//        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new QueryWrapper<SysAgencyLeader>().lambda().eq(SysAgencyLeader::getDelFlag, 1));
+//        List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
+//        if (userIdList.contains(userId)) {
+//            throw new DescribeException(sysAgencyLeaderDeptDto.getSysAgencyLeader().getUserName() + "已是工作室管理员,不可重复配置");
+//        }
+//        List<SysPartner> sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
+//        if (sysPartners.size() > 0) {
+//            List<String> list = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+//            if (list.contains(sysAgencyLeaderDeptDto.getSysAgencyLeader().getUserId())) {
+//                throw new DescribeException(sysAgencyLeaderDeptDto.getSysAgencyLeader().getUserName() + "已是合伙人,不可设置为机构负责人");
+//            }
+//        }
+//
+//        //修改负责人时解除合伙人或者推荐人与机构负责人的关系
+//        List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+//                .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader1.getUserId())
+//                .eq(SysRelationPerson::getDelFlag, 1)
+//                .eq(SysRelationPerson::getType, 1));
+//        if (sysRelationPeople.size() > 0) {
+//            throw new DescribeException(sysAgencyLeader1.getUserName() + "有推荐关系,不允许修改");
+//        }
+//
+//        SysAgencyLeader sysAgencyLeader = BeanUtil.copyProperties(sysAgencyLeaderDeptDto.getSysAgencyLeader(), SysAgencyLeader.class);
+//        sysAgencyLeader.setUpdateTime(new Date());
+//        sysAgencyLeader.setUpdateBy(loginId);
+//        sysAgencyLeaderMapper.updateById(sysAgencyLeader);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean delById(Integer id) {
@@ -1049,5 +1079,30 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
 
     }
 
+    @Override
+    public boolean editAll(SysAgencyLeaderListDto sysAgencyLeaderDto) {
+        String loginId = BaseController.getUserId();
+        if (sysAgencyLeaderDto ==null) {
+            throw new DescribeException( "批量修改参数不能为空");
+        }
+
+
+        return sysAgencyLeaderMapper.updateByIds(sysAgencyLeaderDto)>0;
+    }
+
+    @Override
+    public SysAgencyLeaderDeptVo queryInfoById(Integer id) {
+        SysAgencyLeaderDeptVo sysAgencyLeaderDeptVo = new SysAgencyLeaderDeptVo();
+        SysAgencyLeader sysAgencyLeader = baseMapper.selectById(id);
+        SysUser sysUser = sysUserMapper.selectById(sysAgencyLeader.getSuggestId());
+        sysAgencyLeader.setSuggestName(sysUser.getName());
+        sysAgencyLeaderDeptVo.setSysAgencyLeader(sysAgencyLeader);
+
+        SysDept sysDept = sysDeptMapper.selectById(sysAgencyLeader.getDeptId());
+        sysAgencyLeaderDeptVo.setSysDept(sysDept);
+
+        return sysAgencyLeaderDeptVo;
+    }
+
 
 }

+ 3 - 1
src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java

@@ -204,7 +204,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
 
     @Override
     @Transactional
-    public void addDept(SysDeptVo sysDeptVo) {
+    public SysDeptVo addDept(SysDeptVo sysDeptVo) {
         SysDept sysDept = new SysDept();
         BeanUtils.copyProperties(sysDeptVo, sysDept);
         String comlevel = ObjectUtils.isEmpty(sysDept.getComlevel()) ? "" : sysDept.getComlevel();
@@ -299,6 +299,8 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
 
         boolean b = save(sysDept);
         AssertionUtils.isSucceed(b, "删除失败");
+        sysDeptVo.setId(sysDept.getId());
+        return sysDeptVo;
     }
 
     @Override

+ 595 - 271
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java

@@ -27,12 +27,14 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.ZoneId;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 配置机构合伙人表(SysPartner)表服务实现类
@@ -80,6 +82,9 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
     @Resource
     private SysPartnerConfigMapper sysPartnerConfigMapper;
 
+    @Resource
+    private SysProportionConfigMapper sysProportionConfigMapper;
+
 
     @Override
     public List<SysPartner> queryRecommendAndPartner(String id) {
@@ -95,36 +100,78 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         return sysPartnerList;
     }
 
+//    @Override
+//    public BasePageResult<SysUserPartner> queryByPage(SysPartnerPageDto sysPartnerPageDto) {
+//        Page<SysUser> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
+//        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getDelFlag, 1));
+//        List<String> stringList = null;
+//        if (sysAgencyLeaders.size() > 0) {
+//            stringList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
+//
+//        }
+//        List<String> idList = null;
+//        List<SysDept> sysDeptLists = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>().eq(SysDept::getComlevel, 4).eq(SysDept::getDelFlag, 0));
+//        if (sysDeptLists.size() > 0) {
+//            List<String> collect = sysDeptLists.stream().map(SysDept::getId).collect(Collectors.toList());
+//
+//            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+//                    .in(SysDept::getParentId, collect)
+//                    .eq(SysDept::getDelFlag, 0).isNull(SysDept::getComlevel).eq(SysDept::getDeptType, "D"));
+//            if (sysDeptList.size() > 0) {
+//                idList = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
+//            }
+//        }
+//        LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
+//        wrapper.ne(SysUser::getStatus, 0);
+//        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysUser::getId, sysPartnerPageDto.getUserId());
+//        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysUser::getName, sysPartnerPageDto.getUserName());
+//        wrapper.likeRight(StringUtils.isNotEmpty(sysPartnerPageDto.getDeptId()), SysUser::getId, sysPartnerPageDto.getDeptId());
+//        wrapper.notLike(SysUser::getId, "M");
+//        wrapper.notIn(CollectionUtil.isNotEmpty(stringList), SysUser::getId, stringList);
+//        wrapper.in(CollectionUtil.isNotEmpty(idList), SysUser::getDeptId, idList);
+//        wrapper.orderByDesc(SysUser::getCreateTime);
+//
+//        Page<SysUser> insOrdersPage = sysUserService.page(page, wrapper);
+//        List<SysUser> records = insOrdersPage.getRecords();
+//
+//        List<SysUserPartner> sysUserPartners = BeanUtil.copyToList(records, SysUserPartner.class);
+//
+//        if (sysUserPartners.size() > 0) {
+//            for (SysUserPartner user : sysUserPartners) {
+//                SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getId, user.getDeptId()).eq(SysDept::getDelFlag, 0));
+//                user.setParentId(sysDept.getParentId());
+//                user.setDeptName(sysDept.getName());
+//                SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+//                        .eq(SysPartner::getUserId, user.getId()).eq(SysPartner::getDelFlag, 1));
+//                if (sysPartner != null) {
+//                    user.setType("1");
+//                    user.setSuggestId(sysPartner.getSuggestId());
+//                    SysUser sysUser = sysUserMapper.selectById(sysPartner.getSuggestId());
+//                    if (sysUser != null) {
+//                        user.setSuggestName(sysUser.getName());
+//                    }
+//                    user.setProportional(sysPartner.getProportional());
+//                }
+//            }
+//
+//        }
+//
+//
+//        return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+//                sysUserPartners);
+//    }
+
     @Override
     public BasePageResult<SysUserPartner> queryByPage(SysPartnerPageDto sysPartnerPageDto) {
         Page<SysUser> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
-        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getDelFlag, 1));
-        List<String> stringList = null;
-        if (sysAgencyLeaders.size() > 0) {
-            stringList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
-
-        }
-        List<String> idList = null;
-        List<SysDept> sysDeptLists = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>().eq(SysDept::getComlevel, 4).eq(SysDept::getDelFlag, 0));
-        if (sysDeptLists.size() > 0) {
-            List<String> collect = sysDeptLists.stream().map(SysDept::getId).collect(Collectors.toList());
 
-            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
-                    .in(SysDept::getParentId, collect)
-                    .eq(SysDept::getDelFlag, 0).isNull(SysDept::getComlevel).eq(SysDept::getDeptType, "D"));
-            if (sysDeptList.size() > 0) {
-                idList = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
-            }
-        }
         LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
-        wrapper.ne(SysUser::getStatus, 0);
         wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysUser::getId, sysPartnerPageDto.getUserId());
         wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysUser::getName, sysPartnerPageDto.getUserName());
-        wrapper.likeRight(StringUtils.isNotEmpty(sysPartnerPageDto.getDeptId()), SysUser::getId, sysPartnerPageDto.getDeptId());
-        wrapper.notLike(SysUser::getId, "M");
-        wrapper.notIn(CollectionUtil.isNotEmpty(stringList), SysUser::getId, stringList);
-        wrapper.in(CollectionUtil.isNotEmpty(idList), SysUser::getDeptId, idList);
-        wrapper.orderByDesc(SysUser::getCreateTime);
+        wrapper.eq(SysUser::getType, 1);
+        wrapper.eq(sysPartnerPageDto.getLevel() != null, SysUser::getLevel, sysPartnerPageDto.getLevel());
+        wrapper.in(SysUser::getStatus, Arrays.asList(1, 4, 5, 6, 7));
+
 
         Page<SysUser> insOrdersPage = sysUserService.page(page, wrapper);
         List<SysUser> records = insOrdersPage.getRecords();
@@ -133,19 +180,50 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
 
         if (sysUserPartners.size() > 0) {
             for (SysUserPartner user : sysUserPartners) {
+                SysUser sysUser1 = sysUserMapper.selectById(user.getId());
+                user.setName(sysUser1.getName());
                 SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getId, user.getDeptId()).eq(SysDept::getDelFlag, 0));
                 user.setParentId(sysDept.getParentId());
                 user.setDeptName(sysDept.getName());
                 SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
-                        .eq(SysPartner::getUserId, user.getId()).eq(SysPartner::getDelFlag, 1));
+                        .eq(SysPartner::getUserId, user.getId()));
                 if (sysPartner != null) {
-                    user.setType("1");
-                    user.setSuggestId(sysPartner.getSuggestId());
-                    SysUser sysUser = sysUserMapper.selectById(sysPartner.getSuggestId());
-                    if (sysUser != null) {
-                        user.setSuggestName(sysUser.getName());
+                    user.setType(sysPartner.getType());
+                    String suggestId = sysPartner.getSuggestId();
+                    if (suggestId != null) {
+                        user.setSuggestId(sysPartner.getSuggestId());
+                        SysUser sysUser = sysUserMapper.selectById(sysPartner.getSuggestId());
+                        if (sysUser != null) {
+                            user.setSuggestName(sysUser.getName());
+                        }
+                    }
+                    //查看等级
+                    int type = sysPartner.getType();
+                    if (type == 1) {
+                        SysProportionConfig sysProportionConfig = sysProportionConfigMapper.selectOne(new LambdaQueryWrapper<SysProportionConfig>()
+                                .eq(SysProportionConfig::getUserId, sysPartner.getUserId()));
+                        if (sysProportionConfig == null) continue;
+                        user.setProportional(sysProportionConfig.getOneProportion());
+
+                    } else {
+                        SysRelationPerson sysRelationPeople = sysRelationPersonMapper.selectOne(new LambdaQueryWrapper<SysRelationPerson>()
+                                .eq(SysRelationPerson::getAgencyLeaderId, user.getId())
+                                .eq(SysRelationPerson::getType, 0)
+                                .eq(SysRelationPerson::getSuggestLevel, 1));
+                        if (sysRelationPeople == null) continue;
+                        SysProportionConfig sysProportionConfig = sysProportionConfigMapper.selectOne(new LambdaQueryWrapper<SysProportionConfig>()
+                                .eq(SysProportionConfig::getUserId, sysRelationPeople.getSuggestId()));
+                        if (sysProportionConfig == null) continue;
+                        if (type == 2) {
+                            user.setProportional(sysProportionConfig.getTwoProportion());
+                        } else if (type == 3) {
+                            user.setProportional(sysProportionConfig.getThreeProportion());
+                        } else if (type == 4) {
+                            user.setProportional(sysProportionConfig.getFourProportion());
+                        } else if (type == 5) {
+                            user.setProportional(sysProportionConfig.getFiveProportion());
+                        }
                     }
-                    user.setProportional(sysPartner.getProportional());
                 }
             }
 
@@ -156,42 +234,103 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                 sysUserPartners);
     }
 
+//    @Override
+//    @Transactional(rollbackFor = Exception.class)
+//    public boolean insert(SysPartnerDto sysPartnerDto) {
+//        List<SysPartner> sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
+//        if (sysPartners.size() > 0) {
+//            List<String> userIdList = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+//            if (userIdList.contains(sysPartnerDto.getUserId())) {
+//                throw new DescribeException(sysPartnerDto.getUserName() + "已是合伙人,不可重复设置");
+//            }
+//
+//        }
+//        //机构负责人不能配置为合伙人
+//        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getDelFlag, 1));
+//        if (sysAgencyLeaders.size() > 0) {
+//            //校验用户是否已经机构负责人
+//            List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
+//            if (userIdList.contains(sysPartnerDto.getUserId())) {
+//                throw new DescribeException(sysPartnerDto.getUserName() + "已是机构负责人,不可配置为合伙人");
+//            }
+//
+//        }
+//        SysPartner sysPartner = BeanUtil.copyProperties(sysPartnerDto, SysPartner.class);
+//        sysPartner.setCreateTime(new Date());
+//        sysPartner.setCreateBy(BaseController.getUser().getId());
+//        boolean b = false;
+//        if (sysPartnerDto.getSuggestId() != null) {
+//            SysPartner sysPartnerSuggest = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+//                    .eq(SysPartner::getUserId, sysPartnerDto.getSuggestId())
+//                    .eq(SysPartner::getDelFlag, 1));
+//            if (sysPartnerSuggest == null) throw new SystemException("推荐人不存在");
+//            sysPartner.setType(sysPartnerSuggest.getType() + 1);
+//            b = sysPartnerMapper.insert(sysPartner) > 0;
+//            //保存关系
+//            SysRelationPerson sysRelationPerson = new SysRelationPerson();
+//            sysRelationPerson.setAgencyLeaderId(sysPartnerDto.getUserId());
+//            sysRelationPerson.setSuggestId(sysPartnerDto.getSuggestId());
+//            //'推荐等级(0:直接推荐;1:间接推荐)
+//            sysRelationPerson.setSource(0);
+//            //推荐类型(0:合伙人  1:机构负责人)
+//            sysRelationPerson.setType(0);
+//            sysRelationPerson.setCreateBy(BaseController.getUser().getId());
+//            sysRelationPerson.setCreateTime(new Date());
+//            b = sysRelationPersonMapper.insert(sysRelationPerson) > 0;
+//            //查询合伙人的推荐人是否有上级
+//            List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+//                    .eq(SysRelationPerson::getAgencyLeaderId, sysPartnerDto.getSuggestId())
+//                    .eq(SysRelationPerson::getType, 0));
+//            if (sysRelationPeople.size() > 0) {
+//                for (SysRelationPerson relationPerson : sysRelationPeople) {
+//                    SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
+//                    sysRelationPerson1.setAgencyLeaderId(sysPartnerDto.getUserId());
+//                    sysRelationPerson1.setSuggestId(relationPerson.getSuggestId());
+//                    sysRelationPerson1.setSource(1);
+//                    //推荐类型(0:合伙人  1:机构负责人)
+//                    sysRelationPerson1.setType(0);
+//                    sysRelationPerson1.setCreateBy(BaseController.getUser().getId());
+//                    sysRelationPerson1.setCreateTime(new Date());
+//                    sysRelationPersonMapper.insert(sysRelationPerson1);
+//                }
+//            }
+//        } else {
+//            //无推荐人,等级为一级
+//            sysPartner.setType(1);
+//            b = sysPartnerMapper.insert(sysPartner) > 0;
+//        }
+//        //添加抽层比例,一个月只能设置一次
+//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+//        String format = simpleDateFormat.format(new Date());
+//        SysPartnerTime sysPartnerTime = new SysPartnerTime();
+//        sysPartnerTime.setType(1);
+//        sysPartnerTime.setCreateTime(format);
+//        sysPartnerTime.setUserId(sysPartnerDto.getUserId());
+//        sysPartnerTime.setUserName(sysPartnerDto.getUserName());
+//        sysPartnerTime.setNewProportional(sysPartnerDto.getProportional());
+//
+//        sysPartnerTimeMapper.insert(sysPartnerTime);
+//        return b;
+//    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean insert(SysPartnerDto sysPartnerDto) {
-        List<SysPartner> sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
-        if (sysPartners.size() > 0) {
-            List<String> userIdList = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
-            if (userIdList.contains(sysPartnerDto.getUserId())) {
-                throw new DescribeException(sysPartnerDto.getUserName() + "已是合伙人,不可重复设置");
-            }
 
-        }
-        //机构负责人不能配置为合伙人
-        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getDelFlag, 1));
-        if (sysAgencyLeaders.size() > 0) {
-            //校验用户是否已经机构负责人
-            List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
-            if (userIdList.contains(sysPartnerDto.getUserId())) {
-                throw new DescribeException(sysPartnerDto.getUserName() + "已是机构负责人,不可配置为合伙人");
-            }
-
-        }
         SysPartner sysPartner = BeanUtil.copyProperties(sysPartnerDto, SysPartner.class);
         sysPartner.setCreateTime(new Date());
         sysPartner.setCreateBy(BaseController.getUser().getId());
+        sysPartner.setType(sysPartnerDto.getLevel());
         boolean b = false;
+        b = sysPartnerMapper.insert(sysPartner) > 0;
         if (sysPartnerDto.getSuggestId() != null) {
-            SysPartner sysPartnerSuggest = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
-                    .eq(SysPartner::getUserId, sysPartnerDto.getSuggestId())
-                    .eq(SysPartner::getDelFlag, 1));
-            if (sysPartnerSuggest == null) throw new SystemException("推荐人不存在");
-            sysPartner.setType(sysPartnerSuggest.getType() + 1);
-            b = sysPartnerMapper.insert(sysPartner) > 0;
+            SysPartner sysPartner1 = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                    .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getSuggestId()));
             //保存关系
             SysRelationPerson sysRelationPerson = new SysRelationPerson();
             sysRelationPerson.setAgencyLeaderId(sysPartnerDto.getUserId());
             sysRelationPerson.setSuggestId(sysPartnerDto.getSuggestId());
+            sysRelationPerson.setSuggestLevel(sysPartner1.getType());
             //'推荐等级(0:直接推荐;1:间接推荐)
             sysRelationPerson.setSource(0);
             //推荐类型(0:合伙人  1:机构负责人)
@@ -206,8 +345,11 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             if (sysRelationPeople.size() > 0) {
                 for (SysRelationPerson relationPerson : sysRelationPeople) {
                     SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
+                    SysPartner sysPartner2 = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                            .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, relationPerson.getSuggestId()));
                     sysRelationPerson1.setAgencyLeaderId(sysPartnerDto.getUserId());
                     sysRelationPerson1.setSuggestId(relationPerson.getSuggestId());
+                    sysRelationPerson1.setSuggestLevel(sysPartner2.getType());
                     sysRelationPerson1.setSource(1);
                     //推荐类型(0:合伙人  1:机构负责人)
                     sysRelationPerson1.setType(0);
@@ -216,22 +358,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                     sysRelationPersonMapper.insert(sysRelationPerson1);
                 }
             }
-        } else {
-            //无推荐人,等级为一级
-            sysPartner.setType(1);
-            b = sysPartnerMapper.insert(sysPartner) > 0;
         }
-        //添加抽层比例,一个月只能设置一次
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-        String format = simpleDateFormat.format(new Date());
-        SysPartnerTime sysPartnerTime = new SysPartnerTime();
-        sysPartnerTime.setType(1);
-        sysPartnerTime.setCreateTime(format);
-        sysPartnerTime.setUserId(sysPartnerDto.getUserId());
-        sysPartnerTime.setUserName(sysPartnerDto.getUserName());
-        sysPartnerTime.setNewProportional(sysPartnerDto.getProportional());
-
-        sysPartnerTimeMapper.insert(sysPartnerTime);
         return b;
     }
 
@@ -430,11 +557,17 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                             historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
                         }
                     }
-                    agencyExtractFee.setHistoryFee(historyFee);
+                    agencyExtractFee.setHistoryFee(Optional.ofNullable(extractFee.subtract(historyFee)).orElse(BigDecimal.ZERO));
                     //可提现 = 总抽成-已提现
                     agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
 
+                }else {
+                    agencyExtractFee.setSumpremium(BigDecimal.ZERO);
+                    agencyExtractFee.setExtractFee(BigDecimal.ZERO);
+                    agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
+                    agencyExtractFee.setCashFee(BigDecimal.ZERO);
                 }
+
                 agencyExtractFeeList.add(agencyExtractFee);
 
             }
@@ -553,81 +686,94 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                 sysPartnerAPPPageVoList);
     }
 
+//    @Override
+//    @Transactional(rollbackFor = Exception.class)
+//    public boolean edit(SysPartnerDto sysPartnerDto) {
+//        //判断本月是否已修改比例
+//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+//        String format = simpleDateFormat.format(new Date());
+//        List<SysPartnerTime> sysPartnerTimes = sysPartnerTimeMapper.selectList(new LambdaQueryWrapper<SysPartnerTime>()
+//                .eq(SysPartnerTime::getCreateTime, format).eq(SysPartnerTime::getUserId, sysPartnerDto.getUserId()));
+//        if (sysPartnerTimes.size() > 0) {
+//            throw new DescribeException(format + "已设置过抽成比例,每月只能修改一次");
+//        }
+//        boolean b;
+//        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+//                .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getUserId()));
+//        if (sysPartner == null) throw new DescribeException("系统错误,请联系管理员!");
+//
+//        if (StringUtils.isNullOrEmpty(sysPartner.getSuggestId()) && StringUtils.isNotEmpty(sysPartnerDto.getSuggestId())) {
+//            SysPartner partner = new SysPartner();
+//            partner.setId(sysPartner.getId());
+//            partner.setProportional(sysPartnerDto.getProportional());
+//
+//            partner.setSuggestId(sysPartnerDto.getSuggestId());
+//            partner.setSuggestName(sysPartnerDto.getSuggestName());
+//            SysPartner sysPartnerSuggest = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+//                    .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getSuggestId()));
+//            if (sysPartnerSuggest == null) throw new SystemException("推荐人不存在");
+//            partner.setType(sysPartnerSuggest.getType() + 1);
+//            b = sysPartnerMapper.updateById(partner) > 0;
+//
+//            SysRelationPerson sysRelationPerson = new SysRelationPerson();
+//            sysRelationPerson.setAgencyLeaderId(sysPartnerDto.getUserId());
+//            sysRelationPerson.setSuggestId(sysPartnerDto.getSuggestId());
+//            //'推荐等级(0:直接推荐;1:间接推荐)
+//            sysRelationPerson.setSource(0);
+//            //推荐类型(0:合伙人  1:机构负责人)
+//            sysRelationPerson.setType(0);
+//            sysRelationPerson.setCreateBy(BaseController.getUser().getId());
+//            sysRelationPerson.setCreateTime(new Date());
+//            b = sysRelationPersonMapper.insert(sysRelationPerson) > 0;
+//            //查询合伙人的推荐人是否有上级
+//            List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+//                    .eq(SysRelationPerson::getAgencyLeaderId, sysPartnerDto.getSuggestId())
+//                    .eq(SysRelationPerson::getType, 0));
+//            if (sysRelationPeople.size() > 0) {
+//                for (SysRelationPerson relationPerson : sysRelationPeople) {
+//                    SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
+//                    sysRelationPerson1.setAgencyLeaderId(sysPartnerDto.getUserId());
+//                    sysRelationPerson1.setSuggestId(relationPerson.getSuggestId());
+//                    sysRelationPerson1.setSource(1);
+//                    //推荐类型(0:合伙人  1:机构负责人)
+//                    sysRelationPerson1.setType(0);
+//                    sysRelationPerson1.setCreateBy(BaseController.getUser().getId());
+//                    sysRelationPerson1.setCreateTime(new Date());
+//                    sysRelationPersonMapper.insert(sysRelationPerson1);
+//                }
+//            }
+//        } else {
+//            SysPartner partner = new SysPartner();
+//            partner.setId(sysPartner.getId());
+//            partner.setProportional(sysPartnerDto.getProportional());
+//
+//            b = sysPartnerMapper.updateById(partner) > 0;
+//        }
+//        //修改抽成比例记录改变过程
+//        SysPartnerTime sysPartnerTime = new SysPartnerTime();
+//        sysPartnerTime.setType(1);
+//        sysPartnerTime.setCreateTime(format);
+//        sysPartnerTime.setUserId(sysPartnerDto.getUserId());
+//        sysPartnerTime.setUserName(sysPartnerDto.getUserName());
+//        sysPartnerTime.setNewProportional(sysPartnerDto.getProportional());
+//        sysPartnerTime.setOldProportional(sysPartner.getProportional());
+//
+//        sysPartnerTimeMapper.insert(sysPartnerTime);
+//
+//        return b;
+//    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean edit(SysPartnerDto sysPartnerDto) {
-        //判断本月是否已修改比例
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-        String format = simpleDateFormat.format(new Date());
-        List<SysPartnerTime> sysPartnerTimes = sysPartnerTimeMapper.selectList(new LambdaQueryWrapper<SysPartnerTime>()
-                .eq(SysPartnerTime::getCreateTime, format).eq(SysPartnerTime::getUserId, sysPartnerDto.getUserId()));
-        if (sysPartnerTimes.size() > 0) {
-            throw new DescribeException(format + "已设置过抽成比例,每月只能修改一次");
-        }
-        boolean b;
         SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
                 .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getUserId()));
         if (sysPartner == null) throw new DescribeException("系统错误,请联系管理员!");
+        SysPartner partner = new SysPartner();
+        partner.setId(sysPartner.getId());
+        partner.setUserName(sysPartnerDto.getUserName());
 
-        if (StringUtils.isNullOrEmpty(sysPartner.getSuggestId()) && StringUtils.isNotEmpty(sysPartnerDto.getSuggestId())) {
-            SysPartner partner = new SysPartner();
-            partner.setId(sysPartner.getId());
-            partner.setProportional(sysPartnerDto.getProportional());
-
-            partner.setSuggestId(sysPartnerDto.getSuggestId());
-            partner.setSuggestName(sysPartnerDto.getSuggestName());
-            SysPartner sysPartnerSuggest = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
-                    .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getSuggestId()));
-            if (sysPartnerSuggest == null) throw new SystemException("推荐人不存在");
-            partner.setType(sysPartnerSuggest.getType() + 1);
-            b = sysPartnerMapper.updateById(partner) > 0;
-
-            SysRelationPerson sysRelationPerson = new SysRelationPerson();
-            sysRelationPerson.setAgencyLeaderId(sysPartnerDto.getUserId());
-            sysRelationPerson.setSuggestId(sysPartnerDto.getSuggestId());
-            //'推荐等级(0:直接推荐;1:间接推荐)
-            sysRelationPerson.setSource(0);
-            //推荐类型(0:合伙人  1:机构负责人)
-            sysRelationPerson.setType(0);
-            sysRelationPerson.setCreateBy(BaseController.getUser().getId());
-            sysRelationPerson.setCreateTime(new Date());
-            b = sysRelationPersonMapper.insert(sysRelationPerson) > 0;
-            //查询合伙人的推荐人是否有上级
-            List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                    .eq(SysRelationPerson::getAgencyLeaderId, sysPartnerDto.getSuggestId())
-                    .eq(SysRelationPerson::getType, 0));
-            if (sysRelationPeople.size() > 0) {
-                for (SysRelationPerson relationPerson : sysRelationPeople) {
-                    SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
-                    sysRelationPerson1.setAgencyLeaderId(sysPartnerDto.getUserId());
-                    sysRelationPerson1.setSuggestId(relationPerson.getSuggestId());
-                    sysRelationPerson1.setSource(1);
-                    //推荐类型(0:合伙人  1:机构负责人)
-                    sysRelationPerson1.setType(0);
-                    sysRelationPerson1.setCreateBy(BaseController.getUser().getId());
-                    sysRelationPerson1.setCreateTime(new Date());
-                    sysRelationPersonMapper.insert(sysRelationPerson1);
-                }
-            }
-        } else {
-            SysPartner partner = new SysPartner();
-            partner.setId(sysPartner.getId());
-            partner.setProportional(sysPartnerDto.getProportional());
-
-            b = sysPartnerMapper.updateById(partner) > 0;
-        }
-        //修改抽成比例记录改变过程
-        SysPartnerTime sysPartnerTime = new SysPartnerTime();
-        sysPartnerTime.setType(1);
-        sysPartnerTime.setCreateTime(format);
-        sysPartnerTime.setUserId(sysPartnerDto.getUserId());
-        sysPartnerTime.setUserName(sysPartnerDto.getUserName());
-        sysPartnerTime.setNewProportional(sysPartnerDto.getProportional());
-        sysPartnerTime.setOldProportional(sysPartner.getProportional());
-
-        sysPartnerTimeMapper.insert(sysPartnerTime);
-
-        return b;
+        return sysPartnerMapper.updateById(partner) > 0;
     }
 
     @Override
@@ -802,8 +948,10 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         String userId = BaseController.getUserId();
         SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
                 .eq(SysPartnerAccount::getUserId, userId));
-        appPartnerNumVo.setSumPremium(sysPartnerAccount.getSumPremium());
-        appPartnerNumVo.setExtractFee(sysPartnerAccount.getExtractFee());
+        if (sysPartnerAccount != null) {
+            appPartnerNumVo.setSumPremium(sysPartnerAccount.getSumPremium());
+            appPartnerNumVo.setExtractFee(sysPartnerAccount.getExtractFee());
+        }
         if (type == 1) {
             //下面合伙人(直接+间接)数量
             List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
@@ -827,29 +975,30 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                     .eq(SysRelationPerson::getSuggestId, userId)
                     .eq(SysRelationPerson::getDelFlag, 1)
                     .eq(SysRelationPerson::getType, 1));
+            if (sysRelationPersonList2.size()>0) {
+                List<String> ids = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysAgencyLeader::getUserId, ids).eq(SysAgencyLeader::getDelFlag, 1));
+                int deptManNum = 0;
+                if (leaderList.size() > 0) {
+                    for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                        //获取机构下的团队
+                        List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                                .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                                .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                        if (sysDeptList.size() > 0) {
+                            for (SysDept sysDept : sysDeptList) {
+                                List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                        .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                                deptManNum = deptManNum + sysUsers.size();
 
-            List<String> ids = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-            List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
-                    .in(CollectionUtil.isNotEmpty(ids), SysAgencyLeader::getUserId, ids).eq(SysAgencyLeader::getDelFlag, 1));
-            int deptManNum = 0;
-            if (leaderList.size() > 0) {
-                for (SysAgencyLeader sysAgencyLeader : leaderList) {
-                    //获取机构下的团队
-                    List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
-                            .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
-                            .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
-                            .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
-                    if (sysDeptList.size() > 0) {
-                        for (SysDept sysDept : sysDeptList) {
-                            List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
-                                    .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
-                            deptManNum = deptManNum + sysUsers.size();
-
+                            }
                         }
                     }
-                }
 
-                appPartnerNumVo.setTeamManNum(deptManNum);
+                    appPartnerNumVo.setTeamManNum(deptManNum);
+                }
             }
         } else {
             int deptManNum = 0;
@@ -887,20 +1036,26 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
                     .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, userId));
             SysPartnerConfig sysPartnerConfig = sysPartnerConfigMapper.selectOne(new LambdaQueryWrapper<SysPartnerConfig>()
-                    .eq(SysPartnerConfig::getDelFlag,1).eq(SysPartnerConfig::getLevel,sysPartner.getType()));
+                    .eq(SysPartnerConfig::getDelFlag, 1).eq(SysPartnerConfig::getLevel, sysPartner.getType()));
 
             appUserInfoVo.setSysPartnerConfig(sysPartnerConfig);
+            appUserInfoVo.setLevel(sysPartner.getType());
+        }else {
+            SysPartnerConfig sysPartnerConfig = sysPartnerConfigMapper.selectOne(new LambdaQueryWrapper<SysPartnerConfig>()
+                    .eq(SysPartnerConfig::getDelFlag, 1).eq(SysPartnerConfig::getLevel, 0));
+            appUserInfoVo.setSysPartnerConfig(sysPartnerConfig);
         }
+
         // 获取当前日期
-        LocalDate currentDate = LocalDate.now();
-        ZoneId zoneId = ZoneId.systemDefault();
-        Date entryTime = appUserInfoVo.getEntryTime();
-        if (entryTime != null) {
-            LocalDate localDate = entryTime.toInstant().atZone(zoneId).toLocalDate();
-            // 计算年数
-            long years = ChronoUnit.YEARS.between(localDate, currentDate);
-            appUserInfoVo.setYears(years);
-        }
+//        LocalDate currentDate = LocalDate.now();
+//        ZoneId zoneId = ZoneId.systemDefault();
+//        Date entryTime = appUserInfoVo.getEntryTime();
+//        if (entryTime != null) {
+//            LocalDate localDate = entryTime.toInstant().atZone(zoneId).toLocalDate();
+//            // 计算年数
+//            long years = ChronoUnit.YEARS.between(localDate, currentDate);
+//            appUserInfoVo.setYears(years);
+//        }
 
         return appUserInfoVo;
     }
@@ -926,10 +1081,11 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         //按等级查询
         Integer partnerType = partnerInfoDto.getPartnerType();
         if (partnerType != null) {
-            List<SysPartner> sysPartnerList1 = listMap.get(sysPartner.getType() + partnerType);
+            List<SysPartner> sysPartnerList1 = listMap.get(partnerType + 1);
 
             if (sysPartnerList1 != null) {
                 AppSysPartnerVo appSysPartnerVo = new AppSysPartnerVo();
+                appSysPartnerVo.setPartnerType(partnerType + 1);
                 //下级合伙人数
                 appSysPartnerVo.setPartnerNumber(sysPartnerList1.size());
                 List<String> ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
@@ -981,72 +1137,33 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                 } else {
 
                     //获取上一级合伙人,查询工作室数量
-                    List<SysPartner> sysPartners = listMap.get(sysPartner.getType() + partnerType - 1);
-                    //上一级直接推荐的工作室数量
-                    List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
-                    list.addAll(list1);
-                }
-                List<SysRelationPerson> sysRelationPersons = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                        .in(CollectionUtil.isNotEmpty(list), SysRelationPerson::getSuggestId, list)
-                        .eq(SysRelationPerson::getDelFlag, 1)
-                        .eq(SysRelationPerson::getSource, 0)
-                        .eq(SysRelationPerson::getType, 1));
-                appSysPartnerVo.setWorkNumber(sysRelationPersons.size());
-                List<String> list1 = sysRelationPersons.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-                appSysPartnerVo.setLeaderIds(list1);
-
-                //直接工作室保费
-                List<SysPremiumDetails> sysPremiumDetails1 = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
-                        .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, list1)
-                        .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
-                                SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
-                        .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()));
-                BigDecimal sumPremium1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
-                BigDecimal extractFee1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
-
-                appSysPartnerVo.setSumPremium(sumPremium.add(sumPremium1));
-                appSysPartnerVo.setExtractFee(extractFee.add(extractFee1));
-                int leaderManNum=0;
-                //直接工作室总
-                List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
-                        .in(CollectionUtil.isNotEmpty(list1), SysAgencyLeader::getUserId, list1).eq(SysAgencyLeader::getDelFlag, 1));
-
-                if (leaderList.size() > 0) {
-                    for (SysAgencyLeader sysAgencyLeader : leaderList) {
-                        //获取机构下的团队
-                        List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
-                                .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
-                                .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
-                                .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
-                        if (sysDeptList.size() > 0) {
-                            for (SysDept sysDept : sysDeptList) {
-                                List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
-                                        .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
-                                leaderManNum = leaderManNum + sysUsers.size();
+                    List<SysPartner> sysPartners = listMap.get(partnerType - 1);
+                    if (sysPartners != null) {
+                        //上一级直接推荐的工作室数量
+                        List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                        list.addAll(list1);
+                        extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list);
+                    } else {
+                        appSysPartnerVo.setTeamManNum(deptManNum);
 
-                            }
-                        }
+                        appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber());
                     }
                 }
 
-                appSysPartnerVo.setTeamManNum(deptManNum+leaderManNum);
-
-                appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber() + appSysPartnerVo.getWorkNumber());
-
                 //每一级存入map
-                appSysPartnerVo.setPartnerType(partnerType);
+
                 appSysPartnerVos.add(appSysPartnerVo);
             }
 
             return appSysPartnerVos;
 
         }
-
-        for (int i = 1; i <= listMap.size(); i++) {
+        for (Integer integer : listMap.keySet()) {
             //二级
-            List<SysPartner> sysPartnerList1 = listMap.get(sysPartner.getType() + i);
+            List<SysPartner> sysPartnerList1 = listMap.get(integer);
             if (sysPartnerList1.size() > 0) {
                 AppSysPartnerVo appSysPartnerVo = new AppSysPartnerVo();
+                appSysPartnerVo.setPartnerType(integer);
                 //下级合伙人数
                 appSysPartnerVo.setPartnerNumber(sysPartnerList1.size());
                 List<String> ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
@@ -1089,71 +1206,158 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                 }
 
                 List<String> list = new ArrayList<>();
-                if (i == 1) {
-                    //一级获取登陆人的之际工作室
-                    list.add(userId);
-                } else {
+                int type = sysPartner.getType();
+                if (type == 1) {
+                    if (integer == 2) {
+                        //一级获取登陆人的之际工作室
+                        list.add(userId);
+                        extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list);
+                    } else {
 
-                    //获取上一级合伙人,查询工作室数量
-                    List<SysPartner> sysPartners = listMap.get(sysPartner.getType() + i - 1);
-                    //上一级直接推荐的工作室数量
-                    List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
-                    list.addAll(list1);
-                }
-                List<SysRelationPerson> sysRelationPersons = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                        .in(CollectionUtil.isNotEmpty(list), SysRelationPerson::getSuggestId, list)
-                        .eq(SysRelationPerson::getDelFlag, 1)
-                        .eq(SysRelationPerson::getSource, 0)
-                        .eq(SysRelationPerson::getType, 1));
-                appSysPartnerVo.setWorkNumber(sysRelationPersons.size());
-                List<String> list1 = sysRelationPersons.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-                appSysPartnerVo.setLeaderIds(list1);
-                //直接工作室保费
-                List<SysPremiumDetails> sysPremiumDetails1 = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
-                        .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, list1)
-                        .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
-                                SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
-                        .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()));
-                BigDecimal sumPremium1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
-                BigDecimal extractFee1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                        //获取上一级合伙人,查询工作室数量
+                        List<SysPartner> sysPartners = listMap.get(integer - 1);
+                        if (sysPartners != null) {
+                            //上一级直接推荐的工作室数量
+                            List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                            list.addAll(list1);
+                            extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list);
+                        } else {
+                            appSysPartnerVo.setTeamManNum(deptManNum);
+
+                            appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber());
+                        }
+                    }
+                } else if (type == 2) {
+                    if (integer == 3) {
+                        //一级获取登陆人的之际工作室
+                        list.add(userId);
+                        extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list);
+                    } else {
+                        //获取上一级合伙人,查询工作室数量
+                        List<SysPartner> sysPartners = listMap.get(integer - 1);
+                        if (sysPartners != null) {
+                            //上一级直接推荐的工作室数量
+                            List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                            list.addAll(list1);
+                            extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list);
+                        } else {
+                            appSysPartnerVo.setTeamManNum(deptManNum);
+
+                            appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber());
+                        }
+                    }
 
-                appSysPartnerVo.setSumPremium(sumPremium.add(sumPremium1));
-                appSysPartnerVo.setExtractFee(extractFee.add(extractFee1));
-                int leaderManNum=0;
-                //直接工作室总
-                List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
-                        .in(CollectionUtil.isNotEmpty(list1), SysAgencyLeader::getUserId, list1).eq(SysAgencyLeader::getDelFlag, 1));
+                } else if (type == 3) {
+                    if (integer == 4) {
+                        //一级获取登陆人的之际工作室
+                        list.add(userId);
+                        extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list);
+                    } else {
 
-                if (leaderList.size() > 0) {
-                    for (SysAgencyLeader sysAgencyLeader : leaderList) {
-                        //获取机构下的团队
-                        List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
-                                .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
-                                .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
-                                .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
-                        if (sysDeptList.size() > 0) {
-                            for (SysDept sysDept : sysDeptList) {
-                                List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
-                                        .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
-                                leaderManNum = leaderManNum + sysUsers.size();
+                        //获取上一级合伙人,查询工作室数量
+                        List<SysPartner> sysPartners = listMap.get(integer - 1);
+                        if (sysPartners != null) {
+                            //上一级直接推荐的工作室数量
+                            List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                            list.addAll(list1);
+                            extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list);
+                        } else {
+                            appSysPartnerVo.setTeamManNum(deptManNum);
+
+                            appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber());
+                        }
+                    }
 
-                            }
+                } else if (type == 4) {
+                    if (integer == 5) {
+                        //一级获取登陆人的之际工作室
+                        list.add(userId);
+                        extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list);
+                    } else {
+                        //获取上一级合伙人,查询工作室数量
+                        List<SysPartner> sysPartners = listMap.get(integer - 1);
+                        if (sysPartners != null) {
+                            //上一级直接推荐的工作室数量
+                            List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                            list.addAll(list1);
+                            extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list);
+                        } else {
+                            appSysPartnerVo.setTeamManNum(deptManNum);
+
+                            appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber());
                         }
                     }
+
                 }
 
-                appSysPartnerVo.setTeamManNum(deptManNum+leaderManNum);
+//                extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list);
 
-                appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber() + appSysPartnerVo.getWorkNumber());
-                appSysPartnerVo.setPartnerType(i);
                 //每一级存入map
                 appSysPartnerVos.add(appSysPartnerVo);
             }
         }
 
+
         return appSysPartnerVos;
     }
 
+    private void extracted(PartnerInfoDto partnerInfoDto, AppSysPartnerVo appSysPartnerVo, BigDecimal sumPremium, BigDecimal extractFee, int deptManNum, List<String> list) {
+        List<SysRelationPerson> sysRelationPersons = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .in(CollectionUtil.isNotEmpty(list), SysRelationPerson::getSuggestId, list)
+                .eq(SysRelationPerson::getDelFlag, 1)
+                .eq(SysRelationPerson::getSource, 0)
+                .eq(SysRelationPerson::getType, 1));
+        appSysPartnerVo.setWorkNumber(sysRelationPersons.size());
+        if (sysRelationPersons.size()>0) {
+
+            List<String> list1 = sysRelationPersons.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+            appSysPartnerVo.setLeaderIds(list1);
+            //直接工作室保费
+            List<SysPremiumDetails> sysPremiumDetails1 = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .in(CollectionUtil.isNotEmpty(list1), SysPremiumDetails::getUserId, list1)
+                    .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
+                            SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
+                    .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()));
+            if (sysPremiumDetails1.size()>0) {
+
+                BigDecimal sumPremium1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                appSysPartnerVo.setSumPremium(sumPremium.add(sumPremium1));
+                appSysPartnerVo.setExtractFee(extractFee.add(extractFee1));
+            } else {
+                appSysPartnerVo.setSumPremium(sumPremium);
+                appSysPartnerVo.setExtractFee(extractFee);
+            }
+            int leaderManNum = 0;
+            //直接工作室总
+            List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                    .in(CollectionUtil.isNotEmpty(list1), SysAgencyLeader::getUserId, list1).eq(SysAgencyLeader::getDelFlag, 1));
+
+            if (leaderList.size() > 0) {
+                for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                    //获取机构下的团队
+                    List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                            .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                            .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                            .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                    if (sysDeptList.size() > 0) {
+                        for (SysDept sysDept : sysDeptList) {
+                            List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                    .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
+                            leaderManNum = leaderManNum + sysUsers.size();
+
+                        }
+                    }
+                }
+            }
+
+            appSysPartnerVo.setTeamManNum(deptManNum + leaderManNum);
+
+            appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber() + appSysPartnerVo.getWorkNumber());
+        }
+    }
+
     @Override
     public PartnerInfoFreeVo queryPartnerInfo(PartnerGradeInfo partnerGradeInfo) {
         PartnerInfoFreeVo partnerInfoFreeVo = new PartnerInfoFreeVo();
@@ -1393,13 +1597,13 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                     .between(StringUtils.isNotEmpty(teamUserInfosDto.getBeginTime()) && StringUtils.isNotEmpty(teamUserInfosDto.getEndTime()),
                             SysPremiumDetails::getCreateTime, teamUserInfosDto.getBeginTime(), teamUserInfosDto.getEndTime())
                     .eq(teamUserInfosDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, teamUserInfosDto.getIndustrySector()));
-            BigDecimal sumPremium1 = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
             teamUserInfosVo.setSumPremium(sumPremium1);
             List<SysUserAccountHistory> sysUserAccountHistorie = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
                     .in(SysUserAccountHistory::getUserId, sysUser.getId()).eq(SysUserAccountHistory::getProperty, 3)
                     .eq(teamUserInfosDto.getIndustrySector() != null, SysUserAccountHistory::getBusinessSegmentsType, teamUserInfosDto.getIndustrySector()));
 
-            BigDecimal extractFee1 = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal extractFee1 = sysUserAccountHistorie.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
             teamUserInfosVo.setExtractFee(extractFee1);
 
             userInfosVoList.add(teamUserInfosVo);
@@ -1612,5 +1816,125 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         return partnerLeaderInfoVo;
     }
 
+    @Override
+    public List<SysPartnerVo> getRelationInfo(String userId) {
+        List<SysPartnerVo> sysPartners = new ArrayList<>();
+        //登陆人的上三级合伙人信息
+        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
+        SysPartnerVo sysPartnerVo = BeanUtil.copyProperties(sysPartner, SysPartnerVo.class);
+        sysPartners.add(sysPartnerVo);
+        List<String> ids = new ArrayList<>();
+        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .eq(SysRelationPerson::getAgencyLeaderId, userId).eq(SysRelationPerson::getType, 0).orderByDesc(SysRelationPerson::getId));
+        if (sysRelationPersonList.size() > 0) {
+            List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getSuggestId).collect(Collectors.toList());
+
+            if (collect.size() >4) {
+                List<String> collect1 = collect.stream().limit(4).collect(Collectors.toList());
+                ids.addAll(collect1);
+            }else {
+                ids.addAll(collect);
+
+            }
+
+        }
+
+        List<SysRelationPerson> sysRelationList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .eq(SysRelationPerson::getSuggestId, userId).eq(SysRelationPerson::getType, 0));
+        if (sysRelationList.size() > 0) {
+
+            List<String> collect1 = sysRelationList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+            if (collect1.size()>4) {
+                List<String> collect2 = collect1.stream().limit(4).collect(Collectors.toList());
+                ids.addAll(collect2);
+            }else {
+                ids.addAll(collect1);
+
+            }
+        }
+        if (CollectionUtil.isNotEmpty(ids)) {
+            List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
+                    .in(SysPartner::getUserId, ids).eq(SysPartner::getDelFlag, 1));
+            List<SysPartnerVo> sysPartnerVos = BeanUtil.copyToList(sysPartnerList, SysPartnerVo.class);
+            sysPartners.addAll(sysPartnerVos);
+        }
+        List<SysPartnerVo> sysPartnerVoList = sysPartners.stream().sorted(Comparator.comparing(SysPartner::getId)).collect(Collectors.toList());
+        if (sysPartnerVoList.size()>0) {
+            for (SysPartnerVo partner : sysPartnerVoList) {
+                SysUser sysUser1 = sysUserMapper.selectById(partner.getUserId());
+                partner.setMobile(sysUser1.getMobile());
+                SysDept sysDept = sysDeptMapper.selectById(sysUser1.getDeptId());
+                partner.setDeptName(sysDept.getName());
+                SysDept sysDept1 = sysDeptMapper.selectById(sysDept.getParentId());
+                partner.setAgencyName(sysDept1.getName());
+
+                String suggestId = partner.getSuggestId();
+                if (StringUtils.isNotEmpty(suggestId)) {
+                    SysUser sysUser = sysUserMapper.selectById(partner.getSuggestId());
+                    partner.setSuggestName(sysUser.getName());
+
+                }
+            }
+        }
+
+        return sysPartnerVoList;
+    }
+
+    @Override
+    public CountUserVo getCountUser(CountUserDto countUserDto) {
+        CountUserVo countUserVo = new CountUserVo();
+        String userId = BaseController.getUserId();
+        //原始参数
+        String startTime1 = countUserDto.getBeginTime();
+        String endTime1 = countUserDto.getEndTime();
+
+        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                .eq(SysUser::getReferrerId,userId)
+                .eq(SysUser::getType,3)
+                .in(SysUser::getStatus,Arrays.asList(1, 4, 5, 6, 7))
+                .between(StringUtils.isNotEmpty(countUserDto.getBeginTime()) && StringUtils.isNotEmpty(countUserDto.getEndTime())
+                        ,SysUser::getCreateTime,countUserDto.getBeginTime(),countUserDto.getEndTime()));
+        if (sysUsers != null) {
+            countUserVo.setDeptSum(sysUsers.size());
+
+            List<String> deptIds = sysUsers.stream().map(SysUser::getDeptId).collect(Collectors.toList());
+            int deptManNum=0;
+            for (String deptId : deptIds) {
+                List<SysUser> sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                        .likeRight(SysUser::getId,deptId)
+                        .in(SysUser::getStatus,Arrays.asList(1, 4, 5, 6, 7)));
+                deptManNum=deptManNum+sysUserList.size();
+
+            }
+            countUserVo.setDeptLeaderSum(deptManNum);
+
+            countUserVo.setCountSum(countUserVo.getDeptSum()+deptManNum);
+
+        }
+        List<CountUserNumVo> countUserNumVoList = null;
+        int type = countUserDto.getType();
+        if (type == 1) {
+            if (StringUtils.isNotEmpty(startTime1) && startTime1.split(" ")[0].equals(endTime1.split(" ")[0])) {
+
+                countUserNumVoList = sysPartnerMapper.queryDeptByTimes(userId,countUserDto);
+            }else {
+                countUserNumVoList = sysPartnerMapper.queryDeptByTime(userId,countUserDto);
+            }
+        }else {
+            List<String> deptIds = sysUsers.stream().map(SysUser::getDeptId).collect(Collectors.toList());
+            if (StringUtils.isNotEmpty(startTime1) && startTime1.split(" ")[0].equals(endTime1.split(" ")[0])){
+
+                countUserNumVoList = sysPartnerMapper.queryUserByTimes(deptIds,countUserDto);
+            }else {
+                countUserNumVoList = sysPartnerMapper.queryUserByTime(deptIds,countUserDto);
+            }
+
+        }
+        countUserVo.setCountUserNumVoList(countUserNumVoList);
+
+        return countUserVo;
+    }
+
 
 }

+ 18 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysProportionConfigServiceImpl.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysProportionConfigMapper;
+import com.ydtech.modules.admin.model.SysProportionConfig;
+import com.ydtech.modules.admin.service.SysProportionConfigService;
+import org.springframework.stereotype.Service;
+
+@Service("sysProportionConfigService")
+public class SysProportionConfigServiceImpl extends ServiceImpl<SysProportionConfigMapper, SysProportionConfig> implements SysProportionConfigService {
+
+    @Override
+    public SysProportionConfig getProportionConfig(String id) {
+
+        return baseMapper.selectOne(new LambdaQueryWrapper<SysProportionConfig>().eq(SysProportionConfig::getUserId,id));
+    }
+}

+ 267 - 1
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.InsuranceImageEnum;
 import com.ydtech.constants.SysConstants;
+import com.ydtech.constants.sys.SysPasswordEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.exception.SystemException;
@@ -39,14 +40,27 @@ import com.ydtech.security.utils.PasswordUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.RequestParam;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.io.*;
 import java.math.BigDecimal;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
+import static com.ydtech.constants.RedisConstant.PHONE_VERIFICATION_CODE_KEY;
+import static com.ydtech.constants.RedisConstant.PHONE_VERIFICATION_CODE_KEY_TIME;
+
 
 @Service
 public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
@@ -90,11 +104,18 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Autowired
     private SysPcAddressService sysPcAddressService;
 
+    @Autowired
+    private StringRedisTemplate redisTemplate;
+
     @Autowired
     private SysUserLinkAreaMapper sysUserLinkAreaMapper;
     @Autowired
     private SysDeptMapper sysDeptMapper;
+    @Resource
+    private SysPartnerService sysPartnerService;
 
+    @Value("${httpUrl}")
+    private String httpUrl;
     @Override
     public IPage<SysUserBaseVO> findUserList(PageDto<SysUserDto> pageDto) {
         PageVo<SysUserBaseVO> pageVo = new PageVo();
@@ -261,6 +282,140 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
 
+    @Override
+    public HttpResult sendMsgPantner(String phone) {
+        if (org.apache.commons.lang3.StringUtils.isEmpty(phone)) {
+            return HttpResult.error("手机号不能为空");
+        }
+//            if ("0".equals(type)) {  // 0 登录 1 注册
+            SysUser sysUser = this.findByPhone(phone);
+            if (sysUser == null) {
+                return HttpResult.error("手机号不存在!");
+            }
+//            }
+        String timeCreate = String.valueOf(sysUser.getCreateTime());
+        String userId = sysUser.getId();
+        List<SysUserTrack> sysUserTracks = sysUserTrackService.list(new LambdaQueryWrapper<SysUserTrack>().eq(SysUserTrack::getUserId,userId).orderByDesc(SysUserTrack::getApproveTime));
+        SysUserTrack sysUserTrack = sysUserTracks.get(0);
+
+        Integer type = sysUser.getType();
+        String type1 = "";
+        if (type == 1) {
+            type1 = "合伙人申请";
+        } else if (type == 2) {
+            type1 = "工作室申请";
+        } else if (type == 3) {
+            type1 = "团队长申请";
+        }
+//        Random rand = new Random();
+//        // randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数
+//        int randNumber = rand.nextInt(9999 - 1000 + 1) + 1000;
+//        // 保存验证码到redis
+//        redisTemplate.opsForValue().set(PHONE_VERIFICATION_CODE_KEY + phone, String.valueOf(randNumber), PHONE_VERIFICATION_CODE_KEY_TIME
+//                , TimeUnit.MINUTES);
+
+        String result = null;
+        String urlNet = "http://v.juhe.cn/sms/send";//请求接口地址
+        Map params = new HashMap();//请求参数
+        params.put("mobile", phone);//接收短信的手机号码
+        params.put("tpl_id", "71853");//短信模板ID,请参考个人中心短信模板设置
+        String userIdVal = "#userId#=" + userId;
+        params.put("user_id", userIdVal);
+        String timeCreateVal = "#timeCreate#=" + timeCreate;
+        params.put("timeCreate", timeCreateVal);
+        String apprveMess ="#apprveMess#" + sysUserTrack.getApproveMess();
+        params.put("apprveMess", apprveMess);
+        String type2 = "#type#=" + type1;
+        params.put("type", type2);
+        String url ="#url#=" + httpUrl +"userId=" + userId +'&'+ "remark=" +sysUserTrack.getApproveMess() +'&'+"type="+ type;
+        params.put("url", url);
+        params.put("key", "fbe7b165e9e13e52f3b1f2654eab9c0e");//应用APPKEY(应用详细页查询)
+        params.put("dtype", "json");//返回数据的格式,xml或json,默认json
+
+        try {
+            result = net(urlNet, params, "GET");
+            JSONObject object = JSONObject.parseObject(result);
+            if (object.getInteger("error_code") == 0) {
+//				System.out.println(object.get("result"));
+                return HttpResult.ok("发送成功");
+            } else {
+                System.out.println(object.get("error_code") + ":" + object.get("reason"));
+                return HttpResult.error("发送失败," + object.get("error_code") + ":" + object.get("reason"));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return HttpResult.ok("发送失败");
+    }
+
+    public String net(String strUrl, Map params, String method) throws Exception {
+        String DEF_CHATSET = "UTF-8";
+        int DEF_CONN_TIMEOUT = 30000;
+        int DEF_READ_TIMEOUT = 30000;
+        String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";
+
+        HttpURLConnection conn = null;
+        BufferedReader reader = null;
+        String rs = null;
+        try {
+            StringBuffer sb = new StringBuffer();
+            if (method == null || method.equals("GET")) {
+                strUrl = strUrl + "?" + urlencode(params);
+            }
+            URL url = new URL(strUrl);
+            conn = (HttpURLConnection) url.openConnection();
+            if (method == null || method.equals("GET")) {
+                conn.setRequestMethod("GET");
+            } else {
+                conn.setRequestMethod("POST");
+                conn.setDoOutput(true);
+            }
+            conn.setRequestProperty("User-agent", userAgent);
+            conn.setUseCaches(false);
+            conn.setConnectTimeout(DEF_CONN_TIMEOUT);
+            conn.setReadTimeout(DEF_READ_TIMEOUT);
+            conn.setInstanceFollowRedirects(false);
+            conn.connect();
+            if (params != null && Objects.equals(method, "POST")) {
+                try {
+                    DataOutputStream out = new DataOutputStream(conn.getOutputStream());
+                    out.writeBytes(urlencode(params));
+                } catch (Exception e) {
+                    // TODO: handle exception
+                }
+            }
+            InputStream is = conn.getInputStream();
+            reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));
+            String strRead = null;
+            while ((strRead = reader.readLine()) != null) {
+                sb.append(strRead);
+            }
+            rs = sb.toString();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (reader != null) {
+                reader.close();
+            }
+            if (conn != null) {
+                conn.disconnect();
+            }
+        }
+        return rs;
+    }
+
+    public String urlencode(Map<String, Object> data) {
+        StringBuilder sb = new StringBuilder();
+        for (Map.Entry i : data.entrySet()) {
+            try {
+                sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        }
+        return sb.toString();
+    }
+
     @Override
     public SysUser findByUsername(String username) {
         SysUser sysUser = null;
@@ -587,7 +742,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public HttpResult saveUserInfo(SysUser2Vo sysUserVo) {
         SysUser sysUser = sysUserVo.getSysUser();
         // 手机号
@@ -681,6 +836,103 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return HttpResult.ok("新增成功");
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult saveUserInfo1(SysUser2Vo sysUserVo, SysDeptVo sysDeptVo) {
+        SysUser sysUser = sysUserVo.getSysUser();
+        // 手机号
+        List<SysUser> mobileList = lambdaQuery().eq(SysUser::getMobile, sysUser.getMobile()).list();
+        if (!mobileList.isEmpty()) {
+            throw new SystemException("手机号已经注册请更换手机号。");
+        }
+        // 身份证号
+        List<SysUser> identityList = lambdaQuery().eq(SysUser::getIdentity, sysUser.getIdentity()).list();
+        if (!identityList.isEmpty()) {
+            throw new SystemException("身份证号已经注册请更换身份证号。");
+        }
+
+        //处理密码
+        if (StringUtils.isNotEmpty(sysUser.getPassword())) {
+            String salt = PasswordUtils.getSalt();
+            String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
+            sysUser.setPassword(pwd);
+            sysUser.setSalt(salt);
+        } else {
+            return HttpResult.error("密码不能为空");
+        }
+        String userId = "";
+        if ("19".equals(sysUser.getRoleId())) {//19 出单员 校验机构和业务员机构是否一致
+            // add by  hxl  2024-08-20
+            // return checkChuDanUser(sysUser);
+            if (StringUtils.isEmpty(sysUser.getReferrerId())) {
+                return HttpResult.error("业务员工号不能为空");
+            }
+            //归属业务员和出单员部门必须一致
+            SysUser user = getById(sysUser.getReferrerId());
+            if (user == null || !user.getDeptId().equals(sysUser.getDeptId())) {
+                return HttpResult.error("出单员机构必须和归属业务员机构一致");
+            }
+            sysUser.setOperatorCode(sysUser.getReferrerId());
+            if (StringUtils.isEmpty(sysUser.getId())) {
+                userId = gainNextUserId(sysUser.getDeptId());
+                sysUser.setId(userId);
+                save(sysUser);
+                //角色配置
+                SysUserRole userRole = new SysUserRole();
+                userRole.setUserId(sysUser.getId());
+                userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
+                sysUserRoleService.save(userRole);
+            } else {
+                userId = sysUser.getId();
+                updateById(sysUser);
+            }
+            SysUserInfo userInfo = sysUserVo.getSysUserInfo();
+            userInfo.setId(sysUser.getId());
+            sysUserInfoService.save(userInfo);
+        } else {
+            userId = gainNextUserId(sysDeptVo.getId());
+
+            if (RoleConstants.R22.getCode().equals(sysUser.getRoleId())) {//22	后线人员
+                if (!SysConstants.isAdministration(userId)) {
+                    throw new SystemException("后线人员只能公司部门中");
+                }
+            }
+
+            sysUser.setId(userId);
+            sysUser.setDeptId(sysDeptVo.getId());
+            sysUser.setStatus(2);
+            save(sysUser);
+
+            //角色配置
+            SysUserRole userRole = new SysUserRole();
+            userRole.setUserId(sysUser.getId());
+            userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
+            sysUserRoleService.save(userRole);
+            if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
+                //推荐人
+                esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
+            } else if ("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())) {
+                //如果是 团队长或代码人 并且没有推荐人 则默认推荐人为自己
+                esmUserReferrerService.addReferrer(sysUser.getId(), userId);
+            }
+            SysUserInfo userInfo = sysUserVo.getSysUserInfo();
+            if (userInfo != null) {
+                if (null != userInfo.getLiveAddressString() && userInfo.getLiveAddressString().length > 0) {
+                    sysUserVo.getSysUserInfo().setLiveAddress(Arrays.stream(userInfo.getLiveAddressString()).map(item -> item.toString()).collect(Collectors.joining(",")));
+                }
+                userInfo.setId(sysUser.getId());
+            }
+//        userInfo.setId(sysUser.getId());
+            sysUserInfoService.save(userInfo);
+        }
+        List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
+        String finalUserId = userId;
+        List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, finalUserId)).collect(Collectors.toList());
+        esmUserImageService.saveBatch(esmUserImages);
+        SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, BaseController.getUserName());
+        return HttpResult.ok("新增成功");
+    }
+
     /**
      * 新增修改出单员
      *
@@ -836,6 +1088,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             sysUserTrackService.save(sysUserTrack);
         }
         SpringUtil.getBean(RecordUserUtils.class).recordUser(sysUserVo, BaseController.getUserName());
+
         return HttpResult.ok("修改成功");
     }
 
@@ -860,6 +1113,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return level;
     }
 
+    @Override
+    public int getDeptLevel1(String deptId) {
+        int level = 0;
+        //1 2 3 4 5级 M 6级 D
+        if (deptId.length() > 8) {
+            String substring = deptId.substring(8);
+            return substring.length() / 3 + 4;
+        } else {
+            level = deptId.length() / 2;
+        }
+        return level;
+    }
+
     /**
      * 根据机构代码,查询所有人员
      *

+ 25 - 25
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -355,31 +355,31 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 }
                 sysChannelCostService.updateBatchById(costList);
             }
-//            //抽层状态修改
-//            sysPremiumDetailsMapper.updateStatus(insAreaCompany.getId());
-//            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
-//                    .eq(SysPremiumDetails::getCompanyId,insAreaCompany.getId()).eq(SysPremiumDetails::getType,2));
-//            if (sysPremiumDetails.size()>0) {
-//                for (SysPremiumDetails sysPremiumDetail : sysPremiumDetails) {
-//                    SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
-//                            .eq(SysPartnerAccount::getUserId,sysPremiumDetail.getUserId()));
-//                    if (sysPartnerAccount == null) {
-//                        SysPartnerAccount sysPartnerAccount1 = new SysPartnerAccount();
-//                        sysPartnerAccount1.setCreateTime(new Date());
-//                        sysPartnerAccount1.setSumPremium(sysPremiumDetail.getSumpremium());
-//                        sysPartnerAccount1.setExtractFee(sysPremiumDetail.getExtractFee());
-//                        sysPartnerAccount1.setCashFee(sysPremiumDetail.getExtractFee());
-//                        sysPartnerAccount1.setUserId(sysPremiumDetail.getUserId());
-//                        sysPartnerAccountMapper.insert(sysPartnerAccount1);
-//                    }else {
-//                        sysPartnerAccount.setSumPremium(sysPartnerAccount.getSumPremium().add(sysPremiumDetail.getSumpremium()));
-//                        sysPartnerAccount.setExtractFee(sysPartnerAccount.getExtractFee().add(sysPremiumDetail.getExtractFee()));
-//                        sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().add(sysPremiumDetail.getExtractFee()));
-//                        sysPartnerAccountMapper.updateById(sysPartnerAccount);
-//                    }
-//                }
-//
-//            }
+            //抽层状态修改
+            sysPremiumDetailsMapper.updateStatus(insAreaCompany.getId());
+            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .eq(SysPremiumDetails::getCompanyId,insAreaCompany.getId()).eq(SysPremiumDetails::getType,2));
+            if (sysPremiumDetails.size()>0) {
+                for (SysPremiumDetails sysPremiumDetail : sysPremiumDetails) {
+                    SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                            .eq(SysPartnerAccount::getUserId,sysPremiumDetail.getUserId()));
+                    if (sysPartnerAccount == null) {
+                        SysPartnerAccount sysPartnerAccount1 = new SysPartnerAccount();
+                        sysPartnerAccount1.setCreateTime(new Date());
+                        sysPartnerAccount1.setSumPremium(sysPremiumDetail.getSumpremium());
+                        sysPartnerAccount1.setExtractFee(sysPremiumDetail.getExtractFee());
+                        sysPartnerAccount1.setCashFee(sysPremiumDetail.getExtractFee());
+                        sysPartnerAccount1.setUserId(sysPremiumDetail.getUserId());
+                        sysPartnerAccountMapper.insert(sysPartnerAccount1);
+                    }else {
+                        sysPartnerAccount.setSumPremium(sysPartnerAccount.getSumPremium().add(sysPremiumDetail.getSumpremium()));
+                        sysPartnerAccount.setExtractFee(sysPartnerAccount.getExtractFee().add(sysPremiumDetail.getExtractFee()));
+                        sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().add(sysPremiumDetail.getExtractFee()));
+                        sysPartnerAccountMapper.updateById(sysPartnerAccount);
+                    }
+                }
+
+            }
         } catch (Exception e) {
             throw new SystemException("当前业务繁忙,请稍后重试");
         } finally {

+ 129 - 74
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -197,6 +197,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Resource
     private InsOrdersMapper insOrdersMapper;
 
+    @Resource
+    private SysProportionConfigMapper sysProportionConfigMapper;
+
 
 
     public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService,
@@ -254,80 +257,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrders.setInsCompany(insAreaCompany.getInscompany());
             insOrders.setInsureTime(insAreaCompany.getPayDate());
             //已承保记录保费数据
-//            String userId = insOrders.getUserid();
-//
-//            SysDept sysDept = sysDeptService.getById(insOrders.getDeptid());
-//            if (sysDept != null) {
-//                SysPremiumDetails sysPremiumDetailsInfo = new SysPremiumDetails();
-//                sysPremiumDetailsInfo.setUserId(userId);
-//                sysPremiumDetailsInfo.setUserName(insOrders.getUsername());
-//                sysPremiumDetailsInfo.setCompanyId(insAreaCompany.getId());
-//                sysPremiumDetailsInfo.setOrderno(insAreaCompany.getOrderno());
-//                sysPremiumDetailsInfo.setJqpremium(insAreaCompany.getJqpremium());
-//                sysPremiumDetailsInfo.setJypremium(insAreaCompany.getJypremium());
-//                sysPremiumDetailsInfo.setSypremium(insAreaCompany.getSypremium());
-//                sysPremiumDetailsInfo.setSumpremium(insAreaCompany.getJqpremium().add(insAreaCompany.getJypremium()).add(insAreaCompany.getSypremium()));
-//                sysPremiumDetailsInfo.setStatus(0);
-//                sysPremiumDetailsInfo.setType(1);
-//                sysPremiumDetailsInfo.setCreateTime(new Date());
-//                sysPremiumDetailsInfo.setIndustrySector(1);
-//                sysPremiumDetailsMapper.insert(sysPremiumDetailsInfo);
-//
-//                String deptId=getFiveDeptId(sysDept);
-//                //工作室管理员抽层费用记录
-//                SysAgencyLeader sysAgencyLeader = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
-//                        .eq(SysAgencyLeader::getDeptId, deptId).eq(SysAgencyLeader::getDelFlag,1));
-//                if (sysAgencyLeader != null) {
-//                    SysPremiumDetails sysPremiumDetails = new SysPremiumDetails();
-//                    sysPremiumDetails.setUserId(sysAgencyLeader.getUserId());
-//                    sysPremiumDetails.setUserName(sysAgencyLeader.getUserName());
-//                    sysPremiumDetails.setCompanyId(insAreaCompany.getId());
-//                    sysPremiumDetails.setOrderno(insAreaCompany.getOrderno());
-//                    sysPremiumDetails.setJqpremium(insAreaCompany.getJqpremium());
-//                    sysPremiumDetails.setJypremium(insAreaCompany.getJypremium());
-//                    sysPremiumDetails.setSypremium(insAreaCompany.getSypremium());
-//                    sysPremiumDetails.setSumpremium(insAreaCompany.getJqpremium().add(insAreaCompany.getJypremium()).add(insAreaCompany.getSypremium()));
-//                    sysPremiumDetails.setProportional(sysAgencyLeader.getProportional());
-//                    sysPremiumDetails.setStatus(0);
-//                    sysPremiumDetails.setType(2);
-//                    sysPremiumDetails.setIssuerId(userId);
-//                    sysPremiumDetails.setIssuerName(insOrders.getUsername());
-//                    sysPremiumDetails.setExtractFee(sysPremiumDetails.getSumpremium().multiply(new BigDecimal(sysAgencyLeader.getProportional())
-//                            .divide(new BigDecimal("100"))).setScale(5, RoundingMode.DOWN));
-//                    sysPremiumDetails.setCreateTime(new Date());
-//                    sysPremiumDetails.setIndustrySector(1);
-//                    sysPremiumDetailsMapper.insert(sysPremiumDetails);
-//                    //工合伙人抽层费用记录
-//                    List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-//                            .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader.getUserId()).eq(SysRelationPerson::getType, 1));
-//                    if (sysRelationPersonList.size()>0) {
-//                        for (SysRelationPerson sysRelationPerson : sysRelationPersonList) {
-//                            SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
-//                                    .eq(SysPartner::getUserId, sysRelationPerson.getSuggestId()).eq(SysPartner::getDelFlag, 1));
-//                            if (sysPartner == null) continue;
-//                            SysPremiumDetails sysPremiumDetail = new SysPremiumDetails();
-//                            sysPremiumDetail.setUserId(sysPartner.getUserId());
-//                            sysPremiumDetail.setUserName(sysPartner.getUserName());
-//                            sysPremiumDetail.setCompanyId(insAreaCompany.getId());
-//                            sysPremiumDetail.setOrderno(insAreaCompany.getOrderno());
-//                            sysPremiumDetail.setJqpremium(insAreaCompany.getJqpremium());
-//                            sysPremiumDetail.setJypremium(insAreaCompany.getJypremium());
-//                            sysPremiumDetail.setSypremium(insAreaCompany.getSypremium());
-//                            sysPremiumDetail.setSumpremium(insAreaCompany.getJqpremium().add(insAreaCompany.getJypremium()).add(insAreaCompany.getSypremium()));
-//                            sysPremiumDetail.setProportional(sysPartner.getProportional());
-//                            sysPremiumDetail.setStatus(0);
-//                            sysPremiumDetail.setType(2);
-//                            sysPremiumDetail.setIssuerId(userId);
-//                            sysPremiumDetail.setIssuerName(insOrders.getUsername());
-//                            sysPremiumDetail.setExtractFee(sysPremiumDetail.getSumpremium().multiply(new BigDecimal(sysPartner.getProportional())
-//                                    .divide(new BigDecimal("100"))).setScale(5, RoundingMode.DOWN));
-//                            sysPremiumDetail.setCreateTime(new Date());
-//                            sysPremiumDetail.setIndustrySector(1);
-//                            sysPremiumDetailsMapper.insert(sysPremiumDetail);
-//                        }
-//                    }
-//                }
-//            }
+            saveFeeInfo(insAreaCompany);
+
         }
 
         if (InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insOrders.getOrderstatus())) {
@@ -342,6 +273,130 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     }
 
+    private void saveFeeInfo(InsAreaCompany insAreaCompany) {
+        InsOrders insOrders = getById(insAreaCompany.getOrderno());
+        String userId = insOrders.getUserid();
+        try {
+            SysDept sysDept = sysDeptService.getById(insOrders.getDeptid());
+            if (sysDept != null) {
+                SysPremiumDetails sysPremiumDetailsInfo = new SysPremiumDetails();
+                sysPremiumDetailsInfo.setUserId(userId);
+                sysPremiumDetailsInfo.setUserName(insOrders.getUsername());
+                sysPremiumDetailsInfo.setCompanyId(insAreaCompany.getId());
+                sysPremiumDetailsInfo.setOrderno(insAreaCompany.getOrderno());
+                sysPremiumDetailsInfo.setJqpremium(insAreaCompany.getJqpremium());
+                sysPremiumDetailsInfo.setJypremium(insAreaCompany.getJypremium());
+                sysPremiumDetailsInfo.setSypremium(insAreaCompany.getSypremium());
+                sysPremiumDetailsInfo.setSumpremium(insAreaCompany.getJqpremium().add(insAreaCompany.getJypremium()).add(insAreaCompany.getSypremium()));
+                sysPremiumDetailsInfo.setStatus(0);
+                sysPremiumDetailsInfo.setType(1);
+                sysPremiumDetailsInfo.setCreateTime(new Date());
+                sysPremiumDetailsInfo.setIndustrySector(1);
+                sysPremiumDetailsMapper.insert(sysPremiumDetailsInfo);
+
+                String deptId=getFiveDeptId(sysDept);
+                //工作室管理员抽层费用记录
+                SysAgencyLeader sysAgencyLeader = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
+                        .eq(SysAgencyLeader::getDeptId, deptId).eq(SysAgencyLeader::getDelFlag,1));
+                if (sysAgencyLeader != null) {
+                    //工作室分钱
+                    String proportional = sysAgencyLeader.getProportional();
+                    if (proportional != null) {
+                        SysPremiumDetails sysPremiumDetails = new SysPremiumDetails();
+                        sysPremiumDetails.setUserId(sysAgencyLeader.getUserId());
+                        sysPremiumDetails.setUserName(sysAgencyLeader.getUserName());
+                        sysPremiumDetails.setCompanyId(insAreaCompany.getId());
+                        sysPremiumDetails.setOrderno(insAreaCompany.getOrderno());
+                        sysPremiumDetails.setJqpremium(insAreaCompany.getJqpremium());
+                        sysPremiumDetails.setJypremium(insAreaCompany.getJypremium());
+                        sysPremiumDetails.setSypremium(insAreaCompany.getSypremium());
+                        sysPremiumDetails.setSumpremium(insAreaCompany.getJqpremium().add(insAreaCompany.getJypremium()).add(insAreaCompany.getSypremium()));
+                        sysPremiumDetails.setProportional(sysAgencyLeader.getProportional());
+                        sysPremiumDetails.setStatus(0);
+                        sysPremiumDetails.setType(2);
+                        sysPremiumDetails.setIssuerId(userId);
+                        sysPremiumDetails.setIssuerName(insOrders.getUsername());
+                        sysPremiumDetails.setExtractFee(sysPremiumDetails.getSumpremium().multiply(new BigDecimal(sysAgencyLeader.getProportional())
+                                .divide(new BigDecimal("100"))).setScale(5, RoundingMode.DOWN));
+                        sysPremiumDetails.setCreateTime(new Date());
+                        sysPremiumDetails.setIndustrySector(1);
+                        sysPremiumDetailsMapper.insert(sysPremiumDetails);
+                    }
+                    //查询一级合伙人的比例配置
+                    SysRelationPerson sysRelationPerson1 = sysRelationPersonMapper.selectOne(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader.getUserId())
+                            .eq(SysRelationPerson::getType, 1).eq(SysRelationPerson::getSuggestLevel, 1));
+
+                    SysProportionConfig sysProportionConfig = sysProportionConfigMapper.selectOne(new LambdaQueryWrapper<SysProportionConfig>()
+                            .eq(SysProportionConfig::getUserId, sysRelationPerson1.getSuggestId()));
+
+                    //合伙人抽层费用记录
+                    List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader.getUserId()).eq(SysRelationPerson::getType, 1));
+
+                    if (sysRelationPersonList.size()>0) {
+                        for (SysRelationPerson sysRelationPerson : sysRelationPersonList) {
+                            SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                                    .eq(SysPartner::getUserId, sysRelationPerson.getSuggestId()).eq(SysPartner::getDelFlag, 1));
+                            if (sysPartner == null) continue;
+                            SysPremiumDetails sysPremiumDetail = new SysPremiumDetails();
+                            sysPremiumDetail.setUserId(sysPartner.getUserId());
+                            sysPremiumDetail.setUserName(sysPartner.getUserName());
+                            sysPremiumDetail.setCompanyId(insAreaCompany.getId());
+                            sysPremiumDetail.setOrderno(insAreaCompany.getOrderno());
+                            sysPremiumDetail.setJqpremium(insAreaCompany.getJqpremium());
+                            sysPremiumDetail.setJypremium(insAreaCompany.getJypremium());
+                            sysPremiumDetail.setSypremium(insAreaCompany.getSypremium());
+                            sysPremiumDetail.setSumpremium(insAreaCompany.getJqpremium().add(insAreaCompany.getJypremium()).add(insAreaCompany.getSypremium()));
+                            sysPremiumDetail.setStatus(0);
+                            sysPremiumDetail.setType(2);
+                            sysPremiumDetail.setIssuerId(userId);
+                            sysPremiumDetail.setIssuerName(insOrders.getUsername());
+                            sysPremiumDetail.setCreateTime(new Date());
+                            sysPremiumDetail.setIndustrySector(1);
+                            int suggestLevel = sysRelationPerson.getSuggestLevel();
+                            if (suggestLevel == 1) {
+                                String oneProportion = sysProportionConfig.getOneProportion();
+                                if (StringUtils.isEmpty(oneProportion)) continue;
+                                sysPremiumDetail.setProportional(oneProportion);
+                                sysPremiumDetail.setExtractFee(sysPremiumDetail.getSumpremium().multiply(new BigDecimal(oneProportion)
+                                        .divide(new BigDecimal("100"))).setScale(5, RoundingMode.DOWN));
+                            }else if (suggestLevel == 2) {
+                                String twoProportion = sysProportionConfig.getTwoProportion();
+                                if (StringUtils.isEmpty(twoProportion)) continue;
+                                sysPremiumDetail.setProportional(twoProportion);
+                                sysPremiumDetail.setExtractFee(sysPremiumDetail.getSumpremium().multiply(new BigDecimal(twoProportion)
+                                        .divide(new BigDecimal("100"))).setScale(5, RoundingMode.DOWN));
+                            }else if (suggestLevel == 3) {
+                                String threeProportion = sysProportionConfig.getThreeProportion();
+                                if (StringUtils.isEmpty(threeProportion)) continue;
+                                sysPremiumDetail.setProportional(threeProportion);
+                                sysPremiumDetail.setExtractFee(sysPremiumDetail.getSumpremium().multiply(new BigDecimal(threeProportion)
+                                        .divide(new BigDecimal("100"))).setScale(5, RoundingMode.DOWN));
+                            }else if (suggestLevel == 4) {
+                                String fourProportion = sysProportionConfig.getFourProportion();
+                                if (StringUtils.isEmpty(fourProportion)) continue;
+                                sysPremiumDetail.setProportional(sysProportionConfig.getFourProportion());
+                                sysPremiumDetail.setExtractFee(sysPremiumDetail.getSumpremium().multiply(new BigDecimal(sysProportionConfig.getFourProportion())
+                                        .divide(new BigDecimal("100"))).setScale(5, RoundingMode.DOWN));
+                            }else if (suggestLevel == 5) {
+                                String fiveProportion = sysProportionConfig.getFiveProportion();
+                                if (StringUtils.isEmpty(fiveProportion)) continue;
+                                sysPremiumDetail.setProportional(sysProportionConfig.getFiveProportion());
+                                sysPremiumDetail.setExtractFee(sysPremiumDetail.getSumpremium().multiply(new BigDecimal(sysProportionConfig.getFiveProportion())
+                                        .divide(new BigDecimal("100"))).setScale(5, RoundingMode.DOWN));
+                            }
+                            sysPremiumDetailsMapper.insert(sysPremiumDetail);
+                        }
+                    }
+                }
+            }
+        }catch (Exception e){
+
+        }
+
+    }
+
     private String getFiveDeptId(SysDept sysDept) {
         String comlevel = sysDept.getComlevel();
         if (StringUtils.isNotEmpty(comlevel) && comlevel.equals("5")) {

+ 18 - 0
src/main/resources/mapper/modules/admin/SysAgencyLeaderMapper.xml

@@ -23,6 +23,24 @@
         dept_id,dept_name,comlevel,
         source,proportional,create_time,create_by,update_time,update_by,del_flag
     </sql>
+    <update id="updateByIds">
+        update sys_agency_leader
+        <set>
+            <if test="dto.proportional != null and dto.proportional != ''">
+                proportional = #{dto.proportional}
+            </if>
+        </set>
+        <where>
+            <if test="dto.ids != null and dto.ids != '' and dto.ids.size() > 0">
+                and id in
+                <foreach collection="dto.ids" item="id" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+
+
+    </update>
     <select id="getByUserIdList" resultType="com.ydtech.modules.admin.model.SysAgencyLeader">
         select *
         from sys_agency_leader sal

+ 97 - 0
src/main/resources/mapper/modules/admin/SysPartnerMapper.xml

@@ -77,5 +77,102 @@
     </select>
 
 
+    <select id="queryDeptByTimes" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+            s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d %H' ) as time
+        FROM sys_user  s
+        <where>
+            s.type = 3 and s.status in (1, 4, 5, 6, 7)
+            <if test="userId != null ">
+                and s.referrer_id = #{userId}
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d' ) like CONCAT( DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d' ), '%' ))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+    </select>
+
+    <select id="queryDeptByTime" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+            s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d' ) as time
+        FROM sys_user  s
+        <where>
+            s.type = 3 and s.status in (1, 4, 5, 6, 7)
+            <if test="userId != null ">
+                and s.referrer_id = #{userId}
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d'))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+    </select>
+
+    <select id="queryUserByTimes" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+            s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d %H' ) as time
+        FROM sys_user  s
+        <where>
+            s.status in (1, 4, 5, 6, 7)
+            <if test="deptIds != null and deptIds != '' and deptIds.size() > 0">
+                AND s.dept_id  in
+                <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d' ) like CONCAT( DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d' ), '%' ))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+
+    </select>
+
+    <select id="queryUserByTime" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+            s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d' ) as time
+        FROM sys_user  s
+        <where>
+            s.status in (1, 4, 5, 6, 7)
+            <if test="deptIds != null and deptIds != '' and deptIds.size() > 0">
+                AND s.dept_id  in
+                <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d'))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+
+    </select>
+
+
 </mapper>
 

+ 19 - 0
src/main/resources/mapper/modules/admin/SysProportionConfigMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysProportionConfigMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysProportionConfig" id="SysPortionalConfigurationMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="proportion" column="proportion" jdbcType="VARCHAR"/>
+        <result property="oneProportion" column="one_proportion" jdbcType="VARCHAR"/>
+        <result property="twoProportion" column="two_proportion" jdbcType="VARCHAR"/>
+        <result property="threeProportion" column="three_proportion" jdbcType="VARCHAR"/>
+        <result property="fourProportion" column="four_proportion" jdbcType="VARCHAR"/>
+        <result property="fiveProportion" column="five_proportion" jdbcType="VARCHAR"/>
+    </resultMap>
+
+
+
+</mapper>
+