package com.ydtech.modules.admin.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.exception.SystemException; import com.ydtech.modules.admin.dao.*; import com.ydtech.modules.admin.model.*; import com.ydtech.modules.admin.model.dto.*; import com.ydtech.modules.admin.model.po.SysUserAccountHistory; import com.ydtech.modules.admin.model.vo.*; import com.ydtech.modules.admin.service.SysAgencyLeaderService; import com.ydtech.modules.admin.service.SysPartnerService; import com.ydtech.modules.admin.service.SysPremiumDetailsService; import com.ydtech.modules.admin.service.SysUserService; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.order.entity.BasePageResult; 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.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.ZoneId; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; /** * 配置机构合伙人表(SysPartner)表服务实现类 * * @author makejava * @since 2024-08-01 11:20:57 */ @Service("sysPartnerService") public class SysPartnerServiceImpl extends ServiceImpl implements SysPartnerService { @Resource private SysPartnerMapper sysPartnerMapper; @Resource private SysRelationPersonMapper sysRelationPersonMapper; @Resource private SysAgencyLeaderMapper sysAgencyLeaderMapper; @Resource private SysDeptMapper sysDeptMapper; @Resource private SysUserService sysUserService; @Resource private SysUserMapper sysUserMapper; @Resource private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper; @Resource private SysAgencyLeaderService sysAgencyLeaderService; @Resource private SysPartnerTimeMapper sysPartnerTimeMapper; @Resource private SysPartnerAccountMapper sysPartnerAccountMapper; @Resource private SysPremiumDetailsMapper sysPremiumDetailsMapper; @Resource private SysPremiumDetailsService sysPremiumDetailsService; @Resource private SysUserAccountHistoryMapper sysUserAccountHistoryMapper; @Resource private SysPartnerConfigMapper sysPartnerConfigMapper; @Resource private SysProportionConfigMapper sysProportionConfigMapper; @Override public List queryRecommendAndPartner(String id) { List sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper().eq(SysPartner::getDelFlag, 1) .likeRight(SysPartner::getUserId, id).orderByDesc(SysPartner::getId)); if (sysPartnerList.size() > 0) { for (SysPartner sysPartner : sysPartnerList) { SysUser sysUser = sysUserMapper.selectById(sysPartner.getUserId()); sysPartner.setUserName(sysUser.getName()); } } return sysPartnerList; } @Override public BasePageResult queryByPage(SysPartnerPageDto sysPartnerPageDto) { Page page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId()); wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysPartner::getUserName, sysPartnerPageDto.getUserName()); wrapper.likeRight(StringUtils.isNotEmpty(sysPartnerPageDto.getDeptId()), SysPartner::getUserId, sysPartnerPageDto.getDeptId()); wrapper.eq(sysPartnerPageDto.getLevel() != null, SysPartner::getType, sysPartnerPageDto.getLevel()); wrapper.orderByDesc(SysPartner::getId); Page insOrdersPage = page(page, wrapper); List records = insOrdersPage.getRecords(); List sysUserPartners = BeanUtil.copyToList(records, SysUserPartner.class); if (sysUserPartners.size() > 0) { for (SysUserPartner user : sysUserPartners) { SysUser sysUser1 = sysUserMapper.selectById(user.getUserId()); user.setUserName(sysUser1.getName()); user.setDeptId(sysUser1.getDeptId()); SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper() .eq(SysDept::getId, sysUser1.getDeptId()).eq(SysDept::getDelFlag, 0)); user.setParentId(sysDept.getParentId()); user.setDeptName(sysDept.getName()); SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartner::getUserId, user.getUserId())); if (sysPartner != null) { user.setType(sysPartner.getType()); String suggestId = sysPartner.getSuggestId(); if (suggestId != null) { user.setSuggestId(sysPartner.getSuggestId()); SysUser sysUser = sysUserMapper.selectById(sysPartner.getSuggestId()); if (sysUser != null) { user.setSuggestName(sysUser.getName()); } } //查看等级 int type = sysPartner.getType(); if (type == 1) { SysProportionConfig sysProportionConfig = sysProportionConfigMapper.selectOne(new LambdaQueryWrapper() .eq(SysProportionConfig::getUserId, sysPartner.getUserId())); if (sysProportionConfig == null) continue; user.setProportional(sysProportionConfig.getOneProportion()); } else { SysRelationPerson sysRelationPeople = sysRelationPersonMapper.selectOne(new LambdaQueryWrapper() .eq(SysRelationPerson::getAgencyLeaderId, user.getUserId()) .eq(SysRelationPerson::getType, 0) .eq(SysRelationPerson::getSuggestLevel, 1)); if (sysRelationPeople == null) continue; SysProportionConfig sysProportionConfig = sysProportionConfigMapper.selectOne(new LambdaQueryWrapper() .eq(SysProportionConfig::getUserId, sysRelationPeople.getSuggestId())); if (sysProportionConfig == null) continue; if (type == 2) { user.setProportional(sysProportionConfig.getTwoProportion()); } else if (type == 3) { user.setProportional(sysProportionConfig.getThreeProportion()); } else if (type == 4) { user.setProportional(sysProportionConfig.getFourProportion()); } else if (type == 5) { user.setProportional(sysProportionConfig.getFiveProportion()); } } } } } return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(), sysUserPartners); } @Override @Transactional(rollbackFor = Exception.class) public boolean insert(SysPartnerDto sysPartnerDto) { SysPartner sysPartner = BeanUtil.copyProperties(sysPartnerDto, SysPartner.class); sysPartner.setCreateTime(new Date()); sysPartner.setCreateBy(BaseController.getUser().getId()); sysPartner.setType(sysPartnerDto.getLevel()); boolean b = false; b = sysPartnerMapper.insert(sysPartner) > 0; if (sysPartnerDto.getSuggestId() != null) { SysPartner sysPartner1 = sysPartnerMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getSuggestId())); //保存关系 SysRelationPerson sysRelationPerson = new SysRelationPerson(); sysRelationPerson.setAgencyLeaderId(sysPartnerDto.getUserId()); sysRelationPerson.setSuggestId(sysPartnerDto.getSuggestId()); sysRelationPerson.setSuggestLevel(sysPartner1.getType()); //'推荐等级(0:直接推荐;1:间接推荐) sysRelationPerson.setSource(0); //推荐类型(0:合伙人 1:机构负责人) sysRelationPerson.setType(0); sysRelationPerson.setCreateBy(BaseController.getUser().getId()); sysRelationPerson.setCreateTime(new Date()); b = sysRelationPersonMapper.insert(sysRelationPerson) > 0; //查询合伙人的推荐人是否有上级 List sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getAgencyLeaderId, sysPartnerDto.getSuggestId()) .eq(SysRelationPerson::getType, 0)); if (sysRelationPeople.size() > 0) { for (SysRelationPerson relationPerson : sysRelationPeople) { SysRelationPerson sysRelationPerson1 = new SysRelationPerson(); SysPartner sysPartner2 = sysPartnerMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, relationPerson.getSuggestId())); sysRelationPerson1.setAgencyLeaderId(sysPartnerDto.getUserId()); sysRelationPerson1.setSuggestId(relationPerson.getSuggestId()); sysRelationPerson1.setSuggestLevel(sysPartner2.getType()); sysRelationPerson1.setSource(1); //推荐类型(0:合伙人 1:机构负责人) sysRelationPerson1.setType(0); sysRelationPerson1.setCreateBy(BaseController.getUser().getId()); sysRelationPerson1.setCreateTime(new Date()); sysRelationPersonMapper.insert(sysRelationPerson1); } } } return b; } @Override public boolean checkPartner(String userId) { List sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper().eq(SysPartner::getDelFlag, 1)); if (sysPartners.size() > 0) { List userIdList = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList()); return userIdList.contains(userId); } return false; } @Override public boolean deleteById(String id) { SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper().eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, id)); List sysRelationPeople = sysRelationPersonMapper.selectList(new UpdateWrapper().lambda() .eq(SysRelationPerson::getAgencyLeaderId, id) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 0)); if (sysRelationPeople.size() > 0) { if (sysRelationPeople.get(0).getSuggestId() != null) { throw new DescribeException(sysPartner.getUserName() + "有推荐人,不允许删除"); } } List sysRelationPeople1 = sysRelationPersonMapper.selectList(new UpdateWrapper().lambda() .eq(SysRelationPerson::getSuggestId, id) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 0)); if (sysRelationPeople1.size() > 0) { if (sysRelationPeople1.get(0).getSuggestId() != null) { throw new DescribeException(sysPartner.getUserName() + "是推荐人,不允许删除"); } } SysPartner partner = new SysPartner(); partner.setId(sysPartner.getId()); partner.setDelFlag(0); return sysPartnerMapper.updateById(partner) > 0; } @Override public BasePageResult queryPartnerByPages(SysPartnerPageDto sysPartnerPageDto) { List agencyExtractFeeList = new ArrayList<>(); Page page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysPartner::getDelFlag, 1); wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId()); wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysPartner::getUserName, sysPartnerPageDto.getUserName()); wrapper.orderByDesc(SysPartner::getId); Page insOrdersPage = page(page, wrapper); List sysPartnerList = insOrdersPage.getRecords(); if (sysPartnerList.size() > 0) { for (SysPartner sysPartner : sysPartnerList) { AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo(); //总保费 BigDecimal bigDecimal = BigDecimal.ZERO; BigDecimal extractFee = BigDecimal.ZERO; //已提现抽成费用 BigDecimal historyFee = BigDecimal.ZERO; //填充查询人的姓名和机构 agencyExtractFee.setProportional(sysPartner.getProportional()); agencyExtractFee.setUserId(sysPartner.getUserId()); //SysUser sysUser = sysUserMapper.selectById(sysPartner.getUserId()); SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper() .eq(SysUser::getId, sysPartner.getUserId()) .ne(SysUser::getStatus, 0)); if (sysUser == null) { continue; } agencyExtractFee.setUserName(sysUser.getName()); agencyExtractFee.setDeptId(sysUser.getDeptId()); SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper() .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0)); agencyExtractFee.setDeptName(sysDept.getName()); //查询所有推荐的机构负责人核算总保费 List sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, sysPartner.getUserId()).eq(SysRelationPerson::getType, 1)); if (sysRelationPeople.size() > 0) { List agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); for (String agencyLeaderId : agencyLeaderIds) { SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper() .eq(SysAgencyLeader::getUserId, agencyLeaderId) .eq(SysAgencyLeader::getDelFlag, 1)); if (sysAgencyLeaders != null) { agencyExtractFee.setProportional(sysPartner.getProportional()); //筛选订单,选择时间 Date updateTime = sysAgencyLeaders.getUpdateTime(); Date createTime = sysAgencyLeaders.getCreateTime(); String dateStr = ""; if (updateTime != null) { dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime); } else { dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime); } HashMap map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr, null, null); if (CollectionUtil.isNotEmpty(map)) { bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal")); } } } // 填充 已提现抽成费用和可提现抽成费用 List sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper() .eq(SysAgencyFeeApproval::getUserId, sysPartner.getUserId()) .eq(SysAgencyFeeApproval::getStatus, 1)); if (sysAgencyFeeApprovals.size() > 0) { for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) { historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee()); } } agencyExtractFee.setSumpremium(bigDecimal); if (!bigDecimal.equals(BigDecimal.ZERO)) { BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional()) .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN); agencyExtractFee.setExtractFee(multiply); //已提现 agencyExtractFee.setHistoryFee(historyFee); extractFee = agencyExtractFee.getExtractFee(); //可提现 = 总抽成-已提现 agencyExtractFee.setCashFee(extractFee.subtract(historyFee)); } else { agencyExtractFee.setExtractFee(BigDecimal.ZERO); agencyExtractFee.setHistoryFee(BigDecimal.ZERO); agencyExtractFee.setCashFee(extractFee); } } else { agencyExtractFee.setSumpremium(BigDecimal.ZERO); agencyExtractFee.setExtractFee(BigDecimal.ZERO); agencyExtractFee.setHistoryFee(BigDecimal.ZERO); agencyExtractFee.setCashFee(BigDecimal.ZERO); } agencyExtractFeeList.add(agencyExtractFee); } } return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(), agencyExtractFeeList); } @Override public BasePageResult queryPartnerByPage(SysPartnerPageDto sysPartnerPageDto) { List agencyExtractFeeList = new ArrayList<>(); Page page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysPartner::getDelFlag, 1); wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId()); wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysPartner::getUserName, sysPartnerPageDto.getUserName()); wrapper.orderByDesc(SysPartner::getId); Page insOrdersPage = page(page, wrapper); List sysPartnerList = insOrdersPage.getRecords(); if (sysPartnerList.size() > 0) { for (SysPartner sysPartner : sysPartnerList) { String userId = sysPartner.getUserId(); AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo(); //已提现抽成费用 BigDecimal historyFee = BigDecimal.ZERO; SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper() .eq(SysUser::getId, userId) .ne(SysUser::getStatus, 0)); //填充查询人的姓名和机构 agencyExtractFee.setUserId(userId); agencyExtractFee.setUserName(sysUser.getName()); agencyExtractFee.setDeptId(sysUser.getDeptId()); SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper() .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0)); agencyExtractFee.setDeptName(sysDept.getName()); SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartnerAccount::getUserId, userId)); if (sysPartnerAccount != null) { BigDecimal sumPremium = sysPartnerAccount.getSumPremium(); BigDecimal extractFee = sysPartnerAccount.getExtractFee(); agencyExtractFee.setSumpremium(sumPremium); agencyExtractFee.setExtractFee(extractFee); // 填充 已提现抽成费用和可提现抽成费用 List sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper() .eq(SysAgencyFeeApproval::getUserId, sysPartner.getUserId()) .eq(SysAgencyFeeApproval::getStatus, 1)); if (sysAgencyFeeApprovals.size() > 0) { for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) { historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee()); } } agencyExtractFee.setHistoryFee(Optional.ofNullable(extractFee.subtract(historyFee)).orElse(BigDecimal.ZERO)); //可提现 = 总抽成-已提现 agencyExtractFee.setCashFee(extractFee.subtract(historyFee)); } else { agencyExtractFee.setSumpremium(BigDecimal.ZERO); agencyExtractFee.setExtractFee(BigDecimal.ZERO); agencyExtractFee.setHistoryFee(BigDecimal.ZERO); agencyExtractFee.setCashFee(BigDecimal.ZERO); } agencyExtractFeeList.add(agencyExtractFee); } } return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(), agencyExtractFeeList); } @Override public BasePageResult SysPartnerAPPPage(SysPartnerAPPPageDto sysPartnerAPPPageDto) { List sysPartnerAPPPageVoList = new ArrayList<>(); String userId = BaseController.getUserId(); int source = sysPartnerAPPPageDto.getSource(); List sysRelationPersonList = null; //判断是0:直接推荐;1:间接推荐 if (source == 0) { sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getSource, 0) .eq(SysRelationPerson::getType, 0)); } else { sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getSource, 1) .eq(SysRelationPerson::getType, 0)); } List ids = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(ids)) { //分页查询合伙人信息 Page page = new Page<>(sysPartnerAPPPageDto.getPageNum(), sysPartnerAPPPageDto.getPageSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.like(StringUtils.isNotEmpty(sysPartnerAPPPageDto.getUserName()), SysPartner::getUserName, sysPartnerAPPPageDto.getUserName()); wrapper.in(SysPartner::getUserId, ids); wrapper.eq(SysPartner::getDelFlag, 1); wrapper.orderByDesc(SysPartner::getId); Page insOrdersPage = page(page, wrapper); List sysPartnerList = insOrdersPage.getRecords(); if (sysPartnerList.size() > 0) { for (SysPartner sysPartner : sysPartnerList) { //总保费 BigDecimal bigDecimal = new BigDecimal("0.00"); SysPartnerAPPPageVo sysPartnerAPPPageVo = new SysPartnerAPPPageVo(); sysPartnerAPPPageVo.setUserId(sysPartner.getUserId()); //填充机构信息 SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper() .eq(SysUser::getId, sysPartner.getUserId()) .ne(SysUser::getStatus, 0)); sysPartnerAPPPageVo.setUserName(sysUser.getName()); SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper() .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0)); sysPartnerAPPPageVo.setDeptId(sysDept.getId()); sysPartnerAPPPageVo.setDeptName(sysDept.getName()); sysPartnerAPPPageVo.setProportional(sysPartner.getProportional()); List relationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, sysPartner.getUserId()) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 1)); if (relationPersonList.size() > 0) { List agencyLeaderIds = relationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); List leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper() .eq(SysAgencyLeader::getDelFlag, 1).in(SysAgencyLeader::getUserId, agencyLeaderIds)); for (SysAgencyLeader sysAgencyLeader : leaderList) { //获取机构下的团队 List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysAgencyLeader.getDeptId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysAgencyLeader.getSource())); if (sysDeptList.size() > 0) { for (SysDept sysDept1 : sysDeptList) { //筛选订单,选择时间 Date updateTime = sysAgencyLeader.getUpdateTime(); Date createTime = sysAgencyLeader.getCreateTime(); String dateStr = ""; if (updateTime != null) { dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime); } else { dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime); } HashMap map = sysAgencyLeaderMapper.getBigDecimalNum(sysDept1.getId(), dateStr, null, null); if (CollectionUtil.isNotEmpty(map)) { bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal")); } } } } } sysPartnerAPPPageVo.setSumpremium(bigDecimal); if (!bigDecimal.equals(new BigDecimal("0.00"))) { BigDecimal multiply = bigDecimal.multiply(new BigDecimal(sysPartner.getProportional()) .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN); sysPartnerAPPPageVo.setExtractFee(multiply); } else { sysPartnerAPPPageVo.setExtractFee(new BigDecimal("0.00")); } sysPartnerAPPPageVoList.add(sysPartnerAPPPageVo); } } return new BasePageResult<>(sysPartnerAPPPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(), sysPartnerAPPPageVoList); } return new BasePageResult<>(sysPartnerAPPPageDto.getPageNum(), sysPartnerAPPPageDto.getPageSize(), 0L, 0L, sysPartnerAPPPageVoList); } @Override public boolean edit(SysPartnerDto sysPartnerDto) { SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getUserId())); if (sysPartner == null) throw new DescribeException("系统错误,请联系管理员!"); SysPartner partner = new SysPartner(); partner.setId(sysPartner.getId()); partner.setUserName(sysPartnerDto.getUserName()); return sysPartnerMapper.updateById(partner) > 0; } @Override public BasePageResult queryAgencyLeaderById(SysAgencyLeaderPageDto sysAgencyLeaderPageDto) { List agencyExtractFeeList = new ArrayList<>(); List sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, sysAgencyLeaderPageDto.getUserId()).eq(SysRelationPerson::getType, 1)); //获取所有推荐的机构负责人id List agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); Page page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(SysAgencyLeader::getUserId, agencyLeaderIds); wrapper.eq(SysAgencyLeader::getDelFlag, 1); wrapper.orderByDesc(SysAgencyLeader::getId); Page insOrdersPage = sysAgencyLeaderService.page(page, wrapper); List records = insOrdersPage.getRecords(); if (records.size() > 0) { for (SysAgencyLeader sysAgencyLeaders : records) { AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo(); String userId = sysAgencyLeaders.getUserId(); //已提现抽成费用 BigDecimal historyFee = BigDecimal.ZERO; SysUser sysUser = sysUserMapper.selectById(userId); SysDept sysDept = sysDeptMapper.selectById(sysAgencyLeaders.getDeptId()); agencyExtractFee.setUserId(userId); agencyExtractFee.setUserName(sysUser.getName()); agencyExtractFee.setDeptId(sysAgencyLeaders.getDeptId()); agencyExtractFee.setDeptName(sysDept.getName()); SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartnerAccount::getUserId, userId)); if (sysPartnerAccount != null) { BigDecimal sumPremium = sysPartnerAccount.getSumPremium(); BigDecimal extractFee = sysPartnerAccount.getExtractFee(); agencyExtractFee.setSumpremium(sumPremium); agencyExtractFee.setExtractFee(extractFee); // 填充 已提现抽成费用和可提现抽成费用 List sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper() .eq(SysAgencyFeeApproval::getUserId, sysAgencyLeaders.getUserId()) .eq(SysAgencyFeeApproval::getStatus, 1)); if (sysAgencyFeeApprovals.size() > 0) { for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) { historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee()); } } if (!extractFee.equals(BigDecimal.ZERO)) { //已提现 agencyExtractFee.setHistoryFee(historyFee); //可提现 = 总抽成-已提现 agencyExtractFee.setCashFee(extractFee.subtract(historyFee)); } else { agencyExtractFee.setHistoryFee(BigDecimal.ZERO); agencyExtractFee.setCashFee(extractFee.subtract(BigDecimal.ZERO)); } } agencyExtractFeeList.add(agencyExtractFee); } } return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(), agencyExtractFeeList); } @Override public APPPartnerInfoFreeVo getTeamInfo(PartnerGradeInfo partnerGradeInfo) { APPPartnerInfoFreeVo appPartnerInfoFreeVo = new APPPartnerInfoFreeVo(); List appPartnerInfoList = new ArrayList<>(); List deptIds = partnerGradeInfo.getDeptIds(); if (CollectionUtil.isEmpty(deptIds)) { return appPartnerInfoFreeVo; } List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .in(SysDept::getId, deptIds).eq(SysDept::getDelFlag, 0)); if (sysDeptList.size() == 0) { return appPartnerInfoFreeVo; } for (SysDept sysDept : sysDeptList) { APPPartnerInfo appPartnerInfo = new APPPartnerInfo(); appPartnerInfo.setDeptId(sysDept.getId()); appPartnerInfo.setDeptName(sysDept.getName()); String leaderId = sysDept.getLeaderId(); if (StringUtils.isNotEmpty(leaderId)) { appPartnerInfo.setLeaderId(leaderId); SysUser sysUser = sysUserMapper.selectById(leaderId); appPartnerInfo.setLeaderName(sysUser.getName()); } //获取机构下的团队 List sysDepTeam = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysDept.getId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysDept.getManagementSource())); //机构下每个团队人数id集合 List userIdList = new ArrayList<>(); int deptManNum = 0; if (sysDepTeam.size() > 0) { for (SysDept sysDept1 : sysDepTeam) { List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, sysDept1.getId()).ne(SysUser::getStatus, 0)); deptManNum = deptManNum + sysUsers.size(); if (sysUsers.size() > 0) { List collect = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList()); userIdList.addAll(collect); } } } appPartnerInfo.setTeamManNum(deptManNum); appPartnerInfo.setUserIds(userIdList); //查团队的保费 List sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .in(SysPremiumDetails::getUserId, userIdList) .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()), SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime()) .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector())); BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); appPartnerInfo.setSumPremium(sumPremium); List sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper() .in(SysUserAccountHistory::getUserId, userIdList).eq(SysUserAccountHistory::getProperty, 3)); BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); appPartnerInfo.setExtractFee(extractFee); appPartnerInfoList.add(appPartnerInfo); } List ids = new ArrayList<>(); List> collect = appPartnerInfoList.stream().map(APPPartnerInfo::getUserIds).collect(Collectors.toList()); if (collect.size() > 0) { for (List list : collect) { ids.addAll(list); } } List sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .in(SysPremiumDetails::getUserId, ids) .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()), SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime()) .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector())); BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); appPartnerInfoFreeVo.setSumPremium(sumPremium); List sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper() .in(SysUserAccountHistory::getUserId, ids).eq(SysUserAccountHistory::getProperty, 3)); BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); appPartnerInfoFreeVo.setExtractFee(extractFee); int sum = appPartnerInfoList.stream().mapToInt(APPPartnerInfo::getTeamManNum).sum(); appPartnerInfoFreeVo.setTeamManNum(sum); appPartnerInfoFreeVo.setAppPartnerInfos(appPartnerInfoList); return appPartnerInfoFreeVo; } @Override public AppPartnerNumVo getHomePage(Integer type) { AppPartnerNumVo appPartnerNumVo = new AppPartnerNumVo(); //合伙人:1 ;工作室管理员:2 String userId = BaseController.getUserId(); SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartnerAccount::getUserId, userId)); if (sysPartnerAccount != null) { appPartnerNumVo.setSumPremium(sysPartnerAccount.getSumPremium()); appPartnerNumVo.setExtractFee(sysPartnerAccount.getExtractFee()); } if (type == 1) { //下面合伙人(直接+间接)数量 List sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 0)); appPartnerNumVo.setPartnerNum(sysRelationPersonList1.size()); //直接工作室数量 List sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getSource, 0) .eq(SysRelationPerson::getType, 1)); appPartnerNumVo.setWorkroomNum(sysRelationPersonList.size()); List collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); appPartnerNumVo.setLeaderIds(collect); //登录人下面的所有团队人数 List sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 1)); if (sysRelationPersonList2.size() > 0) { List ids = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); List leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(ids), SysAgencyLeader::getUserId, ids).eq(SysAgencyLeader::getDelFlag, 1)); int deptManNum = 0; if (leaderList.size() > 0) { for (SysAgencyLeader sysAgencyLeader : leaderList) { //获取机构下的团队 List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysAgencyLeader.getDeptId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysAgencyLeader.getSource())); if (sysDeptList.size() > 0) { for (SysDept sysDept : sysDeptList) { List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0)); deptManNum = deptManNum + sysUsers.size(); } } } appPartnerNumVo.setTeamManNum(deptManNum); } } } else { int deptManNum = 0; SysAgencyLeader sysAgencyLeader = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper() .in(SysAgencyLeader::getUserId, userId).eq(SysAgencyLeader::getDelFlag, 1)); //获取机构下的团队 List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysAgencyLeader.getDeptId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysAgencyLeader.getSource())); appPartnerNumVo.setWorkroomTeamNum(sysDeptList.size()); List deptIds = new ArrayList<>(); if (sysDeptList.size() > 0) { for (SysDept sysDept : sysDeptList) { List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0)); deptManNum = deptManNum + sysUsers.size(); deptIds.add(sysDept.getId()); } appPartnerNumVo.setWorkroomManNum(deptManNum); appPartnerNumVo.setTeamManNum(deptManNum); appPartnerNumVo.setDeptIds(deptIds); } } return appPartnerNumVo; } @Override public AppUserInfoVo getUserInfo(Integer type) { String userId = BaseController.getUserId(); AppUserInfoVo appUserInfoVo = sysUserMapper.queryByUserId(userId); if (type == 1) { SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, userId)); SysPartnerConfig sysPartnerConfig = sysPartnerConfigMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartnerConfig::getDelFlag, 1).eq(SysPartnerConfig::getLevel, sysPartner.getType())); appUserInfoVo.setSysPartnerConfig(sysPartnerConfig); appUserInfoVo.setLevel(sysPartner.getType()); } else { SysPartnerConfig sysPartnerConfig = sysPartnerConfigMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartnerConfig::getDelFlag, 1).eq(SysPartnerConfig::getLevel, 0)); appUserInfoVo.setSysPartnerConfig(sysPartnerConfig); } // 获取当前日期 // LocalDate currentDate = LocalDate.now(); // ZoneId zoneId = ZoneId.systemDefault(); // Date entryTime = appUserInfoVo.getEntryTime(); // if (entryTime != null) { // LocalDate localDate = entryTime.toInstant().atZone(zoneId).toLocalDate(); // // 计算年数 // long years = ChronoUnit.YEARS.between(localDate, currentDate); // appUserInfoVo.setYears(years); // } return appUserInfoVo; } @Override public SysPartnerAccount getFee() { String userId = BaseController.getUserId(); return sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper().eq(SysPartnerAccount::getUserId, userId)); } @Override public List partnerInfo(PartnerInfoDto partnerInfoDto) { List appSysPartnerVos = new ArrayList<>(); String userId = BaseController.getUserId(); SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1)); //查询登陆人下所有合伙人 List sysPartnerList = sysPartnerMapper.queryByLoginId(userId); Map> listMap = sysPartnerList.stream().sorted(Comparator.comparing(SysPartner::getId)) .collect(Collectors.groupingBy(SysPartner::getType)); //按等级查询 Integer partnerType = partnerInfoDto.getPartnerType(); if (partnerType != null) { List sysPartnerList1 = listMap.get(partnerType + 1); if (sysPartnerList1 != null) { AppSysPartnerVo appSysPartnerVo = new AppSysPartnerVo(); appSysPartnerVo.setPartnerType(partnerType + 1); //下级合伙人数 appSysPartnerVo.setPartnerNumber(sysPartnerList1.size()); List ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList()); appSysPartnerVo.setPartnerIds(ids); List sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, ids) .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()), SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime()) .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()) .eq(SysPremiumDetails::getStatus,1)); BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); // appSysPartnerVo.setSumPremium(sumPremium); // appSysPartnerVo.setExtractFee(extractFee); //二级以下团队的总人数 List sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 1)); int deptManNum = 0; if (sysRelationPersonList.size() > 0) { List idList = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); List leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(idList), SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1)); if (leaderList.size() > 0) { for (SysAgencyLeader sysAgencyLeader : leaderList) { //获取机构下的团队 List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysAgencyLeader.getDeptId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysAgencyLeader.getSource())); if (sysDeptList.size() > 0) { for (SysDept sysDept : sysDeptList) { List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0)); deptManNum = deptManNum + sysUsers.size(); } } } } } // appSysPartnerVo.setTeamManNum(deptManNum); List list = new ArrayList<>(); if (partnerType == 1) { //一级获取登陆人的之际工作室 list.add(userId); } else { //获取上一级合伙人,查询工作室数量 List sysPartners = listMap.get(partnerType - 1); if (sysPartners != null) { //上一级直接推荐的工作室数量 List list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList()); list.addAll(list1); extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list); } else { appSysPartnerVo.setTeamManNum(deptManNum); appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber()); } } //每一级存入map appSysPartnerVos.add(appSysPartnerVo); } return appSysPartnerVos; } for (Integer integer : listMap.keySet()) { //二级 List sysPartnerList1 = listMap.get(integer); if (sysPartnerList1.size() > 0) { AppSysPartnerVo appSysPartnerVo = new AppSysPartnerVo(); appSysPartnerVo.setPartnerType(integer); //下级合伙人数 appSysPartnerVo.setPartnerNumber(sysPartnerList1.size()); List ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList()); appSysPartnerVo.setPartnerIds(ids); List sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, ids) .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()), SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime()) .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()) .eq(SysPremiumDetails::getStatus,1)); BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); //同等级合伙人团队的总人数: List sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 1)); int deptManNum = 0; if (sysRelationPersonList.size() > 0) { List idList = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); List leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(idList), SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1)); if (leaderList.size() > 0) { for (SysAgencyLeader sysAgencyLeader : leaderList) { //获取机构下的团队 List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysAgencyLeader.getDeptId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysAgencyLeader.getSource())); if (sysDeptList.size() > 0) { for (SysDept sysDept : sysDeptList) { List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0)); deptManNum = deptManNum + sysUsers.size(); } } } } } List list = new ArrayList<>(); int type = sysPartner.getType(); if (type == 1) { if (integer == 2) { //一级获取登陆人的之际工作室 list.add(userId); extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list); } else { //获取上一级合伙人,查询工作室数量 List sysPartners = listMap.get(integer - 1); if (sysPartners != null) { //上一级直接推荐的工作室数量 List list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList()); list.addAll(list1); extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list); } else { appSysPartnerVo.setTeamManNum(deptManNum); appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber()); } } } else if (type == 2) { if (integer == 3) { //一级获取登陆人的之际工作室 list.add(userId); extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list); } else { //获取上一级合伙人,查询工作室数量 List sysPartners = listMap.get(integer - 1); if (sysPartners != null) { //上一级直接推荐的工作室数量 List list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList()); list.addAll(list1); extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list); } else { appSysPartnerVo.setTeamManNum(deptManNum); appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber()); } } } else if (type == 3) { if (integer == 4) { //一级获取登陆人的之际工作室 list.add(userId); extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list); } else { //获取上一级合伙人,查询工作室数量 List sysPartners = listMap.get(integer - 1); if (sysPartners != null) { //上一级直接推荐的工作室数量 List list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList()); list.addAll(list1); extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list); } else { appSysPartnerVo.setTeamManNum(deptManNum); appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber()); } } } else if (type == 4) { if (integer == 5) { //一级获取登陆人的之际工作室 list.add(userId); extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list); } else { //获取上一级合伙人,查询工作室数量 List sysPartners = listMap.get(integer - 1); if (sysPartners != null) { //上一级直接推荐的工作室数量 List list1 = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList()); list.addAll(list1); extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list); } else { appSysPartnerVo.setTeamManNum(deptManNum); appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber()); } } } // extracted(partnerInfoDto, appSysPartnerVo, sumPremium, extractFee, deptManNum, list); //每一级存入map appSysPartnerVos.add(appSysPartnerVo); } } return appSysPartnerVos; } private void extracted(PartnerInfoDto partnerInfoDto, AppSysPartnerVo appSysPartnerVo, BigDecimal sumPremium, BigDecimal extractFee, int deptManNum, List list) { List sysRelationPersons = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(list), SysRelationPerson::getSuggestId, list) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getSource, 0) .eq(SysRelationPerson::getType, 1)); appSysPartnerVo.setWorkNumber(sysRelationPersons.size()); if (sysRelationPersons.size() > 0) { List list1 = sysRelationPersons.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); appSysPartnerVo.setLeaderIds(list1); //直接工作室保费 List sysPremiumDetails1 = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(list1), SysPremiumDetails::getUserId, list1) .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()), SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime()) .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector()) .eq(SysPremiumDetails::getStatus,1)); if (sysPremiumDetails1.size() > 0) { BigDecimal sumPremium1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee1 = sysPremiumDetails1.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); appSysPartnerVo.setSumPremium(sumPremium.add(sumPremium1)); appSysPartnerVo.setExtractFee(extractFee.add(extractFee1)); } else { appSysPartnerVo.setSumPremium(sumPremium); appSysPartnerVo.setExtractFee(extractFee); } int leaderManNum = 0; //直接工作室总 List leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(list1), SysAgencyLeader::getUserId, list1).eq(SysAgencyLeader::getDelFlag, 1)); if (leaderList.size() > 0) { for (SysAgencyLeader sysAgencyLeader : leaderList) { //获取机构下的团队 List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysAgencyLeader.getDeptId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysAgencyLeader.getSource())); if (sysDeptList.size() > 0) { for (SysDept sysDept : sysDeptList) { List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0)); leaderManNum = leaderManNum + sysUsers.size(); } } } } appSysPartnerVo.setTeamManNum(deptManNum + leaderManNum); appSysPartnerVo.setNumber(appSysPartnerVo.getPartnerNumber() + appSysPartnerVo.getWorkNumber()); } } @Override public PartnerInfoFreeVo queryPartnerInfo(PartnerGradeInfo partnerGradeInfo) { PartnerInfoFreeVo partnerInfoFreeVo = new PartnerInfoFreeVo(); List partnerInfoVoList = new ArrayList<>(); //合伙人:1;工作室:2 Integer type = partnerGradeInfo.getType(); if (type == 1) { List partnerIds = partnerGradeInfo.getPartnerIds(); if (CollectionUtil.isEmpty(partnerIds)) { return partnerInfoFreeVo; } //费用 List sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .in(SysPremiumDetails::getUserId, partnerIds) .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()), SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime()) .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()) .eq(SysPremiumDetails::getStatus,1)); BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); partnerInfoFreeVo.setSumPremium(sumPremium); partnerInfoFreeVo.setExtractFee(extractFee); //合伙人 List sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper() .in(SysPartner::getUserId, partnerGradeInfo.getPartnerIds()).eq(SysPartner::getDelFlag, 1)); if (sysPartnerList.size() > 0) { for (SysPartner sysPartner : sysPartnerList) { PartnerInfoVo partnerInfoVo = new PartnerInfoVo(); partnerInfoVo.setLevel(partnerGradeInfo.getLevel()); String userId = sysPartner.getUserId(); partnerInfoVo.setUserId(userId); SysUser sysUser = sysUserMapper.selectById(userId); partnerInfoVo.setUserName(sysUser.getName()); SysUser sysUser1 = sysUserMapper.selectById(sysPartner.getSuggestId()); partnerInfoVo.setSuggestName(sysUser1.getName()); //费用 List sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .eq(SysPremiumDetails::getUserId, userId) .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()), SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime()) .eq(SysPremiumDetails::getStatus,1) .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector())); BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); partnerInfoVo.setSumPremium(sumPremium1); partnerInfoVo.setExtractFee(extractFee1); //直接合伙人 List sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 0) .eq(SysRelationPerson::getSource, 0)); List collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); partnerInfoVo.setPartnerIds(collect); partnerInfoVo.setPartnerNumber(collect.size()); //直接管理员 List sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 1) .eq(SysRelationPerson::getSource, 0)); List collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); partnerInfoVo.setLeaderIds(collects); partnerInfoVo.setWorkNumber(collects.size()); //合伙人下所有工作室数 List sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 1)); int deptManNum = 0; if (sysRelationPersonList2.size() > 0) { List idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); List leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper() .in(SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1)); if (leaderList.size() > 0) { for (SysAgencyLeader sysAgencyLeader : leaderList) { //获取机构下的团队 List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysAgencyLeader.getDeptId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysAgencyLeader.getSource())); if (sysDeptList.size() > 0) { for (SysDept sysDept : sysDeptList) { List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0)); deptManNum = deptManNum + sysUsers.size(); } } } } } partnerInfoVo.setTeamManNum(deptManNum); partnerInfoVoList.add(partnerInfoVo); } partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList); } } else { //工作室 List leaderIds = partnerGradeInfo.getLeaderIds(); if (CollectionUtil.isEmpty(leaderIds)) { return partnerInfoFreeVo; } //费用 List sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .in(SysPremiumDetails::getUserId, leaderIds) .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()), SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime()) .eq(SysPremiumDetails::getStatus,1) .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector())); BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); partnerInfoFreeVo.setSumPremium(sumPremium); partnerInfoFreeVo.setExtractFee(extractFee); List leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper() .in(SysAgencyLeader::getUserId, leaderIds).eq(SysAgencyLeader::getDelFlag, 1)); for (SysAgencyLeader sysAgencyLeader : leaderList) { PartnerInfoVo partnerInfoVo = new PartnerInfoVo(); String userId = sysAgencyLeader.getUserId(); partnerInfoVo.setUserId(userId); SysUser sysUser = sysUserMapper.selectById(userId); partnerInfoVo.setUserName(sysUser.getName()); SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeader.getSuggestId()); partnerInfoVo.setSuggestName(sysUser1.getName()); //费用 List sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .eq(SysPremiumDetails::getUserId, userId) .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()), SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime()) .eq(SysPremiumDetails::getStatus,1) .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector())); BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); partnerInfoVo.setSumPremium(sumPremium1); partnerInfoVo.setExtractFee(extractFee1); int deptManNum = 0; //获取机构下的团队 List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysAgencyLeader.getDeptId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysAgencyLeader.getSource())); partnerInfoVo.setDeptNum(sysDeptList.size()); List collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList()); partnerInfoVo.setDeptIds(collect); if (sysDeptList.size() > 0) { for (SysDept sysDept : sysDeptList) { List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0)); deptManNum = deptManNum + sysUsers.size(); } } partnerInfoVo.setTeamManNum(deptManNum); partnerInfoVoList.add(partnerInfoVo); } } int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum(); partnerInfoFreeVo.setTeamManNum(sum); partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList); return partnerInfoFreeVo; } @Override public BasePageResult getCommissionInfo(CommissionInfoDto commissionInfoDto) { String userId = BaseController.getUserId(); Page page = new Page<>(commissionInfoDto.getPageNum(), commissionInfoDto.getPageSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysPremiumDetails::getUserId, userId); wrapper.eq(commissionInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, commissionInfoDto.getIndustrySector()); wrapper.between(StringUtils.isNotEmpty(commissionInfoDto.getBeginTime()) && StringUtils.isNotEmpty(commissionInfoDto.getEndTime()), SysPremiumDetails::getCreateTime, commissionInfoDto.getBeginTime(), commissionInfoDto.getEndTime()); wrapper.orderByDesc(SysPremiumDetails::getId); Page insOrdersPage = sysPremiumDetailsService.page(page, wrapper); return new BasePageResult<>(commissionInfoDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(), insOrdersPage.getRecords()); } @Override public TeamUserInfosFreeVo getTeamUserInfo(TeamUserInfosDto teamUserInfosDto) { TeamUserInfosFreeVo teamUserInfosFreeVo = new TeamUserInfosFreeVo(); List userInfosVoList = new ArrayList<>(); List userIds = teamUserInfosDto.getUserIds(); if (CollectionUtil.isEmpty(userIds)) { return teamUserInfosFreeVo; } //费用 List sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .in(SysPremiumDetails::getUserId, userIds) .between(StringUtils.isNotEmpty(teamUserInfosDto.getBeginTime()) && StringUtils.isNotEmpty(teamUserInfosDto.getEndTime()), SysPremiumDetails::getCreateTime, teamUserInfosDto.getBeginTime(), teamUserInfosDto.getEndTime()) .eq(SysPremiumDetails::getStatus,1) .eq(teamUserInfosDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, teamUserInfosDto.getIndustrySector())); BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); teamUserInfosFreeVo.setSumPremium(sumPremium); List sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper() .in(SysUserAccountHistory::getUserId, userIds).eq(SysUserAccountHistory::getProperty, 3) .eq(teamUserInfosDto.getIndustrySector() != null, SysUserAccountHistory::getBusinessSegmentsType, teamUserInfosDto.getIndustrySector())); BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); teamUserInfosFreeVo.setExtractFee(extractFee); List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .ne(SysUser::getStatus, 0).in(SysUser::getId, teamUserInfosDto.getUserIds())); for (SysUser sysUser : sysUsers) { TeamUserInfosVo teamUserInfosVo = new TeamUserInfosVo(); teamUserInfosVo.setUserId(sysUser.getId()); teamUserInfosVo.setUserName(sysUser.getName()); String leaderId = sysUser.getLeaderId(); if (StringUtils.isNotEmpty(leaderId)) { teamUserInfosVo.setLeaderId(sysUser.getLeaderId()); SysUser sysUser1 = sysUserMapper.selectById(sysUser.getLeaderId()); teamUserInfosVo.setLeaderName(sysUser1.getName()); } //费用 List sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .eq(SysPremiumDetails::getUserId, sysUser.getId()) .between(StringUtils.isNotEmpty(teamUserInfosDto.getBeginTime()) && StringUtils.isNotEmpty(teamUserInfosDto.getEndTime()), SysPremiumDetails::getCreateTime, teamUserInfosDto.getBeginTime(), teamUserInfosDto.getEndTime()) .eq(SysPremiumDetails::getStatus,1) .eq(teamUserInfosDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, teamUserInfosDto.getIndustrySector())); BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); teamUserInfosVo.setSumPremium(sumPremium1); List sysUserAccountHistorie = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper() .in(SysUserAccountHistory::getUserId, sysUser.getId()).eq(SysUserAccountHistory::getProperty, 3) .eq(teamUserInfosDto.getIndustrySector() != null, SysUserAccountHistory::getBusinessSegmentsType, teamUserInfosDto.getIndustrySector())); BigDecimal extractFee1 = sysUserAccountHistorie.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); teamUserInfosVo.setExtractFee(extractFee1); userInfosVoList.add(teamUserInfosVo); } teamUserInfosFreeVo.setTeamManNum(userIds.size()); teamUserInfosFreeVo.setTeamUserInfosVoList(userInfosVoList); return teamUserInfosFreeVo; } @Override public FilterPartnerInfoVo queryFilterPartnerInfo(FilterPartnerInfoDto filterPartnerInfoDto) { FilterPartnerInfoVo filterPartnerInfoVo = new FilterPartnerInfoVo(); String userId = BaseController.getUserId(); SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1)); //查询登陆人下所有合伙人 List sysPartnerList = sysPartnerMapper.queryByLoginId(userId); Map> listMap = sysPartnerList.stream().sorted(Comparator.comparing(SysPartner::getId)) .collect(Collectors.groupingBy(SysPartner::getType)); Integer partnerType = filterPartnerInfoDto.getPartnerType(); List sysPartnerList1 = listMap.get(sysPartner.getType() + partnerType); List collect1 = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList()); if (collect1.size() == 0) { return filterPartnerInfoVo; } //费用 List sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .in(CollectionUtil.isNotEmpty(collect1), SysPremiumDetails::getUserId, collect1) .between(StringUtils.isNotEmpty(filterPartnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(filterPartnerInfoDto.getEndTime()), SysPremiumDetails::getCreateTime, filterPartnerInfoDto.getBeginTime(), filterPartnerInfoDto.getEndTime()) .eq(SysPremiumDetails::getStatus,1) .eq(filterPartnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, filterPartnerInfoDto.getIndustrySector())); BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); filterPartnerInfoVo.setSumPremium(sumPremium); filterPartnerInfoVo.setExtractFee(extractFee); if (sysPartnerList1.size() > 0) { List partnerInfoVoList = new ArrayList<>(); for (SysPartner partner : sysPartnerList1) { PartnerInfoVo partnerInfoVo = new PartnerInfoVo(); String id = sysPartner.getUserId(); partnerInfoVo.setUserId(id); SysUser sysUser = sysUserMapper.selectById(id); partnerInfoVo.setUserName(sysUser.getName()); SysUser sysUser1 = sysUserMapper.selectById(sysPartner.getSuggestId()); partnerInfoVo.setSuggestName(sysUser1.getName()); //费用 List sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .eq(SysPremiumDetails::getUserId, userId) .between(StringUtils.isNotEmpty(filterPartnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(filterPartnerInfoDto.getEndTime()), SysPremiumDetails::getCreateTime, filterPartnerInfoDto.getBeginTime(), filterPartnerInfoDto.getEndTime()) .eq(SysPremiumDetails::getStatus,1) .eq(filterPartnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, filterPartnerInfoDto.getIndustrySector())); BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); partnerInfoVo.setSumPremium(sumPremium1); partnerInfoVo.setExtractFee(extractFee1); //直接合伙人 List sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 0) .eq(SysRelationPerson::getSource, 0)); List collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); partnerInfoVo.setPartnerIds(collect); //直接管理员 List sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 1) .eq(SysRelationPerson::getSource, 0)); List collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); partnerInfoVo.setLeaderIds(collects); partnerInfoVo.setPartnerNumber(collects.size() + collect.size()); //工作室数 List sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId) .eq(SysRelationPerson::getDelFlag, 1) .eq(SysRelationPerson::getType, 1)); int deptManNum = 0; if (sysRelationPersonList2.size() > 0) { List idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); List leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper() .in(SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1)); if (leaderList.size() > 0) { for (SysAgencyLeader sysAgencyLeader : leaderList) { //获取机构下的团队 List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysAgencyLeader.getDeptId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysAgencyLeader.getSource())); if (sysDeptList.size() > 0) { for (SysDept sysDept : sysDeptList) { List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0)); deptManNum = deptManNum + sysUsers.size(); } } } } partnerInfoVo.setTeamManNum(deptManNum); } partnerInfoVoList.add(partnerInfoVo); } int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum(); filterPartnerInfoVo.setPartnerInfoVoList(partnerInfoVoList); filterPartnerInfoVo.setTeamManNum(sum); } return filterPartnerInfoVo; } @Override public PartnerLeaderInfoVo partnerLeaderInfo(PartnerGradeInfo partnerGradeInfo) { PartnerLeaderInfoVo partnerLeaderInfoVo = new PartnerLeaderInfoVo(); List partnerInfoVoList = new ArrayList<>(); //工作室 List leaderIds = partnerGradeInfo.getLeaderIds(); if (CollectionUtil.isEmpty(leaderIds)) { return partnerLeaderInfoVo; } //费用 List sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .in(SysPremiumDetails::getUserId, leaderIds) .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()), SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime()) .eq(SysPremiumDetails::getStatus,1) .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector())); BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); partnerLeaderInfoVo.setSumPremium(sumPremium); partnerLeaderInfoVo.setExtractFee(extractFee); List leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper() .in(SysAgencyLeader::getUserId, leaderIds).eq(SysAgencyLeader::getDelFlag, 1)); List userIds = new ArrayList<>(); for (SysAgencyLeader sysAgencyLeader : leaderList) { PartnerInfoVo partnerInfoVo = new PartnerInfoVo(); String userId = sysAgencyLeader.getUserId(); partnerInfoVo.setUserId(userId); SysUser sysUser = sysUserMapper.selectById(userId); partnerInfoVo.setUserName(sysUser.getName()); SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeader.getSuggestId()); partnerInfoVo.setSuggestName(sysUser1.getName()); //费用 List sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper() .eq(SysPremiumDetails::getUserId, userId) .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()), SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime()) .eq(SysPremiumDetails::getStatus,1) .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector())); BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add); partnerInfoVo.setSumPremium(sumPremium1); partnerInfoVo.setExtractFee(extractFee1); int deptManNum = 0; //获取机构下的团队 List sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper() .likeRight(SysDept::getId, sysAgencyLeader.getDeptId()) .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0) .eq(SysDept::getManagementSource, sysAgencyLeader.getSource())); partnerInfoVo.setDeptNum(sysDeptList.size()); List collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList()); partnerInfoVo.setDeptIds(collect); if (sysDeptList.size() > 0) { for (SysDept sysDept : sysDeptList) { List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0)); deptManNum = deptManNum + sysUsers.size(); if (sysUsers.size() > 0) { List collect1 = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList()); userIds.addAll(collect1); } } } partnerInfoVo.setTeamManNum(deptManNum); partnerInfoVo.setLevel(partnerGradeInfo.getLevel()); partnerInfoVoList.add(partnerInfoVo); } int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum(); partnerLeaderInfoVo.setUserIds(userIds); partnerLeaderInfoVo.setTeamManNum(sum); partnerLeaderInfoVo.setPartnerInfoVoList(partnerInfoVoList); return partnerLeaderInfoVo; } @Override public List getRelationInfo(String userId) { List sysPartners = new ArrayList<>(); //登陆人的上三级合伙人信息 SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper() .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1)); SysPartnerVo sysPartnerVo = BeanUtil.copyProperties(sysPartner, SysPartnerVo.class); sysPartners.add(sysPartnerVo); List ids = new ArrayList<>(); List sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getAgencyLeaderId, userId).eq(SysRelationPerson::getType, 0).orderByDesc(SysRelationPerson::getId)); if (sysRelationPersonList.size() > 0) { List collect = sysRelationPersonList.stream().map(SysRelationPerson::getSuggestId).collect(Collectors.toList()); if (collect.size() > 4) { List collect1 = collect.stream().limit(4).collect(Collectors.toList()); ids.addAll(collect1); } else { ids.addAll(collect); } } List sysRelationList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper() .eq(SysRelationPerson::getSuggestId, userId).eq(SysRelationPerson::getType, 0)); if (sysRelationList.size() > 0) { List collect1 = sysRelationList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList()); if (collect1.size() > 4) { List collect2 = collect1.stream().limit(4).collect(Collectors.toList()); ids.addAll(collect2); } else { ids.addAll(collect1); } } if (CollectionUtil.isNotEmpty(ids)) { List sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper() .in(SysPartner::getUserId, ids).eq(SysPartner::getDelFlag, 1)); List sysPartnerVos = BeanUtil.copyToList(sysPartnerList, SysPartnerVo.class); sysPartners.addAll(sysPartnerVos); } List sysPartnerVoList = sysPartners.stream().sorted(Comparator.comparing(SysPartner::getId)).collect(Collectors.toList()); if (sysPartnerVoList.size() > 0) { for (SysPartnerVo partner : sysPartnerVoList) { SysUser sysUser1 = sysUserMapper.selectById(partner.getUserId()); partner.setMobile(sysUser1.getMobile()); partner.setUserName(sysUser1.getName()); SysDept sysDept = sysDeptMapper.selectById(sysUser1.getDeptId()); partner.setDeptName(sysDept.getName()); SysDept sysDept1 = sysDeptMapper.selectById(sysDept.getParentId()); partner.setAgencyName(sysDept1.getName()); String suggestId = partner.getSuggestId(); if (StringUtils.isNotEmpty(suggestId)) { SysUser sysUser = sysUserMapper.selectById(partner.getSuggestId()); partner.setSuggestName(sysUser.getName()); } } } return sysPartnerVoList; } @Override public CountUserVo getCountUser(CountUserDto countUserDto) { CountUserVo countUserVo = new CountUserVo(); String userId = BaseController.getUserId(); //原始参数 String startTime1 = countUserDto.getBeginTime(); String endTime1 = countUserDto.getEndTime(); List sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper() .eq(SysUser::getReferrerId, userId) .eq(SysUser::getType, 3) .in(SysUser::getStatus, Arrays.asList(1, 4, 5, 6, 7)) .between(StringUtils.isNotEmpty(countUserDto.getBeginTime()) && StringUtils.isNotEmpty(countUserDto.getEndTime()) , SysUser::getCreateTime, countUserDto.getBeginTime(), countUserDto.getEndTime())); if (sysUsers == null) return countUserVo; countUserVo.setDeptSum(sysUsers.size()); List deptIds = sysUsers.stream().map(SysUser::getDeptId).collect(Collectors.toList()); int deptManNum = 0; for (String deptId : deptIds) { List sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper() .likeRight(SysUser::getId, deptId) .in(SysUser::getStatus, Arrays.asList(1, 4, 5, 6, 7))); deptManNum = deptManNum + sysUserList.size(); } countUserVo.setDeptLeaderSum(deptManNum); countUserVo.setCountSum(countUserVo.getDeptSum() + deptManNum); //曲线图 List countUserNumVoList = null; int type = countUserDto.getType(); String s = startTime1.split(" ")[0]; String s1 = endTime1.split(" ")[0]; if (type == 1) { if (StringUtils.isNotEmpty(s) && s.equals(s1)) { countUserNumVoList = sysPartnerMapper.queryDeptByTimes(userId, countUserDto); } else { countUserNumVoList = sysPartnerMapper.queryDeptByTime(userId, countUserDto); } } else { // List deptIds = sysUsers.stream().map(SysUser::getDeptId).collect(Collectors.toList()); if (StringUtils.isNotEmpty(s) && s.equals(s1)) { countUserNumVoList = sysPartnerMapper.queryUserByTimes(deptIds, countUserDto); } else { countUserNumVoList = sysPartnerMapper.queryUserByTime(deptIds, countUserDto); } } countUserVo.setCountUserNumVoList(countUserNumVoList); return countUserVo; } }