package jnpf.permission.util; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import jnpf.base.entity.SuperBaseEntity; 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 org.springframework.beans.factory.annotation.Autowired; 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 public class UserUtil { @Autowired private UserMapper userMapper; @Autowired private PositionMapper positionMapper; @Autowired private UserRelationMapper userRelationMapper; @Autowired private NoticeApi noticeApi; public List getUserProgeny(List idList, String enableMark) { //查询用户子孙下级。不包含当前岗位的用户 if (CollectionUtil.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, String enableMark) { if (CollectionUtil.isEmpty(idList)) return new ArrayList<>(); List byParentIds = positionMapper.getListByParentIds(idList); return getUserEntities(byParentIds); } private List getUserEntities(List byParentIds) { if (CollectionUtil.isEmpty(byParentIds)) return new ArrayList<>(); List listByObjectIdAll = userRelationMapper.getListByObjectIdAll(byParentIds.stream() .map(SuperBaseEntity.SuperIBaseEntity::getId).collect(Collectors.toList())); return userMapper.getUserList(listByObjectIdAll.stream() .map(UserRelationEntity::getUserId).collect(Collectors.toList())); } public Boolean delCurUser(String message, List userIds) { if (userIds.isEmpty()) { return true; } Map objectMap = new HashMap<>(); objectMap.put("message", message); objectMap.put("ids", userIds); noticeApi.sendMessage(objectMap); return true; } public void majorStandFreshUser() { noticeApi.majorStandFreshUser(); } public Boolean logoutUser(String message, List userIds) { if (userIds.isEmpty()) { return true; } //用户不强制下线 Map objectMap = new HashMap<>(); objectMap.put("message", message); objectMap.put("ids", userIds); noticeApi.logoutUser(objectMap); return true; } }