Selaa lähdekoodia

Merge remote-tracking branch 'origin/test' into test

wks 2 vuotta sitten
vanhempi
commit
7510c089de
37 muutettua tiedostoa jossa 2961 lisäystä ja 0 poistoa
  1. 115 0
      src/main/java/com/ydtech/modules/admin/controller/SysAgencyFeeApprovalController.java
  2. 186 0
      src/main/java/com/ydtech/modules/admin/controller/SysAgencyLeaderController.java
  3. 132 0
      src/main/java/com/ydtech/modules/admin/controller/SysPartnerController.java
  4. 19 0
      src/main/java/com/ydtech/modules/admin/dao/SysAgencyFeeApprovalMapper.java
  5. 10 0
      src/main/java/com/ydtech/modules/admin/dao/SysAgencyFeeApprovalRecordMapper.java
  6. 17 0
      src/main/java/com/ydtech/modules/admin/dao/SysAgencyLeaderMapper.java
  7. 18 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerMapper.java
  8. 20 0
      src/main/java/com/ydtech/modules/admin/dao/SysRelationPersonMapper.java
  9. 122 0
      src/main/java/com/ydtech/modules/admin/model/SysAgencyFeeApproval.java
  10. 112 0
      src/main/java/com/ydtech/modules/admin/model/SysAgencyFeeApprovalRecord.java
  11. 97 0
      src/main/java/com/ydtech/modules/admin/model/SysAgencyLeader.java
  12. 68 0
      src/main/java/com/ydtech/modules/admin/model/SysPartner.java
  13. 54 0
      src/main/java/com/ydtech/modules/admin/model/SysRelationPerson.java
  14. 64 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyFeeApprovalAddDto.java
  15. 30 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyFeeApprovalEditDto.java
  16. 30 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyFeeApprovalPageDto.java
  17. 57 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderDto.java
  18. 28 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderPageDto.java
  19. 40 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerDto.java
  20. 40 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysPartnerPageDto.java
  21. 17 0
      src/main/java/com/ydtech/modules/admin/model/dto/TeamInformationDto.java
  22. 20 0
      src/main/java/com/ydtech/modules/admin/model/dto/TeamUserInfoDto.java
  23. 56 0
      src/main/java/com/ydtech/modules/admin/model/vo/AgencyExtractFee.java
  24. 48 0
      src/main/java/com/ydtech/modules/admin/model/vo/AgencyExtractFeeVo.java
  25. 63 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysAgencyLeaderVo.java
  26. 50 0
      src/main/java/com/ydtech/modules/admin/model/vo/TeamInformation.java
  27. 37 0
      src/main/java/com/ydtech/modules/admin/model/vo/TeamUserInfoVo.java
  28. 33 0
      src/main/java/com/ydtech/modules/admin/service/SysAgencyFeeApprovalService.java
  29. 56 0
      src/main/java/com/ydtech/modules/admin/service/SysAgencyLeaderService.java
  30. 36 0
      src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java
  31. 132 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyFeeApprovalServiceImpl.java
  32. 783 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyLeaderServiceImpl.java
  33. 284 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java
  34. 26 0
      src/main/resources/mapper/modules/admin/SysAgencyFeeApprovalMapper.xml
  35. 27 0
      src/main/resources/mapper/modules/admin/SysAgencyLeaderMapper.xml
  36. 17 0
      src/main/resources/mapper/modules/admin/SysPartnerMapper.xml
  37. 17 0
      src/main/resources/mapper/modules/admin/SysRelationPersonMapper.xml

+ 115 - 0
src/main/java/com/ydtech/modules/admin/controller/SysAgencyFeeApprovalController.java

@@ -0,0 +1,115 @@
+package com.ydtech.modules.admin.controller;
+
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysAgencyFeeApproval;
+import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalAddDto;
+import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalEditDto;
+import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalPageDto;
+import com.ydtech.modules.admin.service.SysAgencyFeeApprovalService;
+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;
+
+/**
+ * 机构保费抽成审批表(SysAgencyFeeApproval)表控制层
+ *
+ * @author makejava
+ * @since 2024-07-25 11:33:54
+ */
+@RestController
+@Api(tags = "机构保费抽成审批")
+@RequestMapping("sysAgencyFeeApproval")
+public class SysAgencyFeeApprovalController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private SysAgencyFeeApprovalService sysAgencyFeeApprovalService;
+
+
+
+    /**
+     * 通过主键查询单条数据
+     *
+     * @param id 主键
+     * @return 单条数据
+     */
+    @ApiOperation(value = "查看详情")
+    @GetMapping("/queryById/{id}")
+    public HttpResult<SysAgencyFeeApproval> queryById(@PathVariable("id") Integer id) {
+        return HttpResult.ok(this.sysAgencyFeeApprovalService.getById(id));
+    }
+
+
+
+    /**
+     * 分页查询
+     */
+    @ApiOperation(value = "分页查询审批列表")
+    @PostMapping("/queryPage")
+    public HttpResult<BasePageResult<SysAgencyFeeApproval>> queryPage(@RequestBody SysAgencyFeeApprovalPageDto sysAgencyFeeApprovalPageDto) {
+        if (sysAgencyFeeApprovalPageDto.getPageNum() == 0) {
+            sysAgencyFeeApprovalPageDto.setPageNum(1);
+        }
+        if (sysAgencyFeeApprovalPageDto.getPageSize() == 0) {
+            sysAgencyFeeApprovalPageDto.setPageSize(10);
+        }
+        return HttpResult.ok("success",this.sysAgencyFeeApprovalService.queryPage(sysAgencyFeeApprovalPageDto));
+    }
+
+
+    /**
+     * 新增数据
+     *
+     * @param sysAgencyFeeApprovalAddDto 实体
+     * @return 新增结果
+     */
+    @ApiOperation(value = "提现申请保存")
+    @PostMapping("/add")
+    public HttpResult add(@RequestBody SysAgencyFeeApprovalAddDto sysAgencyFeeApprovalAddDto) {
+        return this.sysAgencyFeeApprovalService.insert(sysAgencyFeeApprovalAddDto);
+    }
+
+    /**
+     * 编辑数据
+     *
+     * @param sysAgencyFeeApprovalEditDto 实体
+     * @return 编辑结果
+     */
+    @ApiOperation(value = "提现申请审核")
+    @PostMapping("/edit")
+    public HttpResult edit(@RequestBody SysAgencyFeeApprovalEditDto sysAgencyFeeApprovalEditDto) {
+        return this.sysAgencyFeeApprovalService.edit(sysAgencyFeeApprovalEditDto);
+    }
+
+
+    /**
+     * 通过主键查看审批记录
+     *
+     * @param id 主键
+     * @return 单条数据
+     */
+    @ApiOperation(value = "查看审批记录")
+    @GetMapping("/queryOperate/{id}")
+    public HttpResult queryOperate(@PathVariable("id") Integer id) {
+        return HttpResult.ok(this.sysAgencyFeeApprovalService.queryOperate(id));
+    }
+
+    /**
+     * 线下转账,线上确认提现
+     */
+    @ApiOperation(value = "线下转账,线上确认提现")
+    @PostMapping("/confirmAccounts")
+    public HttpResult confirmAccounts(@RequestBody SysAgencyFeeApprovalEditDto sysAgencyFeeApprovalEditDto) {
+        return HttpResult.ok(this.sysAgencyFeeApprovalService.confirmAccounts(sysAgencyFeeApprovalEditDto));
+    }
+
+
+
+}
+

+ 186 - 0
src/main/java/com/ydtech/modules/admin/controller/SysAgencyLeaderController.java

@@ -0,0 +1,186 @@
+package com.ydtech.modules.admin.controller;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.dto.SysAgencyLeaderDto;
+import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
+import com.ydtech.modules.admin.model.dto.TeamUserInfoDto;
+import com.ydtech.modules.admin.model.vo.AgencyExtractFeeVo;
+import com.ydtech.modules.admin.model.vo.SysAgencyLeaderVo;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.admin.service.SysAgencyLeaderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Api(tags = "配置机构负责人")
+@RestController
+@RequestMapping("/agency")
+public class SysAgencyLeaderController extends BaseController {
+
+    @Resource
+    private SysAgencyLeaderService sysAgencyLeaderService;
+
+    /**
+     * 查询正常的后线人员工  id 和姓名
+     */
+    @GetMapping("/getUserInfo")
+    @ApiOperation(value = "查询账号正常的后线人员工")
+    public HttpResult getUserInfo() {
+        return HttpResult.ok(sysAgencyLeaderService.getUserInfo());
+    }
+
+
+    /**
+     * 查询有等级的机构comlevel 不为null
+     */
+    @GetMapping("/getDeptInfo")
+    @ApiOperation(value = "查询有等级的机构")
+    public HttpResult getDeptInfo() {
+        return HttpResult.ok(sysAgencyLeaderService.getDeptInfo());
+    }
+
+    /**
+     * 根据id查询
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping("/queryById/{id}")
+    @ApiOperation(value = "根据id查询")
+    public HttpResult queryById(@PathVariable("id") Integer id) {
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryById(id));
+    }
+
+    /**
+     * 保存配置机构负责人的信息
+     *
+     * @param sysAgencyLeaderDto 实体
+     * @return 新增结果
+     */
+    @PostMapping("/add")
+    @ApiOperation(value = "保存配置机构负责人的信息")
+    public HttpResult add(@RequestBody SysAgencyLeaderDto sysAgencyLeaderDto) {
+        boolean insert = this.sysAgencyLeaderService.insert(sysAgencyLeaderDto);
+        if (!insert) {
+            return HttpResult.error("添加失败");
+        }
+        return HttpResult.ok("添加成功");
+    }
+
+//    /**
+//     * 查询所有配置机构负责人的信息
+//     *
+//     * @return
+//     */
+//    @PostMapping("/queryInfo")
+//    @ApiOperation(value = "查询所有配置机构负责人的信息")
+//    public HttpResult<List<SysAgencyLeaderVo>> queryInfo() {
+//        return HttpResult.ok("success", this.sysAgencyLeaderService.queryInfo());
+//    }
+
+    /**
+     * 分页查询配置机构负责人的信息
+     *
+     * @param sysAgencyLeaderPageDto
+     * @return
+     */
+    @PostMapping("/queryPage")
+    @ApiOperation(value = "分页查询配置机构负责人的信息")
+    public HttpResult<BasePageResult<SysAgencyLeaderVo>> queryPage(@RequestBody SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
+        if (sysAgencyLeaderPageDto.getPageNum() == 0) {
+            sysAgencyLeaderPageDto.setPageNum(1);
+        }
+        if (sysAgencyLeaderPageDto.getPageSize() == 0) {
+            sysAgencyLeaderPageDto.setPageSize(10);
+        }
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryPage(sysAgencyLeaderPageDto));
+    }
+
+    /**
+     * 保存配置机构负责人的信息
+     *
+     * @param sysAgencyLeaderDto 实体
+     * @return 新增结果
+     */
+    @PostMapping("/edit")
+    @ApiOperation(value = "编辑配置机构负责人的信息")
+    public HttpResult edit(@RequestBody SysAgencyLeaderDto sysAgencyLeaderDto) {
+        return HttpResult.ok(this.sysAgencyLeaderService.edit(sysAgencyLeaderDto));
+    }
+
+
+    @GetMapping("/del/{id}")
+    @ApiOperation(value = "删除配置机构负责人的信息")
+    public HttpResult delById(@PathVariable("id") Integer id) {
+        boolean insert = this.sysAgencyLeaderService.delById(id);
+        if (!insert) {
+            return HttpResult.error("删除失败");
+        }
+        return HttpResult.ok("删除成功");
+    }
+
+    /**
+     * 登录用户校验是否是机构负责人
+     */
+    @GetMapping("/checkUserId")
+    @ApiOperation(value = "登录用户校验是否是机构负责人")
+    public HttpResult checkUserId() {
+
+        return HttpResult.ok(this.sysAgencyLeaderService.checkUserId(getUserId()));
+    }
+
+    /**
+     * 查询机构负责人和合伙人的抽成费用
+     */
+    @GetMapping("/queryExtractFee")
+    @ApiOperation(value = "查询机构负责人和合伙人的抽成费用")
+    public HttpResult queryExtractFee() {
+
+
+        return HttpResult.ok(this.sysAgencyLeaderService.queryExtractFee(getUserId()));
+    }
+
+
+    /**
+     * 查询所有机构负责人的保费抽成明细
+     */
+    @PostMapping("/queryExtractFeeAll")
+    @ApiOperation(value = "查询所有机构负责人的保费抽成明细")
+    public HttpResult<BasePageResult<AgencyExtractFeeVo>> queryExtractFeeAll(@RequestBody SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
+        if (sysAgencyLeaderPageDto.getPageNum() == 0) {
+            sysAgencyLeaderPageDto.setPageNum(1);
+        }
+        if (sysAgencyLeaderPageDto.getPageSize() == 0) {
+            sysAgencyLeaderPageDto.setPageSize(10);
+        }
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryExtractFeeAll(sysAgencyLeaderPageDto));
+    }
+
+    /**
+     * 查询机构下所有团队的信息
+     */
+    @GetMapping("/queryTeamInfo")
+    @ApiOperation(value = "查询机构下所有团队的信息")
+    public HttpResult queryTeamInfo(){
+
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryTeamInfo(getUserId()));
+    }
+
+    /**
+     * 查询团队下人员  报价笔数 核保笔数 出单笔数 签单保费
+     */
+
+    @PostMapping("/queryTeamUser")
+    @ApiOperation(value = "根据团队id查询团队下人员信息")
+    public HttpResult queryTeamUser(@RequestBody TeamUserInfoDto teamUserInfoDto) {
+
+        return HttpResult.ok("success", this.sysAgencyLeaderService.queryTeamUser(teamUserInfoDto));
+    }
+
+
+
+}

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

