1 package com.supwisdom.institute.backend.base.domain.repo;
3 import java.util.LinkedHashMap;
6 import java.util.Optional;
8 import org.springframework.data.domain.Example;
9 import org.springframework.data.domain.ExampleMatcher;
10 import org.springframework.data.domain.Page;
11 import org.springframework.data.domain.PageRequest;
12 import org.springframework.stereotype.Repository;
14 import com.supwisdom.institute.backend.base.domain.entity.Permission;
15 import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
16 import com.supwisdom.institute.backend.base.domain.entity.Resource;
17 import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
18 import com.supwisdom.institute.backend.common.util.MapBeanUtils;
21 public interface PermissionResourceRepository extends BaseJpaRepository<PermissionResource> {
23 public default Page<PermissionResource> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
24 PermissionResource probe = new PermissionResource();
25 if (mapBean != null) {
26 probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
27 probe.setResourceId(MapBeanUtils.getString(mapBean, "resourceId"));
30 ExampleMatcher matcher = ExampleMatcher.matching()
31 .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
32 .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact());
34 PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
35 Example<PermissionResource> example = Example.of(probe, matcher);
37 Page<PermissionResource> page = this.findAll(example, pageRequest);
42 public default Page<PermissionResource> selectPermissionResources(int pageIndex, int pageSize, Map<String, Object> mapBean) {
44 PermissionResource probe = new PermissionResource();
45 if (mapBean != null) {
46 probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
47 probe.setResourceId(MapBeanUtils.getString(mapBean, "resourceId"));
50 ExampleMatcher matcher = ExampleMatcher.matching()
51 .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
52 .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact());
54 Example<PermissionResource> example = Example.of(probe, matcher);
56 PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
58 Page<PermissionResource> page = this.findAll(example, pageRequest); // FIXME: 多表关联查询
63 public default void relatePermissionResources(Permission permission, List<PermissionResource> relateResources) {
65 List<PermissionResource> existPermissionResources = this.selectListByPermissionId(permission.getId());
67 Map<String, PermissionResource> existMapPermissionResources = new LinkedHashMap<String, PermissionResource>();
68 for (PermissionResource permissionResource : existPermissionResources) {
69 String k = String.format("%s", permissionResource.getResourceId());
70 existMapPermissionResources.put(k, permissionResource);
73 for (PermissionResource permissionResource : relateResources) {
74 String k = String.format("%s", permissionResource.getResourceId());
76 if (existMapPermissionResources.containsKey(k)) {
77 existMapPermissionResources.remove(k);
79 permissionResource.setCompanyId(permission.getCompanyId());
80 permissionResource.setPermissionId(permission.getId());
82 this.insert(permissionResource);
86 for (PermissionResource rolePermission : existMapPermissionResources.values()) {
87 this.deleteById(rolePermission.getId());
91 public default List<PermissionResource> selectListByPermissionId(String permissionId) {
93 PermissionResource probe = new PermissionResource();
94 probe.setPermissionId(permissionId);
96 ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("permissionId",
97 ExampleMatcher.GenericPropertyMatchers.exact());
99 Example<PermissionResource> example = Example.of(probe, matcher);
101 List<PermissionResource> rolePermissions = this.findAll(example);
103 return rolePermissions;
107 public default void relateResourcePermissions(Resource resource, List<PermissionResource> relatePermissions) {
110 List<PermissionResource> existResourcePermissions = this.selectListByResourceId(resource.getId());
112 Map<String, PermissionResource> existMapResourcePermissions = new LinkedHashMap<String, PermissionResource>();
113 for (PermissionResource permissionResource : existResourcePermissions) {
114 String k = String.format("%s", permissionResource.getPermissionId());
115 existMapResourcePermissions.put(k, permissionResource);
119 for (PermissionResource permissionResource : relatePermissions) {
120 String k = String.format("%s", permissionResource.getPermissionId());
122 if (existMapResourcePermissions.containsKey(k)) {
123 existMapResourcePermissions.remove(k);
125 permissionResource.setCompanyId(resource.getCompanyId());
126 permissionResource.setResourceId(resource.getId());
128 this.insert(permissionResource);
133 for (PermissionResource rolePermission : existMapResourcePermissions.values()) {
134 this.deleteById(rolePermission.getId());
137 public default List<PermissionResource> selectListByResourceId(String resourceId) {
139 PermissionResource probe = new PermissionResource();
140 probe.setResourceId(resourceId);
142 ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("resourceId",
143 ExampleMatcher.GenericPropertyMatchers.exact());
145 Example<PermissionResource> example = Example.of(probe, matcher);
147 List<PermissionResource> rolePermissions = this.findAll(example);
149 return rolePermissions;
153 public default PermissionResource selectOneByPermissionResource(String permissionId, String resourceId) {
155 PermissionResource probe = new PermissionResource();
156 probe.setPermissionId(permissionId);
157 probe.setResourceId(resourceId);
159 ExampleMatcher matcher = ExampleMatcher.matching()
160 .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
161 .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact())
164 Example<PermissionResource> example = Example.of(probe, matcher);
166 Optional<PermissionResource> o = this.findOne(example);
168 return o.isPresent() ? o.get() : null;
171 public default void addPermissionResource(String permissionId, String resourceId) {
173 PermissionResource rolePermission = this.selectOneByPermissionResource(permissionId, resourceId);
175 if (rolePermission == null) {
176 rolePermission = new PermissionResource();
177 //rolePermission.setCompanyId(companyId);
178 rolePermission.setPermissionId(permissionId);
179 rolePermission.setResourceId(resourceId);
181 this.insert(rolePermission);
185 public default void removePermissionResource(String permissionId, String resourceId) {
187 PermissionResource rolePermission = this.selectOneByPermissionResource(permissionId, resourceId);
189 if (rolePermission != null) {
190 this.deleteById(rolePermission.getId());