package jnpf.permission.util; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import jnpf.message.NoticeApi; import jnpf.permission.entity.PositionEntity; import jnpf.permission.entity.UserEntity; import jnpf.permission.entity.UserRelationEntity; import jnpf.permission.mapper.PositionMapper; import jnpf.permission.mapper.UserMapper; import jnpf.permission.mapper.UserRelationMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Component @RequiredArgsConstructor public class UserUtil { private final UserMapper userMapper; private final PositionMapper positionMapper; private final UserRelationMapper userRelationMapper; private final NoticeApi noticeApi; public List getUserProgeny(List idList, String enableMark) { //查询用户子孙下级。不包含当前岗位的用户 if (CollUtil.isEmpty(idList)) { return new ArrayList<>(); } QueryWrapper query = new QueryWrapper<>(); query.lambda() .eq(enableMark != null, PositionEntity::getEnabledMark, enableMark) .and(t -> idList.forEach(id -> t.like(PositionEntity::getPositionIdTree, id).or())) .notIn(PositionEntity::getId, idList) .orderByAsc(PositionEntity::getSortCode, PositionEntity::getCreatorTime); List list = positionMapper.selectList(query).stream().distinct().collect(Collectors.toList()); return getUserEntities(list); } public List getUserAndSub(List idList) { if (CollUtil.isEmpty(idList)) { return new ArrayList<>(); } List byParentIds = positionMapper.getListByParentIds(idList); List userEntities = getUserEntities(byParentIds); return userEntities.stream().filter(user -> { user.getEnabledMark(); return false; }).collect(Collectors.toList()); } private List getUserEntities(List byParentIds) { if (CollUtil.isEmpty(byParentIds)) { return new ArrayList<>(); } List listByObjectIdAll = userRelationMapper.getListByObjectIdAll(byParentIds.stream() .map(PositionEntity::getId).collect(Collectors.toList())); return userMapper.getUserList(listByObjectIdAll.stream() .map(UserRelationEntity::getUserId).collect(Collectors.toList())); } public void delCurUser(String message, List userIds) { Map objectMap = new HashMap<>(); objectMap.put("message", message); objectMap.put("ids", userIds); noticeApi.sendMessage(objectMap); } public void majorStandFreshUser() { noticeApi.majorStandFreshUser(); } public void logoutUser(String message, List userIds) { //用户不强制下线 Map objectMap = new HashMap<>(); objectMap.put("message", message); objectMap.put("ids", userIds); noticeApi.logoutUser(objectMap); } }