@@ -0,0 +1,132 @@
+package com.ydtech.modules.admin.controller;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysPartner;
+import com.ydtech.modules.admin.model.dto.SysPartnerDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
+import com.ydtech.modules.admin.model.vo.AgencyExtractFee;
+import com.ydtech.modules.admin.model.vo.AgencyExtractFeeVo;
+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;
+
+/**
+ * 配置机构合伙人表(SysPartner)表控制层
+ *
+ * @author makejava
+ * @since 2024-08-01 11:20:57
+ */
+@RestController
+@RequestMapping("sysPartner")
+@Api(tags = "配置合伙人")
+public class SysPartnerController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private SysPartnerService sysPartnerService;
+
+    /**
+     * 分页查询
+     *
+     * @param sysPartnerPageDto 筛选条件
+     * @return 查询结果
+     */
+    @PostMapping("/queryByPage")
+    @ApiOperation(value = "合伙人分页查询")
+    public HttpResult<BasePageResult<SysPartner>> queryByPage(@RequestBody SysPartnerPageDto sysPartnerPageDto) {
+        if (sysPartnerPageDto.getPageNum() == 0) {
+            sysPartnerPageDto.setPageNum(1);
+        }
+        if (sysPartnerPageDto.getPageSize() == 0) {
+            sysPartnerPageDto.setPageSize(10);
+        }
+        return HttpResult.ok(this.sysPartnerService.queryByPage(sysPartnerPageDto));
+    }
+
+    /**
+     * 通过主键查询单条数据
+     *
+     * @param id 主键
+     * @return 单条数据
+     */
+    @GetMapping("/queryById/{id}")
+    @ApiOperation(value = "根据id查询合伙人信息")
+    public HttpResult queryById(@PathVariable("id") String id) {
+        return HttpResult.ok("success", this.sysPartnerService.queryById(id));
+    }
+
+    /**
+     * 合伙人和机构负责人使用的推荐人接口
+     * @return
+     */
+    @GetMapping("/queryInfo")
+    @ApiOperation(value = "推荐人查询接口")
+    public HttpResult queryInfo() {
+        return HttpResult.ok("success", this.sysPartnerService.queryInfo());
+    }
+
+    /**
+     * 新增数据配置合伙人
+     *
+     * @param sysPartnerDto 实体
+     * @return 新增结果
+     */
+    @PostMapping("/add")
+    @ApiOperation(value = "配置合伙人")
+    public HttpResult add(@RequestBody SysPartnerDto sysPartnerDto) {
+        boolean insert = this.sysPartnerService.insert(sysPartnerDto);
+        if (insert) {
+            return HttpResult.ok("添加成功");
+        }
+        return HttpResult.error("添加失败");
+    }
+
+    /**
+     * 判断当前登陆人是否合伙人
+     */
+    @PostMapping("/checkPartner")
+    @ApiOperation(value = "判断当前登陆人是否合伙人")
+    public HttpResult checkPartner() {
+        return HttpResult.ok("success", this.sysPartnerService.checkPartner(getUserId()));
+
+    }
+
+    /**
+     * 通过主键查询单条数据
+     *
+     * @param id 主键
+     * @return 单条数据
+     */
+    @GetMapping("/deleteById/{id}")
+    @ApiOperation(value = "删除合伙人")
+    public HttpResult deleteById(@PathVariable("id") Integer id) {
+        return HttpResult.ok("success", this.sysPartnerService.deleteById(id));
+    }
+
+    /**
+     * 所有合伙人的抽层费用
+     */
+    @PostMapping("/queryPartnerByPage")
+    @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.queryPartnerByPage(sysPartnerPageDto));
+    }
+
+
+
+
+
+}
+

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

@@ -0,0 +1,19 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysAgencyFeeApproval;
+import org.apache.ibatis.annotations.Mapper;
+
+
+/**
+ * 机构保费抽成审批表(SysAgencyFeeApproval)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-07-25 11:33:54
+ */
+@Mapper
+public interface SysAgencyFeeApprovalMapper extends BaseMapper<SysAgencyFeeApproval> {
+
+
+}
+

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

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

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

@@ -0,0 +1,17 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysAgencyLeader;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 配置机构负责人(AgencyLeader)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-07-22 14:08:34
+ */
+@Mapper
+public interface SysAgencyLeaderMapper extends BaseMapper<SysAgencyLeader> {
+
+}
+

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

@@ -0,0 +1,18 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysPartner;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 配置机构合伙人表(SysPartner)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-08-01 11:20:57
+ */
+@Mapper
+public interface SysPartnerMapper extends BaseMapper<SysPartner> {
+
+
+}
+

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

@@ -0,0 +1,20 @@
+package com.ydtech.modules.admin.dao;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.SysRelationPerson;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 合伙人推荐人和机构负责人关系表(SysRelationPerson)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-08-01 11:21:42
+ */
+@Mapper
+public interface SysRelationPersonMapper extends BaseMapper<SysRelationPerson> {
+
+
+
+}
+

+ 122 - 0
src/main/java/com/ydtech/modules/admin/model/SysAgencyFeeApproval.java

@@ -0,0 +1,122 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 机构保费抽成审批表(SysAgencyFeeApproval)实体类
+ *
+ * @author makejava
+ * @since 2024-07-25 11:33:54
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value = "机构保费抽成审批表")
+@TableName(value ="sys_agency_fee_approval")
+public class SysAgencyFeeApproval implements Serializable {
+    private static final long serialVersionUID = -13720338094493163L;
+    /**
+     * 自增主键
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+    /**
+     * 机构id
+     */
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+    /**
+     * 机构name
+     */
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    private BigDecimal sumpremium;
+    /**
+     * 抽成比例(总保费抽成)
+     */
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+    /**
+     * 总保费抽成费用
+     */
+    @ApiModelProperty(value = "总保费抽成费用")
+    private BigDecimal extractFee;
+    /**
+     * 已提现抽成费用
+     */
+    @ApiModelProperty(value = "已提现抽成费用")
+    private BigDecimal historyFee;
+    /**
+     * 可提现抽成费用
+     */
+    @ApiModelProperty(value = "可提现抽成费用")
+    private BigDecimal cashFee;
+    /**
+     * 提层计算时间
+     */
+    @ApiModelProperty(value = "提层计算开始时间")
+    private Date startTime;
+    /**
+     * 审核人
+     */
+    @ApiModelProperty(value = "审核人")
+    private String auditUser;
+    /**
+     * 审核状态0未审核 1审核通过 2审核驳回
+     */
+    @ApiModelProperty(value = "审核状态0未审核 1审核通过 2审核驳回")
+    private String status;
+    /**
+     * 审核时间
+     */
+    @ApiModelProperty(value = "审核时间")
+    private Date auditTime;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 审批意见
+     */
+    @ApiModelProperty(value = "审批意见")
+    private String remark;
+    /**
+     * 附件图片:转账凭证
+     */
+    @ApiModelProperty(value = "转账凭证")
+    private String picture;
+
+
+}
+

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

@@ -0,0 +1,112 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class SysAgencyFeeApprovalRecord {
+
+    private static final long serialVersionUID = -1L;
+    /**
+     * 自增主键
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 审批的id
+     */
+    @ApiModelProperty(value = "审批的id")
+    private Integer approvalId;
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+    /**
+     * 机构id
+     */
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+    /**
+     * 机构name
+     */
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    private BigDecimal sumpremium;
+    /**
+     * 抽成比例(总保费抽成)
+     */
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+    /**
+     * 总保费抽成费用
+     */
+    @ApiModelProperty(value = "总保费抽成费用")
+    private BigDecimal extractFee;
+    /**
+     * 已提现抽成费用
+     */
+    @ApiModelProperty(value = "已提现抽成费用")
+    private BigDecimal historyFee;
+    /**
+     * 可提现抽成费用
+     */
+    @ApiModelProperty(value = "可提现抽成费用")
+    private BigDecimal cashFee;
+    /**
+     * 提层计算时间
+     */
+    @ApiModelProperty(value = "提层计算开始时间")
+    private Date startTime;
+    /**
+     * 审核人
+     */
+    @ApiModelProperty(value = "审核人")
+    private String auditUser;
+    /**
+     * 审核状态0未审核 1审核通过 2审核驳回
+     */
+    @ApiModelProperty(value = "审核状态0未审核 1审核通过 2审核驳回")
+    private String status;
+    /**
+     * 审核时间
+     */
+    @ApiModelProperty(value = "审核时间")
+    private Date auditTime;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "操作时间")
+    private Date createTime;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "操作人")
+    private String createBy;
+    /**
+     * 审批意见
+     */
+    @ApiModelProperty(value = "审批意见")
+    private String remark;
+
+    /**
+     * 附件图片:转账记录
+     */
+    @ApiModelProperty(value = "附件图片:转账记录")
+    private String picture;
+}

+ 97 - 0
src/main/java/com/ydtech/modules/admin/model/SysAgencyLeader.java

