mitao
2024-07-08 022a7ff7abf82cd2546e18071ade5228b4e2339f
管理后台营销员列表职级展示问题修改
4个文件已修改
1个文件已添加
241 ■■■■ 已修改文件
meiya-admin/src/main/java/com/sinata/modular/member/controller/MemUserSalesController.java 119 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
meiya-admin/src/main/java/com/sinata/modular/member/dao/mapping/MemUserMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
meiya-admin/src/main/java/com/sinata/modular/member/service/IMemUserRelationService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserRelationServiceImpl.java 116 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
meiya-rest/src/main/resources/cert/scs1716859795712_m.mymtmy.com_server.pfx 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
    /**
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) {
                    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);
    }
}
meiya-rest/src/main/resources/cert/scs1716859795712_m.mymtmy.com_server.pfx
Binary files differ