zj
2024-08-29 6b474dc54cae5d6c8a06dd72c2462faaaeb5fe42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package security.internal;
 
import java.util.List;
import java.util.stream.Collectors;
 
import kernel.web.ApplicationUtil;
import security.Resource;
import security.ResourceService;
import security.Role;
 
public class ResourceServiceImpl implements ResourceService{
 
    @Override
    public Resource get(String id) {
        return bindRole(ApplicationUtil.executeGet(id, Resource.class));
    }
    
    public List<Resource> getByIds(List<String> idList) {
        String whereSubStatement=idList.stream().map(id->"'"+id+"'").collect(Collectors.joining(",","WHERE UUID IN(",")"));
        List<Resource> list=ApplicationUtil.executeSelect(Resource.class,whereSubStatement,null);
        for(int i=0;i<list.size();bindRole(list.get(i++)));
        return list;
    }
    
    /**
     * 绑定角色到资源
     * @param resource 资源对象
     * @return 资源对象
     */
    public static final Resource bindRole(Resource resource) {
        if(null==resource) return null;
        String whereSubStatement="WHERE UUID IN(SELECT ROLE_UUID FROM SCT_ROLE_RESOURCE WHERE RESOURCE_UUID=?)";
        List<Role> roleList=ApplicationUtil.executeSelect(Role.class,whereSubStatement,new Object[] {resource.getId()});
        if(null!=roleList && !roleList.isEmpty()) resource.setRoles(roleList.stream().filter(role->null!=role).collect(Collectors.toSet()));
        return resource;
    }
}