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) { /* for (Map<String, Object> map : list) { map.put("cityCode", cityRegionService.getProvinceCityCountyNameByAll(cityAll, Convert.toStr(map.get("agent_county_code"))).stream() 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,17 +247,20 @@ }).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( 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()); @@ -273,8 +282,54 @@ map.put("v5ShowId", map.get("show_id")); map.put("v5Team", map.get("real_name")); } }*/ 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; } return list; } 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; } /** 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 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); } 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) { 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) { 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); } } meiya-rest/src/main/resources/cert/scs1716859795712_m.mymtmy.com_server.pfxBinary files differ