package com.ydtech.modules.admin.utils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydtech.modules.admin.dao.KztDataPermissionMapper; import com.ydtech.modules.admin.dao.SysUserDeptRelationshipMapper; import com.ydtech.modules.admin.dao.SysUserMapper; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.model.po.KztDataPermission; import com.ydtech.modules.admin.model.po.SysUserDeptRelationship; import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel; import com.ydtech.modules.admin.model.vo.KztGetDeptUtilsDto; import com.ydtech.modules.admin.service.SysUserService; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.esm.service.EsmUserReferrerService; import com.ydtech.utils.StringUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @Component public class KztGetDeptUtils { @Autowired private SysUserDeptRelationshipMapper sysUserDeptRelationshipMapper; @Autowired private KztDataPermissionMapper kztDataPermissionMapper; @Autowired private SysUserService sysUserService; @Autowired private EsmUserReferrerService esmUserReferrerService; public KztGetDeptUtilsDto KztGetDeptIds(String requestURL) { try { ApplicationContext applicationContext = SpringContextUtil.getApplicationContext(); SysUserDeptRelationshipMapper userDeptMapper = applicationContext.getBean(SysUserDeptRelationshipMapper.class); KztDataPermissionMapper dataPermissionMapper = applicationContext.getBean(KztDataPermissionMapper.class); URI uri = new URI(requestURL); String path = uri.getPath(); KztDataPermission kztDataPermissions = dataPermissionMapper.selectOne(new QueryWrapper().eq("url", path)); if (kztDataPermissions != null) { String userId = BaseController.getUserId(); String userName = BaseController.getUserName(); if(!"admin".equals(userName)){ String dataPermissionId = kztDataPermissions.getDataPermissionId(); KztGetDeptUtilsDto resultDto = handleDataPermission(userId, dataPermissionId, userDeptMapper); return resultDto; } } } catch (URISyntaxException e) { // 可以选择抛出自定义异常或记录更详细的日志 e.printStackTrace(); } return new KztGetDeptUtilsDto(); // 返回一个空的DTO或设置默认值的DTO } private KztGetDeptUtilsDto handleDataPermission(String userId, String dataPermissionId, SysUserDeptRelationshipMapper userDeptMapper) { KztGetDeptUtilsDto resultDto = new KztGetDeptUtilsDto(); if ("1".equals(dataPermissionId)) { List relationships = userDeptMapper.selectList(new QueryWrapper().eq("user_id", userId)); if (!relationships.isEmpty()) { List deptIds = relationships.stream().map(SysUserDeptRelationship::getDeptId).collect(Collectors.toList()); resultDto.setIds(deptIds); resultDto.setType("1"); } } else if ("3".equals(dataPermissionId)) { ApplicationContext applicationContext = SpringContextUtil.getApplicationContext(); EsmUserReferrerService dataPermissionMapper = applicationContext.getBean(EsmUserReferrerService.class); // List ids = new ArrayList<>(); // List userList = dataPermissionMapper.getUpUser(userId,ids); // 假设此方法直接返回用户列表 List ids = new ArrayList<>(); List userList = this.getUserTreeHx(userId, ids); userList.add(userId); //添加本人 if (!userList.isEmpty()) { resultDto.setIds(userList); resultDto.setType("2"); } } return resultDto; } private List getUserTreeHx(String userId, List ids) { ApplicationContext applicationContext = SpringContextUtil.getApplicationContext(); SysUserMapper sysUserMapper = applicationContext.getBean(SysUserMapper.class); sysUserMapper.selectUserById(userId); List sysUsers = sysUserMapper.selectByLeadId(userId); if (!sysUsers.isEmpty()) { ids.addAll(sysUsers.stream().map(SysUser::getId).collect(Collectors.toList())); } for (SysUser sysUser : sysUsers) { this.getUserTreeHx(sysUser.getId(), ids); } return ids; } }