Browse Source

权限接口

yufeng0528 4 years ago
parent
commit
c8dc45bb01

+ 2 - 1
spring5-admin/src/main/java/com/yaozhitech/spring5/controller/ResourceController.java

@@ -14,7 +14,8 @@ import org.springframework.web.bind.annotation.RestController;
14 14
  * @since 2019-12-15
15 15
  */
16 16
 @RestController
17
-@RequestMapping("/resource-domain")
17
+@RequestMapping("/resource")
18 18
 public class ResourceController {
19 19
 
20
+	
20 21
 }

+ 39 - 2
spring5-admin/src/main/java/com/yaozhitech/spring5/controller/RoleController.java

@@ -1,10 +1,20 @@
1 1
 package com.yaozhitech.spring5.controller;
2 2
 
3 3
 
4
-import org.springframework.web.bind.annotation.RequestMapping;
4
+import java.util.List;
5 5
 
6
+import org.springframework.util.CollectionUtils;
7
+import org.springframework.web.bind.annotation.GetMapping;
8
+import org.springframework.web.bind.annotation.PathVariable;
9
+import org.springframework.web.bind.annotation.RequestMapping;
6 10
 import org.springframework.web.bind.annotation.RestController;
7 11
 
12
+import com.yaozhitech.spring5.model.ResourceDomain;
13
+import com.yaozhitech.spring5.model.RoleDomain;
14
+import com.yaozhitech.spring5.service.UserService;
15
+
16
+import lombok.AllArgsConstructor;
17
+
8 18
 /**
9 19
  * <p>
10 20
  * 用户角色 前端控制器
@@ -14,7 +24,34 @@ import org.springframework.web.bind.annotation.RestController;
14 24
  * @since 2019-12-15
15 25
  */
16 26
 @RestController
17
-@RequestMapping("/role-domain")
27
+@AllArgsConstructor
28
+@RequestMapping("/role")
18 29
 public class RoleController {
19 30
 
31
+	private final UserService userService;
32
+	
33
+	@GetMapping(value="/user/{uid}")
34
+	public List<RoleDomain> getRolesByUserId(@PathVariable Integer uid) {
35
+		return userService.getRolesByUserId(uid);
36
+	}
37
+	
38
+	/**
39
+	 * 是否有权限
40
+	 * @param url
41
+	 * @param uid
42
+	 * @return
43
+	 */
44
+	@GetMapping(value="/hasPermission")
45
+	public Boolean hasPermission(String url, Integer uid) {
46
+		List<ResourceDomain> resourceDomains = userService.getApiResourcesByUserId(uid);
47
+		if (!CollectionUtils.isEmpty(resourceDomains)) {
48
+			for (ResourceDomain resourceDomain : resourceDomains) {
49
+				if (resourceDomain.getUrl().equalsIgnoreCase(url)) {
50
+					return Boolean.TRUE;
51
+				}
52
+			}
53
+		}
54
+		return Boolean.FALSE;
55
+	}
56
+
20 57
 }

+ 1 - 1
spring5-admin/src/main/java/com/yaozhitech/spring5/controller/UserController.java

@@ -3,7 +3,6 @@ package com.yaozhitech.spring5.controller;
3 3
 
4 4
 import org.springframework.web.bind.annotation.PathVariable;
5 5
 import org.springframework.web.bind.annotation.RequestMapping;
6
-
7 6
 import org.springframework.web.bind.annotation.RestController;
8 7
 
9 8
 import com.yaozhitech.spring5.model.UserDomain;
@@ -30,4 +29,5 @@ public class UserController {
30 29
 	public UserDomain getById(@PathVariable Integer id) {
31 30
 		return userService.getById(id);
32 31
 	}
32
+	
33 33
 }

+ 35 - 5
spring5-admin/src/main/java/com/yaozhitech/spring5/model/ResourceDomain.java

@@ -1,14 +1,15 @@
1 1
 package com.yaozhitech.spring5.model;
2 2
 
3
-import com.baomidou.mybatisplus.annotation.TableName;
3
+import java.io.Serializable;
4
+import java.time.LocalDateTime;
5
+
4 6
 import com.baomidou.mybatisplus.annotation.IdType;