@@ -0,0 +1,97 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 配置机构负责人(SysAgencyLeader)实体类
+ *
+ * @author makejava
+ * @since 2024-07-22 14:09:04
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value = "配置机构负责人")
+@TableName(value ="sys_agency_leader")
+public class SysAgencyLeader implements Serializable {
+    private static final long serialVersionUID = 829839922519089548L;
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+    /**
+     * 机构id
+     */
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+    /**
+     * 机构name
+     */
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+    /**
+     * 机构等级
+     */
+    @ApiModelProperty(value = "机构等级")
+    private String comlevel;
+    /**
+     * 业务来源
+     */
+    @ApiModelProperty(value = "业务来源")
+    private String source;
+    /**
+     * 抽成比例(总保费抽成)
+     */
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+    @ApiModelProperty(value = "推荐人id")
+    private String suggestId;
+
+    @ApiModelProperty(value = "推荐人name")
+    private String suggestName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    private Integer delFlag;
+
+    /**
+     * 创建时间
+     */
+    private Date updateTime;
+    /**
+     * 创建人
+     */
+    private String updateBy;
+
+
+
+}
+

+ 68 - 0
src/main/java/com/ydtech/modules/admin/model/SysPartner.java

@@ -0,0 +1,68 @@
+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.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 配置机构合伙人表(SysPartner)实体类
+ *
+ * @author makejava
+ * @since 2024-08-01 11:20:57
+ */
+@Data
+@ApiModel(value = "合伙人")
+public class SysPartner implements Serializable {
+    private static final long serialVersionUID = -26740444574735118L;
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+    /**
+     * 抽成比例(总保费抽成)
+     */
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+
+    @ApiModelProperty(value = "推荐人id")
+    private String suggestId;
+
+    @ApiModelProperty(value = "推荐人name")
+    private String suggestName;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 删除( 0:删除 1:正常)
+     */
+    private Integer delFlag;
+
+
+}
+

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

@@ -0,0 +1,54 @@
+package com.ydtech.modules.admin.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 合伙人推荐人和机构负责人关系表(SysRelationPerson)实体类
+ *
+ * @author makejava
+ * @since 2024-08-01 11:21:42
+ */
+@Data
+public class SysRelationPerson implements Serializable {
+    private static final long serialVersionUID = -18878940342907552L;
+    /**
+     * 自增id
+     */
+    @TableId(value = "id", type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 被推荐人id
+     */
+    private String agencyLeaderId;
+    /**
+     * 推荐类型(0:合伙人  1:机构负责人)
+     */
+    private int type;
+    /**
+     * 推荐人id
+     */
+    private String suggestId;
+    /**
+     * '推荐等级(0:直接推荐;1:间接推荐)'
+     */
+    private Integer source;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 创建人
+     */
+    private String createBy;
+    /**
+     * 删除( 0:删除 1:正常)
+     */
+    private Integer delFlag;
+
+}
+

+ 64 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyFeeApprovalAddDto.java

@@ -0,0 +1,64 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "机构保费抽成提交审批入参")
+public class SysAgencyFeeApprovalAddDto {
+
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+    /**
+     * 机构name
+     */
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+    /**
+     * 总保费
+     */
+    @ApiModelProperty(value = "总保费")
+    private BigDecimal sumpremium;
+    /**
+     * 抽成比例(总保费抽成)
+     */
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+    /**
+     * 总保费抽成费用
+     */
+    @ApiModelProperty(value = "总保费抽成费用")
+    private BigDecimal extractFee;
+    /**
+     * 已提现抽成费用
+     */
+    @ApiModelProperty(value = "已提现抽成费用")
+    private BigDecimal historyFee;
+    /**
+     * 可提现抽成费用
+     */
+    @ApiModelProperty(value = "可提现抽成费用")
+    private BigDecimal cashFee;
+    /**
+     * 提层计算时间
+     */
+    @ApiModelProperty(value = "提层计算开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String startTime;
+}

+ 30 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyFeeApprovalEditDto.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "机构保费抽成审批入参")
+public class SysAgencyFeeApprovalEditDto {
+
+    @ApiModelProperty(value = "主键id,审批时候传")
+    private Integer id;
+    /**
+     * 审核状态0未审核 1审核通过 2审核驳回
+     */
+    @ApiModelProperty(value = "审核状态0未审核 1审核通过 2审核驳回")
+    private String status;
+    /**
+     * 审批意见
+     */
+    @ApiModelProperty(value = "审批意见")
+    private String remark;
+
+    @ApiModelProperty(value = "转账凭证")
+    private String picture;
+
+}

+ 30 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyFeeApprovalPageDto.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "保费抽成审批表分页查询入参")
+public class SysAgencyFeeApprovalPageDto {
+
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 审核状态0未审核 1审核通过 2审核驳回
+     */
+    @ApiModelProperty(value = "审核状态0未审核 1审核通过 2审核驳回")
+    private String status;
+
+
+    @ApiModelProperty(value = "分页查询传页数")
+    private int pageNum;
+    @ApiModelProperty(value = "分页查询传每页条数")
+    private int pageSize;
+}

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

@@ -0,0 +1,57 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+@ApiModel(value = "配置机构负责人添加编辑入参")
+public class SysAgencyLeaderDto {
+
+    @ApiModelProperty(value = "编辑时需要传员工id")
+    private Integer id;
+
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+    /**
+     * 机构id
+     */
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+    /**
+     * 机构name
+     */
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+    /**
+     * 机构等级
+     */
+    @ApiModelProperty(value = "机构等级")
+    private String comlevel;
+    /**
+     * 业务来源
+     */
+    @ApiModelProperty(value = "业务来源")
+    private String[] source;
+    /**
+     * 抽成比例(总保费抽成)
+     */
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+
+    @ApiModelProperty(value = "推荐人id")
+    private String suggestId;
+
+    @ApiModelProperty(value = "推荐人name")
+    private String suggestName;
+
+}

+ 28 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysAgencyLeaderPageDto.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "配置机构负责人分页查询入参")
+public class SysAgencyLeaderPageDto {
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    @ApiModelProperty(value = "推荐人id")
+    private String suggestId;
+
+    /**
+     * 机构id
+     */
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+}

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

@@ -0,0 +1,40 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value = "添加合伙人入参")
+public class SysPartnerDto {
+
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+    /**
+     * 抽成比例(总保费抽成)
+     */
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+
+    @ApiModelProperty(value = "推荐人id")
+    private String suggestId;
+
+    @ApiModelProperty(value = "推荐人name")
+    private String suggestName;
+
+
+
+
+}

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

@@ -0,0 +1,40 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value = "合伙人分页查询")
+public class SysPartnerPageDto {
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+
+    @ApiModelProperty(value = "推荐人id")
+    private String suggestId;
+    /**
+     * 开始时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+    /**
+     * 结束时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+}

+ 17 - 0
src/main/java/com/ydtech/modules/admin/model/dto/TeamInformationDto.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "查询机构负责人的抽成费用")
+public class TeamInformationDto {
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+}

+ 20 - 0
src/main/java/com/ydtech/modules/admin/model/dto/TeamUserInfoDto.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value = "团队下的人员信息入参")
+public class TeamUserInfoDto {
+
+    @ApiModelProperty(value = "部门id")
+    private String deptId;
+
+    @ApiModelProperty(value = "保费提层计算开始时间")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private String startTime;
+}

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

@@ -0,0 +1,56 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "机构抽成返回实体")
+public class AgencyExtractFee {
+
+
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+    /**
+     * 机构name
+     */
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+
+    @ApiModelProperty(value = "总保费")
+    private BigDecimal sumpremium;
+
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+
+    @ApiModelProperty(value = "总保费抽成费用")
+    private BigDecimal extractFee;
+
+    @ApiModelProperty(value = "已提现抽成费用")
+    private BigDecimal historyFee;
+
+    @ApiModelProperty(value = "可提现抽成费用")
+    private BigDecimal cashFee;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @ApiModelProperty(value = "保费提层计算开始时间")
+    private Date startTime;
+
+
+
+
+
+
+}

+ 48 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AgencyExtractFeeVo.java

@@ -0,0 +1,48 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "机构抽成返回实体")
+public class AgencyExtractFeeVo {
+        @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+    /**
+     * 机构name
+     */
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+
+    @ApiModelProperty(value = "总保费")
+    private BigDecimal sumpremium;
+
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+
+    @ApiModelProperty(value = "总保费抽成费用")
+    private BigDecimal extractFee;
+
+    @ApiModelProperty(value = "已提现抽成费用")
+    private BigDecimal historyFee;
+
+    @ApiModelProperty(value = "可提现抽成费用")
+    private BigDecimal cashFee;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @ApiModelProperty(value = "保费提层计算开始时间")
+    private Date startTime;
+}

+ 63 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysAgencyLeaderVo.java

@@ -0,0 +1,63 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value = "配置机构负责人返参")
+public class SysAgencyLeaderVo {
+
+
+    @ApiModelProperty(value = "自增id")
+    private Integer id;
+    /**
+     * 员工id
+     */
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+    /**
+     * 机构id
+     */
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+    /**
+     * 机构name
+     */
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+    /**
+     * 机构等级
+     */
+    @ApiModelProperty(value = "机构等级")
+    private String comlevel;
+    /**
+     * 业务来源
+     */
+    @ApiModelProperty(value = "业务来源")
+    private String[] source;
+    /**
+     * 抽成比例(总保费抽成)
+     */
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    @ApiModelProperty(value = "数据状态( 0:删除 1:正常")
+    private Integer delFlag;
+}

+ 50 - 0
src/main/java/com/ydtech/modules/admin/model/vo/TeamInformation.java

@@ -0,0 +1,50 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "机构下团队的信息实体")
+public class TeamInformation {
+
+    /**
+     * 团队id
+     */
+    @ApiModelProperty(value = "团队id")
+    private String deptId;
+
+    /**
+     * 团队名称
+     */
+    @ApiModelProperty(value = "团队名称")
+    private String deptName;
+
+    /**
+     * 团队总保费
+     */
+    @ApiModelProperty(value = "团队总保费")
+    private BigDecimal sumpremium;
+
+    /**
+     * 团队人数
+     */
+    @ApiModelProperty(value = "团队人数")
+    private int deptManNum;
+
+    /**
+     * 出单人力
+     */
+    @ApiModelProperty(value = "出单人力")
+    private int orderManNum;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @ApiModelProperty(value = "保费提层计算开始时间")
+    private Date startTime;
+
+
+}

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

@@ -0,0 +1,37 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "团队下的人员信息返参")
+public class  TeamUserInfoVo {
+
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "员工姓名")
+    private String userName;
+
+
+    @ApiModelProperty(value = "报价笔数")
+    private Long quoteNum;
+
+
+    @ApiModelProperty(value = "核保笔数")
+    private Long underwriteNum;
+
+    @ApiModelProperty(value = "出单笔数")
+    private int issueNum;
+
+    @ApiModelProperty(value = "总保费")
+    private BigDecimal sumpremium;
+
+
+}

+ 33 - 0
src/main/java/com/ydtech/modules/admin/service/SysAgencyFeeApprovalService.java

