소스 검색

合伙人APP

helixiao 1 년 전
부모
커밋
9fb4c54861
54개의 변경된 파일2897개의 추가작업 그리고 162개의 파일을 삭제
  1. 59 0
      sql/Online.sql
  2. 27 0
      src/main/java/com/ydtech/modules/admin/constants/IndustrySectorEnum.java
  3. 110 14
      src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java
  4. 30 6
      src/main/java/com/ydtech/modules/admin/controller/SysAgencyLeaderController.java
  5. 94 0
      src/main/java/com/ydtech/modules/admin/controller/SysPartnerConfigController.java
  6. 18 3
      src/main/java/com/ydtech/modules/admin/controller/SysPartnerController.java
  7. 10 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerAccountMapper.java
  8. 19 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerConfigMapper.java
  9. 2 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerMapper.java
  10. 17 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerTimeMapper.java
  11. 18 0
      src/main/java/com/ydtech/modules/admin/dao/SysPremiumDetailsMapper.java
  12. 1 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  13. 61 0
      src/main/java/com/ydtech/modules/admin/model/PartnerInfoVo.java
  14. 55 0
      src/main/java/com/ydtech/modules/admin/model/SysPartnerAccount.java
  15. 41 0
      src/main/java/com/ydtech/modules/admin/model/SysPartnerConfig.java
  16. 52 0
      src/main/java/com/ydtech/modules/admin/model/SysPartnerTime.java
  17. 112 0
      src/main/java/com/ydtech/modules/admin/model/SysPremiumDetails.java
  18. 24 0
      src/main/java/com/ydtech/modules/admin/model/dto/CommissionInfoDto.java
  19. 26 0
      src/main/java/com/ydtech/modules/admin/model/dto/FilterPartnerInfoDto.java
  20. 43 0
      src/main/java/com/ydtech/modules/admin/model/dto/PartnerGradeInfo.java
  21. 18 0
      src/main/java/com/ydtech/modules/admin/model/dto/PartnerInfoDto.java
  22. 14 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerConfigDto.java
  23. 23 0
      src/main/java/com/ydtech/modules/admin/model/dto/TeamUserInfosDto.java
  24. 18 4
      src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfo.java
  25. 37 0
      src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfoFreeVo.java
  26. 66 0
      src/main/java/com/ydtech/modules/admin/model/vo/AppPartnerNumVo.java
  27. 52 0
      src/main/java/com/ydtech/modules/admin/model/vo/AppSysPartnerVo.java
  28. 56 0
      src/main/java/com/ydtech/modules/admin/model/vo/AppUserInfoVo.java
  29. 35 0
      src/main/java/com/ydtech/modules/admin/model/vo/FilterPartnerInfoVo.java
  30. 34 0
      src/main/java/com/ydtech/modules/admin/model/vo/PartnerInfoFreeVo.java
  31. 39 0
      src/main/java/com/ydtech/modules/admin/model/vo/PartnerLeaderInfoVo.java
  32. 35 0
      src/main/java/com/ydtech/modules/admin/model/vo/TeamUserInfosFreeVo.java
  33. 38 0
      src/main/java/com/ydtech/modules/admin/model/vo/TeamUserInfosVo.java
  34. 2 0
      src/main/java/com/ydtech/modules/admin/service/SysAgencyLeaderService.java
  35. 8 0
      src/main/java/com/ydtech/modules/admin/service/SysPartnerAccountService.java
  36. 20 0
      src/main/java/com/ydtech/modules/admin/service/SysPartnerConfigService.java
  37. 23 10
      src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java
  38. 17 0
      src/main/java/com/ydtech/modules/admin/service/SysPartnerTimeService.java
  39. 7 0
      src/main/java/com/ydtech/modules/admin/service/SysPremiumDetailsService.java
  40. 34 10
      src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyFeeApprovalServiceImpl.java
  41. 109 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyLeaderServiceImpl.java
  42. 11 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerAccountServiceImpl.java
  43. 40 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerConfigServiceImpl.java
  44. 1045 110
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java
  45. 24 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerTimeServiceImpl.java
  46. 12 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysPremiumDetailsServiceImpl.java
  47. 35 3
      src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java
  48. 104 2
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  49. 16 0
      src/main/resources/mapper/modules/admin/SysPartnerAccountMapper.xml
  50. 14 0
      src/main/resources/mapper/modules/admin/SysPartnerConfigMapper.xml
  51. 8 0
      src/main/resources/mapper/modules/admin/SysPartnerMapper.xml
  52. 17 0
      src/main/resources/mapper/modules/admin/SysPartnerTimeMapper.xml
  53. 51 0
      src/main/resources/mapper/modules/admin/SysPremiumDetailsMapper.xml
  54. 16 0
      src/main/resources/mapper/modules/admin/SysUserMapper.xml

+ 59 - 0
sql/Online.sql

@@ -7,3 +7,62 @@ ADD COLUMN `first_jq_total_proportion` decimal(10, 2) NULL DEFAULT NULL COMMENT
 ADD COLUMN `first_sy_total_proportion` decimal(10, 2) NULL DEFAULT NULL COMMENT '初始商业优惠比例' AFTER `first_jq_total_proportion`,
 ADD COLUMN `first_no_total_proportion` decimal(10, 2) NULL DEFAULT NULL COMMENT '初始非车优惠比例' AFTER `first_sy_total_proportion`;
 --  2024-10-15 BY dongxin end
