helixiao 1 год назад
Родитель
Сommit
f3f84a8f82

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

@@ -0,0 +1,53 @@
+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.vo.APPPartnerInfo;
+import com.ydtech.modules.admin.service.SysPartnerService;
+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 = "合伙人app")
+@RestController
+@RequestMapping("/APPPartner")
+public class APPPartnerController {
+
+    @Resource
+    private SysPartnerService sysPartnerService;
+
+
+    /**
+     * 合伙人推荐下的合伙人
+     */
+    @GetMapping("/info")
+    @ApiOperation(value = "APP合伙人推荐下的合伙人")
+    public HttpResult<List<SysPartner>> partnerInfo(@RequestParam("beginTime") String beginTime,
+                                                    @RequestParam("endTime") String endTime) {
+
+        return HttpResult.ok(this.sysPartnerService.partnerInfo(beginTime,endTime));
+    }
+
+    /**
+     * 合伙人信息包含下面所有工作室信息
+     */
+    @GetMapping("/getLeaderInfo")
+    @ApiOperation(value = "查询合伙人有关的工作室管理员")
+    public HttpResult<APPPartnerInfo> getLeaderInfo(@RequestParam("userId") String userId) {
+
+        return HttpResult.ok(this.sysPartnerService.getLeaderInfo(userId));
+    }
+
+
+    /**
+     * 根据id查询工作室信息包含西面所有成员
+     */
+
+
+
+
+
+}

+ 33 - 0
src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfo.java

@@ -0,0 +1,33 @@
+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.List;
+
+@Data
+@ApiModel(value = "合伙人下的管理员信息")
+public class APPPartnerInfo {
+
+
+
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumpremium;
+
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    @ApiModelProperty(value = "成员总人数")
+    private Long number;
+
+
+    @ApiModelProperty(value = "管理员信息")
+    private List<AgencyLeaderInfo> agencyLeaderInfo;
+
+
+}

+ 49 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AgencyLeaderInfo.java

@@ -0,0 +1,49 @@
+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;
+
+@Data
+@ApiModel(value = "合伙人下的管理员信息")
+public class AgencyLeaderInfo {
+
+    @ApiModelProperty(value = "管理员id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "管理员姓名")
+    private String userName;
+
+
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+
+    @ApiModelProperty(value = "机构下成员总人数")
+    private Integer number;
+
+    @ApiModelProperty(value = "推荐人id")
+    private String suggestId;
+
+    @ApiModelProperty(value = "推荐人name")
+    private String suggestName;
+
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+}

+ 5 - 3
src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java

@@ -2,14 +2,12 @@ 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.SysPartner;
-import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerAPPPageDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
-import com.ydtech.modules.admin.model.vo.AgencyExtractFee;
+import com.ydtech.modules.admin.model.vo.APPPartnerInfo;
 import com.ydtech.modules.admin.model.vo.AgencyExtractFeeVo;
 import com.ydtech.modules.admin.model.vo.SysPartnerAPPPageVo;
 import com.ydtech.modules.admin.model.vo.SysUserPartner;
@@ -44,4 +42,8 @@ public interface SysPartnerService extends IService<SysPartner> {
     boolean edit(SysPartnerDto sysPartnerDto);
 
     BasePageResult<AgencyExtractFeeVo> queryAgencyLeaderById(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
+
+    List<SysPartner> partnerInfo(String beginTime, String endTime);
+
+    APPPartnerInfo getLeaderInfo(String userId);
 }

+ 90 - 16
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java

@@ -15,18 +15,12 @@ import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerAPPPageDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
-import com.ydtech.modules.admin.model.vo.AgencyExtractFeeVo;
-import com.ydtech.modules.admin.model.vo.SysPartnerAPPPageVo;
-import com.ydtech.modules.admin.model.vo.SysUserPartner;
+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.SysUserService;
 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;
@@ -75,7 +69,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
     public List<SysPartner> queryRecommendAndPartner(String id) {
         List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1)
                 .likeRight(SysPartner::getUserId, id).orderByDesc(SysPartner::getId));
-        if (sysPartnerList.size()>0) {
+        if (sysPartnerList.size() > 0) {
             for (SysPartner sysPartner : sysPartnerList) {
                 SysUser sysUser = sysUserMapper.selectById(sysPartner.getUserId());
                 sysPartner.setUserName(sysUser.getName());
@@ -108,8 +102,8 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         }
         LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
         wrapper.ne(SysUser::getStatus, 0);
-        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()),SysUser::getId, sysPartnerPageDto.getUserId());
-        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()),SysUser::getName, sysPartnerPageDto.getUserName());
+        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysUser::getId, sysPartnerPageDto.getUserId());
+        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysUser::getName, sysPartnerPageDto.getUserName());
         wrapper.likeRight(StringUtils.isNotEmpty(sysPartnerPageDto.getDeptId()), SysUser::getId, sysPartnerPageDto.getDeptId());
         wrapper.notLike(SysUser::getId, "M");
         wrapper.notIn(CollectionUtil.isNotEmpty(stringList), SysUser::getId, stringList);