@@ -0,0 +1,33 @@
+package com.ydtech.modules.admin.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysAgencyFeeApproval;
+import com.ydtech.modules.admin.model.SysAgencyFeeApprovalRecord;
+import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalAddDto;
+import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalEditDto;
+import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalPageDto;
+import com.ydtech.modules.order.entity.BasePageResult;
+
+import java.util.List;
+
+/**
+ * 机构保费抽成审批表(SysAgencyFeeApproval)表服务接口
+ *
+ * @author makejava
+ * @since 2024-07-25 11:33:55
+ */
+public interface SysAgencyFeeApprovalService extends IService<SysAgencyFeeApproval> {
+
+
+    HttpResult insert(SysAgencyFeeApprovalAddDto sysAgencyFeeApprovalAddDto);
+
+    HttpResult edit(SysAgencyFeeApprovalEditDto sysAgencyFeeApprovalEditDto);
+
+    BasePageResult<SysAgencyFeeApproval> queryPage(SysAgencyFeeApprovalPageDto sysAgencyFeeApprovalPageDto);
+
+    List<SysAgencyFeeApprovalRecord> queryOperate(Integer id);
+
+    boolean confirmAccounts(SysAgencyFeeApprovalEditDto sysAgencyFeeApprovalEditDto);
+}

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

@@ -0,0 +1,56 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysAgencyLeader;
+import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.SysAgencyLeaderDto;
+import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
+import com.ydtech.modules.admin.model.dto.TeamUserInfoDto;
+import com.ydtech.modules.admin.model.vo.*;
+import com.ydtech.modules.order.entity.BasePageResult;
+
+import java.util.List;
+
+/**
+ * 配置机构负责人(AgencyLeader)表服务接口
+ *
+ * @author makejava
+ * @since 2024-07-22 14:08:36
+ */
+public interface SysAgencyLeaderService extends IService<SysAgencyLeader> {
+    
+
+    /**
+     * 新增数据
+     *
+     * @param sysAgencyLeaderDto 实例对象
+     * @return 实例对象
+     */
+    boolean insert(SysAgencyLeaderDto sysAgencyLeaderDto);
+
+
+    List<SysDept> getDeptInfo();
+
+    List<SysUser> getUserInfo();
+
+    boolean edit(SysAgencyLeaderDto sysAgencyLeaderDto);
+
+    boolean delById(Integer id);
+
+    List<SysAgencyLeaderVo> queryInfo();
+
+    BasePageResult<SysAgencyLeaderVo> queryPage(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
+
+    SysAgencyLeaderVo queryById(Integer id);
+
+    boolean checkUserId(String userId);
+
+    AgencyExtractFee queryExtractFee(String userId);
+
+    BasePageResult<AgencyExtractFeeVo> queryExtractFeeAll(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
+
+    List<TeamInformation> queryTeamInfo(String userId);
+
+    List<TeamUserInfoVo> queryTeamUser(TeamUserInfoDto teamUserInfoDto);
+}

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

@@ -0,0 +1,36 @@
+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.SysPartnerDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
+import com.ydtech.modules.admin.model.vo.AgencyExtractFee;
+import com.ydtech.modules.admin.model.vo.AgencyExtractFeeVo;
+import com.ydtech.modules.order.entity.BasePageResult;
+
+import java.util.List;
+
+/**
+ * 配置机构合伙人表(SysPartner)表服务接口
+ *
+ * @author makejava
+ * @since 2024-08-01 11:20:57
+ */
+public interface SysPartnerService extends IService<SysPartner> {
+
+
+    SysPartner queryById(String id);
+
+    BasePageResult<SysPartner> queryByPage(SysPartnerPageDto sysPartnerPageDto);
+
+    boolean insert(SysPartnerDto sysPartnerDto);
+
+    boolean checkPartner(String userId);
+
+    List<SysPartner> queryInfo();
+
+    boolean deleteById(Integer id);
+
+    BasePageResult<AgencyExtractFeeVo> queryPartnerByPage(SysPartnerPageDto sysPartnerPageDto);
+}

+ 132 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysAgencyFeeApprovalServiceImpl.java

@@ -0,0 +1,132 @@
+package com.ydtech.modules.admin.service.impl;
+
+
+import cn.hutool.core.bean.BeanUtil;
+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.aop.exception.DescribeException;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.dao.SysAgencyFeeApprovalMapper;
+import com.ydtech.modules.admin.dao.SysAgencyFeeApprovalRecordMapper;
+import com.ydtech.modules.admin.model.SysAgencyFeeApproval;
+import com.ydtech.modules.admin.model.SysAgencyFeeApprovalRecord;
+import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalAddDto;
+import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalEditDto;
+import com.ydtech.modules.admin.model.dto.SysAgencyFeeApprovalPageDto;
+import com.ydtech.modules.admin.service.SysAgencyFeeApprovalService;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.utils.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 机构保费抽成审批表(SysAgencyFeeApproval)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-07-25 11:33:55
+ */
+@Service("sysAgencyFeeApprovalService")
+public class SysAgencyFeeApprovalServiceImpl extends ServiceImpl<SysAgencyFeeApprovalMapper, SysAgencyFeeApproval> implements SysAgencyFeeApprovalService {
+
+    @Resource
+    private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper;
+
+    @Resource
+    private SysAgencyFeeApprovalRecordMapper sysAgencyFeeApprovalRecordMapper;
+
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult insert(SysAgencyFeeApprovalAddDto sysAgencyFeeApprovalAddDto) {
+        SysAgencyFeeApproval sysAgencyFeeApproval = BeanUtil.copyProperties(sysAgencyFeeApprovalAddDto, SysAgencyFeeApproval.class);
+        sysAgencyFeeApproval.setCreateTime(new Date());
+        sysAgencyFeeApproval.setCreateBy(BaseController.getUser().getName());
+        //提交审核信息
+        save(sysAgencyFeeApproval);
+        //保存添加记录
+        SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class);
+        sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId());
+        sysAgencyFeeApprovalRecord.setId(null);
+        boolean i = sysAgencyFeeApprovalRecordMapper.insert(sysAgencyFeeApprovalRecord)>0;
+        if (i) {
+            return HttpResult.ok("提现申请提交成功");
+        }
+        return HttpResult.error("提现申请提交失败");
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult edit(SysAgencyFeeApprovalEditDto sysAgencyFeeApprovalEditDto) {
+        SysAgencyFeeApproval sysAgencyFeeApproval = sysAgencyFeeApprovalMapper.selectById(sysAgencyFeeApprovalEditDto.getId());
+        String status = sysAgencyFeeApproval.getStatus();
+        if (status.equals("1") || status.equals("2")) {
+            throw new DescribeException("已审批,不可重复操作");
+        }
+        sysAgencyFeeApproval.setAuditTime(new Date());
+        sysAgencyFeeApproval.setRemark(sysAgencyFeeApprovalEditDto.getRemark());
+        sysAgencyFeeApproval.setStatus(sysAgencyFeeApprovalEditDto.getStatus());
+        sysAgencyFeeApproval.setAuditUser(BaseController.getUser().getName());
+        //保存审批信息
+        sysAgencyFeeApprovalMapper.updateById(sysAgencyFeeApproval);
+        //保存审批记录
+        SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class);
+        sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId());
+        sysAgencyFeeApprovalRecord.setId(null);
+        sysAgencyFeeApprovalRecord.setCreateTime(new Date());
+        sysAgencyFeeApprovalRecord.setCreateBy(BaseController.getUser().getName());
+        boolean i = sysAgencyFeeApprovalRecordMapper.insert(sysAgencyFeeApprovalRecord)>0;
+        if (i) {
+            return HttpResult.ok("审核成功");
+        }
+        return HttpResult.error("审核失败");
+    }
+
+    @Override
+    public BasePageResult<SysAgencyFeeApproval> queryPage(SysAgencyFeeApprovalPageDto sysAgencyFeeApprovalPageDto) {
+        Page<SysAgencyFeeApproval> page = new Page<>(sysAgencyFeeApprovalPageDto.getPageNum(), sysAgencyFeeApprovalPageDto.getPageSize());
+
+        LambdaQueryWrapper<SysAgencyFeeApproval> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyFeeApprovalPageDto.getStatus()),SysAgencyFeeApproval::getStatus,sysAgencyFeeApprovalPageDto.getStatus());
+        wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyFeeApprovalPageDto.getUserId()),SysAgencyFeeApproval::getUserId,sysAgencyFeeApprovalPageDto.getUserId());
+        wrapper.orderByDesc(SysAgencyFeeApproval::getId);
+
+        Page<SysAgencyFeeApproval> insOrdersPage = page(page, wrapper);
+        return new BasePageResult<>(sysAgencyFeeApprovalPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                insOrdersPage.getRecords());
+
+    }
+
+    @Override
+    public List<SysAgencyFeeApprovalRecord> queryOperate(Integer id) {
+        return sysAgencyFeeApprovalRecordMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApprovalRecord>()
+                .eq(SysAgencyFeeApprovalRecord::getApprovalId, id));
+    }
+
+    @Override
+    public boolean confirmAccounts(SysAgencyFeeApprovalEditDto sysAgencyFeeApprovalEditDto) {
+        SysAgencyFeeApproval sysAgencyFeeApproval = sysAgencyFeeApprovalMapper.selectById(sysAgencyFeeApprovalEditDto.getId());
+        if (sysAgencyFeeApproval.getStatus().equals("0") || sysAgencyFeeApproval.getStatus().equals("2")) {
+            throw new DescribeException("未审批或审批未通,不可确认转账");
+        }
+        sysAgencyFeeApproval.setHistoryFee(sysAgencyFeeApproval.getCashFee());
+        sysAgencyFeeApproval.setPicture(sysAgencyFeeApprovalEditDto.getPicture());
+        sysAgencyFeeApprovalMapper.updateById(sysAgencyFeeApproval);
+        //保存确认转账记录
+        SysAgencyFeeApprovalRecord sysAgencyFeeApprovalRecord = BeanUtil.copyProperties(sysAgencyFeeApproval, SysAgencyFeeApprovalRecord.class);
+        sysAgencyFeeApprovalRecord.setApprovalId(sysAgencyFeeApproval.getId());
+        sysAgencyFeeApprovalRecord.setId(null);
+        sysAgencyFeeApprovalRecord.setCreateTime(new Date());
+        sysAgencyFeeApprovalRecord.setCreateBy(BaseController.getUser().getName());
+
+        return sysAgencyFeeApprovalRecordMapper.insert(sysAgencyFeeApprovalRecord)>0;
+    }
+
+
+}

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

