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/dao/mapping/MemUserMapper.xml | 4 meiya-admin/src/main/java/com/sinata/modular/member/service/IMemUserRelationService.java | 2 meiya-admin/src/main/java/com/sinata/modular/member/controller/MemUserSalesController.java | 119 +++++++++++++++++------ meiya-rest/src/main/resources/cert/scs1716859795712_m.mymtmy.com_server.pfx | 0 meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserRelationServiceImpl.java | 116 +++++++++++++++++++---- 5 files changed, 186 insertions(+), 55 deletions(-) diff --git a/meiya-admin/src/main/java/com/sinata/modular/member/controller/MemUserSalesController.java b/meiya-admin/src/main/java/com/sinata/modular/member/controller/MemUserSalesController.java index fe11369..346bfdd 100644 --- a/meiya-admin/src/main/java/com/sinata/modular/member/controller/MemUserSalesController.java +++ b/meiya-admin/src/main/java/com/sinata/modular/member/controller/MemUserSalesController.java @@ -3,14 +3,16 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.poi.excel.ExcelReader; -import cn.hutool.poi.excel.ExcelUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.enums.SqlLike; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; -import com.sinata.common.enums.*; +import com.sinata.common.enums.EnumAuditState; +import com.sinata.common.enums.EnumCityRole; +import com.sinata.common.enums.EnumIsDelete; +import com.sinata.common.enums.EnumIsSystemNotice; +import com.sinata.common.enums.EnumMemberGrade; import com.sinata.common.enums.mall.EnumMallGoodsGroupType; import com.sinata.common.enums.mall.EnumMallOrderState; import com.sinata.core.base.controller.BaseController; @@ -19,8 +21,6 @@ import com.sinata.core.common.annotion.BussinessLog; import com.sinata.core.common.annotion.Permission; import com.sinata.core.common.constant.factory.PageFactory; -import com.sinata.core.common.exception.BizExceptionEnum; -import com.sinata.core.exception.GunsException; import com.sinata.core.shiro.ShiroKit; import com.sinata.core.shiro.ShiroUser; import com.sinata.core.util.Convert; @@ -40,10 +40,16 @@ import com.sinata.modular.system.service.ISystemNoticeService; import com.sinata.modular.system.service.ITCityRegionService; import java.io.IOException; -import java.net.URLEncoder; -import javax.servlet.ServletOutputStream; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; +import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -52,11 +58,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; - -import javax.servlet.http.HttpServletResponse; -import java.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; import org.springframework.web.multipart.MultipartFile; /** @@ -201,15 +202,20 @@ List<MemUser> v4UserList = memUserService.getUserListByGrade(EnumMemberGrade.G_4.index); List<MemUser> v5UserList = memUserService.getUserListByGrade(EnumMemberGrade.G_5.index); - + List<MemUserRelation> userRelationList = memUserRelationService.selectList(null); + Map<Integer, Integer> userRelationMap = userRelationList.stream().collect(Collectors + .toMap(u -> u.getId(), p -> p.getParentId())); // 封装数据 - for (Map<String, Object> map : list) { - map.put("cityCode", - cityRegionService.getProvinceCityCountyNameByAll(cityAll, Convert.toStr(map.get("agent_county_code"))).stream() + /* for (Map<String, Object> map : list) { + map.put("cityCode", + cityRegionService.getProvinceCityCountyNameByAll(cityAll, + Convert.toStr(map.get("agent_county_code"))).stream() .map(TCityRegion::getName) .collect(Collectors.joining("-")) ); - map.put("audit_time", DateUtil.format(DateUtil.parse(Convert.toStr(map.get("audit_time"))), "yyyy-MM-dd")); + map.put("audit_time", + DateUtil.format(DateUtil.parse(Convert.toStr(map.get("audit_time"))), + "yyyy-MM-dd")); // // 权益人信息 // MemUser equityUser = equityUserUserList.stream().filter(o -> { @@ -241,27 +247,30 @@ }).findFirst().orElse(new MemUser()); map.put("equityUserShowId", parentUser.getShowId()); map.put("equityUserRealName", parentUser.getRealName()); - map.put("equityUserCityCode", cityRegionService.getProvinceCityCountyNameByAll(cityAll, parentUser.getCityCode()).stream() + map.put("equityUserCityCode", cityRegionService.getProvinceCityCountyNameByAll(cityAll, + parentUser.getCityCode()).stream() .map(TCityRegion::getName) .collect(Collectors.joining("-"))); // 用户等级 - Integer userMemberGradeId = map.get("member_grade_id") == null ? null : (Integer) map.get("member_grade_id"); + Integer userMemberGradeId = map.get("member_grade_id") == null ? null + : (Integer) map.get("member_grade_id"); // 查询上级城市合伙人、市场总监信息 - MemUser[] parentV4V5User = memUserRelationService.getParentV4V5ByRelationPath2( + MemUser[] parentV4V5User = memUserRelationService.getParentV4V5ByRelationPath2( map.get("relation_path") == null ? null : map.get("relation_path").toString(), userMemberGradeId ); - if (parentV4V5User[0] != null) { - map.put("v4ShowId", parentV4V5User[0].getShowId()); - map.put("v4Team", parentV4V5User[0].getRealName()); - } - if (parentV4V5User[1] != null) { - map.put("v5ShowId", parentV4V5User[1].getShowId()); - map.put("v5Team", parentV4V5User[1].getRealName()); - } - // 本人是城市合伙人或市场总监时,城市合伙人工号/团队、市场总监工号/团队,显示本人的信息 + if (parentV4V5User[0] != null) { + map.put("v4ShowId", parentV4V5User[0].getShowId()); + map.put("v4Team", parentV4V5User[0].getRealName()); + } + if (parentV4V5User[1] != null) { + map.put("v5ShowId", parentV4V5User[1].getShowId()); + map.put("v5Team", parentV4V5User[1].getRealName()); + } + + // 本人是城市合伙人或市场总监时,城市合伙人工号/团队、市场总监工号/团队,显示本人的信息 if (userMemberGradeId == EnumMemberGrade.G_4.index) { map.put("v4ShowId", map.get("show_id")); map.put("v4Team", map.get("real_name")); @@ -273,8 +282,54 @@ map.put("v5ShowId", map.get("show_id")); map.put("v5Team", map.get("real_name")); } - } - return list; + }*/ + List<Map<String, Object>> result = list.stream().peek(map -> { + map.put("cityCode", + cityRegionService.getProvinceCityCountyNameByAll(cityAll, + Convert.toStr(map.get("agent_county_code"))).stream() + .map(TCityRegion::getName) + .collect(Collectors.joining("-")) + ); + map.put("audit_time", + DateUtil.format(DateUtil.parse(Convert.toStr(map.get("audit_time"))), + "yyyy-MM-dd")); + // 推荐人信息 + Integer[] parentUserId = new Integer[]{0}; + for (MemUserRelation ur : parentUserRelationList) { + if (ur.getId().equals(Convert.toInt(map.get("id")))) { + parentUserId[0] = ur.getParentId(); + break; + } + } + MemUser parentUser = parentUserList.stream().filter(o -> { + if (o.getId().equals(parentUserId[0])) { + return true; + } + return false; + }).findFirst().orElse(new MemUser()); + map.put("equityUserShowId", parentUser.getShowId()); + map.put("equityUserRealName", parentUser.getRealName()); + map.put("equityUserCityCode", cityRegionService.getProvinceCityCountyNameByAll(cityAll, + parentUser.getCityCode()).stream() + .map(TCityRegion::getName) + .collect(Collectors.joining("-"))); + + // 用户等级 + Integer userMemberGradeId = map.get("member_grade_id") == null ? null + : (Integer) map.get("member_grade_id"); + // 查询上级城市合伙人、市场总监信息 + MemUser[] parentV4V5User = memUserRelationService.getParentV4V5ByRelationPath3( + Integer.valueOf(map.get("id").toString()), userRelationMap); + if (parentV4V5User[0] != null) { + map.put("v4ShowId", parentV4V5User[0].getShowId()); + map.put("v4Team", parentV4V5User[0].getRealName()); + } + if (parentV4V5User[1] != null) { + map.put("v5ShowId", parentV4V5User[1].getShowId()); + map.put("v5Team", parentV4V5User[1].getRealName()); + } + }).collect(Collectors.toList()); + return result; } /** diff --git a/meiya-admin/src/main/java/com/sinata/modular/member/dao/mapping/MemUserMapper.xml b/meiya-admin/src/main/java/com/sinata/modular/member/dao/mapping/MemUserMapper.xml index ab1eb16..e277d7e 100644 --- a/meiya-admin/src/main/java/com/sinata/modular/member/dao/mapping/MemUserMapper.xml +++ b/meiya-admin/src/main/java/com/sinata/modular/member/dao/mapping/MemUserMapper.xml @@ -55,7 +55,7 @@ <select id="getMapList" resultType="java.util.Map"> SELECT o.*, - ur.relation_path + ur.relation_path,ur.parent_id FROM mem_user o LEFT JOIN mem_user_relation ur ON ur.id = o.id @@ -67,7 +67,7 @@ <select id="getMapListAuth" resultType="java.util.Map"> SELECT o.*, - ur.relation_path + ur.relation_path,ur.parent_id FROM mem_user o LEFT JOIN mem_user_relation ur ON ur.id = o.id diff --git a/meiya-admin/src/main/java/com/sinata/modular/member/service/IMemUserRelationService.java b/meiya-admin/src/main/java/com/sinata/modular/member/service/IMemUserRelationService.java index de90cec..facab9e 100644 --- a/meiya-admin/src/main/java/com/sinata/modular/member/service/IMemUserRelationService.java +++ b/meiya-admin/src/main/java/com/sinata/modular/member/service/IMemUserRelationService.java @@ -54,4 +54,6 @@ MemUser[] getParentV4V5ByRelationPath(List<MemUser> v4UserList, List<MemUser> v5UserList, String relationPath, Integer memberGradeId); MemUser[] getParentV4V5ByRelationPath2(String relationPath, Integer memberGradeId); + + MemUser[] getParentV4V5ByRelationPath3(Integer id,Map<Integer, Integer> userRelationMap); } 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); + } + } diff --git a/meiya-rest/src/main/resources/cert/scs1716859795712_m.mymtmy.com_server.pfx b/meiya-rest/src/main/resources/cert/scs1716859795712_m.mymtmy.com_server.pfx new file mode 100644 index 0000000..d3d3bd1 --- /dev/null +++ b/meiya-rest/src/main/resources/cert/scs1716859795712_m.mymtmy.com_server.pfx Binary files differ -- Gitblit v1.7.1