Bladeren bron

团队功能

wucl 2 jaren geleden
bovenliggende
commit
fe2df50978
20 gewijzigde bestanden met toevoegingen van 339 en 27 verwijderingen
  1. 3 2
      biz-base/src/main/java/com/dayou/controller/TeamMemberController.java
  2. 19 0
      biz-base/src/main/java/com/dayou/controller/UserController.java
  3. 4 0
      dao/src/main/java/com/dayou/mapper/BrokeragePostRatioMapper.java
  4. 6 0
      dao/src/main/java/com/dayou/mapper/TeamMemberMapper.java
  5. 12 1
      dao/src/main/java/com/dayou/mapper/UserMapper.java
  6. 40 0
      dao/src/main/resources/mapper/BrokeragePostRatioMapper.xml
  7. 7 0
      dao/src/main/resources/mapper/TeamMapper.xml
  8. 15 0
      dao/src/main/resources/mapper/TeamMemberMapper.xml
  9. 43 1
      dao/src/main/resources/mapper/UserMapper.xml
  10. 22 0
      domain/src/main/java/com/dayou/dto/TeamLeaderDTO.java
  11. 3 0
      domain/src/main/java/com/dayou/vo/TeamVO.java
  12. 12 8
      service/src/main/java/com/dayou/brokerage/handler/LandMarketerBrokerageHandler.java
  13. 8 1
      service/src/main/java/com/dayou/service/ITeamMemberService.java
  14. 10 1
      service/src/main/java/com/dayou/service/IUserService.java
  15. 8 2
      service/src/main/java/com/dayou/service/impl/ItemBrokerageGeneralServiceImpl.java
  16. 14 2
      service/src/main/java/com/dayou/service/impl/MarketStatServiceImpl.java
  17. 46 4
      service/src/main/java/com/dayou/service/impl/TeamMemberServiceImpl.java
  18. 20 0
      service/src/main/java/com/dayou/service/impl/TeamServiceImpl.java
  19. 25 1
      service/src/main/java/com/dayou/service/impl/UserServiceImpl.java
  20. 22 4
      service/src/main/java/com/dayou/service/impl/UserTargetServiceImpl.java

+ 3 - 2
biz-base/src/main/java/com/dayou/controller/TeamMemberController.java

@@ -1,5 +1,6 @@
 package com.dayou.controller;
 