+
+
+--  2024-10-16 BY helixiao
+CREATE TABLE `sys_premium_details` (
+    `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
+    `orderno` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '订单号',
+    `company_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '子订单id',
+    `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户id',
+    `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户名称',
+    `issuer_id` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '代理人 id',
+    `issuer_name` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '代理人name',
+    `jqpremium` decimal(10,5) unsigned DEFAULT NULL COMMENT '交强险费用',
+    `sypremium` decimal(10,5) unsigned DEFAULT NULL COMMENT '商业险费用',
+    `jypremium` decimal(10,5) unsigned DEFAULT NULL COMMENT '驾意险费用',
+    `sumpremium` decimal(10,5) unsigned DEFAULT NULL COMMENT '总保费',
+    `proportional` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '抽成比例(总保费抽成)',
+    `extract_fee` decimal(10,5) unsigned DEFAULT NULL COMMENT '抽成费用',
+    `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0:未审核 1:审核通过)',
+    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+    `type` tinyint DEFAULT NULL COMMENT '类型:1前线人员 2后线人员',
+    `industry_sector` tinyint DEFAULT NULL COMMENT '行业领域 1:汽车-车险',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='合伙人、工作室管理员保费抽成明细表';
+
+
+CREATE TABLE `sys_partner_account` (
+    `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
+    `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户id',
+    `sum_Premium` decimal(10,5) unsigned DEFAULT NULL COMMENT '总保费',
+    `extract_fee` decimal(10,5) unsigned DEFAULT NULL COMMENT '抽成费用',
+    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+    `history_fee` decimal(10,5) DEFAULT NULL COMMENT '已提现费用',
+    `cash_fee` decimal(10,5) DEFAULT NULL COMMENT '可提现抽成费用',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='合伙人、工作室管理人员抽层账户表';
+
+
+CREATE TABLE `sys_partner_config` (
+    `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
+    `logo` mediumblob COMMENT '图标',
+    `image` mediumblob COMMENT '背景',
+    `level` tinyint DEFAULT NULL COMMENT '等级',
+    `del_flag` tinyint NOT NULL DEFAULT '1' COMMENT '状态( 0:删除 1:正常)',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='合伙人APP等级背景配置表';
+
+CREATE TABLE `sys_partner_time` (
+    `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
+    `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户id',
+    `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户name',
+    `old_proportional` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '旧比例',
+    `new_proportional` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '新比例',
+    `create_time` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '月份',
+    `type` tinyint DEFAULT NULL COMMENT '类型1合伙人 2工作室管理员',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='抽成比例修改表';
+
+
+

+ 27 - 0
src/main/java/com/ydtech/modules/admin/constants/IndustrySectorEnum.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.admin.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum IndustrySectorEnum {
+
+    IS_01(1, "汽车-车险");
+//    IS_02(2, "保险-财险"),
+//    IS_03(3, "汽车-车险"),
+//    IS_04(4, "汽车-车险");
+
+    private final Integer code;
+
+    private final String desc;
+
+    public static String getDescByCode(Integer code){
+        for (UserWorkStatus value : UserWorkStatus.values()) {
+            if(value.getCode().equals(code)){
+                return value.getDesc();
+            }
+        }
+        return null;
+    }
+}

+ 110 - 14
src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java

@@ -1,53 +1,149 @@
 package com.ydtech.modules.admin.controller;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.ydtech.aop.exception.DescribeException;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.PartnerInfoVo;
 import com.ydtech.modules.admin.model.SysPartner;
-import com.ydtech.modules.admin.model.vo.APPPartnerInfo;
+import com.ydtech.modules.admin.model.SysPartnerAccount;
+import com.ydtech.modules.admin.model.SysPremiumDetails;
+import com.ydtech.modules.admin.model.dto.*;
+import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.admin.service.SysPartnerService;
+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 org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 
 @Api(tags = "合伙人app")
 @RestController
 @RequestMapping("/APPPartner")
-public class APPPartnerController {
+public class APPPartnerController extends BaseController {
 
     @Resource
     private SysPartnerService sysPartnerService;
 
+    /**
+     * 首页信息
+     */
+    @GetMapping("/getHomePage")
+    @ApiOperation(value = "APP首页信息")
+    public HttpResult<AppPartnerNumVo> getHomePage(@RequestParam("type") Integer type) {
+
+        return HttpResult.ok(this.sysPartnerService.getHomePage(type));
+    }
+
 
     /**
-     * 合伙人推荐下的合伙人
+     * 个人信息
+     *
+     * @return
      */
-    @GetMapping("/info")
-    @ApiOperation(value = "APP合伙人推荐下的合伙人")
-    public HttpResult<List<SysPartner>> partnerInfo(@RequestParam("beginTime") String beginTime,
-                                                    @RequestParam("endTime") String endTime) {
+    @GetMapping("/getUserInfo")
+    @ApiOperation(value = "APP个人信息")
+    public HttpResult<AppUserInfoVo> getUserInfo(@RequestParam("type") Integer type) {
 
-        return HttpResult.ok(this.sysPartnerService.partnerInfo(beginTime,endTime));
+        return HttpResult.ok(this.sysPartnerService.getUserInfo(type));
     }
 
     /**
-     * 合伙人信息包含下面所有工作室信息
+     * APP账户金额
+     *
+     * @return
      */
-    @GetMapping("/getLeaderInfo")
-    @ApiOperation(value = "查询合伙人有关的工作室管理员")
-    public HttpResult<APPPartnerInfo> getLeaderInfo(@RequestParam("userId") String userId) {
+    @GetMapping("/getFee")
+    @ApiOperation(value = "APP账户金额")
+    public HttpResult<SysPartnerAccount> getFee() {
 
-        return HttpResult.ok(this.sysPartnerService.getLeaderInfo(userId));
+        return HttpResult.ok(this.sysPartnerService.getFee());
     }
 
 
+
+
+    /**
+     * 登陆人下的每个等级合伙人统计信息
+     */
+    @PostMapping("/info")
+    @ApiOperation(value = "APP登陆人下的每个等级合伙人统计信息")
+    public HttpResult<List<AppSysPartnerVo>> partnerInfo(@RequestBody PartnerInfoDto partnerInfoDto) {
+
+        return HttpResult.ok(this.sysPartnerService.partnerInfo(partnerInfoDto));
+    }
+
     /**
-     * 根据id查询工作室信息包含西面所有成员
+     * 合伙人工作室详情 统计总费用
      */
+    @PostMapping("/partnerLeaderInfo")
+    @ApiOperation(value = "合伙人工作室详情")
+    public HttpResult<PartnerLeaderInfoVo> partnerLeaderInfo(@RequestBody PartnerGradeInfo partnerGradeInfo) {
+
+        return HttpResult.ok(this.sysPartnerService.partnerLeaderInfo(partnerGradeInfo));
+    }
 
 
+    /**
+     * 筛选合伙人详情
+     * @return
+     */
+    @PostMapping("/queryFilterPartnerInfo")
+    @ApiOperation(value = "筛选合伙人详情")
+    public HttpResult<FilterPartnerInfoVo> queryFilterPartnerInfo(@RequestBody FilterPartnerInfoDto filterPartnerInfoDto) {
+
+        return HttpResult.ok(this.sysPartnerService.queryFilterPartnerInfo(filterPartnerInfoDto));
+    }
 
+    /**
+     * 等级合伙人详情
+     * @param partnerGradeInfo
+     * @return
+     */
+    @PostMapping("/queryPartnerInfo")
+    @ApiOperation(value = "等级合伙人详情")
+    public HttpResult<PartnerInfoFreeVo> queryPartnerInfo(@RequestBody PartnerGradeInfo partnerGradeInfo) {
+
+        return HttpResult.ok(this.sysPartnerService.queryPartnerInfo(partnerGradeInfo));
+    }
+
+
+    /**
+     * 查看团队
+     */
+    @PostMapping("/getTeamInfo")
+    @ApiOperation(value = "查看机构下团队信息")
+    public HttpResult<APPPartnerInfoFreeVo> getTeamInfo(@RequestBody PartnerGradeInfo partnerGradeInfo) {
+
+        return HttpResult.ok(this.sysPartnerService.getTeamInfo(partnerGradeInfo));
+    }
+
+    @PostMapping("/getTeamUserInfo")
+    @ApiOperation(value = "查看团队下人员信息")
+    public HttpResult<TeamUserInfosFreeVo> getTeamUserInfo(@RequestBody TeamUserInfosDto teamUserInfosDto) {
+
+        return HttpResult.ok(this.sysPartnerService.getTeamUserInfo(teamUserInfosDto));
+    }
+
+    /**
+     * 总佣金组成明细
+     */
+    @PostMapping("/getCommissionInfo")
+    @ApiOperation(value = "总佣金组成明细")
+    public HttpResult<BasePageResult<SysPremiumDetails>> getCommissionInfo(@RequestBody CommissionInfoDto commissionInfoDto) {
+        if (commissionInfoDto.getPageNum() == 0) {
+            commissionInfoDto.setPageNum(1);
+        }
+        if (commissionInfoDto.getPageSize() == 0) {
+            commissionInfoDto.setPageSize(10);
+        }
+
+        return HttpResult.ok(this.sysPartnerService.getCommissionInfo(commissionInfoDto));
+    }
 
 
 }

+ 30 - 6
src/main/java/com/ydtech/modules/admin/controller/SysAgencyLeaderController.java

@@ -144,16 +144,28 @@ public class SysAgencyLeaderController extends BaseController {
      * 查询所有机构负责人的保费抽成明细
      */
 
+//    @PostMapping("/queryExtractFeeAll")
+//    @ApiOperation(value = "优化查询所有机构负责人的保费抽成明细")
+//    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryExtractFeeList(@RequestBody SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
+//        if (sysAgencyLeaderPageDto.getPageNum() == 0) {
+//            sysAgencyLeaderPageDto.setPageNum(1);
+//        }
+//        if (sysAgencyLeaderPageDto.getPageSize() == 0) {
+//            sysAgencyLeaderPageDto.setPageSize(10);
+//        }
+//        return HttpResult.ok("success", this.sysAgencyLeaderService.queryExtractFeeList(sysAgencyLeaderPageDto));
+//    }
+
     @PostMapping("/queryExtractFeeAll")
-    @ApiOperation(value = "优化查询所有机构负责人的保费抽成明细")
-    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryExtractFeeList(@RequestBody SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
+    @ApiOperation(value = "最新查询所有机构负责人的保费抽成明细")
+    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryExtractFeeAlls(@RequestBody SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
         if (sysAgencyLeaderPageDto.getPageNum() == 0) {
             sysAgencyLeaderPageDto.setPageNum(1);
         }
         if (sysAgencyLeaderPageDto.getPageSize() == 0) {
             sysAgencyLeaderPageDto.setPageSize(10);
         }
-        return HttpResult.ok("success", this.sysAgencyLeaderService.queryExtractFeeList(sysAgencyLeaderPageDto));
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryExtractFeeAlls(sysAgencyLeaderPageDto));
     }
 
 
@@ -212,16 +224,28 @@ public class SysAgencyLeaderController extends BaseController {
         return HttpResult.ok("success", this.sysAgencyLeaderService.queryAgencyUser(deptId));
     }
 
-    @PostMapping("/queryAgencyUserInsAreaPage")
+//    @PostMapping("/queryAgencyUserInsAreaPage")
+//    @ApiOperation(value = "查询机构下的单个员工的子订单费用")
+//    public HttpResult<IPage<AgencyUserInsAreaVo>> queryAgencyUserInsAreaPage(@RequestBody AgencyUserInsAreaDto agencyUserInsAreaDto){
+//        if (agencyUserInsAreaDto.getPageNum() == 0) {
+//            agencyUserInsAreaDto.setPageNum(1);
+//        }
+//        if (agencyUserInsAreaDto.getPageSize() == 0) {
+//            agencyUserInsAreaDto.setPageSize(10);
+//        }
+//        return HttpResult.ok("success", this.sysAgencyLeaderService.queryAgencyUserInsAreaPage(agencyUserInsAreaDto));
+//    }
+
+    @PostMapping("/queryInsAreaPageById")
     @ApiOperation(value = "查询机构下的单个员工的子订单费用")
-    public HttpResult<IPage<AgencyUserInsAreaVo>> queryAgencyUserInsAreaPage(@RequestBody AgencyUserInsAreaDto agencyUserInsAreaDto){
+    public HttpResult<IPage<AgencyUserInsAreaVo>> queryInsAreaPageById(@RequestBody AgencyUserInsAreaDto agencyUserInsAreaDto){
         if (agencyUserInsAreaDto.getPageNum() == 0) {
             agencyUserInsAreaDto.setPageNum(1);
         }
         if (agencyUserInsAreaDto.getPageSize() == 0) {
             agencyUserInsAreaDto.setPageSize(10);
         }
-        return HttpResult.ok("success", this.sysAgencyLeaderService.queryAgencyUserInsAreaPage(agencyUserInsAreaDto));
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryInsAreaPageById(agencyUserInsAreaDto));
     }
 
     @PostMapping("/queryUserInsAreaExcel")

+ 94 - 0
src/main/java/com/ydtech/modules/admin/controller/SysPartnerConfigController.java

@@ -0,0 +1,94 @@
+package com.ydtech.modules.admin.controller;
+
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysPartnerConfig;
+import com.ydtech.modules.admin.model.dto.SysPartnerConfigDto;
+import com.ydtech.modules.admin.service.SysPartnerConfigService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * 合伙人APP等级背景配置表(SysPartnerConfig)表控制层
+ *
+ * @author makejava
+ * @since 2024-10-16 09:48:19
+ */
+@RestController
+@RequestMapping("sysPartnerConfig")
+@Api(tags = "合伙人APP等级背景配置表")
+public class SysPartnerConfigController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private SysPartnerConfigService sysPartnerConfigService;
+
+    @PostMapping("/queryByPage")
+    @ApiOperation(value = "合伙人分页查询")
+    public HttpResult<BasePageResult<SysPartnerConfig>> queryByPage(@RequestBody SysPartnerConfigDto sysPartnerConfigDto) {
+        if (sysPartnerConfigDto.getPageNum() == 0) {
+            sysPartnerConfigDto.setPageNum(1);
+        }
+        if (sysPartnerConfigDto.getPageSize() == 0) {
+            sysPartnerConfigDto.setPageSize(10);
+        }
+        return HttpResult.ok(this.sysPartnerConfigService.queryByPage(sysPartnerConfigDto));
+    }
+
+
+
+    /**
+     * 通过主键查询单条数据
+     *
+     * @param id 主键
+     * @return 单条数据
+     */
+    @GetMapping("/queryById/{id}")
+    @ApiOperation(value = "通过主键查询单条数据")
+    public HttpResult<SysPartnerConfig> queryById(@PathVariable("id") Long id) {
+        return HttpResult.ok(this.sysPartnerConfigService.getById(id));
+    }
+
+    /**
+     * 新增数据
+     *
+     * @param sysPartnerConfig 实体
+     * @return 新增结果
+     */
+    @PostMapping("/add")
+    @ApiOperation(value = "新增数据")
+    public HttpResult add(@RequestBody SysPartnerConfig sysPartnerConfig) {
+        return HttpResult.ok(this.sysPartnerConfigService.save(sysPartnerConfig));
+    }
+
+    /**
+     * 编辑数据
+     *
+     * @param sysPartnerConfig 实体
+     * @return 编辑结果
+     */
+    @PostMapping("/edit")
+    @ApiOperation(value = "编辑数据")
+    public HttpResult edit(@RequestBody SysPartnerConfig sysPartnerConfig) {
+        return HttpResult.ok(this.sysPartnerConfigService.updateById(sysPartnerConfig));
+    }
+
+    /**
+     * 删除数据
+     *
+     * @param id 主键
+     * @return 删除是否成功
+     */
+    @DeleteMapping("/deleteById/{id}")
+    @ApiOperation(value = "删除数据")
+    public HttpResult deleteById(@PathVariable("id") Long id) {
+        return HttpResult.ok(this.sysPartnerConfigService.deleteById(id));
+    }
+
+}
+

+ 18 - 3
src/main/java/com/ydtech/modules/admin/controller/SysPartnerController.java

@@ -115,19 +115,34 @@ public class SysPartnerController extends BaseController {
         return HttpResult.ok("success", this.sysPartnerService.deleteById(id));
     }
 
+//    /**
+//     * 所有合伙人的抽层费用
+//     */
+//    @PostMapping("/queryPartnerByPages")
+//    @ApiOperation(value = "优化所有合伙人的抽层费用信息")
+//    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryPartnerByPages(@RequestBody SysPartnerPageDto sysPartnerPageDto) {
+//        if (sysPartnerPageDto.getPageNum() == 0) {
+//            sysPartnerPageDto.setPageNum(1);
+//        }
+//        if (sysPartnerPageDto.getPageSize() == 0) {
+//            sysPartnerPageDto.setPageSize(10);
+//        }
+//        return HttpResult.ok(this.sysPartnerService.queryPartnerByPages(sysPartnerPageDto));
+//    }
+
     /**
      * 所有合伙人的抽层费用
      */
     @PostMapping("/queryPartnerByPage")
-    @ApiOperation(value = "优化所有合伙人的抽层费用信息")
-    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryPartnerByPages(@RequestBody SysPartnerPageDto sysPartnerPageDto) {
+    @ApiOperation(value = "所有合伙人的抽层费用信息")
+    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryPartnerByPage(@RequestBody SysPartnerPageDto sysPartnerPageDto) {
         if (sysPartnerPageDto.getPageNum() == 0) {
             sysPartnerPageDto.setPageNum(1);
         }
         if (sysPartnerPageDto.getPageSize() == 0) {
             sysPartnerPageDto.setPageSize(10);
         }
-        return HttpResult.ok(this.sysPartnerService.queryPartnerByPages(sysPartnerPageDto));
+        return HttpResult.ok(this.sysPartnerService.queryPartnerByPage(sysPartnerPageDto));
     }
 
     /**

+ 10 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPartnerAccountMapper.java

@@ -0,0 +1,10 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysPartnerAccount;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysPartnerAccountMapper extends BaseMapper<SysPartnerAccount> {
+
+}

+ 19 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPartnerConfigMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysPartnerConfig;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 合伙人APP等级背景配置表(SysPartnerConfig)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-10-16 09:48:19
+ */
+@Mapper
+public interface SysPartnerConfigMapper extends BaseMapper<SysPartnerConfig> {
+
+
+
+}
+

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

@@ -34,5 +34,7 @@ public interface SysPartnerMapper extends BaseMapper<SysPartner> {
      *  @Description:  机构树形
      */
     List<SysPartnerConsoleDto> getTreeDeptUser(PartnerBalanceVo partnerBalanceVo);
+
+    List<SysPartner> queryByLoginId(@Param("userId") String userId);
 }
 

+ 17 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPartnerTimeMapper.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysPartnerTime;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 抽成比例修改表(SysPartnerTime)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-10-10 09:07:51
+ */
+@Mapper
+public interface SysPartnerTimeMapper extends BaseMapper<SysPartnerTime> {
+
+}
+

+ 18 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPremiumDetailsMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.modules.admin.model.SysPremiumDetails;
+import com.ydtech.modules.admin.model.dto.AgencyUserInsAreaDto;
+import com.ydtech.modules.admin.model.vo.AgencyUserInsAreaVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface SysPremiumDetailsMapper extends BaseMapper<SysPremiumDetails> {
+
+    void updateStatus(String id);
+
+    IPage<AgencyUserInsAreaVo> queryInsAreaPageById(Page page,@Param("dto") AgencyUserInsAreaDto agencyUserInsAreaDto);
+}

+ 1 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -519,6 +519,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     List<SysUser> findHxUserListNew();
 
 
+    AppUserInfoVo queryByUserId(@Param("userId")String userId);
 }
 
 

+ 61 - 0
src/main/java/com/ydtech/modules/admin/model/PartnerInfoVo.java

@@ -0,0 +1,61 @@
+package com.ydtech.modules.admin.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PartnerInfoVo {
+
+    @ApiModelProperty(value = "合伙人id")
+    private String userId;
+    @ApiModelProperty(value = "合伙人Name")
+    private String userName;
+    @ApiModelProperty(value = "推荐人Name")
+    private String suggestName;
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+    @ApiModelProperty(value = "团队总数")
+    private Integer deptNum;
+
+    @ApiModelProperty(value = "工作室数量")
+    private Integer workNumber;
+
+    @ApiModelProperty(value = "数量")
+    private Integer partnerNumber;
+
+    @ApiModelProperty(value = "合伙人ids")
+    private List<String> partnerIds;
+
+    @ApiModelProperty(value = "管理员ids")
+    private List<String> leaderIds;
+
+    @ApiModelProperty(value = "工作室下团队ids")
+    private List<String> deptIds;
+
+    @ApiModelProperty(value = "级别")
+    private Integer level;
+
+}

+ 55 - 0
src/main/java/com/ydtech/modules/admin/model/SysPartnerAccount.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class SysPartnerAccount {
+
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    private String userId;
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 抽成费用
+     */
+    @ApiModelProperty(value = "抽成费用")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 已提现抽成费用
+     */
+    @ApiModelProperty(value = "已提现抽成费用")
+    private BigDecimal historyFee;
+    /**
+     * 可提现抽成费用
+     */
+    @ApiModelProperty(value = "可提现抽成费用")
+    private BigDecimal cashFee;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+
+}

+ 41 - 0
src/main/java/com/ydtech/modules/admin/model/SysPartnerConfig.java

@@ -0,0 +1,41 @@
+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;
+
+/**
+ * 合伙人APP等级背景配置表(SysPartnerConfig)实体类
+ *
+ * @author makejava
+ * @since 2024-10-16 09:48:19
+ */
+@Data
+public class SysPartnerConfig implements Serializable {
+    private static final long serialVersionUID = 211257280715008838L;
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Long id;
+    /**
+     * 图标
+     */
+    private String logo;
+    /**
+     * 背景
+     */
+    private String image;
+    /**
+     * 等级
+     */
+    private Integer level;
+    /**
+     * 状态( 0:删除 1:正常)
+     */
+    private Integer delFlag;
+
+}
+

+ 52 - 0
src/main/java/com/ydtech/modules/admin/model/SysPartnerTime.java

@@ -0,0 +1,52 @@
+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;
+
+/**
+ * 抽成比例修改表(SysPartnerTime)实体类
+ *
+ * @author makejava
+ * @since 2024-10-10 09:07:51
+ */
+@Data
+public class SysPartnerTime implements Serializable {
+    private static final long serialVersionUID = 104835295201241641L;
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    private String userId;
+    /**
+     * 用户name
+     */
+    private String userName;
+    /**
+     * 旧比例
+     */
+    private String oldProportional;
+    /**
+     * 新比例
+     */
+    private String newProportional;
+    /**
+     * 月份
+     */
+    private String createTime;
+    /**
+     * 类型1合伙人 2工作室管理员
+     */
+    private Integer type;
+
+
+
+
+}
+

+ 112 - 0
src/main/java/com/ydtech/modules/admin/model/SysPremiumDetails.java

@@ -0,0 +1,112 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class SysPremiumDetails {
+
+    /**
+     * 自增id
+     */
+    @ApiModelProperty(value = "自增id")
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+    /**
+     * 用户name
+     */
+    @ApiModelProperty(value = "用户name")
+    private String userName;
+
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(value = "代理人id")
+    private String issuerId;
+    /**
+     * 用户name
+     */
+    @ApiModelProperty(value = "代理人name")
+    private String issuerName;
+    /**
+     * 订单号
+     */
+    @ApiModelProperty(value = "订单号")
+    private String orderno;
+    /**
+     * 子订单id
+     */
+    @ApiModelProperty(value = "子订单id")
+    private String companyId;
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    private BigDecimal sumpremium;
+
+    /**
+     * 交强险费用
+     */
+    @ApiModelProperty(value = "交强险费用")
+    private BigDecimal jqpremium;
+
+    /**
+     * 商业险费用
+     */
+    @ApiModelProperty(value = "商业险费用")
+    private BigDecimal sypremium;
+
+    /**
+     * 驾意险费用
+     */
+    @ApiModelProperty(value = "驾意险费用")
+    private BigDecimal jypremium;
+    /**
+     * 抽层比例
+     */
+    @ApiModelProperty(value = "抽层比例")
+    private String proportional;
+
+    /**
+     * 佣金
+     */
+    @ApiModelProperty(value = "佣金")
+    private BigDecimal extractFee;
+
+
+    /**
+     * 状态(0:未审核 1:审核通过)
+     */
+    @ApiModelProperty(value = "状态(0:未审核 1:审核通过)")
+    private Integer status;
+    /**
+     * 类型:1前线人员 2后线人员
+     */
+    @ApiModelProperty(value = "类型:1前线人员 2后线人员")
+    private Integer type;
+    /**
+     * 行业领域 1:汽车-车险
+     */
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+
+
+}

+ 24 - 0
src/main/java/com/ydtech/modules/admin/model/dto/CommissionInfoDto.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CommissionInfoDto {
+
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+
+
+}

+ 26 - 0
src/main/java/com/ydtech/modules/admin/model/dto/FilterPartnerInfoDto.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FilterPartnerInfoDto {
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "等级 1一级;2二级;3级")
+    private Integer partnerType;
+
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+
+
+
+
+}

+ 43 - 0
src/main/java/com/ydtech/modules/admin/model/dto/PartnerGradeInfo.java

@@ -0,0 +1,43 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+@Data
+@ApiModel("每级合伙人详情")
+public class PartnerGradeInfo {
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "合伙人ids")
+    private List<String> partnerIds;
+
+    @ApiModelProperty(value = "管理员ids")
+    private List<String> leaderIds;
+
+    @ApiModelProperty(value = "合伙人:1;工作室:2 默认传:1")
+    private Integer type;
+
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+    @ApiModelProperty(value = "工作室下团队ids")
+    private List<String> deptIds;
+
+    /**
+     * 前端埋点数据
+     */
+    @ApiModelProperty(value = "级别")
+    private Integer level;
+
+
+
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/admin/model/dto/PartnerInfoDto.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PartnerInfoDto {
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = " 全部行业:0 行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+    @ApiModelProperty(value = "等级 1一级;2二级;3级")
+    private Integer partnerType;
+}

+ 14 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerConfigDto.java

@@ -0,0 +1,14 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SysPartnerConfigDto {
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+}

+ 23 - 0
src/main/java/com/ydtech/modules/admin/model/dto/TeamUserInfosDto.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TeamUserInfosDto {
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+
+    @ApiModelProperty(value = "人员ids")
+    private List<String> userIds;
+
+    @ApiModelProperty(value = "行业领域 1:汽车-车险")
+    private Integer industrySector;
+
+}

+ 18 - 4
src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfo.java

@@ -12,22 +12,36 @@ import java.util.List;
 @ApiModel(value = "合伙人下的管理员信息")
 public class APPPartnerInfo {
 
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
 
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
 
     @ApiModelProperty(value = "总保费")
     @JsonFormat(pattern = "0.00")
-    private BigDecimal sumpremium;
+    private BigDecimal sumPremium;
 
     @ApiModelProperty(value = "总佣金")
     @JsonFormat(pattern = "0.00")
     private BigDecimal extractFee;
 
     @ApiModelProperty(value = "成员总人数")
-    private Long number;
+    private Integer teamManNum;
+
+    @ApiModelProperty(value = "机构id")
+    private String leaderId;
+
+    @ApiModelProperty(value = "机构name")
+    private String leaderName;
+
+
+    @ApiModelProperty(value = "出单员工ids")
+    private List<String> userIds;
+
+
 
 
-    @ApiModelProperty(value = "管理员信息")
-    private List<AgencyLeaderInfo> agencyLeaderInfo;
 
 
 }

+ 37 - 0
src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfoFreeVo.java

@@ -0,0 +1,37 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class APPPartnerInfoFreeVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+    List<APPPartnerInfo> appPartnerInfos;
+
+
+
+}

+ 66 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AppPartnerNumVo.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class AppPartnerNumVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+
+
+    /**
+     * 抽成费用
+     */
+    @ApiModelProperty(value = "抽成费用")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer TeamManNum;
+
+    /**
+     * 所有合伙人数
+     */
+    @ApiModelProperty(value = "下级所有合伙人数")
+    private Integer partnerNum;
+
+
+    /**
+     * 合伙人直接工作室数
+     */
+    @ApiModelProperty(value = "合伙人直接工作室数")
+    private Integer workroomNum;
+
+    @ApiModelProperty(value = "管理员ids")
+    private List<String> leaderIds;
+
+
+    //工作室
+    @ApiModelProperty(value = "工作室下团队人数")
+    private Integer workroomManNum;
+
+    @ApiModelProperty(value = "工作室下团队数")
+    private Integer workroomTeamNum;
+
+    @ApiModelProperty(value = "工作室下团队ids")
+    private List<String> deptIds;
+
+
+
+
+
+
+}

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

@@ -0,0 +1,52 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class AppSysPartnerVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer TeamManNum;
+
+    @ApiModelProperty(value = "合伙人+工作室数量")
+    private Integer number;
+
+    @ApiModelProperty(value = "工作室数量")
+    private Integer workNumber;
+    //二级以下使用
+    @ApiModelProperty(value = "合伙人数量")
+    private Integer partnerNumber;
+
+    @ApiModelProperty(value = "合伙人ids")
+    private List<String> partnerIds;
+
+    @ApiModelProperty(value = "管理员ids")
+    private List<String> leaderIds;
+
+    @ApiModelProperty(value = "等级")
+    private Integer partnerType;
+
+
+}

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

@@ -0,0 +1,56 @@
+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.SysPartnerConfig;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.util.Date;
+
+@Data
+public class AppUserInfoVo {
+
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+
+    @ApiModelProperty("岗位名称")
+    private String positionName;
+    /**
+     * 团队名称
+     */
+    @ApiModelProperty(value = "团队名称")
+    private String deptName;
+
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+
+    /**
+     * 性别
+     */
+    @ApiModelProperty(value = "性别")
+    private String sex;
+
+    @ApiModelProperty(value = "微信号")
+    private String weChat;
+
+
+    @ApiModelProperty("入司时间")
+    private Date entryTime;
+
+    @ApiModelProperty("年限")
+    private Long years;
+
+    @ApiModelProperty(value = "等级背景")
+    private SysPartnerConfig sysPartnerConfig;
+
+}

+ 35 - 0
src/main/java/com/ydtech/modules/admin/model/vo/FilterPartnerInfoVo.java

@@ -0,0 +1,35 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.modules.admin.model.PartnerInfoVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class FilterPartnerInfoVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+    List<PartnerInfoVo> partnerInfoVoList;
+}

+ 34 - 0
src/main/java/com/ydtech/modules/admin/model/vo/PartnerInfoFreeVo.java

@@ -0,0 +1,34 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.modules.admin.model.PartnerInfoVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PartnerInfoFreeVo {
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+    List<PartnerInfoVo> partnerInfoVoList;
+}

+ 39 - 0
src/main/java/com/ydtech/modules/admin/model/vo/PartnerLeaderInfoVo.java

@@ -0,0 +1,39 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.modules.admin.model.PartnerInfoVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PartnerLeaderInfoVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+    List<PartnerInfoVo> partnerInfoVoList;
+
+    List<String> userIds;
+
+
+}

+ 35 - 0
src/main/java/com/ydtech/modules/admin/model/vo/TeamUserInfosFreeVo.java

@@ -0,0 +1,35 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class TeamUserInfosFreeVo {
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    /**
+     * 总佣金
+     */
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    /**
+     * 团队总人数
+     */
+    @ApiModelProperty(value = "团队总人数")
+    private Integer teamManNum;
+
+
+    List<TeamUserInfosVo> teamUserInfosVoList;
+}

+ 38 - 0
src/main/java/com/ydtech/modules/admin/model/vo/TeamUserInfosVo.java

@@ -0,0 +1,38 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class TeamUserInfosVo {
+
+    @ApiModelProperty(value = "合伙人id")
+    private String userId;
+    @ApiModelProperty(value = "合伙人Name")
+    private String userName;
+
+    @ApiModelProperty(value = "机构id")
+    private String leaderId;
+
+    @ApiModelProperty(value = "机构name")
+    private String leaderName;
+
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+
+
+    /**
+     * 抽成费用
+     */
+    @ApiModelProperty(value = "抽成费用")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+}

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

@@ -45,6 +45,7 @@ public interface SysAgencyLeaderService extends IService<SysAgencyLeader> {
     AgencyExtractFee queryExtractFee(String userId);
 
     BasePageResult<AgencyExtractFeeVo> queryExtractFeeList(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
+    BasePageResult<AgencyExtractFeeVo> queryExtractFeeAlls(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
 
     BasePageResult<TeamUserInfoVo> queryTeamUser(TeamUserInfoDto teamUserInfoDto);
 
@@ -60,6 +61,7 @@ public interface SysAgencyLeaderService extends IService<SysAgencyLeader> {
     List<SysUser> queryAgencyUser(String deptId);
 
     IPage<AgencyUserInsAreaVo> queryAgencyUserInsAreaPage(AgencyUserInsAreaDto agencyUserInsAreaDto);
+    IPage<AgencyUserInsAreaVo> queryInsAreaPageById(AgencyUserInsAreaDto agencyUserInsAreaDto);
 
     HttpResult queryUserInsAreaExcel(AgencyUserInsAreaDto agencyUserInsAreaDto);
 }

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

@@ -0,0 +1,8 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysPartnerAccount;
+
+public interface SysPartnerAccountService extends IService<SysPartnerAccount> {
+
+}

+ 20 - 0
src/main/java/com/ydtech/modules/admin/service/SysPartnerConfigService.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.admin.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysPartnerConfig;
+import com.ydtech.modules.admin.model.dto.SysPartnerConfigDto;
+import com.ydtech.modules.order.entity.BasePageResult;
+
+/**
+ * 合伙人APP等级背景配置表(SysPartnerConfig)表服务接口
+ *
+ * @author makejava
+ * @since 2024-10-16 09:48:19
+ */
+public interface SysPartnerConfigService extends IService<SysPartnerConfig> {
+
+    BasePageResult<SysPartnerConfig> queryByPage(SysPartnerConfigDto sysPartnerConfigDto);
+
+    boolean deleteById(Long id);
+}

+ 23 - 10
src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java

@@ -3,14 +3,10 @@ package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.admin.model.SysPartner;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerAPPPageDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
-import com.ydtech.modules.admin.model.vo.APPPartnerInfo;
-import com.ydtech.modules.admin.model.vo.AgencyExtractFeeVo;
-import com.ydtech.modules.admin.model.vo.SysPartnerAPPPageVo;
-import com.ydtech.modules.admin.model.vo.SysUserPartner;
+import com.ydtech.modules.admin.model.SysPartnerAccount;
+import com.ydtech.modules.admin.model.SysPremiumDetails;
+import com.ydtech.modules.admin.model.dto.*;
+import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.order.entity.BasePageResult;
 
 import java.util.List;
@@ -36,6 +32,7 @@ public interface SysPartnerService extends IService<SysPartner> {
     boolean deleteById(String id);
 
     BasePageResult<AgencyExtractFeeVo> queryPartnerByPages(SysPartnerPageDto sysPartnerPageDto);
+    BasePageResult<AgencyExtractFeeVo> queryPartnerByPage(SysPartnerPageDto sysPartnerPageDto);
 
     BasePageResult<SysPartnerAPPPageVo> SysPartnerAPPPage(SysPartnerAPPPageDto sysPartnerAPPPageDto);
 
@@ -43,7 +40,23 @@ public interface SysPartnerService extends IService<SysPartner> {
 
     BasePageResult<AgencyExtractFeeVo> queryAgencyLeaderById(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
 
-    List<SysPartner> partnerInfo(String beginTime, String endTime);
+    List<AppSysPartnerVo> partnerInfo(PartnerInfoDto partnerInfoDto);
 
-    APPPartnerInfo getLeaderInfo(String userId);
+    APPPartnerInfoFreeVo getTeamInfo(PartnerGradeInfo partnerGradeInfo);
+
+    AppPartnerNumVo getHomePage(Integer type);
+
+    AppUserInfoVo getUserInfo(Integer type);
+
+    SysPartnerAccount getFee();
+
+    PartnerInfoFreeVo queryPartnerInfo(PartnerGradeInfo partnerGradeInfo);
+
+    BasePageResult<SysPremiumDetails> getCommissionInfo(CommissionInfoDto commissionInfoDto);
+
+    TeamUserInfosFreeVo getTeamUserInfo(TeamUserInfosDto teamUserInfosDto);
+
+    FilterPartnerInfoVo queryFilterPartnerInfo(FilterPartnerInfoDto filterPartnerInfoDto);
+
+    PartnerLeaderInfoVo partnerLeaderInfo(PartnerGradeInfo partnerGradeInfo);
 }

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

@@ -0,0 +1,17 @@
+package com.ydtech.modules.admin.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysPartnerTime;
+
+/**
+ * 抽成比例修改表(SysPartnerTime)表服务接口
+ *
+ * @author makejava
+ * @since 2024-10-10 09:07:51
+ */
+public interface SysPartnerTimeService extends IService<SysPartnerTime> {
+
+
+
+}

+ 7 - 0
src/main/java/com/ydtech/modules/admin/service/SysPremiumDetailsService.java

@@ -0,0 +1,7 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysPremiumDetails;
+
+public interface SysPremiumDetailsService extends IService<SysPremiumDetails> {
+}

+ 34 - 10
src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyFeeApprovalServiceImpl.java

@@ -7,9 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
-import com.ydtech.modules.admin.dao.SysAgencyFeeApprovalMapper;
-import com.ydtech.modules.admin.dao.SysAgencyFeeApprovalRecordMapper;
-import com.ydtech.modules.admin.dao.SysDeptMapper;
+import com.ydtech.modules.admin.dao.*;
 import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalAddDto;
 import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalDto;
@@ -51,6 +49,11 @@ public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApp
 
     @Resource
     private SysDeptMapper sysDeptMapper;
+    @Resource
+    private SysPartnerAccountMapper sysPartnerAccountMapper;
+
+    @Resource
+    private SysUserMapper sysUserMapper;
 
 
 
@@ -65,9 +68,13 @@ public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApp
         //当前登录用户
         SysUser user = BaseController.getUser();
         //查询当前用户可提现金额
-        AgencyExtractFee agencyExtractFee = sysAgencyLeaderService.queryExtractFee(user.getId());
+        //AgencyExtractFee agencyExtractFee = sysAgencyLeaderService.queryExtractFee(user.getId());
+
+        SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                .eq(SysPartnerAccount::getUserId,user.getId()));
+
 
-        BigDecimal cashFee = agencyExtractFee.getCashFee();
+        BigDecimal cashFee = sysPartnerAccount.getCashFee();
         int compare = cashFee.compareTo(actualFee);
         if (compare < 0) {
             throw new SystemException("提现金额不能超过可提现金额");
@@ -83,20 +90,29 @@ public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApp
         }
         sysAgencyFeeApproval.setNumber(IdGenerate.nextId());
         //总保费
-        sysAgencyFeeApproval.setSumpremium(agencyExtractFee.getSumpremium());
+        sysAgencyFeeApproval.setSumpremium(sysPartnerAccount.getSumPremium());
         //总保费抽成费用
-        sysAgencyFeeApproval.setExtractFee(agencyExtractFee.getExtractFee().subtract(agencyExtractFee.getHistoryFee()));
+        sysAgencyFeeApproval.setExtractFee(sysPartnerAccount.getExtractFee());
         //已提现抽成费用
 //        sysAgencyFeeApproval.setHistoryFee(null);
         //可提现抽成费用
         sysAgencyFeeApproval.setCashFee(actualFee);
-        sysAgencyFeeApproval.setStartTime(agencyExtractFee.getStartTime());
-        sysAgencyFeeApproval.setProportional(agencyExtractFee.getProportional());
+//        sysAgencyFeeApproval.setStartTime(agencyExtractFee.getStartTime());
+//        sysAgencyFeeApproval.setProportional(agencyExtractFee.getProportional());
         sysAgencyFeeApproval.setCreateBy(user.getName());
         sysAgencyFeeApproval.setCreateTime(new Date());
         sysAgencyFeeApproval.setStatus("0");
         //提交审核信息
         this.save(sysAgencyFeeApproval);
+
+        sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().subtract(actualFee));
+        BigDecimal historyFee = sysPartnerAccount.getHistoryFee();
+        if (historyFee == null) {
+            sysPartnerAccount.setHistoryFee(actualFee);
+        }else {
+            sysPartnerAccount.setHistoryFee(sysPartnerAccount.getHistoryFee().add(actualFee));
+        }
+        sysPartnerAccountMapper.updateById(sysPartnerAccount);
         //保存添加记录
         SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class);
         sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId());
@@ -121,7 +137,15 @@ public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApp
             //审批通过
             sysAgencyFeeApproval.setHistoryFee(sysAgencyFeeApproval.getCashFee());
             sysAgencyFeeApproval.setPicture(sysAgencyFeeApprovalEditDto.getPicture());
-            //sysAgencyFeeApproval.setExtractFee(sysAgencyFeeApproval1.getExtractFee().subtract(sysAgencyFeeApproval.getCashFee()));
+
+        }else {
+            SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                    .eq(SysPartnerAccount::getUserId,sysAgencyFeeApproval1.getUserId()));
+            sysPartnerAccount.setCashFee(sysPartnerAccount.getCashFee().add(sysAgencyFeeApproval1.getCashFee()));
+            sysPartnerAccount.setHistoryFee(sysPartnerAccount.getHistoryFee().subtract(sysAgencyFeeApproval1.getCashFee()));
+
+            sysPartnerAccountMapper.updateById(sysPartnerAccount);
+
         }
         sysAgencyFeeApproval.setId(sysAgencyFeeApprovalEditDto.getId());
         sysAgencyFeeApproval.setAuditTime(new Date());

+ 109 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyLeaderServiceImpl.java

@@ -77,6 +77,13 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
 
     @Resource
     private SysPartnerMapper sysPartnerMapper;
+    @Resource
+    private SysPartnerTimeMapper sysPartnerTimeMapper;
+    @Resource
+    private SysPartnerAccountMapper sysPartnerAccountMapper;
+
+    @Resource
+    private SysPremiumDetailsMapper sysPremiumDetailsMapper;
 
     @Value("${upload.file.path}")
     private String uploadPath;
@@ -148,6 +155,17 @@ 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;
     }
 
@@ -197,6 +215,14 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean edit(SysAgencyLeaderDto sysAgencyLeaderDto) {
+        //判断本月是否已修改比例
+        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,sysAgencyLeaderDto.getUserId()));
+        if (sysPartnerTimes.size() > 0) {
+            throw new DescribeException(format+"已设置过抽成比例,每月只能修改一次");
+        }
         //不修改负责人userId传null
         String userId = sysAgencyLeaderDto.getUserId();
         String loginId = BaseController.getUserId();
@@ -307,6 +333,17 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
 
         }
 
+        //修改抽成比例记录改变过程
+        SysPartnerTime sysPartnerTime = new SysPartnerTime();
+        sysPartnerTime.setType(2);
+        sysPartnerTime.setCreateTime(format);
+        sysPartnerTime.setUserId(sysAgencyLeaderDto.getUserId());
+        sysPartnerTime.setUserName(sysAgencyLeaderDto.getUserName());
+        sysPartnerTime.setNewProportional(sysAgencyLeaderDto.getProportional());
+        sysPartnerTime.setOldProportional(sysAgencyLeader1.getProportional());
+
+        sysPartnerTimeMapper.insert(sysPartnerTime);
+
         return b;
     }
 
@@ -620,6 +657,70 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
     }
 
 
+    @Override
+    public BasePageResult<AgencyExtractFeeVo> queryExtractFeeAlls(SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
+        List<AgencyExtractFeeVo> agencyExtractFeeList = new ArrayList<>();
+
+        Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
+        LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(StringUtils.isNotEmpty(sysAgencyLeaderPageDto.getUserId()), SysAgencyLeader::getUserId, sysAgencyLeaderPageDto.getUserId());
+        wrapper.like(StringUtils.isNotEmpty(sysAgencyLeaderPageDto.getUserName()), SysAgencyLeader::getUserName, sysAgencyLeaderPageDto.getUserName());
+        wrapper.eq(SysAgencyLeader::getDelFlag, 1);
+        wrapper.orderByDesc(SysAgencyLeader::getId);
+
+        Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
+        List<SysAgencyLeader> records = insOrdersPage.getRecords();
+        if (records.size() > 0) {
+            for (SysAgencyLeader sysAgencyLeaders : records) {
+                AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
+                String userId = sysAgencyLeaders.getUserId();
+                //已提现抽成费用
+                BigDecimal historyFee = BigDecimal.ZERO;
+                SysUser sysUser = sysUserMapper.selectById(userId);
+                SysDept sysDept = sysDeptMapper.selectById(sysAgencyLeaders.getDeptId());
+                agencyExtractFee.setUserId(userId);
+                agencyExtractFee.setUserName(sysUser.getName());
+                agencyExtractFee.setDeptId(sysAgencyLeaders.getDeptId());
+                agencyExtractFee.setDeptName(sysDept.getName());
+
+                SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>().eq(SysPartnerAccount::getUserId, userId));
+                if (sysPartnerAccount != null) {
+                    BigDecimal sumPremium = sysPartnerAccount.getSumPremium();
+                    BigDecimal extractFee = sysPartnerAccount.getExtractFee();
+                    agencyExtractFee.setSumpremium(sumPremium);
+                    agencyExtractFee.setExtractFee(extractFee);
+
+                    // 填充 已提现抽成费用和可提现抽成费用
+                    List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
+                            .eq(SysAgencyFeeApproval::getUserId, sysAgencyLeaders.getUserId())
+                            .eq(SysAgencyFeeApproval::getStatus, 1));
+                    if (sysAgencyFeeApprovals.size() > 0) {
+                        for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
+                            historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
+                        }
+                    }
+
+                    if (!extractFee.equals(BigDecimal.ZERO)) {
+                        //已提现
+                        agencyExtractFee.setHistoryFee(historyFee);
+                        //可提现 = 总抽成-已提现
+                        agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
+                    } else {
+                        agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
+                        agencyExtractFee.setCashFee(extractFee.subtract(BigDecimal.ZERO));
+                    }
+                }
+                agencyExtractFeeList.add(agencyExtractFee);
+
+            }
+
+        }
+
+        return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                agencyExtractFeeList);
+    }
+
+
     @Override
     public BasePageResult<TeamInformation> queryTeamInfoPage(TeamInformationDto teamInformationDto) {
         String userId = BaseController.getUserId();
@@ -914,6 +1015,14 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
         return agencyUserInsAreaVoIPage;
     }
 
+    @Override
+    public IPage<AgencyUserInsAreaVo> queryInsAreaPageById(AgencyUserInsAreaDto agencyUserInsAreaDto) {
+        Page page = new Page(agencyUserInsAreaDto.getPageNum(), agencyUserInsAreaDto.getPageSize());
+
+        IPage<AgencyUserInsAreaVo> agencyUserInsAreaVoIPage = sysPremiumDetailsMapper.queryInsAreaPageById(page, agencyUserInsAreaDto);
+        return agencyUserInsAreaVoIPage;
+    }
+
     @Override
     public HttpResult queryUserInsAreaExcel(AgencyUserInsAreaDto agencyUserInsAreaDto) {
 

+ 11 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerAccountServiceImpl.java

@@ -0,0 +1,11 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysPartnerAccountMapper;
+import com.ydtech.modules.admin.model.SysPartnerAccount;
+import com.ydtech.modules.admin.service.SysPartnerAccountService;
+import org.springframework.stereotype.Service;
+
+@Service("sysPartnerAccountService")
+public class SysPartnerAccountServiceImpl extends ServiceImpl<SysPartnerAccountMapper, SysPartnerAccount> implements SysPartnerAccountService {
+}

+ 40 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerConfigServiceImpl.java

@@ -0,0 +1,40 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysPartnerConfigMapper;
+import com.ydtech.modules.admin.model.SysPartnerConfig;
+import com.ydtech.modules.admin.model.dto.SysPartnerConfigDto;
+import com.ydtech.modules.admin.service.SysPartnerConfigService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import org.springframework.stereotype.Service;
+
+@Service("sysPartnerConfigService")
+public class SysPartnerConfigServiceImpl extends ServiceImpl<SysPartnerConfigMapper, SysPartnerConfig> implements SysPartnerConfigService {
+
+    @Override
+    public BasePageResult<SysPartnerConfig> queryByPage(SysPartnerConfigDto sysPartnerConfigDto) {
+
+        Page<SysPartnerConfig> page = new Page<>(sysPartnerConfigDto.getPageNum(), sysPartnerConfigDto.getPageSize());
+        LambdaQueryWrapper<SysPartnerConfig> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysPartnerConfig::getDelFlag,1);
+        wrapper.orderByDesc(SysPartnerConfig::getId);
+
+
+        Page<SysPartnerConfig> insOrdersPage = page(page, wrapper);
+
+        return new BasePageResult<>(sysPartnerConfigDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                insOrdersPage.getRecords());
+    }
+
+    @Override
+    public boolean deleteById(Long id) {
+        SysPartnerConfig sysPartnerConfig = new SysPartnerConfig();
+        sysPartnerConfig.setId(id);
+        sysPartnerConfig.setDelFlag(0);
+        return baseMapper.updateById(sysPartnerConfig)>0;
+    }
+
+
+}

+ 1045 - 110
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java

@@ -11,13 +11,12 @@ import com.ydtech.aop.exception.DescribeException;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.dao.*;
 import com.ydtech.modules.admin.model.*;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerAPPPageDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerDto;
-import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
+import com.ydtech.modules.admin.model.dto.*;
+import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
 import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.admin.service.SysAgencyLeaderService;
 import com.ydtech.modules.admin.service.SysPartnerService;
+import com.ydtech.modules.admin.service.SysPremiumDetailsService;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -29,10 +28,10 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -64,6 +63,23 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
     @Resource
     private SysAgencyLeaderService sysAgencyLeaderService;
 
+    @Resource
+    private SysPartnerTimeMapper sysPartnerTimeMapper;
+
+    @Resource
+    private SysPartnerAccountMapper sysPartnerAccountMapper;
+
+    @Resource
+    private SysPremiumDetailsMapper sysPremiumDetailsMapper;
+
+    @Resource
+    private SysPremiumDetailsService sysPremiumDetailsService;
+
+    @Resource
+    private SysUserAccountHistoryMapper sysUserAccountHistoryMapper;
+    @Resource
+    private SysPartnerConfigMapper sysPartnerConfigMapper;
+
 
     @Override
     public List<SysPartner> queryRecommendAndPartner(String id) {
@@ -205,8 +221,17 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             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;
     }
 
@@ -355,6 +380,71 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
 
     }
 
+    @Override
+    public BasePageResult<AgencyExtractFeeVo> queryPartnerByPage(SysPartnerPageDto sysPartnerPageDto) {
+        List<AgencyExtractFeeVo> agencyExtractFeeList = new ArrayList<>();
+
+        Page<SysPartner> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
+        LambdaQueryWrapper<SysPartner> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysPartner::getDelFlag, 1);
+        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId());
+        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysPartner::getUserName, sysPartnerPageDto.getUserName());
+        wrapper.orderByDesc(SysPartner::getId);
+
+        Page<SysPartner> insOrdersPage = page(page, wrapper);
+        List<SysPartner> sysPartnerList = insOrdersPage.getRecords();
+        if (sysPartnerList.size() > 0) {
+            for (SysPartner sysPartner : sysPartnerList) {
+                String userId = sysPartner.getUserId();
+
+                AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
+                //已提现抽成费用
+                BigDecimal historyFee = BigDecimal.ZERO;
+                SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                        .eq(SysUser::getId, userId)
+                        .ne(SysUser::getStatus, 0));
+                //填充查询人的姓名和机构
+                agencyExtractFee.setUserId(userId);
+                agencyExtractFee.setUserName(sysUser.getName());
+                agencyExtractFee.setDeptId(sysUser.getDeptId());
+                SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
+                        .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
+                agencyExtractFee.setDeptName(sysDept.getName());
+
+                SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                        .eq(SysPartnerAccount::getUserId, userId));
+                if (sysPartnerAccount != null) {
+
+                    BigDecimal sumPremium = sysPartnerAccount.getSumPremium();
+                    BigDecimal extractFee = sysPartnerAccount.getExtractFee();
+                    agencyExtractFee.setSumpremium(sumPremium);
+                    agencyExtractFee.setExtractFee(extractFee);
+
+
+                    // 填充 已提现抽成费用和可提现抽成费用
+                    List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
+                            .eq(SysAgencyFeeApproval::getUserId, sysPartner.getUserId())
+                            .eq(SysAgencyFeeApproval::getStatus, 1));
+                    if (sysAgencyFeeApprovals.size() > 0) {
+                        for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
+                            historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
+                        }
+                    }
+                    agencyExtractFee.setHistoryFee(historyFee);
+                    //可提现 = 总抽成-已提现
+                    agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
+
+                }
+                agencyExtractFeeList.add(agencyExtractFee);
+
+            }
+        }
+
+        return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                agencyExtractFeeList);
+
+    }
+
     @Override
     public BasePageResult<SysPartnerAPPPageVo> SysPartnerAPPPage(SysPartnerAPPPageDto sysPartnerAPPPageDto) {
         List<SysPartnerAPPPageVo> sysPartnerAPPPageVoList = new ArrayList<>();
@@ -466,12 +556,20 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
     @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()))  {
+        if (StringUtils.isNullOrEmpty(sysPartner.getSuggestId()) && StringUtils.isNotEmpty(sysPartnerDto.getSuggestId())) {
             SysPartner partner = new SysPartner();
             partner.setId(sysPartner.getId());
             partner.setProportional(sysPartnerDto.getProportional());
@@ -481,7 +579,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             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);
+            partner.setType(sysPartnerSuggest.getType() + 1);
             b = sysPartnerMapper.updateById(partner) > 0;
 
             SysRelationPerson sysRelationPerson = new SysRelationPerson();
@@ -515,11 +613,19 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             SysPartner partner = new SysPartner();
             partner.setId(sysPartner.getId());
             partner.setProportional(sysPartnerDto.getProportional());
-            //判断本月是否已修改比例 TODO
 
             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;
     }
@@ -544,138 +650,967 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         if (records.size() > 0) {
             for (SysAgencyLeader sysAgencyLeaders : records) {
                 AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
-                //总保费
-                BigDecimal bigDecimal = BigDecimal.ZERO;
+                String userId = sysAgencyLeaders.getUserId();
                 //已提现抽成费用
                 BigDecimal historyFee = BigDecimal.ZERO;
-                SysUser sysUser = sysUserMapper.selectById(sysAgencyLeaders.getUserId());
+                SysUser sysUser = sysUserMapper.selectById(userId);
                 SysDept sysDept = sysDeptMapper.selectById(sysAgencyLeaders.getDeptId());
-                agencyExtractFee.setUserId(sysAgencyLeaders.getUserId());
+                agencyExtractFee.setUserId(userId);
                 agencyExtractFee.setUserName(sysUser.getName());
                 agencyExtractFee.setDeptId(sysAgencyLeaders.getDeptId());
                 agencyExtractFee.setDeptName(sysDept.getName());
-                agencyExtractFee.setProportional(sysAgencyLeaders.getProportional());
-                //筛选订单,选择时间
-                Date updateTime = sysAgencyLeaders.getUpdateTime();
-                Date createTime = sysAgencyLeaders.getCreateTime();
-                String dateStr = "";
-                if (updateTime != null) {
-                    dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime);
-                    agencyExtractFee.setStartTime(updateTime);
+
+                SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                        .eq(SysPartnerAccount::getUserId, userId));
+                if (sysPartnerAccount != null) {
+                    BigDecimal sumPremium = sysPartnerAccount.getSumPremium();
+                    BigDecimal extractFee = sysPartnerAccount.getExtractFee();
+                    agencyExtractFee.setSumpremium(sumPremium);
+                    agencyExtractFee.setExtractFee(extractFee);
+
+                    // 填充 已提现抽成费用和可提现抽成费用
+                    List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
+                            .eq(SysAgencyFeeApproval::getUserId, sysAgencyLeaders.getUserId())
+                            .eq(SysAgencyFeeApproval::getStatus, 1));
+                    if (sysAgencyFeeApprovals.size() > 0) {
+                        for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
+                            historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
+                        }
+                    }
+
+                    if (!extractFee.equals(BigDecimal.ZERO)) {
+                        //已提现
+                        agencyExtractFee.setHistoryFee(historyFee);
+                        //可提现 = 总抽成-已提现
+                        agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
+                    } else {
+                        agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
+                        agencyExtractFee.setCashFee(extractFee.subtract(BigDecimal.ZERO));
+                    }
+                }
+                agencyExtractFeeList.add(agencyExtractFee);
+
+            }
+
+        }
+
+        return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                agencyExtractFeeList);
+
+    }
+
+    @Override
+    public APPPartnerInfoFreeVo getTeamInfo(PartnerGradeInfo partnerGradeInfo) {
+        APPPartnerInfoFreeVo appPartnerInfoFreeVo = new APPPartnerInfoFreeVo();
+
+        List<APPPartnerInfo> appPartnerInfoList = new ArrayList<>();
+
+        List<String> deptIds = partnerGradeInfo.getDeptIds();
+        if (CollectionUtil.isEmpty(deptIds)) {
+            return appPartnerInfoFreeVo;
+        }
+        List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                .in(SysDept::getId, deptIds).eq(SysDept::getDelFlag, 0));
+        if (sysDeptList.size() == 0) {
+            return appPartnerInfoFreeVo;
+        }
+        for (SysDept sysDept : sysDeptList) {
+            APPPartnerInfo appPartnerInfo = new APPPartnerInfo();
+            appPartnerInfo.setDeptId(sysDept.getId());
+            appPartnerInfo.setDeptName(sysDept.getName());
+            String leaderId = sysDept.getLeaderId();
+            if (StringUtils.isNotEmpty(leaderId)) {
+                appPartnerInfo.setLeaderId(leaderId);
+                SysUser sysUser = sysUserMapper.selectById(leaderId);
+                appPartnerInfo.setLeaderName(sysUser.getName());
+            }
+
+            //获取机构下的团队
+            List<SysDept> sysDepTeam = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                    .likeRight(SysDept::getId, sysDept.getId())
+                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                    .eq(SysDept::getManagementSource, sysDept.getManagementSource()));
+            //机构下每个团队人数id集合
+            List<String> userIdList = new ArrayList<>();
+            int deptManNum = 0;
+            if (sysDepTeam.size() > 0) {
+                for (SysDept sysDept1 : sysDepTeam) {
+                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                            .likeRight(SysUser::getId, sysDept1.getId()).ne(SysUser::getStatus, 0));
+                    deptManNum = deptManNum + sysUsers.size();
+                    if (sysUsers.size() > 0) {
+                        List<String> collect = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
+                        userIdList.addAll(collect);
+                    }
+
+                }
+            }
+            appPartnerInfo.setTeamManNum(deptManNum);
+            appPartnerInfo.setUserIds(userIdList);
+
+            //查团队的保费
+            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .in(SysPremiumDetails::getUserId, userIdList)
+                    .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                            SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                    .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+            BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+            appPartnerInfo.setSumPremium(sumPremium);
+
+            List<SysUserAccountHistory> sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
+                    .in(SysUserAccountHistory::getUserId, userIdList).eq(SysUserAccountHistory::getProperty, 3));
+
+            BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            appPartnerInfo.setExtractFee(extractFee);
+
+            appPartnerInfoList.add(appPartnerInfo);
+        }
+        List<String> ids = new ArrayList<>();
+        List<List<String>> collect = appPartnerInfoList.stream().map(APPPartnerInfo::getUserIds).collect(Collectors.toList());
+        if (collect.size() > 0) {
+            for (List<String> list : collect) {
+                ids.addAll(list);
+            }
+        }
+
+        List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                .in(SysPremiumDetails::getUserId, ids)
+                .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                        SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+        BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+        appPartnerInfoFreeVo.setSumPremium(sumPremium);
+
+        List<SysUserAccountHistory> sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
+                .in(SysUserAccountHistory::getUserId, ids).eq(SysUserAccountHistory::getProperty, 3));
+
+        BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        appPartnerInfoFreeVo.setExtractFee(extractFee);
+
+        int sum = appPartnerInfoList.stream().mapToInt(APPPartnerInfo::getTeamManNum).sum();
+        appPartnerInfoFreeVo.setTeamManNum(sum);
+
+        appPartnerInfoFreeVo.setAppPartnerInfos(appPartnerInfoList);
+
+        return appPartnerInfoFreeVo;
+    }
+
+    @Override
+    public AppPartnerNumVo getHomePage(Integer type) {
+        AppPartnerNumVo appPartnerNumVo = new AppPartnerNumVo();
+        //合伙人:1 ;工作室管理员:2
+        String userId = BaseController.getUserId();
+        SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
+                .eq(SysPartnerAccount::getUserId, userId));
+        appPartnerNumVo.setSumPremium(sysPartnerAccount.getSumPremium());
+        appPartnerNumVo.setExtractFee(sysPartnerAccount.getExtractFee());
+        if (type == 1) {
+            //下面合伙人(直接+间接)数量
+            List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getType, 0));
+
+            appPartnerNumVo.setPartnerNum(sysRelationPersonList1.size());
+
+            //直接工作室数量
+            List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getSource, 0)
+                    .eq(SysRelationPerson::getType, 1));
+            appPartnerNumVo.setWorkroomNum(sysRelationPersonList.size());
+            List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+            appPartnerNumVo.setLeaderIds(collect);
+            //登录人下面的所有团队人数
+            List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId)
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getType, 1));
+
+            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);
+            }
+        } else {
+            int deptManNum = 0;
+            SysAgencyLeader sysAgencyLeader = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
+                    .in(SysAgencyLeader::getUserId, userId).eq(SysAgencyLeader::getDelFlag, 1));
+            //获取机构下的团队
+            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()));
+            appPartnerNumVo.setWorkroomTeamNum(sysDeptList.size());
+            List<String> deptIds = new ArrayList<>();
+            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();
+                    deptIds.add(sysDept.getId());
+                }
+                appPartnerNumVo.setWorkroomManNum(deptManNum);
+                appPartnerNumVo.setTeamManNum(deptManNum);
+                appPartnerNumVo.setDeptIds(deptIds);
+            }
+
+        }
+
+        return appPartnerNumVo;
+    }
+
+    @Override
+    public AppUserInfoVo getUserInfo(Integer type) {
+        String userId = BaseController.getUserId();
+        AppUserInfoVo appUserInfoVo = sysUserMapper.queryByUserId(userId);
+        if (type == 1) {
+            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()));
+
+            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);
+        }
+
+        return appUserInfoVo;
+    }
+
+    @Override
+    public SysPartnerAccount getFee() {
+        String userId = BaseController.getUserId();
+
+        return sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>().eq(SysPartnerAccount::getUserId, userId));
+    }
+
+    @Override
+    public List<AppSysPartnerVo> partnerInfo(PartnerInfoDto partnerInfoDto) {
+        List<AppSysPartnerVo> appSysPartnerVos = new ArrayList<>();
+        String userId = BaseController.getUserId();
+        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
+        //查询登陆人下所有合伙人
+        List<SysPartner> sysPartnerList = sysPartnerMapper.queryByLoginId(userId);
+
+        Map<Integer, List<SysPartner>> listMap = sysPartnerList.stream().sorted(Comparator.comparing(SysPartner::getId))
+                .collect(Collectors.groupingBy(SysPartner::getType));
+        //按等级查询
+        Integer partnerType = partnerInfoDto.getPartnerType();
+        if (partnerType != null) {
+            List<SysPartner> sysPartnerList1 = listMap.get(sysPartner.getType() + partnerType);
+
+            if (sysPartnerList1 != null) {
+                AppSysPartnerVo appSysPartnerVo = new AppSysPartnerVo();
+                //下级合伙人数
+                appSysPartnerVo.setPartnerNumber(sysPartnerList1.size());
+                List<String> ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                appSysPartnerVo.setPartnerIds(ids);
+                List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, ids)
+                        .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
+                                SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
+                        .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()));
+                BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+//                appSysPartnerVo.setSumPremium(sumPremium);
+//                appSysPartnerVo.setExtractFee(extractFee);
+                //二级以下团队的总人数
+                List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1));
+                int deptManNum = 0;
+                if (sysRelationPersonList.size() > 0) {
+                    List<String> idList = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                            .in(CollectionUtil.isNotEmpty(idList), SysAgencyLeader::getUserId, idList).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));
+                                    deptManNum = deptManNum + sysUsers.size();
+
+                                }
+                            }
+                        }
+                    }
+                }
+//                appSysPartnerVo.setTeamManNum(deptManNum);
+
+                List<String> list = new ArrayList<>();
+                if (partnerType == 1) {
+                    //一级获取登陆人的之际工作室
+                    list.add(userId);
                 } else {
-                    dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
-                    agencyExtractFee.setStartTime(createTime);
+
+                    //获取上一级合伙人,查询工作室数量
+                    List<SysPartner> sysPartners = listMap.get(sysPartner.getType() + partnerType - 1);
+                    //上一级直接推荐的工作室数量
+                    List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                    list.addAll(list1);
                 }
-                HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr, null, null);
-                if (CollectionUtil.isNotEmpty(map)) {
+                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();
 
-                    bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
+                            }
+                        }
+                    }
                 }
-                agencyExtractFee.setSumpremium(bigDecimal);
-                BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional())
-                        .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
-                agencyExtractFee.setExtractFee(multiply);
-                // 填充 已提现抽成费用和可提现抽成费用
-                List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
-                        .eq(SysAgencyFeeApproval::getUserId, sysAgencyLeaders.getUserId())
-                        .eq(SysAgencyFeeApproval::getStatus, 1));
-                if (sysAgencyFeeApprovals.size() > 0) {
-                    for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
-                        historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
+
+                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++) {
+            //二级
+            List<SysPartner> sysPartnerList1 = listMap.get(sysPartner.getType() + i);
+            if (sysPartnerList1.size() > 0) {
+                AppSysPartnerVo appSysPartnerVo = new AppSysPartnerVo();
+                //下级合伙人数
+                appSysPartnerVo.setPartnerNumber(sysPartnerList1.size());
+                List<String> ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                appSysPartnerVo.setPartnerIds(ids);
+                List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, ids)
+                        .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
+                                SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
+                        .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()));
+                BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                //同等级合伙人团队的总人数:
+                List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1));
+                int deptManNum = 0;
+                if (sysRelationPersonList.size() > 0) {
+                    List<String> idList = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                            .in(CollectionUtil.isNotEmpty(idList), SysAgencyLeader::getUserId, idList).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));
+                                    deptManNum = deptManNum + sysUsers.size();
+
+                                }
+                            }
+                        }
                     }
                 }
 
-                if (!bigDecimal.equals(BigDecimal.ZERO)) {
-                    //已提现
-                    agencyExtractFee.setHistoryFee(historyFee);
-                    //可提现 = 总抽成-已提现
-                    agencyExtractFee.setCashFee(multiply.subtract(historyFee));
+                List<String> list = new ArrayList<>();
+                if (i == 1) {
+                    //一级获取登陆人的之际工作室
+                    list.add(userId);
                 } else {
-                    agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
-                    agencyExtractFee.setCashFee(multiply.subtract(BigDecimal.ZERO));
+
+                    //获取上一级合伙人,查询工作室数量
+                    List<SysPartner> sysPartners = listMap.get(sysPartner.getType() + i - 1);
+                    //上一级直接推荐的工作室数量
+                    List<String> list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+                    list.addAll(list1);
                 }
-                agencyExtractFeeList.add(agencyExtractFee);
+                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();
+
+                            }
+                        }
+                    }
+                }
+
+                appSysPartnerVo.setTeamManNum(deptManNum+leaderManNum);
+
+                appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber() + appSysPartnerVo.getWorkNumber());
+                appSysPartnerVo.setPartnerType(i);
+                //每一级存入map
+                appSysPartnerVos.add(appSysPartnerVo);
+            }
+        }
+
+        return appSysPartnerVos;
+    }
+
+    @Override
+    public PartnerInfoFreeVo queryPartnerInfo(PartnerGradeInfo partnerGradeInfo) {
+        PartnerInfoFreeVo partnerInfoFreeVo = new PartnerInfoFreeVo();
+        List<PartnerInfoVo> partnerInfoVoList = new ArrayList<>();
+        //合伙人:1;工作室:2
+        Integer type = partnerGradeInfo.getType();
+        if (type == 1) {
+            List<String> partnerIds = partnerGradeInfo.getPartnerIds();
+            if (CollectionUtil.isEmpty(partnerIds)) {
+                return partnerInfoFreeVo;
+            }
+            //费用
+            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .in(SysPremiumDetails::getUserId, partnerIds)
+                    .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                            SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                    .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+            BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+            partnerInfoFreeVo.setSumPremium(sumPremium);
+            partnerInfoFreeVo.setExtractFee(extractFee);
+
+            //合伙人
+            List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
+                    .in(SysPartner::getUserId, partnerGradeInfo.getPartnerIds()).eq(SysPartner::getDelFlag, 1));
+            if (sysPartnerList.size() > 0) {
+                for (SysPartner sysPartner : sysPartnerList) {
+                    PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
+                    partnerInfoVo.setLevel(partnerGradeInfo.getLevel());
+                    String userId = sysPartner.getUserId();
+                    partnerInfoVo.setUserId(userId);
+                    SysUser sysUser = sysUserMapper.selectById(userId);
+                    partnerInfoVo.setUserName(sysUser.getName());
+                    SysUser sysUser1 = sysUserMapper.selectById(sysPartner.getSuggestId());
+                    partnerInfoVo.setSuggestName(sysUser1.getName());
+                    //费用
+                    List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                            .eq(SysPremiumDetails::getUserId, userId)
+                            .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                                    SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                            .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+                    BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    partnerInfoVo.setSumPremium(sumPremium1);
+                    partnerInfoVo.setExtractFee(extractFee1);
+                    //直接合伙人
+                    List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getSuggestId, userId)
+                            .eq(SysRelationPerson::getDelFlag, 1)
+                            .eq(SysRelationPerson::getType, 0)
+                            .eq(SysRelationPerson::getSource, 0));
+                    List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    partnerInfoVo.setPartnerIds(collect);
+                    partnerInfoVo.setPartnerNumber(collect.size());
+
+                    //直接管理员
+                    List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getSuggestId, userId)
+                            .eq(SysRelationPerson::getDelFlag, 1)
+                            .eq(SysRelationPerson::getType, 1)
+                            .eq(SysRelationPerson::getSource, 0));
+
+                    List<String> collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    partnerInfoVo.setLeaderIds(collects);
+                    partnerInfoVo.setWorkNumber(collects.size());
 
+                    //合伙人下所有工作室数
+                    List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                            .eq(SysRelationPerson::getSuggestId, userId)
+                            .eq(SysRelationPerson::getDelFlag, 1)
+                            .eq(SysRelationPerson::getType, 1));
+
+                    int deptManNum = 0;
+                    if (sysRelationPersonList2.size() > 0) {
+                        List<String> idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                                .in(SysAgencyLeader::getUserId, idList).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));
+                                        deptManNum = deptManNum + sysUsers.size();
+
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    partnerInfoVo.setTeamManNum(deptManNum);
+
+                    partnerInfoVoList.add(partnerInfoVo);
+                }
+
+                partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList);
+            }
+        } else {
+            //工作室
+            List<String> leaderIds = partnerGradeInfo.getLeaderIds();
+            if (CollectionUtil.isEmpty(leaderIds)) {
+                return partnerInfoFreeVo;
+            }
+            //费用
+            List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .in(SysPremiumDetails::getUserId, leaderIds)
+                    .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                            SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                    .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+            BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+            partnerInfoFreeVo.setSumPremium(sumPremium);
+            partnerInfoFreeVo.setExtractFee(extractFee);
+
+
+            List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                    .in(SysAgencyLeader::getUserId, leaderIds).eq(SysAgencyLeader::getDelFlag, 1));
+
+            for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
+
+                String userId = sysAgencyLeader.getUserId();
+                partnerInfoVo.setUserId(userId);
+                SysUser sysUser = sysUserMapper.selectById(userId);
+                partnerInfoVo.setUserName(sysUser.getName());
+                SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeader.getSuggestId());
+                partnerInfoVo.setSuggestName(sysUser1.getName());
+
+                //费用
+                List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .eq(SysPremiumDetails::getUserId, userId)
+                        .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                                SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                        .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+                BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                partnerInfoVo.setSumPremium(sumPremium1);
+                partnerInfoVo.setExtractFee(extractFee1);
+
+                int deptManNum = 0;
+                //获取机构下的团队
+                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()));
+
+                partnerInfoVo.setDeptNum(sysDeptList.size());
+                List<String> collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
+                partnerInfoVo.setDeptIds(collect);
+                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();
+
+                    }
+                }
+                partnerInfoVo.setTeamManNum(deptManNum);
+
+                partnerInfoVoList.add(partnerInfoVo);
             }
 
         }
+        int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum();
+        partnerInfoFreeVo.setTeamManNum(sum);
+        partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList);
 
-        return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
-                agencyExtractFeeList);
+        return partnerInfoFreeVo;
+    }
+
+    @Override
+    public BasePageResult<SysPremiumDetails> getCommissionInfo(CommissionInfoDto commissionInfoDto) {
+        String userId = BaseController.getUserId();
+
+        Page<SysPremiumDetails> page = new Page<>(commissionInfoDto.getPageNum(), commissionInfoDto.getPageSize());
+
+        LambdaQueryWrapper<SysPremiumDetails> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysPremiumDetails::getUserId, userId);
+        wrapper.eq(commissionInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, commissionInfoDto.getIndustrySector());
+        wrapper.between(StringUtils.isNotEmpty(commissionInfoDto.getBeginTime()) && StringUtils.isNotEmpty(commissionInfoDto.getEndTime()),
+                SysPremiumDetails::getCreateTime, commissionInfoDto.getBeginTime(), commissionInfoDto.getEndTime());
+        wrapper.orderByDesc(SysPremiumDetails::getId);
+
+        Page<SysPremiumDetails> insOrdersPage = sysPremiumDetailsService.page(page, wrapper);
 
+
+        return new BasePageResult<>(commissionInfoDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                insOrdersPage.getRecords());
     }
 
     @Override
-    public List<SysPartner> partnerInfo(String beginTime, String endTime) {
+    public TeamUserInfosFreeVo getTeamUserInfo(TeamUserInfosDto teamUserInfosDto) {
+        TeamUserInfosFreeVo teamUserInfosFreeVo = new TeamUserInfosFreeVo();
 
-        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                .eq(StringUtils.isNotEmpty(BaseController.getUserId()), SysRelationPerson::getSuggestId, BaseController.getUserId())
-                .eq(SysRelationPerson::getDelFlag, 1)
-                .eq(SysRelationPerson::getType, 0));
-        if (sysRelationPersonList.size() == 0) return null;
-        List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-        List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
-                .eq(SysPartner::getDelFlag, 1).in(CollectionUtil.isNotEmpty(collect), SysPartner::getUserId, collect)
-                .between(StringUtils.isNotEmpty(beginTime) && StringUtils.isNotEmpty(endTime)
-                        ,SysPartner::getCreateTime,beginTime,endTime));
+        List<TeamUserInfosVo> userInfosVoList = new ArrayList<>();
+        List<String> userIds = teamUserInfosDto.getUserIds();
+        if (CollectionUtil.isEmpty(userIds)) {
+            return teamUserInfosFreeVo;
+        }
+        //费用
+        List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                .in(SysPremiumDetails::getUserId, userIds)
+                .between(StringUtils.isNotEmpty(teamUserInfosDto.getBeginTime()) && StringUtils.isNotEmpty(teamUserInfosDto.getEndTime()),
+                        SysPremiumDetails::getCreateTime, teamUserInfosDto.getBeginTime(), teamUserInfosDto.getEndTime())
+                .eq(teamUserInfosDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, teamUserInfosDto.getIndustrySector()));
+        BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+        teamUserInfosFreeVo.setSumPremium(sumPremium);
+        List<SysUserAccountHistory> sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
+                .in(SysUserAccountHistory::getUserId, userIds).eq(SysUserAccountHistory::getProperty, 3)
+                .eq(teamUserInfosDto.getIndustrySector() != null, SysUserAccountHistory::getBusinessSegmentsType, teamUserInfosDto.getIndustrySector()));
+
+        BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        teamUserInfosFreeVo.setExtractFee(extractFee);
+
+
+        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                .ne(SysUser::getStatus, 0).in(SysUser::getId, teamUserInfosDto.getUserIds()));
+        for (SysUser sysUser : sysUsers) {
+            TeamUserInfosVo teamUserInfosVo = new TeamUserInfosVo();
+            teamUserInfosVo.setUserId(sysUser.getId());
+            teamUserInfosVo.setUserName(sysUser.getName());
+            String leaderId = sysUser.getLeaderId();
+            if (StringUtils.isNotEmpty(leaderId)) {
+                teamUserInfosVo.setLeaderId(sysUser.getLeaderId());
+                SysUser sysUser1 = sysUserMapper.selectById(sysUser.getLeaderId());
+                teamUserInfosVo.setLeaderName(sysUser1.getName());
+            }
 
-        return sysPartnerList;
+            //费用
+            List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .eq(SysPremiumDetails::getUserId, sysUser.getId())
+                    .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);
+            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);
+            teamUserInfosVo.setExtractFee(extractFee1);
+
+            userInfosVoList.add(teamUserInfosVo);
+        }
+        teamUserInfosFreeVo.setTeamManNum(userIds.size());
+        teamUserInfosFreeVo.setTeamUserInfosVoList(userInfosVoList);
+
+        return teamUserInfosFreeVo;
     }
 
     @Override
-    public APPPartnerInfo getLeaderInfo(String userId) {
-        APPPartnerInfo appPartnerInfo = new APPPartnerInfo();
-        //查询合伙人有关系的工作室管理员
-        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
-                .eq(StringUtils.isNotEmpty(userId), SysRelationPerson::getSuggestId, userId)
-                .eq(SysRelationPerson::getDelFlag, 1)
-                .eq(SysRelationPerson::getType, 1));
-        if (sysRelationPersonList.size() == 0) return null;
+    public FilterPartnerInfoVo queryFilterPartnerInfo(FilterPartnerInfoDto filterPartnerInfoDto) {
+        FilterPartnerInfoVo filterPartnerInfoVo = new FilterPartnerInfoVo();
 
-        List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
-        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
-                .eq(SysAgencyLeader::getDelFlag, 1).in(CollectionUtil.isNotEmpty(collect), SysAgencyLeader::getUserId, collect));
-
-        List<AgencyLeaderInfo> agencyLeaderInfos = BeanUtil.copyToList(leaderList, AgencyLeaderInfo.class);
-        for (AgencyLeaderInfo agencyLeaderInfo : agencyLeaderInfos) {
-
-            SysUser sysUser = sysUserMapper.selectById(agencyLeaderInfo.getUserId());
-            agencyLeaderInfo.setUserName(sysUser.getName());
-            SysUser sysUser1 = sysUserMapper.selectById(agencyLeaderInfo.getSuggestId());
-            agencyLeaderInfo.setSuggestName(sysUser1.getName());
-            SysDept sysDept = sysDeptMapper.selectById(agencyLeaderInfo.getDeptId());
-            agencyLeaderInfo.setDeptName(sysDept.getName());
-            //填充费用
-            AgencyExtractFee agencyExtractFee = sysAgencyLeaderService.queryExtractFee(agencyLeaderInfo.getUserId());
-            BigDecimal sumpremium = agencyExtractFee.getSumpremium();
-            agencyLeaderInfo.setSumPremium(sumpremium);
-            BigDecimal percentage = new BigDecimal(agencyLeaderInfo.getProportional()).divide(new BigDecimal("100"));
-            agencyLeaderInfo.setProportional(percentage.toString());
-            BigDecimal extractFee = sumpremium.multiply(percentage).setScale(2, RoundingMode.DOWN);
-            agencyLeaderInfo.setExtractFee(extractFee);
-
-            List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
-                    .likeRight(SysUser::getId, agencyLeaderInfo.getDeptId()).ne(SysUser::getStatus, 0));
-            agencyLeaderInfo.setNumber(sysUsers.size());
-        }
-        appPartnerInfo.setAgencyLeaderInfo(agencyLeaderInfos);
-        //机构总人数
-        long count = agencyLeaderInfos.stream().mapToInt(AgencyLeaderInfo::getNumber).count();
-        appPartnerInfo.setNumber(count);
-        //总保费
-        BigDecimal reduce = agencyLeaderInfos.stream().map(AgencyLeaderInfo::getSumPremium).reduce(BigDecimal.ZERO, BigDecimal::add);
-        appPartnerInfo.setSumpremium(reduce);
-
-        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getUserId, userId));
-        BigDecimal percentage = new BigDecimal(sysPartner.getProportional()).divide(new BigDecimal("100"));
-        appPartnerInfo.setExtractFee(reduce.multiply(percentage).setScale(2, RoundingMode.DOWN));
-
-        return appPartnerInfo;
+        String userId = BaseController.getUserId();
+        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
+        //查询登陆人下所有合伙人
+        List<SysPartner> sysPartnerList = sysPartnerMapper.queryByLoginId(userId);
+
+        Map<Integer, List<SysPartner>> listMap = sysPartnerList.stream().sorted(Comparator.comparing(SysPartner::getId))
+                .collect(Collectors.groupingBy(SysPartner::getType));
+        Integer partnerType = filterPartnerInfoDto.getPartnerType();
+
+        List<SysPartner> sysPartnerList1 = listMap.get(sysPartner.getType() + partnerType);
+        List<String> collect1 = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+        if (collect1.size() == 0) {
+            return filterPartnerInfoVo;
+        }
+        //费用
+        List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                .in(CollectionUtil.isNotEmpty(collect1), SysPremiumDetails::getUserId, collect1)
+                .between(StringUtils.isNotEmpty(filterPartnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(filterPartnerInfoDto.getEndTime()),
+                        SysPremiumDetails::getCreateTime, filterPartnerInfoDto.getBeginTime(), filterPartnerInfoDto.getEndTime())
+                .eq(filterPartnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, filterPartnerInfoDto.getIndustrySector()));
+        BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+        filterPartnerInfoVo.setSumPremium(sumPremium);
+        filterPartnerInfoVo.setExtractFee(extractFee);
+
+        if (sysPartnerList1.size() > 0) {
+
+            List<PartnerInfoVo> partnerInfoVoList = new ArrayList<>();
+            for (SysPartner partner : sysPartnerList1) {
+
+                PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
+
+                String id = sysPartner.getUserId();
+                partnerInfoVo.setUserId(id);
+                SysUser sysUser = sysUserMapper.selectById(id);
+                partnerInfoVo.setUserName(sysUser.getName());
+                SysUser sysUser1 = sysUserMapper.selectById(sysPartner.getSuggestId());
+                partnerInfoVo.setSuggestName(sysUser1.getName());
+                //费用
+                List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                        .eq(SysPremiumDetails::getUserId, userId)
+                        .between(StringUtils.isNotEmpty(filterPartnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(filterPartnerInfoDto.getEndTime()),
+                                SysPremiumDetails::getCreateTime, filterPartnerInfoDto.getBeginTime(), filterPartnerInfoDto.getEndTime())
+                        .eq(filterPartnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, filterPartnerInfoDto.getIndustrySector()));
+                BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                partnerInfoVo.setSumPremium(sumPremium1);
+                partnerInfoVo.setExtractFee(extractFee1);
+                //直接合伙人
+                List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 0)
+                        .eq(SysRelationPerson::getSource, 0));
+                List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                partnerInfoVo.setPartnerIds(collect);
+
+                //直接管理员
+                List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1)
+                        .eq(SysRelationPerson::getSource, 0));
+
+                List<String> collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                partnerInfoVo.setLeaderIds(collects);
+
+                partnerInfoVo.setPartnerNumber(collects.size() + collect.size());
+
+                //工作室数
+                List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, userId)
+                        .eq(SysRelationPerson::getDelFlag, 1)
+                        .eq(SysRelationPerson::getType, 1));
+
+                int deptManNum = 0;
+                if (sysRelationPersonList2.size() > 0) {
+                    List<String> idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                            .in(SysAgencyLeader::getUserId, idList).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));
+                                    deptManNum = deptManNum + sysUsers.size();
+
+                                }
+                            }
+                        }
+                    }
+                    partnerInfoVo.setTeamManNum(deptManNum);
+                }
+
+                partnerInfoVoList.add(partnerInfoVo);
+
+            }
+            int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum();
+            filterPartnerInfoVo.setPartnerInfoVoList(partnerInfoVoList);
+            filterPartnerInfoVo.setTeamManNum(sum);
+
+        }
+
+        return filterPartnerInfoVo;
     }
 
+    @Override
+    public PartnerLeaderInfoVo partnerLeaderInfo(PartnerGradeInfo partnerGradeInfo) {
+        PartnerLeaderInfoVo partnerLeaderInfoVo = new PartnerLeaderInfoVo();
+
+        List<PartnerInfoVo> partnerInfoVoList = new ArrayList<>();
+        //工作室
+        List<String> leaderIds = partnerGradeInfo.getLeaderIds();
+        if (CollectionUtil.isEmpty(leaderIds)) {
+            return partnerLeaderInfoVo;
+        }
+        //费用
+        List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                .in(SysPremiumDetails::getUserId, leaderIds)
+                .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                        SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+        BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+        partnerLeaderInfoVo.setSumPremium(sumPremium);
+        partnerLeaderInfoVo.setExtractFee(extractFee);
+
+        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                .in(SysAgencyLeader::getUserId, leaderIds).eq(SysAgencyLeader::getDelFlag, 1));
+        List<String> userIds = new ArrayList<>();
+
+        for (SysAgencyLeader sysAgencyLeader : leaderList) {
+            PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
+
+            String userId = sysAgencyLeader.getUserId();
+            partnerInfoVo.setUserId(userId);
+            SysUser sysUser = sysUserMapper.selectById(userId);
+            partnerInfoVo.setUserName(sysUser.getName());
+            SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeader.getSuggestId());
+            partnerInfoVo.setSuggestName(sysUser1.getName());
+
+            //费用
+            List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
+                    .eq(SysPremiumDetails::getUserId, userId)
+                    .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
+                            SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
+                    .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
+            BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+            partnerInfoVo.setSumPremium(sumPremium1);
+            partnerInfoVo.setExtractFee(extractFee1);
+
+            int deptManNum = 0;
+            //获取机构下的团队
+            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()));
 
+            partnerInfoVo.setDeptNum(sysDeptList.size());
+            List<String> collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
 
+            partnerInfoVo.setDeptIds(collect);
 
+            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();
+                    if (sysUsers.size() > 0) {
+
+                        List<String> collect1 = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
+                        userIds.addAll(collect1);
+                    }
+
+                }
+            }
+            partnerInfoVo.setTeamManNum(deptManNum);
+            partnerInfoVo.setLevel(partnerGradeInfo.getLevel());
+
+            partnerInfoVoList.add(partnerInfoVo);
+        }
+        int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum();
+        partnerLeaderInfoVo.setUserIds(userIds);
+        partnerLeaderInfoVo.setTeamManNum(sum);
+        partnerLeaderInfoVo.setPartnerInfoVoList(partnerInfoVoList);
+
+
+        return partnerLeaderInfoVo;
+    }
 
 
 }

+ 24 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerTimeServiceImpl.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.admin.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysPartnerTimeMapper;
+import com.ydtech.modules.admin.model.SysPartnerTime;
+import com.ydtech.modules.admin.service.SysPartnerTimeService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * 抽成比例修改表(SysPartnerTime)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-10-10 09:07:51
+ */
+@Service("sysPartnerTimeService")
+public class SysPartnerTimeServiceImpl extends ServiceImpl<SysPartnerTimeMapper, SysPartnerTime> implements SysPartnerTimeService {
+    @Resource
+    private SysPartnerTimeMapper sysPartnerTimeMapper;
+
+
+}

+ 12 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPremiumDetailsServiceImpl.java

@@ -0,0 +1,12 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysPremiumDetailsMapper;
+import com.ydtech.modules.admin.model.SysPremiumDetails;
+import com.ydtech.modules.admin.service.SysPremiumDetailsService;
+import org.springframework.stereotype.Service;
+
+@Service("SysPremiumDetailsService")
+public class SysPremiumDetailsServiceImpl extends ServiceImpl<SysPremiumDetailsMapper, SysPremiumDetails> implements SysPremiumDetailsService {
+
+}

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

@@ -8,9 +8,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.enums.dict.FeeAuditAuditstatus;
 import com.ydtech.constants.enums.dict.ins.InsFeeAuditDistributionStatusEnum;
 import com.ydtech.exception.SystemException;
-import com.ydtech.modules.admin.model.SysDept;
-import com.ydtech.modules.admin.model.SysDeptAccount;
-import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.dao.SysPartnerAccountMapper;
+import com.ydtech.modules.admin.dao.SysPremiumDetailsMapper;
+import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.po.SysChannelCost;
 import com.ydtech.modules.admin.model.po.SysUserAccount;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
@@ -115,6 +115,11 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     @Autowired
     private SysChannelCostService sysChannelCostService;
 
+    @Resource
+    private SysPremiumDetailsMapper sysPremiumDetailsMapper;
+    @Resource
+    private SysPartnerAccountMapper sysPartnerAccountMapper;
+
     @Autowired
     private Redisson redisson;
 
@@ -318,6 +323,33 @@ 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);
+                    }
+                }
+
+            }
+
+
         } catch (Exception e) {
             throw new SystemException("当前业务繁忙,请稍后重试");
         } finally {

+ 104 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -25,8 +25,7 @@ import com.ydtech.core.page.PageRequest;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.constants.ManagementSource;
 import com.ydtech.modules.admin.constants.RoleConstants;
-import com.ydtech.modules.admin.dao.SysUserLinkAreaMapper;
-import com.ydtech.modules.admin.dao.SysUserLinkPtlAgreementMapper;
+import com.ydtech.modules.admin.dao.*;
 import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
 import com.ydtech.modules.admin.model.po.SysUserIsDial;
@@ -93,9 +92,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
+import javax.annotation.Resource;
 import javax.validation.constraints.NotBlank;
 import java.io.File;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
@@ -185,6 +186,18 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Autowired
     private InsBusinessInsuranceService insBusinessInsuranceService;
 
+    @Resource
+    private SysPremiumDetailsMapper sysPremiumDetailsMapper;
+    @Resource
+    private SysAgencyLeaderMapper sysAgencyLeaderMapper;
+    @Resource
+    private SysRelationPersonMapper sysRelationPersonMapper;
+    @Resource
+    private SysPartnerMapper sysPartnerMapper;
+    @Resource
+    private InsOrdersMapper insOrdersMapper;
+
+
 
     public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService,
                                 SysUserRoleService sysUserRoleService,
@@ -240,6 +253,85 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrders.setCompanyId(insAreaCompany.getCompanyId());
             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);
+                        }
+                    }
+                }
+            }
+
+
         }
 
         if (InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insOrders.getOrderstatus())) {
@@ -254,6 +346,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     }
 
+    private String getFiveDeptId(SysDept sysDept) {
+        String comlevel = sysDept.getComlevel();
+        if (StringUtils.isNotEmpty(comlevel) && comlevel.equals("5")) {
+            return sysDept.getId();
+        }else {
+            SysDept sysDept1 = sysDeptService.getById(sysDept.getParentId());
+            return getFiveDeptId(sysDept1);
+        }
+    }
+
 
     @Override
     public List<CarModelDTO> vinSearch(String vin) {

+ 16 - 0
src/main/resources/mapper/modules/admin/SysPartnerAccountMapper.xml

@@ -0,0 +1,16 @@
+<?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.SysPartnerAccountMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysPartnerAccount" id="SysPartnerTimeMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="sumPremium" column="sum_Premium" jdbcType="NUMERIC"/>
+        <result property="extractFee" column="extract_fee" jdbcType="NUMERIC"/>
+        <result property="cashFee" column="cash_fee" jdbcType="NUMERIC"/>
+        <result property="historyFee" column="history_fee" jdbcType="NUMERIC"/>
+        <result property="createTime" column="create_time" jdbcType="VARCHAR"/>
+    </resultMap>
+
+
+</mapper>

+ 14 - 0
src/main/resources/mapper/modules/admin/SysPartnerConfigMapper.xml

@@ -0,0 +1,14 @@
+<?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.SysPartnerConfigMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysPartnerConfig" id="SysPartnerConfigMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="logo" column="logo" jdbcType="VARCHAR"/>
+        <result property="image" column="image" jdbcType="VARCHAR"/>
+        <result property="level" column="level" jdbcType="INTEGER"/>
+        <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+    </resultMap>
+
+</mapper>
+

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

@@ -69,5 +69,13 @@
           and sal.suggest_id is null
     </select>
 
+    <select id="queryByLoginId" resultType="com.ydtech.modules.admin.model.SysPartner">
+        select sal.*
+        from sys_partner sal
+        left join sys_relation_person srp on srp.agency_leader_id=sal.user_id
+        where srp.type = 0 and srp.suggest_id = #{userId}
+    </select>
+
+
 </mapper>
 

+ 17 - 0
src/main/resources/mapper/modules/admin/SysPartnerTimeMapper.xml

@@ -0,0 +1,17 @@
+<?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.SysPartnerTimeMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysPartnerTime" id="SysPartnerTimeMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
+        <result property="oldProportional" column="old_proportional" jdbcType="VARCHAR"/>
+        <result property="newProportional" column="new_proportional" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="VARCHAR"/>
+        <result property="type" column="type" jdbcType="INTEGER"/>
+    </resultMap>
+
+
+</mapper>
+

+ 51 - 0
src/main/resources/mapper/modules/admin/SysPremiumDetailsMapper.xml

@@ -0,0 +1,51 @@
+<?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.SysPremiumDetailsMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysPremiumDetails" id="SysPartnerTimeMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="orderno" column="orderno" jdbcType="VARCHAR"/>
+        <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
+        <result property="jqpremium" column="jqpremium" jdbcType="NUMERIC"/>
+        <result property="sypremium" column="sypremium" jdbcType="NUMERIC"/>
+        <result property="jypremium" column="jypremium" jdbcType="NUMERIC"/>
+        <result property="sumpremium" column="sumpremium" jdbcType="NUMERIC"/>
+        <result property="extractFee" column="extract_fee" jdbcType="NUMERIC"/>
+        <result property="status" column="status" jdbcType="INTEGER"/>
+        <result property="createTime" column="create_time" jdbcType="VARCHAR"/>
+        <result property="proportional" column="proportional" jdbcType="VARCHAR"/>
+    </resultMap>
+    <update id="updateStatus">
+        update sys_premium_details set status = 1 where company_id = #{id}
+    </update>
+    <select id="queryInsAreaPageById" resultType="com.ydtech.modules.admin.model.vo.AgencyUserInsAreaVo">
+        select
+            io.userid as userId,
+            io.username as userName,
+            io.licenseno as licenseno,
+            apd.company_id as companyId,
+            apd.jqpremium as jqpremium,
+            apd.sypremium as sypremium,
+            apd.jypremium as jypremium,
+            apd.sumpremium as sumpremium,
+            apd.create_time as createtime,
+            iac.orderstatus as orderstatus
+        from sys_premium_details apd
+        left join ins_orders io on io.orderno = apd.orderno
+        left join ins_area_company iac on iac.id = apd.company_id
+        <where>
+            apd.status = 1 and apd.type = 1
+            <if test="dto.userId !=null  and  dto.userId !=''">
+                and io.userid = #{dto.userId}
+            </if>
+            <if test="dto.deptId !=null  and  dto.deptId !=''">
+                and io.deptid like concat( #{dto.deptId}, '%')
+            </if>
+        </where>
+        ORDER BY apd.create_time desc
+
+    </select>
+
+
+</mapper>

+ 16 - 0
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -1943,6 +1943,22 @@
             and su.leader_id = #{id}
 
     </select>
+    <select id="queryByUserId" resultType="com.ydtech.modules.admin.model.vo.AppUserInfoVo">
+        select
+            su.id as userId,
+            su.name as userName,
+            su.mobile as mobile,
+            su.position_name as positionName,
+            sd.name as deptName,
+            sui.sex as sex,
+            sui.we_chat as weChat,
+            DATE_FORMAT(sui.entry_time, '%Y-%m-%d' ) as entryTime
+        from sys_user su
+        left join sys_dept sd on su.dept_id = sd.id
+        left join sys_user_info sui on su.id = sui.id
+        where su.id= #{userId}
+
+    </select>
 
 
 </mapper>