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.Group;
17 import com.supwisdom.institute.backend.system.domain.entity.GroupRole;
18 import com.supwisdom.institute.backend.system.domain.entity.Role;
21 public interface GroupRoleRepository extends BaseJpaRepository<GroupRole> {
23 public default Page<GroupRole> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
24 GroupRole probe = new GroupRole();
25 if (mapBean != null) {
26 probe.setGroupId(MapBeanUtils.getString(mapBean, "groupId"));
27 probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
30 ExampleMatcher matcher = ExampleMatcher.matching()
31 .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
32 .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
34 PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
35 Example<GroupRole> example = Example.of(probe, matcher);
37 Page<GroupRole> page = this.findAll(example, pageRequest);
42 public default Page<GroupRole> selectGroupRoles(int pageIndex, int pageSize, Map<String, Object> mapBean) {
44 GroupRole probe = new GroupRole();
45 if (mapBean != null) {
46 probe.setGroupId(MapBeanUtils.getString(mapBean, "groupId"));
47 probe.setRoleId(MapBeanUtils.getString(mapBean, "roleId"));
50 ExampleMatcher matcher = ExampleMatcher.matching()
51 .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
52 .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
54 Example<GroupRole> example = Example.of(probe, matcher);
56 PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
58 Page<GroupRole> page = this.findAll(example, pageRequest); // FIXME: 多表关联查询
63 public default void relateGroupRoles(Group group, List<GroupRole> groupRoles) {
65 List<GroupRole> existGroupRoles = this.selectListByGroupId(group.getId());
67 Map<String, GroupRole> existMapGroupRoles = new LinkedHashMap<String, GroupRole>();
68 for (GroupRole groupRole : existGroupRoles) {
69 String k = String.format("%s", groupRole.getRoleId());
70 existMapGroupRoles.put(k, groupRole);
73 for (GroupRole groupRole : groupRoles) {
74 String k = String.format("%s", groupRole.getRoleId());
76 if (existMapGroupRoles.containsKey(k)) {
77 existMapGroupRoles.remove(k);
79 groupRole.setCompanyId(group.getCompanyId());
80 groupRole.setGroupId(group.getId());
82 this.insert(groupRole);
86 for (GroupRole groupRole : existMapGroupRoles.values()) {
87 this.deleteById(groupRole.getId());
91 public default List<GroupRole> selectListByGroupId(String groupId) {
93 GroupRole probe = new GroupRole();
94 probe.setGroupId(groupId);
96 ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("groupId",
97 ExampleMatcher.GenericPropertyMatchers.exact());
99 Example<GroupRole> example = Example.of(probe, matcher);
101 List<GroupRole> groupRoles = this.findAll(example);
107 public default void relateRoleGroups(Role role, List<GroupRole> groupRoles) {
109 List<GroupRole> existRoleGroups = this.selectListByRoleId(role.getCode());
111 Map<String, GroupRole> existMapRoleGroups = new LinkedHashMap<String, GroupRole>();
112 for (GroupRole groupRole : existRoleGroups) {
113 String k = String.format("%s", groupRole.getGroupId());
114 existMapRoleGroups.put(k, groupRole);
117 for (GroupRole groupRole : groupRoles) {
118 String k = String.format("%s", groupRole.getGroupId());
120 if (existMapRoleGroups.containsKey(k)) {
121 existMapRoleGroups.remove(k);
123 groupRole.setCompanyId(role.getCompanyId());
124 groupRole.setRoleId(role.getId());
126 this.insert(groupRole);
130 for (GroupRole groupRole : existMapRoleGroups.values()) {
131 this.deleteById(groupRole.getId());
135 public default List<GroupRole> selectListByRoleId(String roleId) {
137 GroupRole probe = new GroupRole();
138 probe.setRoleId(roleId);
140 ExampleMatcher matcher = ExampleMatcher.matching()
141 .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact());
143 Example<GroupRole> example = Example.of(probe, matcher);
145 List<GroupRole> groupRoles = this.findAll(example);
150 public default GroupRole selectOneByGroupRole(String groupId, String roleId) {
152 GroupRole probe = new GroupRole();
153 probe.setGroupId(groupId);
154 probe.setRoleId(roleId);
156 ExampleMatcher matcher = ExampleMatcher.matching()
157 .withMatcher("groupId", ExampleMatcher.GenericPropertyMatchers.exact())
158 .withMatcher("roleId", ExampleMatcher.GenericPropertyMatchers.exact())
161 Example<GroupRole> example = Example.of(probe, matcher);
163 Optional<GroupRole> o = this.findOne(example);
165 return o.isPresent() ? o.get() : null;
168 public default void addGroupRole(String groupId, String roleId) {
170 GroupRole groupRole = this.selectOneByGroupRole(groupId, roleId);
172 if (groupRole == null) {
173 groupRole = new GroupRole();
174 //groupRole.setCompanyId(companyId);
175 groupRole.setGroupId(groupId);
176 groupRole.setRoleId(roleId);
178 this.insert(groupRole);
182 public default void removeGroupRole(String groupId, String roleId) {
184 GroupRole groupRole = this.selectOneByGroupRole(groupId, roleId);
186 if (groupRole != null) {
187 this.deleteById(groupRole.getId());