diff --git a/cloud-common-plugin/src/main/java/com/cm/common/plugin/dao/authority/IAuthorityDao.java b/cloud-common-plugin/src/main/java/com/cm/common/plugin/dao/authority/IAuthorityDao.java new file mode 100644 index 0000000..59cec35 --- /dev/null +++ b/cloud-common-plugin/src/main/java/com/cm/common/plugin/dao/authority/IAuthorityDao.java @@ -0,0 +1,37 @@ +package com.cm.common.plugin.dao.authority; + +import com.cm.common.exception.RemoveException; +import com.cm.common.exception.SaveException; +import org.springframework.stereotype.Repository; + +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: IAuthorityDao + * @Description: 权限 + * @Author: WangGeng + * @Date: 2019/12/14 11:01 上午 + * @Version: 1.0 + **/ +@Repository +public interface IAuthorityDao { + + /** + * 新增人员权限 + * + * @param params + * @throws SaveException + */ + void saveAuthorityUser(Map params) throws SaveException; + + /** + * 删除人员权限 + * + * @param params + * @throws RemoveException + */ + void deleteAuthorityUser(Map params) throws RemoveException; +} diff --git a/cloud-common-plugin/src/main/java/com/cm/common/plugin/enums/role/RoleDataAuthorityEnum.java b/cloud-common-plugin/src/main/java/com/cm/common/plugin/enums/role/RoleDataAuthorityEnum.java new file mode 100644 index 0000000..e5b55ae --- /dev/null +++ b/cloud-common-plugin/src/main/java/com/cm/common/plugin/enums/role/RoleDataAuthorityEnum.java @@ -0,0 +1,29 @@ +package com.cm.common.plugin.enums.role; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleDataAuthorityEnum + * @Description: 数据权限 + * @Author: WangGeng + * @Date: 2019/11/23 9:43 下午 + * @Version: 1.0 + **/ +public enum RoleDataAuthorityEnum { + + ALL("all"), + DEPARTMENT("department"), + CUSTOM("custom"), + SELF("self"); + + private String dataAuthorityType; + + RoleDataAuthorityEnum(String dataAuthorityType) { + this.dataAuthorityType = dataAuthorityType; + } + + public String getDataAuthorityType() { + return dataAuthorityType == null ? "" : dataAuthorityType.trim(); + } +} \ No newline at end of file diff --git a/cloud-common-plugin/src/main/java/com/cm/common/plugin/pojo/vos/authority/AuthorityUserVO.java b/cloud-common-plugin/src/main/java/com/cm/common/plugin/pojo/vos/authority/AuthorityUserVO.java new file mode 100644 index 0000000..132b300 --- /dev/null +++ b/cloud-common-plugin/src/main/java/com/cm/common/plugin/pojo/vos/authority/AuthorityUserVO.java @@ -0,0 +1,44 @@ +package com.cm.common.plugin.pojo.vos.authority; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: AuthorityUserVO + * @Description: 权限 + * @Author: WangGeng + * @Date: 2019/12/14 11:06 上午 + * @Version: 1.0 + **/ +public class AuthorityUserVO { + + private String userId; + private String managedUserId; + + public String getUserId() { + return userId == null ? "" : userId.trim(); + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getManagedUserId() { + return managedUserId == null ? "" : managedUserId.trim(); + } + + public void setManagedUserId(String managedUserId) { + this.managedUserId = managedUserId; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"userId\":") + .append("\"").append(userId).append("\""); + sb.append(",\"managedUserId\":") + .append("\"").append(managedUserId).append("\""); + sb.append('}'); + return sb.toString(); + } +} diff --git a/cloud-common-plugin/src/main/java/com/cm/common/plugin/service/authority/IAuthorityService.java b/cloud-common-plugin/src/main/java/com/cm/common/plugin/service/authority/IAuthorityService.java new file mode 100644 index 0000000..d40dc16 --- /dev/null +++ b/cloud-common-plugin/src/main/java/com/cm/common/plugin/service/authority/IAuthorityService.java @@ -0,0 +1,35 @@ +package com.cm.common.plugin.service.authority; + +import com.cm.common.exception.RemoveException; +import com.cm.common.exception.SaveException; +import com.cm.common.plugin.pojo.vos.authority.AuthorityUserVO; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: IAuthorityService + * @Description: 权限 + * @Author: WangGeng + * @Date: 2019/12/14 11:00 上午 + * @Version: 1.0 + **/ +public interface IAuthorityService { + + /** + * 新增人员权限 + * + * @param authorityUserVO + * @throws SaveException + */ + void saveAuthorityUser(AuthorityUserVO authorityUserVO) throws Exception; + + /** + * 删除人员权限 + * + * @param userId + * @throws RemoveException + */ + void deleteAuthorityUserByUserId(String userId) throws RemoveException; + +} diff --git a/cloud-common-plugin/src/main/java/com/cm/common/plugin/service/authority/impl/AuthorityServiceImpl.java b/cloud-common-plugin/src/main/java/com/cm/common/plugin/service/authority/impl/AuthorityServiceImpl.java new file mode 100644 index 0000000..5b45b0f --- /dev/null +++ b/cloud-common-plugin/src/main/java/com/cm/common/plugin/service/authority/impl/AuthorityServiceImpl.java @@ -0,0 +1,43 @@ +package com.cm.common.plugin.service.authority.impl; + +import com.cm.common.base.AbstractService; +import com.cm.common.exception.RemoveException; +import com.cm.common.exception.SaveException; +import com.cm.common.plugin.dao.authority.IAuthorityDao; +import com.cm.common.plugin.pojo.vos.authority.AuthorityUserVO; +import com.cm.common.plugin.service.authority.IAuthorityService; +import com.cm.common.utils.HashMapUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: AuthorityServiceImpl + * @Description: 权限 + * @Author: WangGeng + * @Date: 2019/12/14 11:01 上午 + * @Version: 1.0 + **/ +@Service +public class AuthorityServiceImpl extends AbstractService implements IAuthorityService { + + @Autowired + private IAuthorityDao authorityDao; + + @Override + public void saveAuthorityUser(AuthorityUserVO authorityUserVO) throws Exception { + Map params = HashMapUtil.beanToMap(authorityUserVO); + authorityDao.saveAuthorityUser(params); + } + + @Override + public void deleteAuthorityUserByUserId(String userId) throws RemoveException { + Map params = getHashMap(1); + params.put("userId", userId); + authorityDao.deleteAuthorityUser(params); + } +} diff --git a/cloud-common-plugin/src/main/resources/mybatis/mapper/authority/authority-mapper.xml b/cloud-common-plugin/src/main/resources/mybatis/mapper/authority/authority-mapper.xml new file mode 100644 index 0000000..f90f42c --- /dev/null +++ b/cloud-common-plugin/src/main/resources/mybatis/mapper/authority/authority-mapper.xml @@ -0,0 +1,26 @@ + + + + + + + INSERT INTO authority_user( + user_id, + managed_user_id + ) VALUES ( + #{userId}, + #{managedUserId} + ) + + + + + DELETE FROM + authority_user + WHERE + + user_id = #{userId} + + + + \ No newline at end of file diff --git a/cloud-common/src/main/java/com/cm/common/base/AbstractController.java b/cloud-common/src/main/java/com/cm/common/base/AbstractController.java index 734a9ab..964a767 100644 --- a/cloud-common/src/main/java/com/cm/common/base/AbstractController.java +++ b/cloud-common/src/main/java/com/cm/common/base/AbstractController.java @@ -45,6 +45,10 @@ public abstract class AbstractController { LOG.error(e.getMessage(), e); } } + String showLevel = "showLevel"; + if (StringUtils.isEmpty(params.get(showLevel))) { + params.put(showLevel, "0"); + } return params; } diff --git a/cloud-common/src/main/java/com/cm/common/base/AbstractService.java b/cloud-common/src/main/java/com/cm/common/base/AbstractService.java index 2123e3e..7129d22 100644 --- a/cloud-common/src/main/java/com/cm/common/base/AbstractService.java +++ b/cloud-common/src/main/java/com/cm/common/base/AbstractService.java @@ -1,6 +1,7 @@ package com.cm.common.base; import com.cm.common.component.SecurityComponent; +import com.cm.common.constants.ISystemConstant; import com.cm.common.pojo.bos.UserInfoBO; import com.cm.common.pojo.dtos.ZTreeDTO; import com.cm.common.token.app.AppTokenManager; @@ -15,6 +16,7 @@ import org.springframework.util.StringUtils; import javax.servlet.http.HttpSession; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -29,7 +31,7 @@ public abstract class AbstractService { protected static Logger LOG = LoggerFactory.getLogger(AbstractService.class); @Autowired - private SecurityComponent securityComponent; + protected SecurityComponent securityComponent; @Autowired private HttpSession httpSession; @@ -152,4 +154,28 @@ public abstract class AbstractService { protected Map getHashMap(int initSize) { return new HashMap<>(initSize); } + + /** + * 是否管理员 + * + * @return + */ + protected boolean isAdmin() { + if (ISystemConstant.ADMIN.equalsIgnoreCase(securityComponent.getCurrentUsername())) { + return true; + } + return false; + } + + /** + * 获取基础部门ID列表 + * + * @return + */ + protected List listBaseDepartmentIds() { + if (isAdmin()) { + return null; + } + return securityComponent.getCurrentUser().getBaseDepartmentIds(); + } } diff --git a/cloud-common/src/main/java/com/cm/common/component/SecurityComponent.java b/cloud-common/src/main/java/com/cm/common/component/SecurityComponent.java index 1a315f1..6c8479d 100644 --- a/cloud-common/src/main/java/com/cm/common/component/SecurityComponent.java +++ b/cloud-common/src/main/java/com/cm/common/component/SecurityComponent.java @@ -45,6 +45,9 @@ public class SecurityComponent { userInfoBO.setUserId(userBO.getUserId()); userInfoBO.setUserUsername(userBO.getUsername()); userInfoBO.setUserPhone(userBO.getUserPhone()); + userInfoBO.setDataAuthority(userBO.getDataAuthority()); + userInfoBO.setDataAuthorityUserIds(userBO.getDataAuthorityUserIds()); + userInfoBO.setBaseDepartmentIds(userBO.getBaseDepartmentIds()); } if (user instanceof UserInfoBO) { userInfoBO = (UserInfoBO) user; @@ -62,7 +65,8 @@ public class SecurityComponent { Collection grantedAuthorities = authentication.getAuthorities(); List roleIds = new ArrayList<>(); for (GrantedAuthority grantedAuthority : grantedAuthorities) { - RoleGrantedAuthority roleGrantedAuthority = (RoleGrantedAuthority) grantedAuthority;; + RoleGrantedAuthority roleGrantedAuthority = (RoleGrantedAuthority) grantedAuthority; + ; roleIds.add(roleGrantedAuthority.getRoleId()); } return roleIds; diff --git a/cloud-common/src/main/java/com/cm/common/constants/ISystemConstant.java b/cloud-common/src/main/java/com/cm/common/constants/ISystemConstant.java index f18fa3d..becc291 100644 --- a/cloud-common/src/main/java/com/cm/common/constants/ISystemConstant.java +++ b/cloud-common/src/main/java/com/cm/common/constants/ISystemConstant.java @@ -84,5 +84,20 @@ public interface ISystemConstant { * 参数id */ String PARAMS_ID = "id"; - + /** + * 创建人 + */ + String DATA_CREATOR = "data_creator"; + /** + * 创建人列 + */ + String DATA_AUTHORITY = "data_authority"; + /** + * 树根节点ID + */ + String TREE_ROOT_ID = "0"; + /** + * admin + */ + String ADMIN = "admin"; } diff --git a/cloud-common/src/main/java/com/cm/common/pojo/bos/DepartmentBO.java b/cloud-common/src/main/java/com/cm/common/pojo/bos/DepartmentBO.java index 360dac7..ff69df5 100644 --- a/cloud-common/src/main/java/com/cm/common/pojo/bos/DepartmentBO.java +++ b/cloud-common/src/main/java/com/cm/common/pojo/bos/DepartmentBO.java @@ -14,6 +14,7 @@ public class DepartmentBO implements Serializable { private static final long serialVersionUID = -8160484188600622923L; private String departmentId; private String departmentName; + private String departmentCode; private String departmentSummary; public String getDepartmentId() { @@ -32,6 +33,14 @@ public class DepartmentBO implements Serializable { this.departmentName = departmentName; } + public String getDepartmentCode() { + return departmentCode == null ? "" : departmentCode.trim(); + } + + public void setDepartmentCode(String departmentCode) { + this.departmentCode = departmentCode; + } + public String getDepartmentSummary() { return departmentSummary == null ? "" : departmentSummary.trim(); } @@ -47,6 +56,8 @@ public class DepartmentBO implements Serializable { .append("\"").append(departmentId).append("\""); sb.append(",\"departmentName\":") .append("\"").append(departmentName).append("\""); + sb.append(",\"departmentCode\":") + .append("\"").append(departmentCode).append("\""); sb.append(",\"departmentSummary\":") .append("\"").append(departmentSummary).append("\""); sb.append('}'); diff --git a/cloud-common/src/main/java/com/cm/common/pojo/bos/RoleBO.java b/cloud-common/src/main/java/com/cm/common/pojo/bos/RoleBO.java index 660e4f5..f45cae6 100644 --- a/cloud-common/src/main/java/com/cm/common/pojo/bos/RoleBO.java +++ b/cloud-common/src/main/java/com/cm/common/pojo/bos/RoleBO.java @@ -15,6 +15,7 @@ public class RoleBO { private String roleId; private String roleName; private String roleSummary; + private String roleDataAuthority; private List apiSaveMenu = new ArrayList<>(); private List apiDeleteMenu = new ArrayList<>(); private List apiUpdateMenu = new ArrayList<>(); @@ -51,6 +52,14 @@ public class RoleBO { this.roleSummary = roleSummary; } + public String getRoleDataAuthority() { + return roleDataAuthority == null ? "" : roleDataAuthority.trim(); + } + + public void setRoleDataAuthority(String roleDataAuthority) { + this.roleDataAuthority = roleDataAuthority; + } + public List getApiSaveMenu() { return apiSaveMenu; } @@ -148,6 +157,8 @@ public class RoleBO { .append("\"").append(roleName).append("\""); sb.append(",\"roleSummary\":") .append("\"").append(roleSummary).append("\""); + sb.append(",\"roleDataAuthority\":") + .append("\"").append(roleDataAuthority).append("\""); sb.append(",\"apiSaveMenu\":") .append(apiSaveMenu); sb.append(",\"apiDeleteMenu\":") diff --git a/cloud-common/src/main/java/com/cm/common/pojo/bos/UserBO.java b/cloud-common/src/main/java/com/cm/common/pojo/bos/UserBO.java index 69f6788..f185b11 100644 --- a/cloud-common/src/main/java/com/cm/common/pojo/bos/UserBO.java +++ b/cloud-common/src/main/java/com/cm/common/pojo/bos/UserBO.java @@ -18,6 +18,9 @@ public class UserBO extends User { private String userId; private String userName; private String userPhone; + private String dataAuthority; + private List baseDepartmentIds; + private List dataAuthorityUserIds; private List roles; private List groups; private List departments; @@ -58,6 +61,30 @@ public class UserBO extends User { this.userPhone = userPhone; } + public List getBaseDepartmentIds() { + return baseDepartmentIds; + } + + public void setBaseDepartmentIds(List baseDepartmentIds) { + this.baseDepartmentIds = baseDepartmentIds; + } + + public String getDataAuthority() { + return dataAuthority == null ? "" : dataAuthority.trim(); + } + + public void setDataAuthority(String dataAuthority) { + this.dataAuthority = dataAuthority; + } + + public List getDataAuthorityUserIds() { + return dataAuthorityUserIds; + } + + public void setDataAuthorityUserIds(List dataAuthorityUserIds) { + this.dataAuthorityUserIds = dataAuthorityUserIds; + } + public List getRoles() { return roles; } @@ -91,6 +118,12 @@ public class UserBO extends User { .append("\"").append(userName).append("\""); sb.append(",\"userPhone\":") .append("\"").append(userPhone).append("\""); + sb.append(",\"dataAuthority\":") + .append("\"").append(dataAuthority).append("\""); + sb.append(",\"baseDepartmentIds\":") + .append(baseDepartmentIds); + sb.append(",\"dataAuthorityUserIds\":") + .append(dataAuthorityUserIds); sb.append(",\"roles\":") .append(roles); sb.append(",\"groups\":") diff --git a/cloud-common/src/main/java/com/cm/common/pojo/bos/UserInfoBO.java b/cloud-common/src/main/java/com/cm/common/pojo/bos/UserInfoBO.java index fa15ef8..fe427af 100644 --- a/cloud-common/src/main/java/com/cm/common/pojo/bos/UserInfoBO.java +++ b/cloud-common/src/main/java/com/cm/common/pojo/bos/UserInfoBO.java @@ -15,6 +15,9 @@ public class UserInfoBO { private String userUsername; private String userName; private String userPhone; + private String dataAuthority; + private List dataAuthorityUserIds; + private List baseDepartmentIds; private List departments; public String getUserId() { @@ -49,6 +52,30 @@ public class UserInfoBO { this.userPhone = userPhone; } + public String getDataAuthority() { + return dataAuthority == null ? "" : dataAuthority.trim(); + } + + public void setDataAuthority(String dataAuthority) { + this.dataAuthority = dataAuthority; + } + + public List getDataAuthorityUserIds() { + return dataAuthorityUserIds; + } + + public void setDataAuthorityUserIds(List dataAuthorityUserIds) { + this.dataAuthorityUserIds = dataAuthorityUserIds; + } + + public List getBaseDepartmentIds() { + return baseDepartmentIds; + } + + public void setBaseDepartmentIds(List baseDepartmentIds) { + this.baseDepartmentIds = baseDepartmentIds; + } + public List getDepartments() { return departments; } @@ -68,6 +95,12 @@ public class UserInfoBO { .append("\"").append(userName).append("\""); sb.append(",\"userPhone\":") .append("\"").append(userPhone).append("\""); + sb.append(",\"dataAuthority\":") + .append("\"").append(dataAuthority).append("\""); + sb.append(",\"dataAuthorityUserIds\":") + .append(dataAuthorityUserIds); + sb.append(",\"baseDepartmentIds\":") + .append(baseDepartmentIds); sb.append(",\"departments\":") .append(departments); sb.append('}');