@@ -0,0 +1,783 @@
+package com.ydtech.modules.admin.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.aop.exception.DescribeException;
+import com.ydtech.modules.admin.dao.*;
+import com.ydtech.modules.admin.model.*;
+import com.ydtech.modules.admin.model.dto.SysAgencyLeaderDto;
+import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
+import com.ydtech.modules.admin.model.dto.TeamUserInfoDto;
+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.base.controller.BaseController;
+import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
+import com.ydtech.modules.order.dao.InsOrdersMapper;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service("sysAgencyLeaderService")
+public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMapper, SysAgencyLeader> implements SysAgencyLeaderService {
+
+    @Resource
+    private SysAgencyLeaderMapper sysAgencyLeaderMapper;
+
+    @Resource
+    private SysDeptMapper sysDeptMapper;
+
+    @Resource
+    private SysUserMapper sysUserMapper;
+
+    @Resource
+    private InsOrdersMapper insOrdersMapper;
+
+    @Resource
+    private InsAreaCompanyMapper insAreaCompanyMapper;
+
+    @Resource
+    private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper;
+
+    @Resource
+    private SysRelationPersonMapper sysRelationPersonMapper;
+
+
+    @Resource
+    private SysPartnerService sysPartnerService;
+
+    @Resource
+    private SysPartnerMapper sysPartnerMapper;
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean insert(SysAgencyLeaderDto sysAgencyLeaderDto) {
+        //校验一个用户只能是一个机构的负责人,每个机构只有一个负责人
+        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new QueryWrapper<SysAgencyLeader>().lambda().eq(SysAgencyLeader::getDelFlag, 1));
+        if (sysAgencyLeaders.size() > 0) {
+            //校验用户是否已经机构负责人
+            List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
+            if (userIdList.contains(sysAgencyLeaderDto.getUserId())) {
+                throw new DescribeException(sysAgencyLeaderDto.getUserName() + "已是机构负责人,不可重复配置");
+            }
+
+            List<String> deptIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getDeptId).collect(Collectors.toList());
+            if (deptIdList.contains(sysAgencyLeaderDto.getDeptId())) {
+                throw new DescribeException(sysAgencyLeaderDto.getDeptName() + "机构已配置负责人,不可重复配置");
+            }
+        }
+
+        List<SysPartner> sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
+        if (sysPartners.size() > 0) {
+            List<String> userIdList = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+            if (userIdList.contains(sysAgencyLeaderDto.getUserId())) {
+                throw new DescribeException(sysAgencyLeaderDto.getUserName() + "已是合伙人,不可设置为机构负责人");
+            }
+        }
+
+        SysAgencyLeader sysAgencyLeader = BeanUtil.copyProperties(sysAgencyLeaderDto, SysAgencyLeader.class);
+        String[] source = sysAgencyLeaderDto.getSource();
+        StringBuilder stringBuilder = new StringBuilder();
+        if (source != null) {
+            int size = source.length;
+            if (size == 3) {
+                stringBuilder.append(source[0]).append(",").append(source[1]).append(",").append(source[2]);
+
+            } else if (size == 2) {
+                stringBuilder.append(source[0]).append(",").append(source[1]);
+            } else {
+                stringBuilder.append(source[0]);
+            }
+        }
+        sysAgencyLeader.setSource(stringBuilder.toString());
+        sysAgencyLeader.setCreateTime(new Date());
+        SysUser user = BaseController.getUser();
+        sysAgencyLeader.setCreateBy(user.getId());
+        sysAgencyLeaderMapper.insert(sysAgencyLeader);
+        //sysRelationPerson1为空是无上级
+        SysRelationPerson sysRelationPerson = new SysRelationPerson();
+        sysRelationPerson.setAgencyLeaderId(sysAgencyLeader.getUserId());
+        sysRelationPerson.setCreateBy(user.getId());
+        sysRelationPerson.setCreateTime(new Date());
+        sysRelationPerson.setSuggestId(sysAgencyLeaderDto.getSuggestId());
+        sysRelationPerson.setSource(0);
+        sysRelationPerson.setType(1);
+        boolean b = sysRelationPersonMapper.insert(sysRelationPerson) > 0;
+        //查询推荐人是否有上级 :满足合伙人有多层关系
+        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeaderDto.getSuggestId())
+                .eq(SysRelationPerson::getType, 0));
+
+        if (sysRelationPersonList.size() > 0) {
+            for (SysRelationPerson sysRelation : sysRelationPersonList) {
+                SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
+                sysRelationPerson1.setAgencyLeaderId(sysAgencyLeader.getUserId());
+                sysRelationPerson1.setCreateBy(user.getId());
+                sysRelationPerson1.setCreateTime(new Date());
+                sysRelationPerson1.setSuggestId(sysRelation.getSuggestId());
+                sysRelationPerson1.setSource(1);
+                sysRelationPerson1.setType(1);
+                sysRelationPersonMapper.insert(sysRelationPerson1);
+            }
+
+        }
+        return b;
+    }
+
+    @Override
+    public List<SysDept> getDeptInfo() {
+        return sysDeptMapper.selectList(new QueryWrapper<SysDept>().lambda().eq(SysDept::getDelFlag, 0).isNotNull(SysDept::getComlevel));
+    }
+
+    @Override
+    public List<SysUser> getUserInfo() {
+        List<SysUser> sysUsers = sysUserMapper.selectList(new QueryWrapper<SysUser>().lambda().eq(SysUser::getStatus, 1));
+        String id = BaseController.getUser().getId();
+        List<SysUser> sysUserList = null;
+        if (sysUsers.size() > 0) {
+            sysUserList = sysUsers.stream().filter(SysUser -> !SysUser.getId().equals(id)).collect(Collectors.toList());
+        }
+        return sysUserList;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean edit(SysAgencyLeaderDto sysAgencyLeaderDto) {
+        //不修改负责人userId传null
+        String userId = sysAgencyLeaderDto.getUserId();
+        SysAgencyLeader sysAgencyLeader1 = sysAgencyLeaderMapper.selectById(sysAgencyLeaderDto.getId());
+        if (StringUtils.isNotEmpty(userId) && !sysAgencyLeader1.getUserId().equals(userId)) {
+            List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new QueryWrapper<SysAgencyLeader>().lambda().eq(SysAgencyLeader::getDelFlag, 1));
+            List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
+            if (userIdList.contains(sysAgencyLeaderDto.getUserId())) {
+                throw new DescribeException(sysAgencyLeaderDto.getUserName() + "已是机构负责人,不可重复配置");
+            }
+            //修改负责人时解除合伙人或者推荐人与机构负责人的关系
+            List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader1.getUserId())
+                    .eq(SysRelationPerson::getDelFlag, 1)
+                    .eq(SysRelationPerson::getType, 1));
+            if (sysRelationPeople.size() > 0) {
+                throw new DescribeException(sysAgencyLeaderDto.getUserName() + "有推荐关系,不允许修改");
+            }
+
+        }
+        SysAgencyLeader sysAgencyLeader = BeanUtil.copyProperties(sysAgencyLeaderDto, SysAgencyLeader.class);
+        String[] source = sysAgencyLeaderDto.getSource();
+        StringBuilder stringBuilder = new StringBuilder();
+        if (source != null) {
+            int size = source.length;
+            if (size == 3) {
+                stringBuilder.append(source[0]).append(",").append(source[1]).append(",").append(source[2]);
+            } else if (size == 2) {
+                stringBuilder.append(source[0]).append(",").append(source[1]);
+            } else {
+                stringBuilder.append(source[0]);
+            }
+        }
+        sysAgencyLeader.setSource(stringBuilder.toString());
+        sysAgencyLeader.setUpdateTime(new Date());
+        SysUser user = BaseController.getUser();
+        sysAgencyLeader.setUpdateBy(user.getId());
+        return sysAgencyLeaderMapper.updateById(sysAgencyLeader) > 0;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean delById(Integer id) {
+        SysAgencyLeader sysAgencyLeader1 = sysAgencyLeaderMapper.selectById(id);
+        List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new UpdateWrapper<SysRelationPerson>().lambda()
+                .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader1.getUserId())
+                .eq(SysRelationPerson::getDelFlag, 1)
+                .eq(SysRelationPerson::getType, 1));
+        if (sysRelationPeople.size() > 0) {
+            throw new DescribeException(sysAgencyLeader1.getUserName() + "有推荐人,不允许删除");
+        }
+        SysAgencyLeader sysAgencyLeader = new SysAgencyLeader();
+        sysAgencyLeader.setId(id);
+        sysAgencyLeader.setDelFlag(0);
+
+        return sysAgencyLeaderMapper.updateById(sysAgencyLeader) > 0;
+    }
+
+    @Override
+    public List<SysAgencyLeaderVo> queryInfo() {
+        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new QueryWrapper<SysAgencyLeader>().lambda().eq(SysAgencyLeader::getDelFlag, 1));
+        List<SysAgencyLeaderVo> sysAgencyLeaderVos = BeanUtil.copyToList(sysAgencyLeaders, SysAgencyLeaderVo.class);
+        if (sysAgencyLeaders.size() > 0) {
+            for (SysAgencyLeader record : sysAgencyLeaders) {
+                for (SysAgencyLeaderVo sysAgencyLeaderVo : sysAgencyLeaderVos) {
+                    if (record.getId().equals(sysAgencyLeaderVo.getId()) ) {
+                        String source = record.getSource();
+                        if (!StringUtils.isNullOrEmpty(source)) {
+                            String[] split = source.split(",");
+                            sysAgencyLeaderVo.setSource(split);
+                        }
+                    }
+                }
+            }
+        }
+        return sysAgencyLeaderVos;
+    }
+
+    @Override
+    public BasePageResult<SysAgencyLeaderVo> queryPage(SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
+        Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
+        LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysAgencyLeader::getDelFlag, 1);
+        wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyLeaderPageDto.getDeptId()), SysAgencyLeader::getDeptId, sysAgencyLeaderPageDto.getDeptId());
+        wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyLeaderPageDto.getUserId()), SysAgencyLeader::getUserId, sysAgencyLeaderPageDto.getUserId());
+        wrapper.eq(!StringUtils.isNullOrEmpty(sysAgencyLeaderPageDto.getSuggestId()), SysAgencyLeader::getSuggestId, sysAgencyLeaderPageDto.getSuggestId());
+        wrapper.orderByAsc(SysAgencyLeader::getId);
+
+        Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
+        List<SysAgencyLeader> records = insOrdersPage.getRecords();
+        List<SysAgencyLeaderVo> sysAgencyLeaderVos = BeanUtil.copyToList(records, SysAgencyLeaderVo.class);
+        if (records.size() > 0) {
+            for (SysAgencyLeader record : records) {
+                for (SysAgencyLeaderVo sysAgencyLeaderVo : sysAgencyLeaderVos) {
+                    if (record.getId().equals(sysAgencyLeaderVo.getId()) ) {
+                        String source = record.getSource();
+                        if (!StringUtils.isNullOrEmpty(source)) {
+                            String[] split = source.split(",");
+                            sysAgencyLeaderVo.setSource(split);
+                        }
+                    }
+                }
+            }
+        }
+        return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                sysAgencyLeaderVos);
+    }
+
+    @Override
+    public SysAgencyLeaderVo queryById(Integer id) {
+        SysAgencyLeader sysAgencyLeader = new SysAgencyLeader();
+        sysAgencyLeader.setId(id);
+        SysAgencyLeader sysAgencyLeader1 = sysAgencyLeaderMapper.selectById(sysAgencyLeader);
+        SysAgencyLeaderVo sysAgencyLeaderVo = BeanUtil.copyProperties(sysAgencyLeader1, SysAgencyLeaderVo.class);
+        String source = sysAgencyLeader1.getSource();
+        if (!StringUtils.isNullOrEmpty(source)) {
+            String[] split = source.split(",");
+            sysAgencyLeaderVo.setSource(split);
+        }
+        return sysAgencyLeaderVo;
+    }
+
+    @Override
+    public boolean checkUserId(String userId) {
+        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new QueryWrapper<SysAgencyLeader>().lambda().eq(SysAgencyLeader::getDelFlag, 1));
+        if (sysAgencyLeaders.size() > 0) {
+            //校验用户是否已经配置机构负责人
+            List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
+            return userIdList.contains(userId);
+
+        }
+        return false;
+    }
+
+    @Override
+    public AgencyExtractFee queryExtractFee(String userId) {
+        AgencyExtractFee agencyExtractFee = new AgencyExtractFee();
+        //判断当前登录用户是合伙人还是机构负责人
+        boolean b1 = sysPartnerService.checkPartner(userId);
+        if (b1) {
+            //总保费
+            BigDecimal bigDecimal = new BigDecimal("0.00");
+            //已提现抽成费用
+            BigDecimal historyFee = new BigDecimal("0.00");
+            //合伙人信息
+            SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                    .eq(SysPartner::getUserId, userId));
+            //填充查询人的姓名和机构
+            agencyExtractFee.setUserId(sysPartner.getUserId());
+            agencyExtractFee.setUserName(sysPartner.getUserName());
+            SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                    .eq(SysUser::getId, sysPartner.getUserId())
+                    .eq(SysUser::getStatus, 1));
+            agencyExtractFee.setDeptId(sysUser.getDeptId());
+            SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
+                    .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
+            agencyExtractFee.setDeptName(sysDept.getName());
+            //查询所有推荐的机构负责人核算总保费
+            List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getSuggestId, userId).eq(SysRelationPerson::getType, 1));
+            if (sysRelationPeople.size() > 0) {
+                List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                for (String agencyLeaderId : agencyLeaderIds) {
+
+                    SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getUserId, agencyLeaderId)
+                            .eq(SysAgencyLeader::getDelFlag, 1));
+                    if (sysAgencyLeaders != null) {
+                        agencyExtractFee.setProportional(sysPartner.getProportional());
+                        List<InsOrders> insOrderList;
+                        //筛选订单,选择时间
+                        Date updateTime = sysAgencyLeaders.getUpdateTime();
+                        if (updateTime == null) {
+                            //机构下所有订单
+                            insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                    .likeRight(StringUtils.isNotEmpty(sysAgencyLeaders.getDeptId()), InsOrders::getDeptid, sysAgencyLeaders.getDeptId())
+                                    .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime()));
+                            agencyExtractFee.setStartTime(sysAgencyLeaders.getCreateTime());
+                        } else {
+                            insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                    .likeRight(StringUtils.isNotEmpty(sysAgencyLeaders.getDeptId()), InsOrders::getDeptid, sysAgencyLeaders.getDeptId())
+                                    .ge(InsOrders::getCreatetime, updateTime));
+                            agencyExtractFee.setStartTime(updateTime);
+                        }
+                        if (insOrderList.size() > 0) {
+                            for (InsOrders insOrders : insOrderList) {
+                                //查询订单下的所有子订单
+                                List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
+                                        .eq(InsAreaCompany::getOrderstatus, 3));
+                                if (insAreaCompanies.size() > 0) {
+                                    for (InsAreaCompany insAreaCompany : insAreaCompanies) {
+                                        //累加每一个子订单的交强险费用+商业险费用+驾意险费用
+                                        bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
+
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                agencyExtractFee.setSumpremium(bigDecimal);
+                BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional()));
+                agencyExtractFee.setExtractFee(multiply);
+                // 填充 已提现抽成费用和可提现抽成费用
+                List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
+                        .eq(SysAgencyFeeApproval::getUserId, userId)
+                        .eq(SysAgencyFeeApproval::getStatus, 1));
+                if (sysAgencyFeeApprovals.size() > 0) {
+                    for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
+                        historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
+                    }
+                }
+                if (!bigDecimal.equals(new BigDecimal("0.00"))) {
+                    //已提现
+                    agencyExtractFee.setHistoryFee(historyFee);
+                    //可提现 = 总抽成-已提现
+                    agencyExtractFee.setCashFee(multiply.subtract(historyFee));
+                }else {
+                    agencyExtractFee.setHistoryFee(new BigDecimal("0.00"));
+                    agencyExtractFee.setCashFee(multiply.subtract(new BigDecimal("0.00")));
+                }
+
+            }
+            return agencyExtractFee;
+        }
+        //校验是否为机构负责人
+        boolean b = this.checkUserId(userId);
+        if (b) {
+            SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getUserId, userId).eq(SysAgencyLeader::getDelFlag, 1));
+            if (sysAgencyLeaders != null) {
+                //填充查询人的姓名和机构
+                agencyExtractFee.setUserId(sysAgencyLeaders.getUserId());
+                agencyExtractFee.setUserName(sysAgencyLeaders.getUserName());
+                SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                        .eq(SysUser::getId, sysAgencyLeaders.getUserId())
+                        .eq(SysUser::getStatus, 1));
+                agencyExtractFee.setDeptId(sysUser.getDeptId());
+                SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
+                        .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
+                agencyExtractFee.setDeptName(sysDept.getName());
+                //总保费
+                BigDecimal bigDecimal = new BigDecimal("0.00");
+                //已提现抽成费用
+                BigDecimal historyFee = new BigDecimal("0.00");
+
+                agencyExtractFee.setProportional(sysAgencyLeaders.getProportional());
+                List<InsOrders> insOrderList;
+                //筛选订单,选择时间
+                Date updateTime = sysAgencyLeaders.getUpdateTime();
+                if (updateTime == null) {
+                    //机构下所有订单
+                    insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                            .likeRight(StringUtils.isNotEmpty(sysAgencyLeaders.getDeptId()), InsOrders::getDeptid, sysAgencyLeaders.getDeptId())
+                            .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime()));
+                    agencyExtractFee.setStartTime(sysAgencyLeaders.getCreateTime());
+                } else {
+                    insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                            .likeRight(StringUtils.isNotEmpty(sysAgencyLeaders.getDeptId()), InsOrders::getDeptid, sysAgencyLeaders.getDeptId())
+                            .ge(InsOrders::getCreatetime, updateTime));
+                    agencyExtractFee.setStartTime(updateTime);
+                }
+                if (insOrderList.size() > 0) {
+                    for (InsOrders insOrders : insOrderList) {
+                        //查询订单下的所有子订单
+                        List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
+                                .eq(InsAreaCompany::getOrderstatus, 3));
+                        if (insAreaCompanies.size() > 0) {
+                            for (InsAreaCompany insAreaCompany : insAreaCompanies) {
+                                //累加每一个子订单的交强险费用+商业险费用+驾意险费用
+                                bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
+
+                            }
+                        }
+                    }
+                }
+                agencyExtractFee.setSumpremium(bigDecimal);
+                BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional()));
+                agencyExtractFee.setExtractFee(multiply);
+                // 填充 已提现抽成费用和可提现抽成费用
+                List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
+                        .eq(SysAgencyFeeApproval::getUserId, userId)
+                        .eq(SysAgencyFeeApproval::getStatus, 1));
+                if (sysAgencyFeeApprovals.size() > 0) {
+                    for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
+                        historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
+                    }
+                }
+                if (!bigDecimal.equals(new BigDecimal("0.00"))) {
+                    //已提现
+                    agencyExtractFee.setHistoryFee(historyFee);
+                    //可提现 = 总抽成-已提现
+                    agencyExtractFee.setCashFee(multiply.subtract(historyFee));
+                }else {
+                    agencyExtractFee.setHistoryFee(new BigDecimal("0.00"));
+                    agencyExtractFee.setCashFee(multiply.subtract(new BigDecimal("0.00")));
+                }
+
+            }
+            return agencyExtractFee;
+        }
+
+
+        return agencyExtractFee;
+    }
+
+    @Override
+    public BasePageResult<AgencyExtractFeeVo> queryExtractFeeAll(SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
+        List<AgencyExtractFeeVo> agencyExtractFeeList = new ArrayList<>();
+
+        Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
+        LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysAgencyLeader::getDelFlag, 1);
+
+        Page<SysAgencyLeader> insOrdersPage = page(page, wrapper);
+        List<SysAgencyLeader> records = insOrdersPage.getRecords();
+        if (records.size() > 0) {
+            for (SysAgencyLeader sysAgencyLeaders : records) {
+                AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
+                //总保费
+                BigDecimal bigDecimal = new BigDecimal("0.00");
+                //已提现抽成费用
+                BigDecimal historyFee = new BigDecimal("0.00");
+
+                agencyExtractFee.setUserId(sysAgencyLeaders.getUserId());
+                agencyExtractFee.setUserName(sysAgencyLeaders.getUserName());
+                agencyExtractFee.setDeptId(sysAgencyLeaders.getDeptId());
+                agencyExtractFee.setDeptName(sysAgencyLeaders.getDeptName());
+                agencyExtractFee.setProportional(sysAgencyLeaders.getProportional());
+                List<InsOrders> insOrderList;
+                //筛选订单,选择时间
+                Date updateTime = sysAgencyLeaders.getUpdateTime();
+                if (updateTime == null) {
+                    //机构下所有订单
+                    insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                            .likeRight(StringUtils.isNotEmpty(sysAgencyLeaders.getDeptId()), InsOrders::getDeptid, sysAgencyLeaders.getDeptId())
+                            .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime()));
+                    agencyExtractFee.setStartTime(sysAgencyLeaders.getCreateTime());
+                } else {
+                    insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                            .likeRight(StringUtils.isNotEmpty(sysAgencyLeaders.getDeptId()), InsOrders::getDeptid, sysAgencyLeaders.getDeptId())
+                            .ge(InsOrders::getCreatetime, updateTime));
+                    agencyExtractFee.setStartTime(updateTime);
+                }
+                if (insOrderList.size() > 0) {
+                    for (InsOrders insOrders : insOrderList) {
+                        //查询订单下的所有子订单
+                        List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
+                                .eq(InsAreaCompany::getOrderstatus, 3));
+                        if (insAreaCompanies.size() > 0) {
+                            for (InsAreaCompany insAreaCompany : insAreaCompanies) {
+                                //累加每一个子订单的交强险费用+商业险费用+驾意险费用
+                                bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
+
+                            }
+                        }
+                    }
+                }
+                agencyExtractFee.setSumpremium(bigDecimal);
+                BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional()));
+                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());
+                    }
+                }
+
+                if (!bigDecimal.equals(new BigDecimal("0.00"))) {
+                    //已提现
+                    agencyExtractFee.setHistoryFee(historyFee);
+                    //可提现 = 总抽成-已提现
+                    agencyExtractFee.setCashFee(multiply.subtract(historyFee));
+                }else {
+                    agencyExtractFee.setHistoryFee(new BigDecimal("0.00"));
+                    agencyExtractFee.setCashFee(multiply.subtract(new BigDecimal("0.00")));
+                }
+                agencyExtractFeeList.add(agencyExtractFee);
+
+            }
+
+        }
+
+        return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                agencyExtractFeeList);
+    }
+
+    @Override
+    public List<TeamInformation> queryTeamInfo(String userId) {
+        List<TeamInformation> informationList = new ArrayList<>();
+        //合伙人
+        boolean c = sysPartnerService.checkPartner(userId);
+        if (c) {
+            extracted(userId, informationList);
+            return informationList;
+        }
+        //校验当前用户是否为机构负责人
+        boolean b = this.checkUserId(userId);
+        if (b) {
+            //机构负责人查询机构下的团队
+            SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getUserId, userId)
+                    .eq(SysAgencyLeader::getDelFlag, 1));
+            String[] split = sysAgencyLeaders.getSource().split(",");
+            //根据当前机构id查询出下面的团队,条件:机构来源相同,机构等级为null的团队
+            List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>().likeRight(SysDept::getId, sysAgencyLeaders.getDeptId())
+                    .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0).in(SysDept::getManagementSource, split));
+            if (sysDeptList.size() > 0) {
+                //总保费
+                BigDecimal bigDecimal = new BigDecimal("0.00");
+                for (SysDept sysDept : sysDeptList) {
+                    TeamInformation teamInformation = new TeamInformation();
+                    teamInformation.setDeptId(sysDept.getId());
+                    teamInformation.setDeptName(sysDept.getName());
+                    List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>().likeRight(SysUser::getId, sysDept.getId()).eq(SysUser::getStatus, 1));
+                    teamInformation.setDeptManNum(sysUsers.size());
+                    List<InsOrders> insOrderList;
+                    //筛选订单,选择时间
+                    Date updateTime = sysAgencyLeaders.getUpdateTime();
+                    if (updateTime == null) {
+                        //机构下所有订单
+                        insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                .likeRight(InsOrders::getDeptid, sysDept.getId())
+                                .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime()));
+                        teamInformation.setStartTime(sysAgencyLeaders.getCreateTime());
+
+                    } else {
+                        insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                .likeRight(InsOrders::getDeptid, sysDept.getId())
+                                .ge(InsOrders::getCreatetime, updateTime));
+                        teamInformation.setStartTime(updateTime);
+                    }
+
+                    if (insOrderList.size() > 0) {
+                        for (InsOrders insOrders : insOrderList) {
+                            //查询订单下的所有子订单
+                            List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
+                                    .eq(InsAreaCompany::getOrderstatus, 3));
+                            if (insAreaCompanies.size() > 0) {
+                                for (InsAreaCompany insAreaCompany : insAreaCompanies) {
+                                    //累加每一个子订单的交强险费用+商业险费用+驾意险费用
+                                    bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
+
+                                }
+                            }
+                        }
+                    }
+                    teamInformation.setSumpremium(bigDecimal);
+                    int num = 0;
+                    // 查团队有几人出单 :订单表中userid相等同时在 子订单表中状态为3已承保才为出单
+                    List<String> userIdList = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
+                    for (String s : userIdList) {
+                        List<InsOrders> collect = insOrderList.stream().filter(InsOrders -> InsOrders.getUserid().equals(s)).collect(Collectors.toList());
+                        if (collect.size() > 0) {
+                            InsOrders insOrders = collect.get(0);
+                            List<InsAreaCompany> insAreaCompanies1 = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
+                                    .eq(InsAreaCompany::getOrderstatus, 3));
+                            if (insAreaCompanies1.size() > 0) {
+                                num++;
+                            }
+
+                        }
+                    }
+                    teamInformation.setOrderManNum(num);
+                    informationList.add(teamInformation);
+                }
+
+            }
+            return informationList;
+        }
+
+
+        return informationList;
+    }
+
+    private void extracted(String userId, List<TeamInformation> informationList) {
+        //查询所有推荐的机构负责人核算总保费
+        List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .eq(SysRelationPerson::getSuggestId, userId).eq(SysRelationPerson::getType, 1));
+        if (sysRelationPeople.size() > 0) {
+            //总保费
+            BigDecimal bigDecimal = new BigDecimal("0.00");
+            //获取所有推荐的机构负责人id
+            List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+            for (String agencyLeaderId : agencyLeaderIds) {
+                //获取机构负责人信息
+                SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
+                        .eq(SysAgencyLeader::getUserId, agencyLeaderId)
+                        .eq(SysAgencyLeader::getDelFlag, 1));
+                String[] split = sysAgencyLeaders.getSource().split(",");
+                //根据当前机构id查询出下面的团队,条件:机构来源相同,机构等级为null的团队
+                List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                                          .likeRight(SysDept::getId, sysAgencyLeaders.getDeptId())
+                                          .isNull(SysDept::getComlevel)
+                                          .eq(SysDept::getDelFlag, 0)
+                                          .in(SysDept::getManagementSource, split));
+                if (sysDeptList.size() > 0) {
+                    for (SysDept sysDept : sysDeptList) {
+                        TeamInformation teamInformation = new TeamInformation();
+                        teamInformation.setDeptId(sysDept.getId());
+                        teamInformation.setDeptName(sysDept.getName());
+                        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                .likeRight(SysUser::getId, sysDept.getId())
+                                .eq(SysUser::getStatus, 1));
+                        teamInformation.setDeptManNum(sysUsers.size());
+                        List<InsOrders> insOrderList;
+                        //筛选订单,选择时间
+                        Date updateTime = sysAgencyLeaders.getUpdateTime();
+                        if (updateTime == null) {
+                            //机构下所有订单
+                            insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                    .likeRight(InsOrders::getDeptid, sysDept.getId())
+                                    .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime()));
+                            teamInformation.setStartTime(sysAgencyLeaders.getCreateTime());
+                        } else {
+                            insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                    .likeRight(InsOrders::getDeptid, sysDept.getId())
+                                    .ge(InsOrders::getCreatetime, updateTime));
+                            teamInformation.setStartTime(updateTime);
+                        }
+
+                        if (insOrderList.size() > 0) {
+                            for (InsOrders insOrders : insOrderList) {
+                                //查询订单下的所有子订单
+                                List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
+                                        .eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
+                                        .eq(InsAreaCompany::getOrderstatus, 3));
+                                if (insAreaCompanies.size() > 0) {
+                                    for (InsAreaCompany insAreaCompany : insAreaCompanies) {
+                                        //累加每一个子订单的交强险费用+商业险费用+驾意险费用
+                                        bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
+
+                                    }
+                                }
+                            }
+                        }
+                        teamInformation.setSumpremium(bigDecimal);
+                        int num = 0;
+                        // 查团队有几人出单 :子订单中userid相等同时在 子订单表中状态为3已承保才为出单
+                        List<String> userIdList = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
+                        for (String s : userIdList) {
+                            List<InsOrders> collect = insOrderList.stream().filter(InsOrders -> InsOrders.getUserid().equals(s)).collect(Collectors.toList());
+                            if (collect.size() > 0) {
+                                InsOrders insOrders = collect.get(0);
+                                List<InsAreaCompany> insAreaCompanies1 = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
+                                        .eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
+                                        .eq(InsAreaCompany::getOrderstatus, 3));
+                                if (insAreaCompanies1.size() > 0) {
+                                    num++;
+                                }
+
+                            }
+                        }
+                        teamInformation.setOrderManNum(num);
+                        informationList.add(teamInformation);
+                    }
+                }
+            }
+        }
+    }
+
+
+    @Override
+    public List<TeamUserInfoVo> queryTeamUser(TeamUserInfoDto teamUserInfoDto) {
+        List<TeamUserInfoVo> teamUserInfoVoList = new ArrayList<>();
+        //团队下的人员 报价笔数 核保笔数 出单笔数 签单保费
+        List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                .likeRight(SysUser::getId, teamUserInfoDto.getDeptId())
+                .eq(SysUser::getStatus, 1));
+        //总保费
+        for (SysUser sysUser : sysUsers) {
+            List<InsOrders> insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                    .ge(InsOrders::getCreatetime, teamUserInfoDto.getStartTime())
+                    .eq(InsOrders::getUserid, sysUser.getId()));
+            //总保费
+            BigDecimal bigDecimal = new BigDecimal("0.00");
+            TeamUserInfoVo teamUserInfoVo = new TeamUserInfoVo();
+            teamUserInfoVo.setUserId(sysUser.getId());
+            teamUserInfoVo.setUserName(sysUser.getName());
+            if (insOrderList.size() > 0) {
+                List<String> orderNoList = insOrderList.stream().map(InsOrders::getOrderno).collect(Collectors.toList());
+                //单个人员查询订单下的所有子订单总保费  '订单状态(0 报价 1 待核保 2 已核保待缴费 3 核保退回 4 核保不通过)',
+                List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
+                        .in(InsAreaCompany::getOrderno, orderNoList)
+                        .eq(InsAreaCompany::getOrderstatus, 3));
+                if (insAreaCompanies.size() > 0) {
+                    //
+                    for (InsAreaCompany insAreaCompany : insAreaCompanies) {
+                        //累加每一个子订单的交强险费用+商业险费用+驾意险费用
+                        bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
+
+                    }
+                }
+                //出单笔数
+                teamUserInfoVo.setIssueNum(insAreaCompanies.size());
+                teamUserInfoVo.setSumpremium(bigDecimal);
+                //报价笔数
+                Long quoteNum = insAreaCompanyMapper.selectCount(new LambdaQueryWrapper<InsAreaCompany>()
+                        .in(InsAreaCompany::getOrderno, orderNoList));
+                teamUserInfoVo.setQuoteNum(quoteNum);
+                //核保笔数  订单状态(0 报价中 1 待核保 2 已核保待缴费 3已承保 4 核保退回)
+                List<Integer> integers = Arrays.asList(2, 3, 4);
+                Long underwriteNum = insAreaCompanyMapper.selectCount(new LambdaQueryWrapper<InsAreaCompany>()
+                        .in(InsAreaCompany::getOrderno, orderNoList)
+                        .in(InsAreaCompany::getOrderstatus, integers));
+                teamUserInfoVo.setUnderwriteNum(underwriteNum);
+                teamUserInfoVoList.add(teamUserInfoVo);
+            } else {
+                teamUserInfoVo.setIssueNum(0);
+                teamUserInfoVo.setSumpremium(bigDecimal);
+                teamUserInfoVo.setQuoteNum(Long.valueOf("0"));
+                teamUserInfoVo.setUnderwriteNum(Long.valueOf("0"));
+                teamUserInfoVoList.add(teamUserInfoVo);
+            }
+        }
+
+        return teamUserInfoVoList;
+    }
+
+
+}