+import com.dayou.vo.TeamVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -55,8 +56,8 @@ public class TeamMemberController extends BaseController {
      * 团队成员新增
      */
     @PostMapping("")
-    public RestResponse<Boolean> save(@RequestBody TeamMember teamMember) {
-        Boolean ret = teamMemberService.add(teamMember);
+    public RestResponse<Boolean> save(@RequestBody TeamVO teamVO) {
+        Boolean ret = teamMemberService.add(teamVO);
         return RestResponse.data(ret);
     }
 

+ 19 - 0
biz-base/src/main/java/com/dayou/controller/UserController.java

@@ -213,5 +213,24 @@ public class UserController extends BaseController {
         Boolean result = userService.updatePassword(passwordDTO);
         return RestResponse.data(result);
     }
+
+    /**
+     * 岗位用户下拉列表
+     */
+    @GetMapping("/simple/{postName}")
+    public RestResponse<List<PullDownModel>> simplePostName(@PathVariable("postName") String postName){
+        List<User> list = userService.simplePostName(postName);
+        List<PullDownModel> ret=ConvertUtil.copyList(list, PullDownModel.class);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 岗位用户列表
+     */
+    @GetMapping("/list/{postName}")
+    public RestResponse<List<UserVO>> listPostName(@PathVariable("postName") String postName){
+        List<UserVO> list = userService.listPostName(postName);
+        return RestResponse.data(list);
+    }
 }
 

+ 4 - 0
dao/src/main/java/com/dayou/mapper/BrokeragePostRatioMapper.java

@@ -22,4 +22,8 @@ public interface BrokeragePostRatioMapper extends CustomBaseMapper<BrokeragePost
     Set<LeaderRatioBO> getLeadersRatio(@Param("parentPostIds") Set<Long> parentPostIds,@Param("userId") Long userId);
 
     Page<PostRatioVO> page(Page page, @Param("ratio") PostRatioVO postRatioVO);
+
+    Set<LeaderRatioBO> getLeaderRatioBO(@Param("leaderIds") Set<Long> leaderIds);
+
+    Set<LeaderRatioBO> marketManagerRatioBO();
 }

+ 6 - 0
dao/src/main/java/com/dayou/mapper/TeamMemberMapper.java

@@ -1,7 +1,12 @@
 package com.dayou.mapper;
 
+import com.dayou.dto.TeamLeaderDTO;
+import com.dayou.entity.Team;
 import com.dayou.entity.TeamMember;
 import com.dayou.dao.CustomBaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +18,5 @@ import com.dayou.dao.CustomBaseMapper;
  */
 public interface TeamMemberMapper extends CustomBaseMapper<TeamMember> {
 
+    Team getLeader(@Param("userId") Long userId, @Param("departmentName")String departmentName);
 }

+ 12 - 1
dao/src/main/java/com/dayou/mapper/UserMapper.java

@@ -1,10 +1,15 @@
 package com.dayou.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.bo.LeaderRatioBO;
 import com.dayou.entity.User;
 import com.dayou.dao.CustomBaseMapper;
 import com.dayou.vo.UserVO;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -22,5 +27,11 @@ public interface UserMapper extends CustomBaseMapper<User> {
 
     UserVO detail(@Param("id") Long id);
 
-    Long getDepartmentIdByUserId(@Param("userId") Long userId);
+    Set<Long> getDepartmentIdByUserId(@Param("userId") Long userId);
+
+    List<User> simplePostName(@Param("postName") String postName);
+
+    List<UserVO> listPostName(@Param("postName") String postName);
+
+
 }

+ 40 - 0
dao/src/main/resources/mapper/BrokeragePostRatioMapper.xml

@@ -65,4 +65,44 @@
             r.id DESC;
     </select>
 
+    <select id="getLeaderRatioBO" parameterType="java.util.Set" resultType="com.dayou.bo.LeaderRatioBO">
+        SELECT
+            up.user_id,
+            up.post_id,
+            p.NAME AS postName,
+            bpr.brokerage_ratio AS ratio,
+            bpr.brokerage_rule AS brokerageRule
+        FROM
+            user_post up
+                left join brokerage_post_ratio bpr on bpr.post_id = up.post_id
+                left join post p on p.id = up.post_id
+        where
+            up.deleted = 0
+          AND bpr.deleted = 0
+          AND p.deleted = 0
+        and up.user_id in (
+        <foreach collection="leaderIds" index="index" item="item" separator=",">
+            #{item}
+        </foreach>
+            )
+    </select>
+
+    <select id="marketManagerRatioBO" resultType="com.dayou.bo.LeaderRatioBO">
+        SELECT
+            up.user_id,
+            up.post_id,
+            p.NAME AS postName,
+            bpr.brokerage_ratio AS ratio,
+            bpr.brokerage_rule AS brokerageRule
+        FROM
+            user_post up
+                left join brokerage_post_ratio bpr on bpr.post_id = up.post_id
+                left join post p on p.id = up.post_id
+        where
+            up.deleted = 0
+          AND bpr.deleted = 0
+          AND p.deleted = 0
+
+          and p.name = '市场部经理'
+    </select>
 </mapper>

+ 7 - 0
dao/src/main/resources/mapper/TeamMapper.xml

@@ -34,6 +34,13 @@
         left join department d on d.id = t.department_id LEFT JOIN user_post up ON up.user_id = t.cultivate_id
         LEFT JOIN post p ON p.id = up.post_id
         where t.deleted = 0 and u.deleted =0 and u1.deleted = 0 and d.deleted = 0 and d.name = #{vo.departmentName}
+        <if test="vo!=null and vo.name!=null and vo.name!= ''">
+            and t.name like concat ('%',#{vo.name},'%')
+        </if>
+        <if test="vo!=null and vo.cultivateName!=null and vo.cultivateName!= ''">
+            and u1.name like concat ('%',#{vo.cultivateName},'%')
+        </if>
+        order by t.id DESC
     </select>
 
     <select id="selectTeamMember" parameterType="java.lang.Long" resultType="com.dayou.vo.TeamMemberVO">

+ 15 - 0
dao/src/main/resources/mapper/TeamMemberMapper.xml

@@ -21,4 +21,19 @@
         member_id, team_id
     </sql>
 
+    <select id="getLeader" resultType="com.dayou.entity.Team">
+        SELECT
+            distinct t.supervisor_id,
+                     t.cultivate_id
+        FROM
+            team_member tm
+                LEFT JOIN team t ON t.id = tm.team_id
+                left join department d on d.id = t.department_id
+        WHERE
+            t.deleted = 0
+          AND tm.deleted = 0
+          AND tm.member_id = #{userId}
+          and d.deleted = 0
+          and d.name = #{departmentName}
+    </select>
 </mapper>

+ 43 - 1
dao/src/main/resources/mapper/UserMapper.xml

@@ -101,6 +101,48 @@
     </select>
 
     <select id="getDepartmentIdByUserId" parameterType="java.lang.Long" resultType="java.lang.Long">
-        select d.id from department d
+        SELECT
+            p.department_id
+        FROM
+            user_post up
+                LEFT JOIN post p ON p.id = up.post_id
+                left join user u on u.id = up.user_id
+        WHERE
+            u.id = #{userId}
+          AND p.deleted = 0
+          AND up.deleted = 0
+          and u.deleted =0
+    </select>
+
+    <select id="simplePostName" parameterType="java.lang.String" resultType="com.dayou.entity.User">
+        SELECT
+            u.id,u.name
+        FROM
+            user_post up
+                LEFT JOIN post p ON p.id = up.post_id
+                left join user u on u.id = up.user_id
+        WHERE
+            p.NAME = #{postName}
+          AND p.deleted = 0
+          AND up.deleted = 0
+          and u.deleted =0
     </select>
+
+    <select id="listPostName" parameterType="com.dayou.vo.UserVO" resultMap="userDepartmentPostMap">
+        select u.id,u.staff_no,u.name ,u.sex FROM
+        user_post up
+        LEFT JOIN post p ON p.id = up.post_id
+        left join user u on u.id = up.user_id
+        WHERE
+        p.NAME = #{postName}
+        AND p.deleted = 0
+        AND up.deleted = 0
+        and u.deleted =0
+          and
+            not exists (
+                    select 1 from team_member where team_member.deleted = 0 and team_member.member_id = u.id
+                )
+    </select>
+
+
 </mapper>

+ 22 - 0
domain/src/main/java/com/dayou/dto/TeamLeaderDTO.java

@@ -0,0 +1,22 @@
+package com.dayou.dto;
+
+import lombok.Data;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/4/10
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class TeamLeaderDTO {
+
+    private Long supervisorId;
+
+    private Long sPostId;
+
+    private Long cultivateId;
+
+    private Long cPostId;
+}

+ 3 - 0
domain/src/main/java/com/dayou/vo/TeamVO.java

@@ -25,4 +25,7 @@ public class TeamVO extends Team {
 
     private List<TeamMemberVO> members;
 
+    private List<Long> memberIds;
+
+
 }

+ 12 - 8
service/src/main/java/com/dayou/brokerage/handler/LandMarketerBrokerageHandler.java

@@ -10,10 +10,7 @@ import com.dayou.brokerage.constants.BrokerageRule;
 import com.dayou.brokerage.constants.BrokerageState;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.ItemDTO;
-import com.dayou.entity.BrokeragePostRatio;
-import com.dayou.entity.Item;
-import com.dayou.entity.ItemBrokerageDetail;
-import com.dayou.entity.UserTarget;
+import com.dayou.entity.*;
 import com.dayou.enums.GlobalConfigEnum;
 import com.dayou.exception.BusinessException;
 import com.dayou.service.*;
@@ -33,8 +30,7 @@ import java.util.stream.Collectors;
 
 import static com.dayou.brokerage.constants.BrokerageMsg.*;
 import static com.dayou.brokerage.constants.BrokerageRule.LAND_SUPERVISOR_RULE;
-import static com.dayou.common.Constants.HUNDRED;
-import static com.dayou.common.Constants.SUPERVISOR;
+import static com.dayou.common.Constants.*;
 
 /**
  * 类说明:土地规划部市场人员提成计算处理器
@@ -69,6 +65,12 @@ public class LandMarketerBrokerageHandler extends BrokerageCalculateSupport impl
     @Autowired
     private IItemBrokerageGeneralService generalService;
 
+    @Autowired
+    private ITeamMemberService teamMemberService;
+
+    @Autowired
+    private ITeamService teamService;
+
     @Override
     public BrokerageDetailBO predictPersonalAmount(BrokerageDetailBO bo) {
         try {
@@ -182,7 +184,8 @@ public class LandMarketerBrokerageHandler extends BrokerageCalculateSupport impl
                 .multiply(new BigDecimal("2"));
         BigDecimal areaAmount = BigDecimal.ZERO;
         //开单人员的营销主管集合
-        Set<LeaderRatioBO> leaders = userService.getLeaderRatioBO(marketerId).stream().filter(x->x.getPostName().equals(SUPERVISOR)).collect(Collectors.toSet());
+        Set<LeaderRatioBO> leaders = teamMemberService.getLeader(marketerId, MARKET_DEPARTMENT).stream().filter(x->x.getPostName().equals(SUPERVISOR)).collect(Collectors.toSet());
+        //Set<LeaderRatioBO> leaders = userService.getLeaderRatioBO(marketerId).stream().filter(x->x.getPostName().equals(SUPERVISOR)).collect(Collectors.toSet());
 
         if (!CollectionUtils.isEmpty(leaders)){
             //区域产值
@@ -190,7 +193,8 @@ public class LandMarketerBrokerageHandler extends BrokerageCalculateSupport impl
         }
 
         // 获取发展的营销主管个数
-        Integer cultivateNum = postCultivateService.countCultivate(SUPERVISOR, managerId);
+        int cultivateNum = teamService.count(new LambdaQueryWrapper<Team>().eq(Team::getCultivateId, managerId).eq(BaseEntity::getDeleted, Boolean.FALSE));
+        //Integer cultivateNum = postCultivateService.countCultivate(SUPERVISOR, managerId);
         BigDecimal cultivateRate ;
         if (cultivateNum<4){
             cultivateRate = CULTIVATE_LOW_4;

+ 8 - 1
service/src/main/java/com/dayou/service/ITeamMemberService.java

@@ -1,10 +1,15 @@
 package com.dayou.service;
+import com.dayou.bo.LeaderRatioBO;
 import com.dayou.entity.TeamMember;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayou.vo.TeamVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Set;
+
 /**
  * <p>
  * 团队成员 服务类
@@ -19,10 +24,12 @@ public interface ITeamMemberService extends IService<TeamMember> {
 
         TeamMember detail(Long id);
 
-        Boolean add(TeamMember teamMember);
+        Boolean add(TeamVO teamVO);
 
         Boolean update(TeamMember teamMember);
 
         Boolean delete(Long id);
 
+        Set<LeaderRatioBO> getLeader(Long userId,String departmentName);
+
 }

+ 10 - 1
service/src/main/java/com/dayou/service/IUserService.java

@@ -5,6 +5,7 @@ import com.dayou.condition.LoginCondition;
 import com.dayou.dto.LoginDTO;
 import com.dayou.dto.UpdatePasswordDTO;
 import com.dayou.dto.UserBaseDetailDTO;
+import com.dayou.entity.Team;
 import com.dayou.entity.User;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -68,5 +69,13 @@ public interface IUserService extends IService<User> {
 
     Set<Long> getLeaderPostInDepartment(Long postId,Long departmentId,Set<Long> parentPostIds);
 
-    Long getDepartmentIdByUserId(Long userId);
+    Set<Long> getDepartmentIdByUserId(Long userId);
+
+    List<User> simplePostName(String postName);
+
+    List<UserVO> listPostName(String postName);
+
+    Set<LeaderRatioBO> getLeaderRatioBO(Set<Long> leaderIds);
+
+    Set<LeaderRatioBO> marketManagerRatioBO();
 }

+ 8 - 2
service/src/main/java/com/dayou/service/impl/ItemBrokerageGeneralServiceImpl.java

@@ -39,6 +39,8 @@ import java.util.stream.Collectors;
 
 import org.springframework.transaction.annotation.Transactional;
 
+import static com.dayou.common.Constants.MARKET_DEPARTMENT;
+
 /**
  * <p>
  * 项目提成总表 服务实现类
@@ -82,6 +84,9 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
     @Autowired
     private ItemBrokerageGeneralMapper brokerageGeneralMapper;
 
+    @Autowired
+    private ITeamMemberService teamMemberService;
+
 
     @Override
     @SuppressWarnings("unchecked")
@@ -122,7 +127,8 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
         BigDecimal paymentTarget = new BigDecimal(userTarget.getPaymentTarget());
         bo.setCurrentPayment(currentYearPayment);
         bo.setPaymentTarget(paymentTarget);
-        Set<LeaderRatioBO> leaderRatioBO = userService.getLeaderRatioBO(userId).stream().filter(x->x.getRatio()!=null).collect(Collectors.toSet());
+        //Set<LeaderRatioBO> leaderRatioBO = userService.getLeaderRatioBO(userId).stream().filter(x->x.getRatio()!=null).collect(Collectors.toSet());
+        Set<LeaderRatioBO> leaderRatioBO = teamMemberService.getLeader(bo.getUserId(), MARKET_DEPARTMENT).stream().filter(x->x.getRatio()!=null).collect(Collectors.toSet());
         //创建下单人(客户经理)提成记录
         bo = calculator.predictPersonalAmount(bo);
         //创建下单人领导提成记录
@@ -190,7 +196,7 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
 
 
         //更新领导提成记录
-        Set<LeaderRatioBO> leaderRatioBO = userService.getLeaderRatioBO(marketerDetail.getUserId()).stream().filter(x->x.getRatio()!=null).collect(Collectors.toSet());
+        Set<LeaderRatioBO> leaderRatioBO = teamMemberService.getLeader(marketerDetail.getUserId(), MARKET_DEPARTMENT).stream().filter(x->x.getRatio()!=null).collect(Collectors.toSet());
         Set<ItemBrokerageDetail> itemBrokerageDetails = calculator.predictTeamShareAmount(brokerageDetailBO, leaderRatioBO);
         iItemBrokerageDetailService.remove(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getGeneralId,general.getId()).eq(ItemBrokerageDetail::getBrokerageMode,BrokerageMode.TEAM_SHARE.getCode()));
         iItemBrokerageDetailService.saveBatch(itemBrokerageDetails);

+ 14 - 2
service/src/main/java/com/dayou/service/impl/MarketStatServiceImpl.java

@@ -1,9 +1,15 @@
 package com.dayou.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.dayou.common.BaseEntity;
 import com.dayou.dto.MarketStatDTO;
+import com.dayou.entity.Team;
+import com.dayou.entity.TeamMember;
 import com.dayou.mapper.MarketStatMapper;
 import com.dayou.service.IMarketStatService;
+import com.dayou.service.ITeamMemberService;
+import com.dayou.service.ITeamService;
 import com.dayou.service.IUserService;
 import com.dayou.utils.DateUtils;
 import com.dayou.vo.MarketStatVO;
@@ -14,6 +20,7 @@ import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.Date;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 类说明:
@@ -29,7 +36,10 @@ public class MarketStatServiceImpl implements IMarketStatService {
     private MarketStatMapper marketStatMapper;
 
     @Autowired
-    private IUserService userService;
+    private ITeamService teamService;
+
+    @Autowired
+    private ITeamMemberService teamMemberService;
 
     @Override
     public MarketStatVO marketStat(MarketStatDTO dto) {
@@ -58,7 +68,9 @@ public class MarketStatServiceImpl implements IMarketStatService {
 
     @Override
     public BigDecimal currentYearTeamPayment(Long userId) {
-        Set<Long> juniorUserId = userService.getJuniorUserId(userId);
+        Team team = teamService.getOne(new LambdaQueryWrapper<Team>().eq(Team::getSupervisorId, userId).eq(BaseEntity::getDeleted, Boolean.FALSE));
+        Set<Long> juniorUserId = teamMemberService.list(new LambdaQueryWrapper<TeamMember>()
+                .eq(TeamMember::getTeamId,team.getId()).eq(BaseEntity::getDeleted,Boolean.FALSE)).stream().map(TeamMember::getMemberId).collect(Collectors.toSet());
         if (CollectionUtils.isNotEmpty(juniorUserId)){
             return marketStatMapper.currentYearTeamPayment(juniorUserId);
         }

+ 46 - 4
service/src/main/java/com/dayou/service/impl/TeamMemberServiceImpl.java

@@ -1,9 +1,18 @@
 package com.dayou.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.dayou.bo.LeaderRatioBO;
+import com.dayou.dto.TeamLeaderDTO;
+import com.dayou.entity.Team;
 import com.dayou.entity.TeamMember;
 import com.dayou.mapper.TeamMemberMapper;
 import com.dayou.service.ITeamMemberService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.service.IUserService;
+import com.dayou.vo.TeamMemberVO;
+import com.dayou.vo.TeamVO;
+import com.google.common.collect.Sets;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -19,8 +28,10 @@ import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
-import java.util.List;
-import java.util.ArrayList;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
 import org.springframework.transaction.annotation.Transactional;
 import com.dayou.enums.BatchTaskTypeEnum;
 
@@ -35,6 +46,11 @@ import com.dayou.enums.BatchTaskTypeEnum;
 @Service
 public class TeamMemberServiceImpl extends ServiceImpl<TeamMemberMapper, TeamMember> implements ITeamMemberService {
 
+    @Autowired
+    private TeamMemberMapper teamMemberMapper;
+
+    @Autowired
+    private IUserService userService;
 
     @Override
     @SuppressWarnings("unchecked")
@@ -49,8 +65,19 @@ public class TeamMemberServiceImpl extends ServiceImpl<TeamMemberMapper, TeamMem
     }
 
     @Override
-    public Boolean add(TeamMember teamMember){
-        return  this.save(teamMember);
+    public Boolean add(TeamVO teamVO){
+        List<Long> members = teamVO.getMemberIds();
+        Long teamId = teamVO.getId();
+        if (CollectionUtils.isNotEmpty(members) && teamId!=null){
+            Set<TeamMember> teamMembers = members.stream().map(x -> {
+                TeamMember teamMember = new TeamMember();
+                teamMember.setMemberId(x);
+                teamMember.setTeamId(teamId);
+                return teamMember;
+            }).collect(Collectors.toSet());
+            return  this.saveBatch(teamMembers);
+        }
+        return Boolean.FALSE;
     }
 
     @Override
@@ -63,4 +90,19 @@ public class TeamMemberServiceImpl extends ServiceImpl<TeamMemberMapper, TeamMem
         //逻辑删除
         return this.removeById(id);
     }
+
+    @Override
+    public Set<LeaderRatioBO> getLeader(Long userId,String departmentName) {
+        Team leader = teamMemberMapper.getLeader(userId, departmentName);
+        if (leader!=null){
+            Long supervisorId = leader.getSupervisorId();
+            Long cultivateId = leader.getCultivateId();
+            Set<Long> leaderIds = Sets.newHashSet(supervisorId, cultivateId);
+            Set<LeaderRatioBO> set = userService.getLeaderRatioBO(leaderIds);
+            return set;
+        }
+        //如果没有加入团队,则团队领导为营销经理
+        Set<LeaderRatioBO> set = userService.marketManagerRatioBO();
+        return set;
+    }
 }

+ 20 - 0
service/src/main/java/com/dayou/service/impl/TeamServiceImpl.java

@@ -1,9 +1,14 @@
 package com.dayou.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.dayou.entity.Team;
+import com.dayou.entity.TeamMember;
+import com.dayou.exception.ErrorCode;
 import com.dayou.mapper.TeamMapper;
+import com.dayou.service.ITeamMemberService;
 import com.dayou.service.ITeamService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.service.IUserService;
 import com.dayou.vo.TeamVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -23,6 +28,8 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Set;
+
 import org.springframework.transaction.annotation.Transactional;
 import com.dayou.enums.BatchTaskTypeEnum;
 
@@ -40,6 +47,12 @@ public class TeamServiceImpl extends ServiceImpl<TeamMapper, Team> implements IT
     @Autowired
     private TeamMapper teamMapper;
 
+    @Autowired
+    private IUserService userService;
+
+    @Autowired
+    private ITeamMemberService teamMemberService;
+
     @Override
     @SuppressWarnings("unchecked")
     public Page<TeamVO> selectPage(Page page, TeamVO teamVO){
@@ -55,6 +68,11 @@ public class TeamServiceImpl extends ServiceImpl<TeamMapper, Team> implements IT
 
     @Override
     public Boolean add(Team team){
+        Set<Long> departmentIdByUserId = userService.getDepartmentIdByUserId(team.getSupervisorId());
+        if (CollectionUtils.isEmpty(departmentIdByUserId) || departmentIdByUserId.size()!=1){
+            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"该主管存在多个岗位分属不同部门,暂不支持创建团队");
+        }
+        team.setDepartmentId(departmentIdByUserId.stream().findFirst().get());
         return  this.save(team);
     }
 
@@ -63,8 +81,10 @@ public class TeamServiceImpl extends ServiceImpl<TeamMapper, Team> implements IT
         return  this.updateById(team);
     }
 
+    @Transactional
     @Override
     public Boolean delete(Long id){
+        teamMemberService.remove(new LambdaQueryWrapper<TeamMember>().eq(TeamMember::getTeamId,id));
         //逻辑删除
         return this.removeById(id);
     }

+ 25 - 1
service/src/main/java/com/dayou/service/impl/UserServiceImpl.java

@@ -456,10 +456,34 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     }
 
     @Override
-    public Long getDepartmentIdByUserId(Long userId) {
+    public Set<Long> getDepartmentIdByUserId(Long userId) {
         return userMapper.getDepartmentIdByUserId(userId);
     }
 
+    @Override
+    public List<User> simplePostName(String postName) {
+        List<User> list = userMapper.simplePostName(postName);
+        return list;
+    }
+
+    @Override
+    public List<UserVO> listPostName(String postName) {
+        List<UserVO> list = userMapper.listPostName(postName);
+        return list;
+    }
+
+    @Override
+    public Set<LeaderRatioBO> getLeaderRatioBO(Set<Long> leaderIds) {
+        Set<LeaderRatioBO> set = brokeragePostRatioMapper.getLeaderRatioBO(leaderIds);
+        return set;
+    }
+
+    @Override
+    public Set<LeaderRatioBO> marketManagerRatioBO() {
+        Set<LeaderRatioBO> set = brokeragePostRatioMapper.marketManagerRatioBO();
+        return set;
+    }
+
     /**
      * 递归查询下级岗位
      * @param postIds

+ 22 - 4
service/src/main/java/com/dayou/service/impl/UserTargetServiceImpl.java

@@ -1,10 +1,11 @@
 package com.dayou.service.impl;
 
+import com.dayou.common.BaseEntity;
+import com.dayou.entity.Team;
+import com.dayou.entity.TeamMember;
 import com.dayou.entity.UserTarget;
 import com.dayou.mapper.UserTargetMapper;
-import com.dayou.service.IItemBrokerageGeneralService;
-import com.dayou.service.IUserService;
-import com.dayou.service.IUserTargetService;
+import com.dayou.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.utils.LoginContext;
 import com.dayou.vo.UserTargetVO;
@@ -13,6 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.util.CollectionUtils;
+
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -37,6 +40,12 @@ public class UserTargetServiceImpl extends ServiceImpl<UserTargetMapper, UserTar
     private IItemBrokerageGeneralService iItemBrokerageGeneralService;
 
     @Autowired
+    private ITeamMemberService teamMemberService;
+
+    @Autowired
+    private ITeamService teamService;
+
+    @Autowired
     private IUserService userService;
 
     @Override
@@ -84,7 +93,16 @@ public class UserTargetServiceImpl extends ServiceImpl<UserTargetMapper, UserTar
 
     @Override
     public UserTarget getTeamTarget(Long userId) {
-        Set<Long> juniorUserId = userService.getJuniorUserId(userId);
+        Set<Long> juniorUserId = new HashSet<>();
+        Team team = teamService.getOne(new LambdaQueryWrapper<Team>().eq(Team::getSupervisorId, userId).eq(BaseEntity::getDeleted, Boolean.FALSE));
+        //当team为空时,则userId代表营销经理
+        if (team!=null){
+            juniorUserId = teamMemberService.list(new LambdaQueryWrapper<TeamMember>()
+                    .eq(TeamMember::getTeamId,team.getId()).eq(BaseEntity::getDeleted,Boolean.FALSE)).stream().map(TeamMember::getMemberId).collect(Collectors.toSet());
+        }else {
+            juniorUserId = userService.getJuniorUserId(userId);
+        }
+
         UserTarget userTarget = new UserTarget();
         userTarget.setUserId(userId);
         if (!CollectionUtils.isEmpty(juniorUserId)){