From 022a7ff7abf82cd2546e18071ade5228b4e2339f Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 08 七月 2024 14:07:49 +0800 Subject: [PATCH] 管理后台营销员列表职级展示问题修改 --- meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserRelationServiceImpl.java | 116 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 95 insertions(+), 21 deletions(-) diff --git a/meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserRelationServiceImpl.java b/meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserRelationServiceImpl.java index 68ad142..b18fa11 100644 --- a/meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserRelationServiceImpl.java +++ b/meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserRelationServiceImpl.java @@ -4,19 +4,21 @@ import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.google.common.collect.Lists; import com.sinata.common.enums.EnumMemberGrade; import com.sinata.modular.member.dao.MemUserRelationMapper; import com.sinata.modular.member.model.MemUser; import com.sinata.modular.member.model.MemUserRelation; import com.sinata.modular.member.service.IMemUserRelationService; import com.sinata.modular.member.service.IMemUserService; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.function.Function; import java.util.stream.Collectors; +import javax.annotation.Resource; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.stereotype.Service; /** * <p> @@ -158,31 +160,103 @@ } return array; } - private void findParents(MemUser user, String[] pathArray, MemUser[] array) { - if (user != null) { - Integer memberGradeId = user.getMemberGradeId(); + + private void findParents(MemUser parent, String[] pathArray, MemUser[] array) { + if (parent != null) { + List<MemUser> memUserList = memUserService.selectList(null); + Integer memberGradeId = parent.getMemberGradeId(); if (memberGradeId == EnumMemberGrade.G_3.index) { String grandParentId = pathArray[pathArray.length - 3]; MemUser grandParent = memUserService.selectById(grandParentId); - if (grandParent != null && grandParent.getMemberGradeId() == EnumMemberGrade.G_4.index) { - array[0] = grandParent; - String greatGrandParentId = pathArray[pathArray.length - 3]; - MemUser greatGrandParent = memUserService.selectById(greatGrandParentId); - if (greatGrandParent != null && greatGrandParent.getMemberGradeId() == EnumMemberGrade.G_5.index) { - array[1] = greatGrandParent; - } - } + memUserList.stream().filter(u -> u.getId().equals(Integer.valueOf(grandParentId))) + .findFirst().ifPresent(p -> { + if (grandParent.getMemberGradeId() == EnumMemberGrade.G_4.index) { + array[0] = grandParent; + String greatGrandParentId = pathArray[pathArray.length - 3]; + MemUser greatGrandParent = memUserService.selectById(greatGrandParentId); + if (greatGrandParent != null && greatGrandParent.getMemberGradeId() + == EnumMemberGrade.G_5.index) { + array[1] = greatGrandParent; + } + } + }); + } else if (memberGradeId == EnumMemberGrade.G_4.index) { - array[0] = user; + array[0] = parent; String parentId = pathArray[pathArray.length - 3]; - MemUser parent = memUserService.selectById(parentId); - if (parent != null && parent.getMemberGradeId() == EnumMemberGrade.G_5.index) { - array[1] = parent; + MemUser grandParent = memUserService.selectById(parentId); + if (grandParent != null + && grandParent.getMemberGradeId() == EnumMemberGrade.G_5.index) { + array[1] = grandParent; } } else if (memberGradeId == EnumMemberGrade.G_5.index) { - array[0] = user; - array[1] = user; + array[0] = parent; + array[1] = parent; } } } + + @Override + public MemUser[] getParentV4V5ByRelationPath3(Integer id, + Map<Integer, Integer> userRelationMap) { + MemUser[] array = new MemUser[]{null, null}; + MemUser memUser = memUserService.selectById(id); + List<MemUser> userList = memUserService.selectList(new EntityWrapper<MemUser>() + .setSqlSelect("id, show_id, nick_name, real_name, member_grade_id") + .in("member_grade_id", + Lists.newArrayList(EnumMemberGrade.G_3.index, EnumMemberGrade.G_4.index, + EnumMemberGrade.G_5.index))); + Map<Integer, MemUser> userMap = userList.stream() + .collect(Collectors.toMap(u -> u.getId(), Function.identity())); + Integer parentId = userRelationMap.get(id); + if (memUser.getMemberGradeId() == EnumMemberGrade.G_5.index) { + array[0] = memUser; + array[1] = memUser; + } + MemUser memUserG5 = getUserByParentId(parentId, EnumMemberGrade.G_5.index, userMap, + userRelationMap); + if (memUser.getMemberGradeId() == EnumMemberGrade.G_4.index) { + array[0] = memUser; + array[1] = memUserG5; + } + if (memUser.getMemberGradeId() == EnumMemberGrade.G_3.index) { + MemUser memUserG4 = getUserByParentId(parentId, EnumMemberGrade.G_4.index, userMap, + userRelationMap); + if (Objects.isNull(memUserG4)) { + array[0] = memUserG5; + array[1] = memUserG5; + } else { + array[0] = memUserG4; + array[1] = memUserG5; + } + } + return array; + } + + /** + * @param parentId 父id + * @param level 需要获取职级 + * @param userMap 用户列表 + * @param userRelationMap 用户关系列表 + * @return + */ + private MemUser getUserByParentId(Integer parentId, Integer level, + Map<Integer, MemUser> userMap, + Map<Integer, Integer> userRelationMap) { + MemUser memUser = userMap.get(parentId); + if (memUser == null) { + return null; + } + if (memUser.getMemberGradeId().equals(level)) { + return memUser; + } + + Integer nextParentId = userRelationMap.get(memUser.getId()); + if (nextParentId == null || nextParentId.equals(parentId)) { + return null; // 如果 nextParentId 是 null 或导致循环,返回 null 终止递归 + } + + return getUserByParentId(nextParentId, level, userMap, userRelationMap); + } + } -- Gitblit v1.7.1