系统变量增加组权限管理
This commit is contained in:
		
							parent
							
								
									d0da908ea7
								
							
						
					
					
						commit
						9173b256fa
					
				@ -72,6 +72,12 @@ public class GroupConfigController {
 | 
			
		||||
        return groupConfigService.getAllGroupConfigList(namespaceIds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @LoginRequired
 | 
			
		||||
    @PostMapping("/all/group/list")
 | 
			
		||||
    public List<GroupConfigResponseVO> getAllGroupList() {
 | 
			
		||||
        return groupConfigService.getAllGroupList();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @LoginRequired
 | 
			
		||||
    @GetMapping("/all/group-name/list")
 | 
			
		||||
    public List<String> getAllGroupNameList() {
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,8 @@ import jakarta.validation.constraints.NotNull;
 | 
			
		||||
import jakarta.validation.constraints.Size;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class SystemVariableRequestVO {
 | 
			
		||||
 | 
			
		||||
@ -27,4 +29,6 @@ public class SystemVariableRequestVO {
 | 
			
		||||
 | 
			
		||||
    @Size(max = 256, message = "描述长度不能超过256个字符")
 | 
			
		||||
    private String description;
 | 
			
		||||
 | 
			
		||||
    private List<UserPermissionRequestVO> permissions;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ package com.aizuda.snailjob.server.web.model.response;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class SystemVariableResponseVO {
 | 
			
		||||
@ -24,6 +25,8 @@ public class SystemVariableResponseVO {
 | 
			
		||||
 | 
			
		||||
    private String description;
 | 
			
		||||
 | 
			
		||||
    private List<PermissionsResponseVO> permissions;
 | 
			
		||||
 | 
			
		||||
    private LocalDateTime createDt;
 | 
			
		||||
 | 
			
		||||
    private LocalDateTime updateDt;
 | 
			
		||||
 | 
			
		||||
@ -43,4 +43,7 @@ public interface GroupConfigService {
 | 
			
		||||
    boolean deleteByGroupName(String groupName);
 | 
			
		||||
 | 
			
		||||
    Map<String, GroupConfigResponseVO> getGroupNameCns(Set<String> uniqueGroupNames);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    List<GroupConfigResponseVO> getAllGroupList();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -254,6 +254,14 @@ public class GroupConfigServiceImpl implements GroupConfigService {
 | 
			
		||||
        return groupConfigResponses;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<GroupConfigResponseVO> getAllGroupList() {
 | 
			
		||||
        UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
 | 
			
		||||
        List<String> namespaceIds = new ArrayList<>();
 | 
			
		||||
        namespaceIds.add(userSessionVO.getNamespaceId());
 | 
			
		||||
        return  getAllGroupConfigList(namespaceIds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<String> getAllGroupNameList() {
 | 
			
		||||
 | 
			
		||||
@ -266,7 +274,7 @@ public class GroupConfigServiceImpl implements GroupConfigService {
 | 
			
		||||
        List<GroupConfig> groupConfigs = groupConfigAccess.list(new LambdaQueryWrapper<GroupConfig>()
 | 
			
		||||
                .eq(GroupConfig::getNamespaceId, userSessionVO.getNamespaceId())
 | 
			
		||||
                .select(GroupConfig::getGroupName));
 | 
			
		||||
 | 
			
		||||
    //TODO ?
 | 
			
		||||
        return StreamUtils.toList(groupConfigs, GroupConfig::getGroupName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,9 @@ import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
 | 
			
		||||
import com.aizuda.snailjob.server.web.model.base.PageResult;
 | 
			
		||||
import com.aizuda.snailjob.server.web.model.request.SystemVariableQueryVO;
 | 
			
		||||
import com.aizuda.snailjob.server.web.model.request.SystemVariableRequestVO;
 | 
			
		||||
import com.aizuda.snailjob.server.web.model.request.UserPermissionRequestVO;
 | 
			
		||||
import com.aizuda.snailjob.server.web.model.request.UserSessionVO;
 | 
			
		||||
import com.aizuda.snailjob.server.web.model.response.PermissionsResponseVO;
 | 
			
		||||
import com.aizuda.snailjob.server.web.model.response.SystemVariableResponseVO;
 | 
			
		||||
import com.aizuda.snailjob.server.web.service.SystemVariableService;
 | 
			
		||||
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
 | 
			
		||||
@ -21,10 +23,9 @@ import org.springframework.beans.BeanUtils;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Objects;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import java.util.stream.Stream;
 | 
			
		||||
 | 
			
		||||
@Service
 | 
			
		||||
@RequiredArgsConstructor
 | 
			
		||||
@ -54,14 +55,24 @@ public class SystemVariableServiceImpl implements SystemVariableService {
 | 
			
		||||
        systemVariable.setSystemUserId(userSession.getId());
 | 
			
		||||
        systemVariable.setNamespaceId(userSession.getNamespaceId());
 | 
			
		||||
        // 设置 groupNames
 | 
			
		||||
        if (userSession.isAdmin()) {
 | 
			
		||||
            // admin用户创建的变量,设置为空或特殊标识,表示所有组都可见
 | 
			
		||||
//        if (userSession.isAdmin()) {
 | 
			
		||||
//            // admin用户创建的变量,设置为空或特殊标识,表示所有组都可见
 | 
			
		||||
//            systemVariable.setGroupNames("");
 | 
			
		||||
//        } else {
 | 
			
		||||
//            // 普通用户创建的变量,存储用户所属的组名
 | 
			
		||||
//            List<String> userGroupNames = userSession.getGroupNames();
 | 
			
		||||
//            systemVariable.setGroupNames(String.join(",", userGroupNames));
 | 
			
		||||
//        }
 | 
			
		||||
        // 增加组权限管理++
 | 
			
		||||
        List<UserPermissionRequestVO> groupNameList = requestVO.getPermissions();
 | 
			
		||||
        if (CollUtil.isEmpty(groupNameList)) {
 | 
			
		||||
            systemVariable.setGroupNames("");
 | 
			
		||||
        } else {
 | 
			
		||||
            // 普通用户创建的变量,存储用户所属的组名
 | 
			
		||||
            List<String> userGroupNames = userSession.getGroupNames();
 | 
			
		||||
            systemVariable.setGroupNames(String.join(",", userGroupNames));
 | 
			
		||||
        }
 | 
			
		||||
        String groupNames = groupNameList.stream()
 | 
			
		||||
                .map(UserPermissionRequestVO::getGroupName)
 | 
			
		||||
                .collect(Collectors.joining(","));
 | 
			
		||||
 | 
			
		||||
        systemVariable.setGroupNames(groupNames);
 | 
			
		||||
 | 
			
		||||
        Assert.isTrue(1 == systemVariableMapper.insert(systemVariable),
 | 
			
		||||
                () -> new SnailJobServerException("添加系统变量失败"));
 | 
			
		||||
@ -96,6 +107,16 @@ public class SystemVariableServiceImpl implements SystemVariableService {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        List<UserPermissionRequestVO> groupNameList = requestVO.getPermissions();
 | 
			
		||||
        if (CollUtil.isEmpty(groupNameList)) {
 | 
			
		||||
            existingVariable.setGroupNames("");
 | 
			
		||||
        }
 | 
			
		||||
        String groupNames = groupNameList.stream()
 | 
			
		||||
                .map(UserPermissionRequestVO::getGroupName)
 | 
			
		||||
                .collect(Collectors.joining(","));
 | 
			
		||||
 | 
			
		||||
        existingVariable.setGroupNames(groupNames);
 | 
			
		||||
 | 
			
		||||
        BeanUtils.copyProperties(requestVO, existingVariable);
 | 
			
		||||
        Assert.isTrue(1 == systemVariableMapper.updateById(existingVariable),
 | 
			
		||||
                () -> new SnailJobServerException("更新系统变量失败"));
 | 
			
		||||
@ -148,7 +169,7 @@ public class SystemVariableServiceImpl implements SystemVariableService {
 | 
			
		||||
                    w.or().like(SystemVariable::getGroupNames, groupName);
 | 
			
		||||
                }
 | 
			
		||||
                // admin创建的变量(通过查询admin用户ID)
 | 
			
		||||
                w.or().exists("SELECT 1 FROM sj_system_user su WHERE su.id = sj_system_variable.system_user_id AND su.role = 2");
 | 
			
		||||
//                w.or().exists("SELECT 1 FROM sj_system_user su WHERE su.id = sj_system_variable.system_user_id AND su.role = 2");
 | 
			
		||||
//                return w;
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
@ -160,6 +181,11 @@ public class SystemVariableServiceImpl implements SystemVariableService {
 | 
			
		||||
                .map(this::convertToResponseVO)
 | 
			
		||||
                .toList();
 | 
			
		||||
 | 
			
		||||
        responseList.forEach(vo -> {
 | 
			
		||||
            if(vo.getGroupNames() != null) {
 | 
			
		||||
                vo.setPermissions(safeConvert(vo.getGroupNames(),vo.getNamespaceId()));
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        return new PageResult<>(pageDTO, responseList);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -246,4 +272,20 @@ public class SystemVariableServiceImpl implements SystemVariableService {
 | 
			
		||||
        BeanUtils.copyProperties(systemVariable, responseVO);
 | 
			
		||||
        return responseVO;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static List<PermissionsResponseVO> safeConvert(String namesStr, String namespaceId) {
 | 
			
		||||
        return Optional.ofNullable(namesStr)
 | 
			
		||||
                .map(str -> Arrays.stream(str.split(",")))
 | 
			
		||||
                .orElseGet(Stream::empty)
 | 
			
		||||
                .filter(name -> !name.trim().isEmpty())
 | 
			
		||||
                .map(name -> {
 | 
			
		||||
                    PermissionsResponseVO vo = new PermissionsResponseVO();
 | 
			
		||||
                    vo.setGroupName(name.trim());
 | 
			
		||||
                    vo.setNamespaceId(namespaceId);
 | 
			
		||||
                    vo.setNamespaceName(name.trim());
 | 
			
		||||
                    // 可设置其他默认字段值
 | 
			
		||||
                    return vo;
 | 
			
		||||
                })
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user