@@ -212,6 +206,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             b = sysPartnerMapper.insert(sysPartner) > 0;
         }
 
+
         return b;
     }
 
@@ -312,7 +307,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                             } else {
                                 dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
                             }
-                            HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr,null,null);
+                            HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr, null, null);
                             if (CollectionUtil.isNotEmpty(map)) {
                                 bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
                             }
@@ -438,7 +433,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                                     } else {
                                         dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
                                     }
-                                    HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysDept1.getId(), dateStr,null,null);
+                                    HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysDept1.getId(), dateStr, null, null);
                                     if (CollectionUtil.isNotEmpty(map)) {
                                         bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
                                     }
@@ -476,12 +471,17 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                 .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getUserId()));
         if (sysPartner == null) throw new DescribeException("系统错误,请联系管理员!");
 
-        if (StringUtils.isNullOrEmpty(sysPartner.getSuggestId()) && StringUtils.isNotEmpty(sysPartnerDto.getSuggestId())) {
+        if (StringUtils.isNullOrEmpty(sysPartner.getSuggestId()) && StringUtils.isNotEmpty(sysPartnerDto.getSuggestId()))  {
             SysPartner partner = new SysPartner();
             partner.setId(sysPartner.getId());
             partner.setProportional(sysPartnerDto.getProportional());
+
             partner.setSuggestId(sysPartnerDto.getSuggestId());
             partner.setSuggestName(sysPartnerDto.getSuggestName());
+            SysPartner sysPartnerSuggest = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                    .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getSuggestId()));
+            if (sysPartnerSuggest == null) throw new SystemException("推荐人不存在");
+            partner.setType(sysPartnerSuggest.getType()+1);
             b = sysPartnerMapper.updateById(partner) > 0;
 
             SysRelationPerson sysRelationPerson = new SysRelationPerson();
@@ -515,6 +515,8 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             SysPartner partner = new SysPartner();
             partner.setId(sysPartner.getId());
             partner.setProportional(sysPartnerDto.getProportional());
+            //判断本月是否已修改比例 TODO
+
             b = sysPartnerMapper.updateById(partner) > 0;
         }
 
@@ -528,8 +530,8 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
                 .eq(SysRelationPerson::getSuggestId, sysAgencyLeaderPageDto.getUserId()).eq(SysRelationPerson::getType, 1));
 
-            //获取所有推荐的机构负责人id
-            List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+        //获取所有推荐的机构负责人id
+        List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
 
         Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
         LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
@@ -564,7 +566,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                     dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
                     agencyExtractFee.setStartTime(createTime);
                 }
-                HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr,null,null);
+                HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr, null, null);
                 if (CollectionUtil.isNotEmpty(map)) {
 
                     bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
@@ -603,5 +605,77 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
 
     }
 