5 7
 import com.baomidou.mybatisplus.annotation.TableId;
6
-import java.time.LocalDateTime;
7
-import java.io.Serializable;
8
+import com.baomidou.mybatisplus.annotation.TableName;
9
+
8 10
 import io.swagger.annotations.ApiModel;
9 11
 import io.swagger.annotations.ApiModelProperty;
10 12
 import lombok.Data;
11
-import lombok.EqualsAndHashCode;
12 13
 import lombok.experimental.Accessors;
13 14
 
14 15
 /**
@@ -20,7 +21,6 @@ import lombok.experimental.Accessors;
20 21
  * @since 2019-12-15
21 22
  */
22 23
 @Data
23
-@EqualsAndHashCode(callSuper = false)
24 24
 @Accessors(chain = true)
25 25
 @TableName("sys_resource")
26 26
 @ApiModel(value="ResourceDomain对象", description="权限")
@@ -61,5 +61,35 @@ public class ResourceDomain implements Serializable {
61 61
 
62 62
     private Integer isactive;
63 63
 
64
+	@Override
65
+	public boolean equals(Object obj) {
66
+		if (this == obj)
67
+			return true;
68
+		if (obj == null)
69
+			return false;
70
+		if (getClass() != obj.getClass())
71
+			return false;
72
+		ResourceDomain other = (ResourceDomain) obj;
73
+		if (id == null) {
74
+			if (other.id != null)
75
+				return false;
76
+		} else if (!id.equals(other.id))
77
+			return false;
78
+		if (resourceUuid == null) {
79
+			if (other.resourceUuid != null)
80
+				return false;
81
+		} else if (!resourceUuid.equals(other.resourceUuid))
82
+			return false;
83
+		return true;
84
+	}
85
+
86
+	@Override
87
+	public int hashCode() {
88
+		final int prime = 31;
89
+		int result = 1;
90
+		result = prime * result + ((id == null) ? 0 : id.hashCode());
91
+		result = prime * result + ((resourceUuid == null) ? 0 : resourceUuid.hashCode());
92
+		return result;
93
+	}
64 94
 
65 95
 }

+ 1 - 0
spring5-admin/src/main/java/com/yaozhitech/spring5/service/ResourceService.java

@@ -13,4 +13,5 @@ import com.yaozhitech.spring5.model.ResourceDomain;
13 13
  */
14 14
 public interface ResourceService extends IService<ResourceDomain> {
15 15
 
16
+	ResourceDomain getByUuid(String uuid);
16 17
 }

+ 12 - 0
spring5-admin/src/main/java/com/yaozhitech/spring5/service/RoleService.java

@@ -1,6 +1,9 @@
1 1
 package com.yaozhitech.spring5.service;
2 2
 
3
+import java.util.List;
4
+
3 5
 import com.baomidou.mybatisplus.extension.service.IService;
6
+import com.yaozhitech.spring5.model.ResourceDomain;
4 7
 import com.yaozhitech.spring5.model.RoleDomain;
5 8
 
6 9
 /**
@@ -13,4 +16,13 @@ import com.yaozhitech.spring5.model.RoleDomain;
13 16
  */
14 17
 public interface RoleService extends IService<RoleDomain> {
15 18
 
19
+	public RoleDomain getByUuid(String uuid);
20
+	
21
+	/**
22
+	 * 
23
+	 * @param roleUuid
24
+	 * @param resourceType	资源类型
25
+	 * @return
26
+	 */
27
+	public List<ResourceDomain> getResourcesByRoleUuid(String roleUuid, Integer resourceType);
16 28
 }

+ 26 - 0
spring5-admin/src/main/java/com/yaozhitech/spring5/service/UserService.java

@@ -1,6 +1,10 @@
1 1
 package com.yaozhitech.spring5.service;
2 2
 
3
+import java.util.List;
4
+
3 5
 import com.baomidou.mybatisplus.extension.service.IService;
6
+import com.yaozhitech.spring5.model.ResourceDomain;
7
+import com.yaozhitech.spring5.model.RoleDomain;
4 8
 import com.yaozhitech.spring5.model.UserDomain;
5 9
 
6 10
 /**
@@ -13,4 +17,26 @@ import com.yaozhitech.spring5.model.UserDomain;
13 17
  */