+ 284 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java

@@ -0,0 +1,284 @@
+package com.ydtech.modules.admin.service.impl;
+
+
+import cn.hutool.core.bean.BeanUtil;
+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.aop.exception.DescribeException;
+import com.ydtech.modules.admin.dao.*;
+import com.ydtech.modules.admin.model.*;
+import com.ydtech.modules.admin.model.dto.SysPartnerDto;
+import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
+import com.ydtech.modules.admin.model.vo.AgencyExtractFeeVo;
+import com.ydtech.modules.admin.service.SysPartnerService;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
+import com.ydtech.modules.order.dao.InsOrdersMapper;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.utils.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 配置机构合伙人表(SysPartner)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-08-01 11:20:57
+ */
+@Service("sysPartnerService")
+public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPartner> implements SysPartnerService {
+    @Resource
+    private SysPartnerMapper sysPartnerMapper;
+    @Resource
+    private SysRelationPersonMapper sysRelationPersonMapper;
+
+    @Resource
+    private SysAgencyLeaderMapper sysAgencyLeaderMapper;
+
+    @Resource
+    private SysDeptMapper sysDeptMapper;
+
+    @Resource
+    private SysUserMapper sysUserMapper;
+
+    @Resource
+    private InsOrdersMapper insOrdersMapper;
+
+    @Resource
+    private InsAreaCompanyMapper insAreaCompanyMapper;
+
+    @Resource
+    private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper;
+
+
+    @Override
+    public SysPartner queryById(String id) {
+        return sysPartnerMapper.selectById(id);
+    }
+
+    @Override
+    public BasePageResult<SysPartner> queryByPage(SysPartnerPageDto sysPartnerPageDto) {
+        Page<SysPartner> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
+
+        LambdaQueryWrapper<SysPartner> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysPartner::getDelFlag, 1);
+        wrapper.ge(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getStartTime()), SysPartner::getCreateTime, sysPartnerPageDto.getStartTime());
+        wrapper.le(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getEndTime()), SysPartner::getCreateTime, sysPartnerPageDto.getEndTime());
+        wrapper.eq(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId());
+        wrapper.eq(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getSuggestId()), SysPartner::getSuggestId, sysPartnerPageDto.getSuggestId());
+        wrapper.orderByAsc(SysPartner::getId);
+
+        Page<SysPartner> insOrdersPage = page(page, wrapper);
+
+        return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                insOrdersPage.getRecords());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean insert(SysPartnerDto sysPartnerDto) {
+        List<SysPartner> sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
+        if (sysPartners.size() > 0) {
+            List<String> userIdList = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+            if (userIdList.contains(sysPartnerDto.getUserId())) {
+                throw new DescribeException(sysPartnerDto.getUserName() + "已是合伙人,不可重复设置");
+            }
+
+        }
+        //机构负责人不能配置为合伙人
+        List<SysAgencyLeader> sysAgencyLeaders = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getDelFlag, 1));
+        if (sysAgencyLeaders.size() > 0) {
+            //校验用户是否已经机构负责人
+            List<String> userIdList = sysAgencyLeaders.stream().map(SysAgencyLeader::getUserId).collect(Collectors.toList());
+            if (userIdList.contains(sysPartnerDto.getUserId())) {
+                throw new DescribeException(sysPartnerDto.getUserName() + "已是机构负责人,不可配置为合伙人");
+            }
+
+        }
+        SysPartner sysPartner = BeanUtil.copyProperties(sysPartnerDto, SysPartner.class);
+        sysPartner.setCreateTime(new Date());
+        sysPartner.setCreateBy(BaseController.getUser().getId());
+        boolean b = sysPartnerMapper.insert(sysPartner)>0;
+        if (sysPartnerDto.getSuggestId()!=null) {
+            SysRelationPerson sysRelationPerson = new SysRelationPerson();
+            sysRelationPerson.setAgencyLeaderId(sysPartnerDto.getUserId());
+            sysRelationPerson.setSuggestId(sysPartnerDto.getSuggestId());
+            //'推荐等级(0:直接推荐;1:间接推荐)
+            sysRelationPerson.setSource(0);
+            //推荐类型(0:合伙人  1:机构负责人)
+            sysRelationPerson.setType(0);
+            sysRelationPerson.setCreateBy(BaseController.getUser().getId());
+            sysRelationPerson.setCreateTime(new Date());
+            b = sysRelationPersonMapper.insert(sysRelationPerson) > 0;
+            //查询合伙人的推荐人是否有上级
+            List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                    .eq(SysRelationPerson::getAgencyLeaderId, sysPartnerDto.getSuggestId())
+                    .eq(SysRelationPerson::getType, 0));
+            if (sysRelationPeople.size()>0) {
+                for (SysRelationPerson relationPerson : sysRelationPeople) {
+                    SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
+                    sysRelationPerson1.setAgencyLeaderId(sysPartnerDto.getUserId());
+                    sysRelationPerson1.setSuggestId(relationPerson.getSuggestId());
+                    sysRelationPerson1.setSource(1);
+                    //推荐类型(0:合伙人  1:机构负责人)
+                    sysRelationPerson1.setType(0);
+                    sysRelationPerson1.setCreateBy(BaseController.getUser().getId());
+                    sysRelationPerson1.setCreateTime(new Date());
+                    sysRelationPersonMapper.insert(sysRelationPerson1);
+                }
+            }
+        }
+
+        return b;
+    }
+
+    @Override
+    public boolean checkPartner(String userId) {
+        List<SysPartner> sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
+        if (sysPartners.size() > 0) {
+            List<String> userIdList = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
+            return userIdList.contains(userId);
+        }
+        return false;
+    }
+
+    @Override
+    public List<SysPartner> queryInfo() {
+        return sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
+    }
+
+    @Override
+    public boolean deleteById(Integer id) {
+        SysPartner partner = new SysPartner();
+        partner.setId(id);
+        partner.setDelFlag(0);
+        return sysPartnerMapper.updateById(partner) > 0;
+    }
+
+    @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.ge(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getStartTime()), SysPartner::getCreateTime, sysPartnerPageDto.getStartTime());
+        wrapper.le(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getEndTime()), SysPartner::getCreateTime, sysPartnerPageDto.getEndTime());
+        wrapper.eq(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId());
+        wrapper.eq(!StringUtils.isNullOrEmpty(sysPartnerPageDto.getSuggestId()), SysPartner::getSuggestId, sysPartnerPageDto.getSuggestId());
+        wrapper.orderByAsc(SysPartner::getId);
+
+        Page<SysPartner> insOrdersPage = page(page, wrapper);
+        List<SysPartner> sysPartnerList = insOrdersPage.getRecords();
+        if (sysPartnerList.size()>0) {
+            for (SysPartner sysPartner : sysPartnerList) {
+                AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
+                //总保费
+                BigDecimal bigDecimal = new BigDecimal("0.00");
+                //已提现抽成费用
+                BigDecimal historyFee = new BigDecimal("0.00");
+                //填充查询人的姓名和机构
+                agencyExtractFee.setUserId(sysPartner.getUserId());
+                agencyExtractFee.setUserName(sysPartner.getUserName());
+                SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+                        .eq(SysUser::getId, sysPartner.getUserId())
+                        .eq(SysUser::getStatus, 1));
+                agencyExtractFee.setDeptId(sysUser.getDeptId());
+                SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
+                        .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
+                agencyExtractFee.setDeptName(sysDept.getName());
+                //查询所有推荐的机构负责人核算总保费
+                List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                        .eq(SysRelationPerson::getSuggestId, sysPartner.getUserId()).eq(SysRelationPerson::getType,1));
+                if (sysRelationPeople.size() > 0) {
+                    List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+                    for (String agencyLeaderId : agencyLeaderIds) {
+
+                        SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
+                                .eq(SysAgencyLeader::getUserId, agencyLeaderId)
+                                .eq(SysAgencyLeader::getDelFlag, 1));
+                        if (sysAgencyLeaders != null) {
+                            agencyExtractFee.setProportional(sysPartner.getProportional());
+                            List<InsOrders> insOrderList;
+                            //筛选订单,选择时间
+                            Date updateTime = sysAgencyLeaders.getUpdateTime();
+                            if (updateTime == null) {
+                                //机构下所有订单
+                                insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                        .likeRight(StringUtils.isNotEmpty(sysAgencyLeaders.getDeptId()), InsOrders::getDeptid, sysAgencyLeaders.getDeptId())
+                                        .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime()));
+                                agencyExtractFee.setStartTime(sysAgencyLeaders.getCreateTime());
+                            } else {
+                                insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
+                                        .likeRight(StringUtils.isNotEmpty(sysAgencyLeaders.getDeptId()), InsOrders::getDeptid, sysAgencyLeaders.getDeptId())
+                                        .ge(InsOrders::getCreatetime, updateTime));
+                                agencyExtractFee.setStartTime(updateTime);
+                            }
+                            if (insOrderList.size() > 0) {
+                                for (InsOrders insOrders : insOrderList) {
+                                    //查询订单下的所有子订单
+                                    List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
+                                            .eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
+                                            .eq(InsAreaCompany::getOrderstatus, 3));
+                                    if (insAreaCompanies.size() > 0) {
+                                        for (InsAreaCompany insAreaCompany : insAreaCompanies) {
+                                            //累加每一个子订单的交强险费用+商业险费用+驾意险费用
+                                            bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
+
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    agencyExtractFee.setSumpremium(bigDecimal);
+                    BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional()));
+                    agencyExtractFee.setExtractFee(multiply);
+                    // 填充 已提现抽成费用和可提现抽成费用
+                    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());
+                        }
+                    }
+
+                    if (!bigDecimal.equals(new BigDecimal("0.00"))) {
+                        //已提现
+                        agencyExtractFee.setHistoryFee(historyFee);
+                        //可提现 = 总抽成-已提现
+                        agencyExtractFee.setCashFee(multiply.subtract(historyFee));
+                    }else {
+                        agencyExtractFee.setHistoryFee(new BigDecimal("0.00"));
+                        agencyExtractFee.setCashFee(multiply.subtract(new BigDecimal("0.00")));
+                    }
+
+                    agencyExtractFeeList.add(agencyExtractFee);
+                }
+
+            }
+        }
+
+        return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                agencyExtractFeeList);
+
+    }
+
+
+
+
+
+
+
+}