+    @Override
+    public List<SysPartner> partnerInfo(String beginTime, String endTime) {
+
+        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .eq(StringUtils.isNotEmpty(BaseController.getUserId()), SysRelationPerson::getSuggestId, BaseController.getUserId())
+                .eq(SysRelationPerson::getDelFlag, 1)
+                .eq(SysRelationPerson::getType, 0));
+        if (sysRelationPersonList.size() == 0) return null;
+        List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+        List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
+                .eq(SysPartner::getDelFlag, 1).in(CollectionUtil.isNotEmpty(collect), SysPartner::getUserId, collect)
+                .between(StringUtils.isNotEmpty(beginTime) && StringUtils.isNotEmpty(endTime)
+                        ,SysPartner::getCreateTime,beginTime,endTime));
+
+        return sysPartnerList;
+    }
+
+    @Override
+    public APPPartnerInfo getLeaderInfo(String userId) {
+        APPPartnerInfo appPartnerInfo = new APPPartnerInfo();
+        //查询合伙人有关系的工作室管理员
+        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .eq(StringUtils.isNotEmpty(userId), SysRelationPerson::getSuggestId, userId)
+                .eq(SysRelationPerson::getDelFlag, 1)
+                .eq(SysRelationPerson::getType, 1));
+        if (sysRelationPersonList.size() == 0) return null;
+
+        List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                .eq(SysAgencyLeader::getDelFlag, 1).in(CollectionUtil.isNotEmpty(collect), SysAgencyLeader::getUserId, collect));
+
+        List<AgencyLeaderInfo> agencyLeaderInfos = BeanUtil.copyToList(leaderList, AgencyLeaderInfo.class);
+        for (AgencyLeaderInfo agencyLeaderInfo : agencyLeaderInfos) {
+
+            SysUser sysUser = sysUserMapper.selectById(agencyLeaderInfo.getUserId());
+            agencyLeaderInfo.setUserName(sysUser.getName());
+            SysUser sysUser1 = sysUserMapper.selectById(agencyLeaderInfo.getSuggestId());
+            agencyLeaderInfo.setSuggestName(sysUser1.getName());
+            SysDept sysDept = sysDeptMapper.selectById(agencyLeaderInfo.getDeptId());
+            agencyLeaderInfo.setDeptName(sysDept.getName());
+            //填充费用
+            AgencyExtractFee agencyExtractFee = sysAgencyLeaderService.queryExtractFee(agencyLeaderInfo.getUserId());
+            BigDecimal sumpremium = agencyExtractFee.getSumpremium();
+            agencyLeaderInfo.setSumPremium(sumpremium);
+            BigDecimal percentage = new BigDecimal(agencyLeaderInfo.getProportional()).divide(new BigDecimal("100"));
+            agencyLeaderInfo.setProportional(percentage.toString());
+            BigDecimal extractFee = sumpremium.multiply(percentage).setScale(2, RoundingMode.DOWN);
+            agencyLeaderInfo.setExtractFee(extractFee);
+
+            List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                    .likeRight(SysUser::getId, agencyLeaderInfo.getDeptId()).ne(SysUser::getStatus, 0));
+            agencyLeaderInfo.setNumber(sysUsers.size());
+        }
+        appPartnerInfo.setAgencyLeaderInfo(agencyLeaderInfos);
+        //机构总人数
+        long count = agencyLeaderInfos.stream().mapToInt(AgencyLeaderInfo::getNumber).count();
+        appPartnerInfo.setNumber(count);
+        //总保费
+        BigDecimal reduce = agencyLeaderInfos.stream().map(AgencyLeaderInfo::getSumPremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+        appPartnerInfo.setSumpremium(reduce);
+
+        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getUserId, userId));
+        BigDecimal percentage = new BigDecimal(sysPartner.getProportional()).divide(new BigDecimal("100"));
+        appPartnerInfo.setExtractFee(reduce.multiply(percentage).setScale(2, RoundingMode.DOWN));
+
+        return appPartnerInfo;
+    }
+
+
+
+
+
 
 }