14 18
 public interface UserService extends IService<UserDomain> {
15 19
 
20
+	/**
21
+	 * 用户的角色
22
+	 * @param userId
23
+	 * @return
24
+	 */
25
+	List<RoleDomain> getRolesByUserId(Integer userId);
26
+	
27
+	List<ResourceDomain> getResourcesByUserId(Integer userId);
28
+	
29
+	/**
30
+	 * 用户的API级权限
31
+	 * @param userId
32
+	 * @return
33
+	 */
34
+	List<ResourceDomain> getApiResourcesByUserId(Integer userId);
35
+	
36
+	/**
37
+	 * 用户的菜单及权限
38
+	 * @param userId
39
+	 * @return
40
+	 */
41
+	List<ResourceDomain> getMenuResourcesByUserId(Integer userId);
16 42
 }

+ 6 - 0
spring5-admin/src/main/java/com/yaozhitech/spring5/service/impl/ResourceServiceImpl.java

@@ -2,6 +2,7 @@ package com.yaozhitech.spring5.service.impl;
2 2
 
3 3
 import org.springframework.stereotype.Service;
4 4
 
5
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 6
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
6 7
 import com.yaozhitech.spring5.mapper.ResourceMapper;
7 8
 import com.yaozhitech.spring5.model.ResourceDomain;
@@ -18,4 +19,9 @@ import com.yaozhitech.spring5.service.ResourceService;
18 19
 @Service
19 20
 public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, ResourceDomain> implements ResourceService {
20 21
 
22
+	@Override
23
+	public ResourceDomain getByUuid(String uuid) {
24
+		return baseMapper.selectOne(new QueryWrapper<ResourceDomain>().eq("resource_uuid", uuid));
25
+	}
26
+
21 27
 }

+ 37 - 0
spring5-admin/src/main/java/com/yaozhitech/spring5/service/impl/RoleServiceImpl.java

@@ -1,10 +1,21 @@
1 1
 package com.yaozhitech.spring5.service.impl;
2 2
 
3
+import java.util.ArrayList;
4
+import java.util.List;
5
+import java.util.stream.Collectors;
6
+
7
+import org.springframework.beans.factory.annotation.Autowired;
3 8
 import org.springframework.stereotype.Service;
9
+import org.springframework.util.CollectionUtils;
4 10
 
11
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 12
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
6 13
 import com.yaozhitech.spring5.mapper.RoleMapper;
14
+import com.yaozhitech.spring5.mapper.RoleRelResourceMapper;
15
+import com.yaozhitech.spring5.model.ResourceDomain;
7 16
 import com.yaozhitech.spring5.model.RoleDomain;
17
+import com.yaozhitech.spring5.model.RoleRelResourceDomain;
18
+import com.yaozhitech.spring5.service.ResourceService;
8 19
 import com.yaozhitech.spring5.service.RoleService;
9 20
 
10 21
 /**
@@ -17,5 +28,31 @@ import com.yaozhitech.spring5.service.RoleService;
17 28
  */
18 29
 @Service
19 30
 public class RoleServiceImpl extends ServiceImpl<RoleMapper, RoleDomain> implements RoleService {
31
+	
32
+	@Autowired
33
+	private RoleRelResourceMapper roleRelResourceMapper;
34
+	
35
+	@Autowired
36
+	private ResourceService resourceService;
37
+	
38
+	@Override
39
+	public RoleDomain getByUuid(String uuid) {
40
+		return baseMapper.selectOne(new QueryWrapper<RoleDomain>().eq("role_uuid", uuid));
41
+	}
42
+
43
+	@Override
44
+	public List<ResourceDomain> getResourcesByRoleUuid(String roleUuid, Integer resourceType) {
45
+		List<RoleRelResourceDomain> list = roleRelResourceMapper.selectList(
46
+				new QueryWrapper<RoleRelResourceDomain>()
47
+					.eq("role_uuid", roleUuid));
48
+		List<ResourceDomain> resultList = new ArrayList<ResourceDomain>();
49
+		if (!CollectionUtils.isEmpty(list)) {
50
+			resultList = list.stream().map(roleRelResource -> {
51
+				return resourceService.getByUuid(roleRelResource.getResourceUuid());
52
+			}).collect(Collectors.toList());
53
+//			.stream().filter(resource -> resource.getType() == resourceType).collect(Collectors.toList());
54
+		}
55
+		return resultList;
56
+	}
20 57
 
21 58
 }

