1 package com.supwisdom.institute.backend.system.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.common.framework.repo.BaseJpaRepository;
15 import com.supwisdom.institute.backend.common.util.MapBeanUtils;
16 import com.supwisdom.institute.backend.system.domain.entity.Permission;
17 import com.supwisdom.institute.backend.system.domain.entity.Role;
18 import com.supwisdom.institute.backend.system.domain.entity.RolePermission;
21 public interface RolePermissionRepository extends BaseJpaRepository<RolePermission> {
23 public default Page<RolePermission> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
24 RolePermission probe = new RolePermission();
25 if (mapBean != null) {
26 probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
27 probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
30 ExampleMatcher matcher = ExampleMatcher.matching()
31 .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact())
32 .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact());
34 PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
35 Example<RolePermission> example = Example.of(probe, matcher);
37 Page<RolePermission> page = this.findAll(example, pageRequest);
42 public default Page<RolePermission> selectRolePermissions(int pageIndex, int pageSize, Map<String, Object> mapBean) {
44 RolePermission probe = new RolePermission();
45 if (mapBean != null) {
46 probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
47 probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
50 ExampleMatcher matcher = ExampleMatcher.matching()
51 .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact())
52 .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact());
54 Example<RolePermission> example = Example.of(probe, matcher);
56 PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
58 Page<RolePermission> page = this.findAll(example, pageRequest); // FIXME: 多表关联查询
63 public default void relateRolePermissions(Role role, List<RolePermission> rolePermissions) {
65 List<RolePermission> existRolePermissions = this.selectListByRoleId(role.getId());
67 Map<String, RolePermission> existMapRolePermissions = new LinkedHashMap<String, RolePermission>();
68 for (RolePermission rolePermission : existRolePermissions) {
69 String k = String.format("%s", rolePermission.getPermissionId());
70 existMapRolePermissions.put(k, rolePermission);
73 for (RolePermission rolePermission : rolePermissions) {
74 String k = String.format("%s", rolePermission.getPermissionId());
76 if (existMapRolePermissions.containsKey(k)) {
77 existMapRolePermissions.remove(k);
79 rolePermission.setCompanyId(role.getCompanyId());
80 rolePermission.setRoleId(role.getId());
82 this.insert(rolePermission);
86 for (RolePermission rolePermission : existMapRolePermissions.values()) {
87 this.deleteById(rolePermission.getId());
91 public default List<RolePermission> selectListByRoleId(String roleId) {
93 RolePermission probe = new RolePermission();
94 probe.setRoleId(roleId);
96 ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("roleId",
97 ExampleMatcher.GenericPropertyMatchers.exact());
99 Example<RolePermission> example = Example.of(probe, matcher);
101 List<RolePermission> rolePermissions = this.findAll(example);
103 return rolePermissions;
106 public default void relatePermissionRoles(Permission permission, List<RolePermission> rolePermissions) {
109 List<RolePermission> existPermissionRoles = this.selectListByPermissionId(permission.getId());
111 Map<String, RolePermission> existMapPermissionRoles = new LinkedHashMap<String, RolePermission>();
112 for (RolePermission rolePermission : existPermissionRoles) {
113 String k = String.format("%s", rolePermission.getRoleId());
114 existMapPermissionRoles.put(k, rolePermission);
118 for (RolePermission rolePermission : rolePermissions) {
119 String k = String.format("%s", rolePermission.getRoleId());
121 if (existMapPermissionRoles.containsKey(k)) {
122 existMapPermissionRoles.remove(k);
124 rolePermission.setCompanyId(permission.getCompanyId());
125 rolePermission.setPermissionId(permission.getId());
127 this.insert(rolePermission);
132 for (RolePermission rolePermission : existMapPermissionRoles.values()) {
133 this.deleteById(rolePermission.getId());
137 public default List<RolePermission> selectListByPermissionId(String permissionId) {
139 RolePermission probe = new RolePermission();
140 probe.setPermissionId(permissionId);
142 ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("permissionId",
143 ExampleMatcher.GenericPropertyMatchers.exact());
145 Example<RolePermission> example = Example.of(probe, matcher);
147 List<RolePermission> rolePermissions = this.findAll(example);
149 return rolePermissions;
152 public default RolePermission selectOneByRolePermission(String roleId, String permissionId) {
154 RolePermission probe = new RolePermission();
155 probe.setRoleId(roleId);
156 probe.setPermissionId(permissionId);
158 ExampleMatcher matcher = ExampleMatcher.matching()
159 .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact())
160 .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
163 Example<RolePermission> example = Example.of(probe, matcher);
165 Optional<RolePermission> o = this.findOne(example);
167 return o.isPresent() ? o.get() : null;
170 public default void addRolePermission(String roleId, String permissionId) {
172 RolePermission rolePermission = this.selectOneByRolePermission(roleId, permissionId);
174 if (rolePermission == null) {
175 rolePermission = new RolePermission();
176 //rolePermission.setCompanyId(companyId);
177 rolePermission.setRoleId(roleId);
178 rolePermission.setPermissionId(permissionId);
180 this.insert(rolePermission);
184 public default void removeRolePermission(String roleId, String permissionId) {
186 RolePermission rolePermission = this.selectOneByRolePermission(roleId, permissionId);
188 if (rolePermission != null) {
189 this.deleteById(rolePermission.getId());