+ 26 - 0
src/main/resources/mapper/modules/admin/SysAgencyFeeApprovalMapper.xml

@@ -0,0 +1,26 @@
+<?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.SysAgencyFeeApprovalMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysAgencyFeeApproval" id="SysAgencyFeeApprovalMap">
+        <result property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
+        <result property="deptId" column="dept_id" jdbcType="VARCHAR"/>
+        <result property="deptName" column="dept_name" jdbcType="VARCHAR"/>
+        <result property="sumpremium" column="sumpremium" jdbcType="VARCHAR"/>
+        <result property="proportional" column="proportional" jdbcType="VARCHAR"/>
+        <result property="extractFee" column="extract_fee" jdbcType="NUMERIC"/>
+        <result property="historyFee" column="history_fee" jdbcType="NUMERIC"/>
+        <result property="cashFee" column="cash_fee" jdbcType="NUMERIC"/>
+        <result property="auditUser" column="audit_user" jdbcType="VARCHAR"/>
+        <result property="status" column="status" jdbcType="VARCHAR"/>
+        <result property="auditTime" column="audit_time" jdbcType="TIMESTAMP"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+        <result property="remark" column="remark" jdbcType="VARCHAR"/>
+        <result property="picture" column="picture" jdbcType="VARCHAR"/>
+    </resultMap>
+
+</mapper>
+

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