+ 63 - 0
spring5-admin/src/main/java/com/yaozhitech/spring5/service/impl/UserServiceImpl.java

@@ -1,10 +1,23 @@
1 1
 package com.yaozhitech.spring5.service.impl;
2 2
 
3
+import java.util.ArrayList;
4
+import java.util.List;
5
+import java.util.stream.Collectors;
6
+
7
+import org.springframework.beans.factory.annotation.Autowired;
3 8
 import org.springframework.stereotype.Service;
9
+import org.springframework.util.CollectionUtils;
4 10
 
11
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
12
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5 13
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
6 14
 import com.yaozhitech.spring5.mapper.UserMapper;
15
+import com.yaozhitech.spring5.mapper.UserRelRoleMapper;
16
+import com.yaozhitech.spring5.model.ResourceDomain;
17
+import com.yaozhitech.spring5.model.RoleDomain;
7 18
 import com.yaozhitech.spring5.model.UserDomain;
19
+import com.yaozhitech.spring5.model.UserRelRoleDomain;
20
+import com.yaozhitech.spring5.service.RoleService;
8 21
 import com.yaozhitech.spring5.service.UserService;
9 22
 
10 23
 /**
@@ -18,4 +31,54 @@ import com.yaozhitech.spring5.service.UserService;
18 31
 @Service
19 32
 public class UserServiceImpl extends ServiceImpl<UserMapper, UserDomain> implements UserService {
20 33
 
34
+	@Autowired
35
+	private UserRelRoleMapper userRelRoleMapper;
36
+	
37
+	@Autowired
38
+	private RoleService roleService;
39
+	
40
+	@Override
41
+	public List<RoleDomain> getRolesByUserId(Integer userId) {
42
+		UserDomain userDomain = baseMapper.selectById(userId);
43
+		
44
+		Wrapper<UserRelRoleDomain> queryWrapper = new QueryWrapper<UserRelRoleDomain>().eq("user_uuid", userDomain.getUserUuid());
45
+		List<UserRelRoleDomain> list = userRelRoleMapper.selectList(queryWrapper);
46
+		List<RoleDomain> result = new ArrayList<RoleDomain>();
47
+		if (!CollectionUtils.isEmpty(list)) {
48
+			result = list.stream().map(userRelRole -> {
49
+				return roleService.getByUuid(userRelRole.getRoleUuid());
50
+			}).collect(Collectors.toList());
51
+		}
52
+		return result;
53
+	}
54
+
55
+	@Override
56
+	public List<ResourceDomain> getApiResourcesByUserId(Integer userId) {
57
+		return getResourcesByUserId(userId, 1);
58
+	}
59
+
60
+	@Override
61
+	public List<ResourceDomain> getMenuResourcesByUserId(Integer userId) {
62
+		return getResourcesByUserId(userId, 0);
63
+	}
64
+
65
+	@Override
66
+	public List<ResourceDomain> getResourcesByUserId(Integer userId) {
67
+		// TODO Auto-generated method stub
68
+		return null;
69
+	}
70
+	
71
+	private List<ResourceDomain> getResourcesByUserId(Integer userId, Integer type) {
72
+		UserDomain userDomain = baseMapper.selectById(userId);
73
+		
74
+		Wrapper<UserRelRoleDomain> queryWrapper = new QueryWrapper<UserRelRoleDomain>().eq("user_uuid", userDomain.getUserUuid());
75
+		List<UserRelRoleDomain> list = userRelRoleMapper.selectList(queryWrapper);
76
+		
77
+		List<ResourceDomain> result = new ArrayList<ResourceDomain>();
78
+		if (!CollectionUtils.isEmpty(list)) {
79
+			list.forEach(userRelRole -> result.addAll(roleService.getResourcesByRoleUuid(userRelRole.getRoleUuid(), type)));
80
+		}
81
+		return result.stream().distinct().collect(Collectors.toList());
82
+	}
83
+	
21 84
 }