@@ -0,0 +1,27 @@
+<?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.SysAgencyLeaderMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysAgencyLeader" id="SysAgencyLeaderMap">
+        <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="deptId" column="dept_id" jdbcType="VARCHAR"/>
+        <result property="deptName" column="dept_name" jdbcType="VARCHAR"/>
+        <result property="comlevel" column="comlevel" jdbcType="VARCHAR"/>
+        <result property="source" column="source" jdbcType="VARCHAR"/>
+        <result property="proportional" column="proportional" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+        <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
+        <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        id,user_id,user_name,
+        dept_id,dept_name,comlevel,
+        source,proportional,create_time,create_by,update_time,update_by,del_flag
+    </sql>
+
+</mapper>
+

+ 17 - 0
src/main/resources/mapper/modules/admin/SysPartnerMapper.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.SysPartnerMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysPartner" id="SysPartnerMap">
+        <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="proportional" column="proportional" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+        <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+    </resultMap>
+
+
+</mapper>
+

+ 17 - 0
src/main/resources/mapper/modules/admin/SysRelationPersonMapper.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.SysRelationPersonMapper">
+
+    <resultMap type="com.ydtech.modules.admin.model.SysRelationPerson" id="SysRelationPersonMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="agencyLeaderId" column="agency_leader_id" jdbcType="VARCHAR"/>
+        <result property="suggestId" column="suggest_id" jdbcType="VARCHAR"/>
+        <result property="source" column="source" jdbcType="INTEGER"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+        <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+    </resultMap>
+
+
+</mapper>
+