diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/role/IRoleUserBaseService.java b/basic-interface/src/main/java/ink/wgink/interfaces/role/IRoleUserBaseService.java new file mode 100644 index 00000000..ab0764bd --- /dev/null +++ b/basic-interface/src/main/java/ink/wgink/interfaces/role/IRoleUserBaseService.java @@ -0,0 +1,46 @@ +package ink.wgink.interfaces.role; + +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.dtos.role.RoleUserDTO; +import ink.wgink.pojo.result.SuccessResultList; + +import java.util.List; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: IRoleUserBaseService + * @Description: 角色用户 + * @Author: WangGeng + * @Date: 2021/2/18 11:36 + * @Version: 1.0 + **/ +public interface IRoleUserBaseService { + + /** + * 用户ID列表 + * + * @param roleId 用户组ID + * @return + */ + List listUserId(String roleId); + + /** + * 用户ID列表 + * + * @param roleIds 用户组ID列表 + * @return + */ + List listUserId(List roleIds); + + /** + * 分页用户组用户 + * + * @param roleId + * @param page + * @return + */ + SuccessResultList> listPage(String roleId, ListPage page); + +} diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/user/IRoleUserService.java b/basic-interface/src/main/java/ink/wgink/interfaces/user/IRoleUserService.java deleted file mode 100644 index b7b86e78..00000000 --- a/basic-interface/src/main/java/ink/wgink/interfaces/user/IRoleUserService.java +++ /dev/null @@ -1,14 +0,0 @@ -package ink.wgink.interfaces.user; - -/** - * When you feel like quitting. Think about why you started - * 当你想要放弃的时候,想想当初你为何开始 - * - * @ClassName: IRoleUserService - * @Description: 角色用户 - * @Author: WangGeng - * @Date: 2021/1/24 13:00 - * @Version: 1.0 - **/ -public interface IRoleUserService { -} diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/menu/MenuDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/menu/MenuDTO.java index 24a166d8..6a14b529 100644 --- a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/menu/MenuDTO.java +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/menu/MenuDTO.java @@ -39,7 +39,7 @@ public class MenuDTO implements Serializable { private Integer menuType; @ApiModelProperty(name = "menuOrder", value = "菜单排序") private Integer menuOrder; - @ApiModelProperty(name = "menuStatus", value = "菜单状态") + @ApiModelProperty(name = "menuStatus", value = "菜 单状态") private Integer menuStatus; @ApiModelProperty(name = "openType", value = "打开方式") private Integer openType; diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/permission/PermissionDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/permission/PermissionDTO.java index 80218d5f..070951f9 100644 --- a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/permission/PermissionDTO.java +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/permission/PermissionDTO.java @@ -3,6 +3,8 @@ package ink.wgink.pojo.dtos.permission; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; + /** * @ClassName: PermissionDTO * @Description: 权限 @@ -11,8 +13,9 @@ import io.swagger.annotations.ApiModelProperty; * @Version: 1.0 **/ @ApiModel -public class PermissionDTO { +public class PermissionDTO implements Serializable { + private static final long serialVersionUID = 8480319618037598206L; @ApiModelProperty(name = "permissionId", value = "主键") private String permissionId; @ApiModelProperty(name = "permissionTitle", value = "权限名称") @@ -21,6 +24,8 @@ public class PermissionDTO { private String permissionType; @ApiModelProperty(name = "permissionUrl", value = "权限路径") private String permissionUrl; + @ApiModelProperty(name = "apiTag", value = "api标识") + private String apiTag; @ApiModelProperty(name = "systemTag", value = "系统标识") private String systemTag; @ApiModelProperty(name = "isPublic", value = "是否公共") @@ -58,6 +63,14 @@ public class PermissionDTO { this.permissionUrl = permissionUrl; } + public String getApiTag() { + return apiTag == null ? "" : apiTag.trim(); + } + + public void setApiTag(String apiTag) { + this.apiTag = apiTag; + } + public String getSystemTag() { return systemTag == null ? "" : systemTag.trim(); } @@ -85,6 +98,8 @@ public class PermissionDTO { .append(permissionType).append('\"'); sb.append(",\"permissionUrl\":\"") .append(permissionUrl).append('\"'); + sb.append(",\"apiTag\":\"") + .append(apiTag).append('\"'); sb.append(",\"systemTag\":\"") .append(systemTag).append('\"'); sb.append(",\"isPublic\":") diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/permission/PermissionGroupDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/permission/PermissionGroupDTO.java new file mode 100644 index 00000000..a1569ee8 --- /dev/null +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/permission/PermissionGroupDTO.java @@ -0,0 +1,100 @@ +package ink.wgink.pojo.dtos.permission; + +import io.swagger.annotations.ApiModel; + +import java.util.ArrayList; +import java.util.List; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: PermissionGroupDTO + * @Description: 权限分组 + * @Author: WangGeng + * @Date: 2021/2/19 11:45 + * @Version: 1.0 + **/ +@ApiModel +public class PermissionGroupDTO { + + private String systemTag; + private List permissionApis; + + public String getSystemTag() { + return systemTag == null ? "" : systemTag.trim(); + } + + public void setSystemTag(String systemTag) { + this.systemTag = systemTag; + } + + public List getPermissionApis() { + if (permissionApis == null) { + return new ArrayList<>(); + } + return permissionApis; + } + + public void setPermissionApis(List permissionApis) { + this.permissionApis = permissionApis; + } + + @ApiModel + public static class PermissionApiDTO { + private String systemTag; + private String apiTag; + private List permissions; + + public String getSystemTag() { + return systemTag == null ? "" : systemTag.trim(); + } + + public void setSystemTag(String systemTag) { + this.systemTag = systemTag; + } + + public String getApiTag() { + return apiTag == null ? "" : apiTag.trim(); + } + + public void setApiTag(String apiTag) { + this.apiTag = apiTag; + } + + public List getPermissions() { + if (permissions == null) { + return new ArrayList<>(); + } + return permissions; + } + + public void setPermissions(List permissions) { + this.permissions = permissions; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"systemTag\":\"") + .append(systemTag).append('\"'); + sb.append(",\"apiTag\":\"") + .append(apiTag).append('\"'); + sb.append(",\"permissions\":") + .append(permissions); + sb.append('}'); + return sb.toString(); + } + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"systemTag\":\"") + .append(systemTag).append('\"'); + sb.append(",\"permissionApis\":") + .append(permissionApis); + sb.append('}'); + return sb.toString(); + } +} diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/permission/SystemApiDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/permission/SystemApiDTO.java new file mode 100644 index 00000000..3105d398 --- /dev/null +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/permission/SystemApiDTO.java @@ -0,0 +1,100 @@ +package ink.wgink.pojo.dtos.permission; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.ArrayList; +import java.util.List; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: PermissionSystemApiDTO + * @Description: 系统api + * @Author: WangGeng + * @Date: 2021/2/24 16:35 + * @Version: 1.0 + **/ +@ApiModel +public class SystemApiDTO { + + @ApiModelProperty(name = "systemTag", value = "系统标识") + private String systemTag; + @ApiModelProperty(name = "apis", value = "接口列表") + private List apis; + + public String getSystemTag() { + return systemTag == null ? "" : systemTag.trim(); + } + + public void setSystemTag(String systemTag) { + this.systemTag = systemTag; + } + + public List getApis() { + if (apis == null) { + return new ArrayList<>(); + } + return apis; + } + + public void setApis(List apis) { + this.apis = apis; + } + + @ApiModel + public static class ApiDTO { + @ApiModelProperty(name = "api", value = "接口") + private String api; + @ApiModelProperty(name = "apiName", value = "接口名称") + private String apiName; + @ApiModelProperty(name = "apiTag", value = "api标识") + private String apiTag; + + public ApiDTO(String api, String apiName, String apiTag) { + this.api = api; + this.apiName = apiName; + this.apiTag = apiTag; + } + + public String getApi() { + return api == null ? "" : api.trim(); + } + + public void setApi(String api) { + this.api = api; + } + + public String getApiName() { + return apiName == null ? "" : apiName.trim(); + } + + public void setApiName(String apiName) { + this.apiName = apiName; + } + + public String getApiTag() { + return apiTag == null ? "" : apiTag.trim(); + } + + public void setApiTag(String apiTag) { + this.apiTag = apiTag; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"api\":\"") + .append(api).append('\"'); + sb.append(",\"apiName\":\"") + .append(apiName).append('\"'); + sb.append(",\"apiTag\":\"") + .append(apiTag).append('\"'); + sb.append('}'); + return sb.toString(); + } + } + +} diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDTO.java index 3d588ace..1ea1ea10 100644 --- a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDTO.java +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDTO.java @@ -31,8 +31,8 @@ public class RoleDTO implements Serializable { private String roleSummary; @ApiModelProperty(name = "roleCode", value = "角色编码") private String roleCode; - @ApiModelProperty(name = "roleDataAuthority", value = "角色数据类型") - private String roleDataAuthority; + @ApiModelProperty(name = "roleDataRight", value = "角色数据类型") + private String roleDataRight; @ApiModelProperty(name = "subRoles", value = "子角色列表") private List subRoles; @@ -92,12 +92,12 @@ public class RoleDTO implements Serializable { this.roleCode = roleCode; } - public String getRoleDataAuthority() { - return roleDataAuthority == null ? "" : roleDataAuthority.trim(); + public String getRoleDataRight() { + return roleDataRight == null ? "" : roleDataRight.trim(); } - public void setRoleDataAuthority(String roleDataAuthority) { - this.roleDataAuthority = roleDataAuthority; + public void setRoleDataRight(String roleDataRight) { + this.roleDataRight = roleDataRight; } public List getSubRoles() { @@ -126,7 +126,7 @@ public class RoleDTO implements Serializable { sb.append(",\"roleCode\":") .append("\"").append(roleCode).append("\""); sb.append(",\"roleDataAuthority\":") - .append("\"").append(roleDataAuthority).append("\""); + .append("\"").append(roleDataRight).append("\""); sb.append(",\"subRoles\":") .append(subRoles); sb.append('}'); diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataAuthorityTypeDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataAuthorityTypeDTO.java deleted file mode 100644 index fb8bd4b3..00000000 --- a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataAuthorityTypeDTO.java +++ /dev/null @@ -1,50 +0,0 @@ -package ink.wgink.pojo.dtos.role; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -/** - * When you feel like quitting. Think about why you started - * 当你想要放弃的时候,想想当初你为何开始 - * - * @ClassName: RoleDataAuthorityTypeDTO - * @Description: 权限类型 - * @Author: WangGeng - * @Date: 2019/11/25 6:02 下午 - * @Version: 1.0 - **/ -@ApiModel -public class RoleDataAuthorityTypeDTO { - - @ApiModelProperty(name = "roleDataAuthorityType", value = "数据权限类型") - private String roleDataAuthorityType; - @ApiModelProperty(name = "roleDataAuthority", value = "数据权限") - private String roleDataAuthority; - - public String getRoleDataAuthorityType() { - return roleDataAuthorityType == null ? "" : roleDataAuthorityType.trim(); - } - - public void setRoleDataAuthorityType(String roleDataAuthorityType) { - this.roleDataAuthorityType = roleDataAuthorityType; - } - - public String getRoleDataAuthority() { - return roleDataAuthority == null ? "" : roleDataAuthority.trim(); - } - - public void setRoleDataAuthority(String roleDataAuthority) { - this.roleDataAuthority = roleDataAuthority; - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("{"); - sb.append("\"roleDataAuthorityType\":") - .append("\"").append(roleDataAuthorityType).append("\""); - sb.append(",\"roleDataAuthority\":") - .append("\"").append(roleDataAuthority).append("\""); - sb.append('}'); - return sb.toString(); - } -} diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataAuthorityDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataRightDTO.java similarity index 74% rename from basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataAuthorityDTO.java rename to basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataRightDTO.java index 468c7ebf..a2164e8c 100644 --- a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataAuthorityDTO.java +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataRightDTO.java @@ -16,13 +16,11 @@ import java.io.Serializable; * @Version: 1.0 **/ @ApiModel -public class RoleDataAuthorityDTO implements Serializable { +public class RoleDataRightDTO implements Serializable { private static final long serialVersionUID = -537349124664914120L; @ApiModelProperty(name = "roleId", value = "角色ID") private String roleId; - @ApiModelProperty(name = "departmentId", value = "部门ID") - private String departmentId; @ApiModelProperty(name = "userId", value = "人员ID") private String userId; @@ -34,14 +32,6 @@ public class RoleDataAuthorityDTO implements Serializable { this.roleId = roleId; } - public String getDepartmentId() { - return departmentId == null ? "" : departmentId.trim(); - } - - public void setDepartmentId(String departmentId) { - this.departmentId = departmentId; - } - public String getUserId() { return userId == null ? "" : userId.trim(); } @@ -55,8 +45,6 @@ public class RoleDataAuthorityDTO implements Serializable { final StringBuilder sb = new StringBuilder("{"); sb.append("\"roleId\":") .append("\"").append(roleId).append("\""); - sb.append(",\"departmentId\":") - .append("\"").append(departmentId).append("\""); sb.append(",\"userId\":") .append("\"").append(userId).append("\""); sb.append('}'); diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataRightInfoDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataRightInfoDTO.java new file mode 100644 index 00000000..f2e00489 --- /dev/null +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleDataRightInfoDTO.java @@ -0,0 +1,56 @@ +package ink.wgink.pojo.dtos.role; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.ArrayList; +import java.util.List; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleDataAuthorityTypeDTO + * @Description: 权限类型 + * @Author: WangGeng + * @Date: 2019/11/25 6:02 下午 + * @Version: 1.0 + **/ +@ApiModel +public class RoleDataRightInfoDTO { + + @ApiModelProperty(name = "roleDataRight", value = "数据权限") + private String roleDataRight; + @ApiModelProperty(name = "userIds", value = "数据权限") + private List userIds; + + public String getRoleDataRight() { + return roleDataRight == null ? "" : roleDataRight.trim(); + } + + public void setRoleDataRight(String roleDataRight) { + this.roleDataRight = roleDataRight; + } + + public List getUserIds() { + if (userIds == null) { + return new ArrayList<>(); + } + return userIds; + } + + public void setUserIds(List userIds) { + this.userIds = userIds; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"roleDataRight\":\"") + .append(roleDataRight).append('\"'); + sb.append(",\"userIds\":") + .append(userIds); + sb.append('}'); + return sb.toString(); + } +} diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleMenuDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleMenuDTO.java new file mode 100644 index 00000000..e8273c3f --- /dev/null +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleMenuDTO.java @@ -0,0 +1,54 @@ +package ink.wgink.pojo.dtos.role; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleMenuDTO + * @Description: 角色菜单 + * @Author: WangGeng + * @Date: 2021/2/24 8:31 + * @Version: 1.0 + **/ +@ApiModel +public class RoleMenuDTO implements Serializable { + + private static final long serialVersionUID = 5517176078321727490L; + + @ApiModelProperty(name = "roleId", value = "角色ID") + private String roleId; + @ApiModelProperty(name = "menuId", value = "菜单ID") + private String menuId; + + public String getRoleId() { + return roleId == null ? "" : roleId.trim(); + } + + public void setRoleId(String roleId) { + this.roleId = roleId; + } + + public String getMenuId() { + return menuId == null ? "" : menuId.trim(); + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"roleId\":\"") + .append(roleId).append('\"'); + sb.append(",\"menuId\":\"") + .append(menuId).append('\"'); + sb.append('}'); + return sb.toString(); + } +} diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RolePermissionDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RolePermissionDTO.java index 8c63355b..621ba687 100644 --- a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RolePermissionDTO.java +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RolePermissionDTO.java @@ -4,6 +4,10 @@ import ink.wgink.pojo.dtos.permission.PermissionDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + /** * @ClassName: PermissionDTO * @Description: 权限 @@ -12,10 +16,17 @@ import io.swagger.annotations.ApiModelProperty; * @Version: 1.0 **/ @ApiModel -public class RolePermissionDTO extends PermissionDTO { +public class RolePermissionDTO implements Serializable { + private static final long serialVersionUID = 2694431497469393859L; @ApiModelProperty(name = "roleId", value = "角色ID") private String roleId; + @ApiModelProperty(name = "apiTag", value = "系统标识") + private String apiTag; + @ApiModelProperty(name = "permissionId", value = "权限ID") + private String permissionId; + @ApiModelProperty(name = "permissionType", value = "权限类型") + private String permissionType; public String getRoleId() { return roleId == null ? "" : roleId.trim(); @@ -25,11 +36,41 @@ public class RolePermissionDTO extends PermissionDTO { this.roleId = roleId; } + public String getApiTag() { + return apiTag == null ? "" : apiTag.trim(); + } + + public void setApiTag(String apiTag) { + this.apiTag = apiTag; + } + + public String getPermissionId() { + return permissionId == null ? "" : permissionId.trim(); + } + + public void setPermissionId(String permissionId) { + this.permissionId = permissionId; + } + + public String getPermissionType() { + return permissionType == null ? "" : permissionType.trim(); + } + + public void setPermissionType(String permissionType) { + this.permissionType = permissionType; + } + @Override public String toString() { final StringBuilder sb = new StringBuilder("{"); - sb.append("\"roleId\":") - .append("\"").append(roleId).append("\""); + sb.append("\"roleId\":\"") + .append(roleId).append('\"'); + sb.append(",\"apiTag\":\"") + .append(apiTag).append('\"'); + sb.append(",\"permissionId\":\"") + .append(permissionId).append('\"'); + sb.append(",\"permissionType\":\"") + .append(permissionType).append('\"'); sb.append('}'); return sb.toString(); } diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleUserDTO.java b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleUserDTO.java new file mode 100644 index 00000000..43a18dd5 --- /dev/null +++ b/basic-pojo/src/main/java/ink/wgink/pojo/dtos/role/RoleUserDTO.java @@ -0,0 +1,154 @@ +package ink.wgink.pojo.dtos.role; + +import ink.wgink.pojo.dtos.user.UserDTO; +import io.swagger.annotations.ApiModel; + +import java.io.Serializable; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleUserDTO + * @Description: 角色用户 + * @Author: WangGeng + * @Date: 2021/2/18 11:31 + * @Version: 1.0 + **/ +@ApiModel +public class RoleUserDTO implements Serializable { + + private static final long serialVersionUID = -1587518239154577015L; + private String userId; + private String groupId; + private String userUsername; + private String userName; + private String userPhone; + private String userEmail; + private String groupName; + private Integer userType; + private Integer userState; + private String userAvatar; + + public RoleUserDTO() { + + } + + public RoleUserDTO(UserDTO userDTO) { + this.userId = userDTO.getUserId(); + this.userUsername = userDTO.getUserUsername(); + this.userName = userDTO.getUserName(); + this.userPhone = userDTO.getUserPhone(); + this.userEmail = userDTO.getUserEmail(); + this.userType = userDTO.getUserType(); + this.userState = userDTO.getUserState(); + this.userAvatar = userDTO.getUserAvatar(); + } + + public String getUserId() { + return userId == null ? "" : userId.trim(); + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getGroupId() { + return groupId == null ? "" : groupId.trim(); + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getUserUsername() { + return userUsername == null ? "" : userUsername.trim(); + } + + public void setUserUsername(String userUsername) { + this.userUsername = userUsername; + } + + public String getUserName() { + return userName == null ? "" : userName.trim(); + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getUserPhone() { + return userPhone == null ? "" : userPhone.trim(); + } + + public void setUserPhone(String userPhone) { + this.userPhone = userPhone; + } + + public String getUserEmail() { + return userEmail == null ? "" : userEmail.trim(); + } + + public void setUserEmail(String userEmail) { + this.userEmail = userEmail; + } + + public String getGroupName() { + return groupName == null ? "" : groupName.trim(); + } + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + + public Integer getUserType() { + return userType; + } + + public void setUserType(Integer userType) { + this.userType = userType; + } + + public Integer getUserState() { + return userState; + } + + public void setUserState(Integer userState) { + this.userState = userState; + } + + public String getUserAvatar() { + return userAvatar == null ? "" : userAvatar.trim(); + } + + public void setUserAvatar(String userAvatar) { + this.userAvatar = userAvatar; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"userId\":\"") + .append(userId).append('\"'); + sb.append(",\"groupId\":\"") + .append(groupId).append('\"'); + sb.append(",\"userUsername\":\"") + .append(userUsername).append('\"'); + sb.append(",\"userName\":\"") + .append(userName).append('\"'); + sb.append(",\"userPhone\":\"") + .append(userPhone).append('\"'); + sb.append(",\"userEmail\":\"") + .append(userEmail).append('\"'); + sb.append(",\"groupName\":\"") + .append(groupName).append('\"'); + sb.append(",\"userType\":") + .append(userType); + sb.append(",\"userState\":") + .append(userState); + sb.append(",\"userAvatar\":\"") + .append(userAvatar).append('\"'); + sb.append('}'); + return sb.toString(); + } +} diff --git a/basic-util/src/main/java/ink/wgink/util/RegexUtil.java b/basic-util/src/main/java/ink/wgink/util/RegexUtil.java index e2eefd3d..102eb344 100644 --- a/basic-util/src/main/java/ink/wgink/util/RegexUtil.java +++ b/basic-util/src/main/java/ink/wgink/util/RegexUtil.java @@ -1,5 +1,6 @@ package ink.wgink.util; +import java.util.regex.Matcher; import java.util.regex.Pattern; /** @@ -78,6 +79,10 @@ public class RegexUtil { * 强密码 */ private static final Pattern PASSWORD_STRONG = Pattern.compile(String.format("(?=.*[A-Za-z])(?=.*[0-9])(?=.*[%s]).{%d,%d}", SPECIAL_CHARACTERS, PASSWORD_LENGTH_MIN, PASSWORD_LENGTH_MAX)); + /** + * 路径参数 + */ + private static final Pattern PATH_PARAMS = Pattern.compile("\\{\\w+\\}"); /** * 判断弱密码强度 @@ -220,4 +225,20 @@ public class RegexUtil { return customPattern.matcher(input).matches(); } + /** + * 将路径中的参数替换为指定的字符,返回替换后的结果 + * + * @param path 路径 + * @param replaceStr 替换后的字符 + * @return + */ + public static String replacePathParams(String path, String replaceStr) { + Matcher matcher = PATH_PARAMS.matcher(path); + while (matcher.find()) { + String group = matcher.group(); + path = path.replace(group, replaceStr); + } + return path; + } + } diff --git a/common/src/main/java/ink/wgink/common/base/DefaultBaseController.java b/common/src/main/java/ink/wgink/common/base/DefaultBaseController.java index eed3c038..06c001d1 100644 --- a/common/src/main/java/ink/wgink/common/base/DefaultBaseController.java +++ b/common/src/main/java/ink/wgink/common/base/DefaultBaseController.java @@ -1,18 +1,30 @@ package ink.wgink.common.base; +import ink.wgink.exceptions.ParamsException; +import ink.wgink.exceptions.SearchException; import ink.wgink.interfaces.menu.IMenuBaseService; import ink.wgink.interfaces.user.IUserCheckService; import ink.wgink.pojo.dtos.menu.MenuDTO; +import ink.wgink.pojo.dtos.permission.SystemApiDTO; +import ink.wgink.util.RegexUtil; import ink.wgink.util.map.HashMapUtil; import ink.wgink.util.request.RequestUtil; +import io.swagger.models.Operation; +import io.swagger.models.Path; +import io.swagger.models.Swagger; +import io.swagger.models.Tag; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; -import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; +import springfox.documentation.service.Documentation; +import springfox.documentation.spring.web.DocumentationCache; +import springfox.documentation.swagger2.mappers.ServiceModelToSwagger2Mapper; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @@ -33,34 +45,8 @@ import java.util.Map; public class DefaultBaseController { protected static final Logger LOG = LoggerFactory.getLogger(DefaultBaseController.class); - @Autowired private HttpSession httpSession; - @Autowired(required = false) - private IMenuBaseService menuBaseService; - @Autowired(required = false) - private IUserCheckService userCheckService; - - @GetMapping("index") - public ModelAndView goIndex() { - ModelAndView mv = new ModelAndView("index"); - - if (menuBaseService != null) { - List menus; - // 加载菜单 - if (userCheckService != null) { - // 引入用户模块,是统一用户系统,加载统一用户系统菜单 - menus = menuBaseService.listAllByParentId(IMenuBaseService.MENU_UNIFIED_USER); - } else { - // 未引入用户模块,是客户端系统,加载客户端菜单 - menus = new ArrayList<>(); - } - - mv.addObject("menus", menus); - } - - return mv; - } /** * 获取请求参数 @@ -70,7 +56,7 @@ public class DefaultBaseController { protected Map requestParams() { Map params = requestParams(RequestUtil.getRequest()); String keywords = "keywords"; - if (!StringUtils.isEmpty(params.get(keywords))) { + if (params.get(keywords) != null && !StringUtils.isBlank(params.get(keywords).toString())) { try { params.replace(keywords, URLDecoder.decode(params.get(keywords).toString().trim(), "UTF-8")); } catch (Exception e) { @@ -78,7 +64,7 @@ public class DefaultBaseController { } } String showLevel = "showLevel"; - if (StringUtils.isEmpty(params.get(showLevel))) { + if (params.get(showLevel) == null || StringUtils.isEmpty(params.get(showLevel).toString())) { params.put(showLevel, "0"); } return params; diff --git a/common/src/main/java/ink/wgink/common/base/DefaultBaseService.java b/common/src/main/java/ink/wgink/common/base/DefaultBaseService.java index f77f7be8..3dfcaa29 100644 --- a/common/src/main/java/ink/wgink/common/base/DefaultBaseService.java +++ b/common/src/main/java/ink/wgink/common/base/DefaultBaseService.java @@ -2,7 +2,7 @@ package ink.wgink.common.base; import com.alibaba.fastjson.JSONObject; import ink.wgink.common.component.SecurityComponent; -import ink.wgink.common.enums.RoleDataAuthorityEnum; +import ink.wgink.common.enums.RoleDataRightEnum; import ink.wgink.exceptions.AccessTokenException; import ink.wgink.exceptions.SearchException; import ink.wgink.interfaces.consts.ISystemConstant; @@ -250,16 +250,16 @@ public class DefaultBaseService { } String dataAuthority = currentUser.getDataAuthority(); List dataAuthorityUserIds = currentUser.getDataAuthorityUserIds(); - if (org.apache.commons.lang3.StringUtils.equals(RoleDataAuthorityEnum.ALL.getDataAuthorityType(), dataAuthority)) { + if (org.apache.commons.lang3.StringUtils.equals(RoleDataRightEnum.ALL.getValue(), dataAuthority)) { return; - } else if (org.apache.commons.lang3.StringUtils.equals(RoleDataAuthorityEnum.SELF.getDataAuthorityType(), dataAuthority)) { + } else if (org.apache.commons.lang3.StringUtils.equals(RoleDataRightEnum.SELF.getValue(), dataAuthority)) { params.put(ISystemConstant.DATA_AUTHORITY, dataAuthority); params.put(ISystemConstant.DATA_CREATOR, currentUser.getUserId()); - } else if (org.apache.commons.lang3.StringUtils.equals(RoleDataAuthorityEnum.DEPARTMENT.getDataAuthorityType(), dataAuthority) - || org.apache.commons.lang3.StringUtils.equals(RoleDataAuthorityEnum.CUSTOM.getDataAuthorityType(), dataAuthority)) { + } else if (org.apache.commons.lang3.StringUtils.equals(RoleDataRightEnum.DEPARTMENT.getValue(), dataAuthority) + || org.apache.commons.lang3.StringUtils.equals(RoleDataRightEnum.CUSTOM.getValue(), dataAuthority)) { if (Objects.isNull(dataAuthorityUserIds) || dataAuthorityUserIds.isEmpty()) { LOG.debug("权限列表为空,设置查看个人"); - params.put(ISystemConstant.DATA_AUTHORITY, RoleDataAuthorityEnum.SELF.getDataAuthorityType()); + params.put(ISystemConstant.DATA_AUTHORITY, RoleDataRightEnum.SELF.getValue()); params.put(ISystemConstant.DATA_CREATOR, currentUser.getUserId()); } else { params.put(ISystemConstant.DATA_AUTHORITY, dataAuthority); diff --git a/common/src/main/java/ink/wgink/common/base/IndexController.java b/common/src/main/java/ink/wgink/common/base/IndexController.java new file mode 100644 index 00000000..7a791103 --- /dev/null +++ b/common/src/main/java/ink/wgink/common/base/IndexController.java @@ -0,0 +1,130 @@ +package ink.wgink.common.base; + +import ink.wgink.exceptions.ParamsException; +import ink.wgink.exceptions.SearchException; +import ink.wgink.interfaces.menu.IMenuBaseService; +import ink.wgink.interfaces.user.IUserCheckService; +import ink.wgink.pojo.dtos.menu.MenuDTO; +import ink.wgink.pojo.dtos.permission.SystemApiDTO; +import ink.wgink.util.RegexUtil; +import io.swagger.models.Operation; +import io.swagger.models.Path; +import io.swagger.models.Swagger; +import io.swagger.models.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; +import springfox.documentation.service.Documentation; +import springfox.documentation.spring.web.DocumentationCache; +import springfox.documentation.swagger2.mappers.ServiceModelToSwagger2Mapper; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: IndexController + * @Description: index + * @Author: WangGeng + * @Date: 2021/2/24 20:17 + * @Version: 1.0 + **/ +@Controller +public class IndexController { + + private static String API_TYPE_GET = "get"; + private static String API_TYPE_POST = "post"; + private static String API_TYPE_PUT = "put"; + private static String API_TYPE_DELETE = "delete"; + + + @Autowired(required = false) + private IMenuBaseService menuBaseService; + @Autowired(required = false) + private IUserCheckService userCheckService; + @Autowired + private DocumentationCache documentationCache; + @Autowired + private ServiceModelToSwagger2Mapper serviceModelToSwagger2Mapper; + + @GetMapping("system-api/{group}/{apiType}") + @ResponseBody + public SystemApiDTO getSystemApi(@PathVariable("group") String group, @PathVariable("apiType") String apiType, HttpServletRequest request) { + boolean apiTypeFlag = StringUtils.equalsIgnoreCase(API_TYPE_POST, apiType) || + StringUtils.equalsIgnoreCase(API_TYPE_DELETE, apiType) || + StringUtils.equalsIgnoreCase(API_TYPE_PUT, apiType) || + StringUtils.equalsIgnoreCase(API_TYPE_GET, apiType); + if (!apiTypeFlag) { + throw new ParamsException("api类型错误,只能是 post、delete、put、get 其中一种"); + } + Documentation documentation = documentationCache.documentationByGroup(group); + if (documentation == null) { + throw new SearchException("无任何接口"); + } + Swagger swagger = serviceModelToSwagger2Mapper.mapDocumentation(documentation); + // 标签 + List tags = swagger.getTags(); + List apis = new ArrayList<>(); + for (Map.Entry kv : swagger.getPaths().entrySet()) { + String keyPath = kv.getKey(); + Path valuePath = kv.getValue(); + Operation operation = null; + if (StringUtils.equals(API_TYPE_POST, apiType)) { + operation = valuePath.getPost(); + } else if (StringUtils.equals(API_TYPE_DELETE, apiType)) { + operation = valuePath.getDelete(); + } else if (StringUtils.equals(API_TYPE_PUT, apiType)) { + operation = valuePath.getPut(); + } else if (StringUtils.equals(API_TYPE_GET, apiType)) { + operation = valuePath.getGet(); + } + if (operation == null) { + continue; + } + String apiTag = null; + for (Tag tag : tags) { + if (StringUtils.equals(tag.getName(), operation.getTags().get(0))) { + apiTag = tag.getDescription().replaceAll("\\s", ""); + } + } + if (apiTag == null) { + continue; + } + apis.add(new SystemApiDTO.ApiDTO(RegexUtil.replacePathParams(keyPath, "*"), operation.getSummary(), apiTag)); + } + SystemApiDTO systemApiDTO = new SystemApiDTO(); + systemApiDTO.setSystemTag(request.getContextPath()); + systemApiDTO.setApis(apis); + return systemApiDTO; + } + + @GetMapping("index") + public ModelAndView goIndex() { + ModelAndView mv = new ModelAndView("index"); + + if (menuBaseService != null) { + List menus; + // 加载菜单 + if (userCheckService != null) { + // 引入用户模块,是统一用户系统,加载统一用户系统菜单 + menus = menuBaseService.listAllByParentId(IMenuBaseService.MENU_UNIFIED_USER); + } else { + // 未引入用户模块,是客户端系统,加载客户端菜单 + menus = new ArrayList<>(); + } + + mv.addObject("menus", menus); + } + + return mv; + } +} diff --git a/common/src/main/java/ink/wgink/common/config/BeanConfig.java b/common/src/main/java/ink/wgink/common/config/BeanConfig.java index c338f950..40207d7d 100644 --- a/common/src/main/java/ink/wgink/common/config/BeanConfig.java +++ b/common/src/main/java/ink/wgink/common/config/BeanConfig.java @@ -67,7 +67,6 @@ public class BeanConfig { return true; } }; - // return new BCryptPasswordEncoder(); } } diff --git a/common/src/main/java/ink/wgink/common/config/SwaggerConfig.java b/common/src/main/java/ink/wgink/common/config/SwaggerConfig.java index bb85a0a8..a1c8ae54 100644 --- a/common/src/main/java/ink/wgink/common/config/SwaggerConfig.java +++ b/common/src/main/java/ink/wgink/common/config/SwaggerConfig.java @@ -3,9 +3,9 @@ package ink.wgink.common.config; import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Predicate; -import ink.wgink.common.config.properties.SwaggerProperties; +import com.google.common.base.Predicates; import ink.wgink.interfaces.consts.ISystemConstant; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.RequestMethod; @@ -19,6 +19,7 @@ import springfox.documentation.service.ResponseMessage; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; +import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.List; @@ -32,8 +33,25 @@ import java.util.List; @Configuration public class SwaggerConfig { - @Autowired - private SwaggerProperties swaggerProperties; + @Value("${swagger.title:相关接口文档}") + private String title; + @Value("${swagger.description:相关接口文档}") + private String description; + @Value("${swagger.service-url:http://www.wgink.ink}") + private String serviceUrl; + @Value("${swagger.version:1.0}") + private String version; + @Value("#{'${swagger.base-package-list}'.split(',')}") + private List basePackageList; + private Predicate[] basePackages; + + @PostConstruct + private void initBasePackages() { + basePackages = new Predicate[basePackageList.size()]; + for (int i = 0; i < basePackages.length; i++) { + basePackages[i] = RequestHandlerSelectors.basePackage(basePackageList.get(i)); + } + } private List responseMessageList() { List responseMessageList = new ArrayList<>(); @@ -53,7 +71,7 @@ public class SwaggerConfig { .globalResponseMessage(RequestMethod.GET, responseMessageList) .apiInfo(apiInfo()) .select() - .apis(basePackage(swaggerProperties.getBasePackageList())) + .apis(Predicates.or(basePackages)) .paths(PathSelectors.any()) .build(); } @@ -69,7 +87,7 @@ public class SwaggerConfig { .groupName(ISystemConstant.API_GROUP_SYSTEM) .apiInfo(apiInfo()) .select() - .apis(basePackage(swaggerProperties.getBasePackageList())) + .apis(Predicates.or(basePackages)) .paths(PathSelectors.ant("/api/**")) .build(); } @@ -85,7 +103,7 @@ public class SwaggerConfig { .groupName(ISystemConstant.API_GROUP_RESOURCE) .apiInfo(apiInfo()) .select() - .apis(basePackage(swaggerProperties.getBasePackageList())) + .apis(Predicates.or(basePackages)) .paths(PathSelectors.ant("/resource/**")) .build(); } @@ -101,7 +119,7 @@ public class SwaggerConfig { .groupName(ISystemConstant.API_GROUP_APP) .apiInfo(apiInfo()) .select() - .apis(basePackage(swaggerProperties.getBasePackageList())) + .apis(Predicates.or(basePackages)) .paths(PathSelectors.ant("/app/**")) .build(); } @@ -117,7 +135,7 @@ public class SwaggerConfig { .groupName(ISystemConstant.API_GROUP_ROUTE) .apiInfo(apiInfo()) .select() - .apis(basePackage(swaggerProperties.getBasePackageList())) + .apis(Predicates.or(basePackages)) .paths(PathSelectors.ant("/route/**")) .build(); } @@ -133,7 +151,7 @@ public class SwaggerConfig { .groupName(ISystemConstant.API_GROUP_WECHAT) .apiInfo(apiInfo()) .select() - .apis(basePackage(swaggerProperties.getBasePackageList())) + .apis(Predicates.or(basePackages)) .paths(PathSelectors.ant("/wechat/**")) .build(); } @@ -149,17 +167,17 @@ public class SwaggerConfig { .groupName(ISystemConstant.API_GROUP_WECHAT_MINI_APP) .apiInfo(apiInfo()) .select() - .apis(basePackage(swaggerProperties.getBasePackageList())) + .apis(Predicates.or(basePackages)) .paths(PathSelectors.ant("/wxminiapp/**")) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title(swaggerProperties.getTitle()) - .description(swaggerProperties.getDescription()) - .termsOfServiceUrl(swaggerProperties.getServiceUrl()) - .version(swaggerProperties.getVersion()) + .title(title) + .description(description) + .termsOfServiceUrl(serviceUrl) + .version(version) .build(); } diff --git a/common/src/main/java/ink/wgink/common/config/properties/SwaggerProperties.java b/common/src/main/java/ink/wgink/common/config/properties/SwaggerProperties.java deleted file mode 100644 index 1c118b7e..00000000 --- a/common/src/main/java/ink/wgink/common/config/properties/SwaggerProperties.java +++ /dev/null @@ -1,89 +0,0 @@ -package ink.wgink.common.config.properties; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * When you feel like quitting. Think about why you started - * 当你想要放弃的时候,想想当初你为何开始 - * - * @ClassName: SwaggerProperties - * @Description: swagger - * @Author: WangGeng - * @Date: 2021/1/24 20:00 - * @Version: 1.0 - **/ -@Component -@ConfigurationProperties(prefix = "swagger") -public class SwaggerProperties { - - private String title = "相关接口文档"; - private String description = "相关接口文档"; - private String serviceUrl = "http://www.wgink.ink/"; - private String version = "1.0"; - private List basePackageList; - - public String getTitle() { - return title == null ? "" : title.trim(); - } - - public void setTitle(String title) { - this.title = title; - } - - public String getDescription() { - return description == null ? "" : description.trim(); - } - - public void setDescription(String description) { - this.description = description; - } - - public String getServiceUrl() { - return serviceUrl == null ? "" : serviceUrl.trim(); - } - - public void setServiceUrl(String serviceUrl) { - this.serviceUrl = serviceUrl; - } - - public String getVersion() { - return version == null ? "" : version.trim(); - } - - public void setVersion(String version) { - this.version = version; - } - - public List getBasePackageList() { - if (basePackageList == null) { - return new ArrayList<>(); - } - basePackageList.add("ink.wgink"); - return basePackageList; - } - - public void setBasePackageList(List basePackageList) { - this.basePackageList = basePackageList; - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("{"); - sb.append("\"title\":\"") - .append(title).append('\"'); - sb.append(",\"description\":\"") - .append(description).append('\"'); - sb.append(",\"serviceUrl\":\"") - .append(serviceUrl).append('\"'); - sb.append(",\"version\":\"") - .append(version).append('\"'); - sb.append(",\"basePackageList\":") - .append(basePackageList); - sb.append('}'); - return sb.toString(); - } -} diff --git a/common/src/main/java/ink/wgink/common/enums/RoleDataAuthorityEnum.java b/common/src/main/java/ink/wgink/common/enums/RoleDataRightEnum.java similarity index 57% rename from common/src/main/java/ink/wgink/common/enums/RoleDataAuthorityEnum.java rename to common/src/main/java/ink/wgink/common/enums/RoleDataRightEnum.java index 514d639c..63e7ea5f 100644 --- a/common/src/main/java/ink/wgink/common/enums/RoleDataAuthorityEnum.java +++ b/common/src/main/java/ink/wgink/common/enums/RoleDataRightEnum.java @@ -10,20 +10,20 @@ package ink.wgink.common.enums; * @Date: 2019/11/23 9:43 下午 * @Version: 1.0 **/ -public enum RoleDataAuthorityEnum { +public enum RoleDataRightEnum { ALL("all"), DEPARTMENT("department"), CUSTOM("custom"), SELF("self"); - private String dataAuthorityType; + private String value; - RoleDataAuthorityEnum(String dataAuthorityType) { - this.dataAuthorityType = dataAuthorityType; + RoleDataRightEnum(String value) { + this.value = value; } - public String getDataAuthorityType() { - return dataAuthorityType == null ? "" : dataAuthorityType.trim(); + public String getValue() { + return value == null ? "" : value.trim(); } } \ No newline at end of file diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java index 5e7a5314..5e9781c8 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java @@ -30,7 +30,7 @@ import java.util.Map; * @Date: 2019/11/18 14:00 * @Version: 1.0 **/ -@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "地区字典管理接口") +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "地区字典接口") @RestController @RequestMapping(ISystemConstant.API_PREFIX + "/area") public class AreaController extends DefaultBaseController { @@ -100,7 +100,7 @@ public class AreaController extends DefaultBaseController { return areaService.listAllByParentId(areaParentId); } - @ApiOperation(value = "分页地区字典列表", notes = "分页地区字典列表接口") + @ApiOperation(value = "地区字典分页列表", notes = "地区字典分页列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "parentId", value = "上级ID", paramType = "query", dataType = "String"), @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), @@ -122,7 +122,7 @@ public class AreaController extends DefaultBaseController { return areaService.listPage(page); } - @ApiOperation(value = "zTree列表", notes = "zTree列表接口") + @ApiOperation(value = "地区字典zTree列表", notes = "地区字典zTree列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "父ID", paramType = "query", dataType = "String") }) diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/DataController.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/DataController.java index 79d4d5d1..09d3bdcf 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/DataController.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/DataController.java @@ -30,7 +30,7 @@ import java.util.Map; * @Date: 2019/11/18 14:00 * @Version: 1.0 **/ -@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "字典管理接口") +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "字典接口") @RestController @RequestMapping(ISystemConstant.API_PREFIX + "/data") public class DataController extends DefaultBaseController { @@ -100,7 +100,7 @@ public class DataController extends DefaultBaseController { return dataService.listAllByParentId(dataParentId); } - @ApiOperation(value = "分页字典列表", notes = "分页字典列表接口") + @ApiOperation(value = "字典分页列表", notes = "字典分页列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "parentId", value = "上级ID", paramType = "query", dataType = "String"), @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), @@ -122,7 +122,7 @@ public class DataController extends DefaultBaseController { return dataService.listPage(page); } - @ApiOperation(value = "zTree列表", notes = "zTree列表接口") + @ApiOperation(value = "字典zTree列表", notes = "字典zTree列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "父ID", paramType = "query", dataType = "String") }) diff --git a/module-file/src/main/java/ink/wgink/module/file/controller/api/FileController.java b/module-file/src/main/java/ink/wgink/module/file/controller/api/FileController.java index 56aa26a5..ace96724 100644 --- a/module-file/src/main/java/ink/wgink/module/file/controller/api/FileController.java +++ b/module-file/src/main/java/ink/wgink/module/file/controller/api/FileController.java @@ -31,7 +31,7 @@ import java.util.Map; * @Date: 2019/3/10 7:03 PM * @Version: 1.0 **/ -@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "文件管理接口") +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "文件接口") @RestController @RequestMapping(ISystemConstant.API_PREFIX + "/file") public class FileController extends DefaultBaseController { @@ -57,7 +57,7 @@ public class FileController extends DefaultBaseController { return fileService.listPageInfo(page); } - @ApiOperation(value = "删除文章类别(id列表)", notes = "删除文章类别(id列表)接口") + @ApiOperation(value = "删除文件类别(id列表)", notes = "删除文件类别(id列表)接口") @ApiImplicitParams({ @ApiImplicitParam(name = "ids", value = "ID列表,用下划线分隔", paramType = "path", example = "1_2_3") }) @@ -152,13 +152,15 @@ public class FileController extends DefaultBaseController { * @return * @throws IOException */ + @ApiOperation(value = "百度富文本配置", notes = "百度富文本配置接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @RequestMapping("ueditor") public JSONObject uEditor(MultipartFile file, HttpServletRequest request) throws IOException { Map params = requestParams(); return fileService.uEditor(file, request, params); } - @ApiOperation(value = "上传图片", notes = "上传图片接口") + @ApiOperation(value = "wangEditor上传图片", notes = "wangEditor上传图片接口") @ApiImplicitParams({ @ApiImplicitParam(name = "image", value = "文件name", paramType = "query") }) diff --git a/module-permission/src/main/java/ink/wgink/module/permission/controller/api/PermissionController.java b/module-permission/src/main/java/ink/wgink/module/permission/controller/api/PermissionController.java index 91c67d09..453c2fbf 100644 --- a/module-permission/src/main/java/ink/wgink/module/permission/controller/api/PermissionController.java +++ b/module-permission/src/main/java/ink/wgink/module/permission/controller/api/PermissionController.java @@ -3,9 +3,12 @@ package ink.wgink.module.permission.controller.api; import ink.wgink.annotation.CheckRequestBodyAnnotation; import ink.wgink.common.base.DefaultBaseController; import ink.wgink.common.component.SecurityComponent; +import ink.wgink.exceptions.ParamsException; import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.module.permission.pojo.vos.SystemApiVO; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.dtos.permission.PermissionDTO; +import ink.wgink.pojo.dtos.permission.PermissionGroupDTO; import ink.wgink.pojo.result.ErrorResult; import ink.wgink.pojo.result.SuccessResult; import ink.wgink.pojo.result.SuccessResultData; @@ -13,6 +16,7 @@ import ink.wgink.pojo.result.SuccessResultList; import ink.wgink.module.permission.pojo.vos.PermissionVO; import ink.wgink.module.permission.service.IPermissionService; import io.swagger.annotations.*; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.AntPathMatcher; import org.springframework.web.bind.annotation.*; @@ -48,6 +52,22 @@ public class PermissionController extends DefaultBaseController { return new SuccessResult(); } + @ApiOperation(value = "新增权限(快速)", notes = "新增权限(快速)接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PostMapping("save-quick/{permissionType}") + @CheckRequestBodyAnnotation + public SuccessResult saveQuick(@PathVariable("permissionType") String permissionType, @RequestBody SystemApiVO systemApiVO) { + boolean permissionTypeFlag = StringUtils.equals(permissionType, IPermissionService.PERMISSION_INSERT) || + StringUtils.equals(permissionType, IPermissionService.PERMISSION_DELETE) || + StringUtils.equals(permissionType, IPermissionService.PERMISSION_UPDATE) || + StringUtils.equals(permissionType, IPermissionService.PERMISSION_QUERY); + if (!permissionTypeFlag) { + throw new ParamsException("权限类型错误"); + } + permissionService.saveQuick(permissionType, systemApiVO); + return new SuccessResult(); + } + @ApiOperation(value = "删除权限(id列表)", notes = "删除权限(id列表)接口") @ApiImplicitParams({ @ApiImplicitParam(name = "ids", value = "ID列表,用下划线分隔", paramType = "path", example = "1_2_3") @@ -106,6 +126,14 @@ public class PermissionController extends DefaultBaseController { return permissionService.listPage(page); } + @ApiOperation(value = "权限分组列表", notes = "权限分组列表接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listgroup") + public List listGroup() { + Map params = requestParams(); + return permissionService.listGroup(params); + } + @ApiOperation(value = "权限统计", notes = "权限统计接口") @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @GetMapping("count") diff --git a/module-permission/src/main/java/ink/wgink/module/permission/controller/route/PermissionRouteController.java b/module-permission/src/main/java/ink/wgink/module/permission/controller/route/PermissionRouteController.java index a9796d30..31bdd42b 100644 --- a/module-permission/src/main/java/ink/wgink/module/permission/controller/route/PermissionRouteController.java +++ b/module-permission/src/main/java/ink/wgink/module/permission/controller/route/PermissionRouteController.java @@ -27,6 +27,11 @@ public class PermissionRouteController { return new ModelAndView("permission/save"); } + @GetMapping("save-quick") + public ModelAndView saveQuick() { + return new ModelAndView("permission/save-quick"); + } + @GetMapping("update") public ModelAndView update() { return new ModelAndView("permission/update"); diff --git a/module-permission/src/main/java/ink/wgink/module/permission/pojo/vos/PermissionVO.java b/module-permission/src/main/java/ink/wgink/module/permission/pojo/vos/PermissionVO.java index 9d6cbd17..ce7088be 100644 --- a/module-permission/src/main/java/ink/wgink/module/permission/pojo/vos/PermissionVO.java +++ b/module-permission/src/main/java/ink/wgink/module/permission/pojo/vos/PermissionVO.java @@ -2,6 +2,7 @@ package ink.wgink.module.permission.pojo.vos; import ink.wgink.annotation.CheckEmptyAnnotation; import ink.wgink.annotation.CheckNumberAnnotation; +import ink.wgink.module.permission.service.IPermissionService; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -19,10 +20,13 @@ public class PermissionVO { @CheckEmptyAnnotation(name = "权限名称") private String permissionTitle; @ApiModelProperty(name = "permissionType", value = "权限类型") - @CheckEmptyAnnotation(name = "权限类型", types = {"permissionInsert", "permissionDelete", "permissionUpdate", "permissionQuery"}) + @CheckEmptyAnnotation(name = "权限类型", types = {IPermissionService.PERMISSION_INSERT, IPermissionService.PERMISSION_DELETE, IPermissionService.PERMISSION_UPDATE, IPermissionService.PERMISSION_QUERY}) private String permissionType; @ApiModelProperty(name = "permissionUrl", value = "权限路径") private String permissionUrl; + @ApiModelProperty(name = "apiTag", value = "接口标识") + @CheckEmptyAnnotation(name = "系统标识") + private String apiTag; @ApiModelProperty(name = "systemTag", value = "系统标识") private String systemTag; @ApiModelProperty(name = "isPublic", value = "是否公共") @@ -53,8 +57,16 @@ public class PermissionVO { this.permissionUrl = permissionUrl; } + public String getApiTag() { + return apiTag == null ? "" : apiTag.trim(); + } + + public void setApiTag(String apiTag) { + this.apiTag = apiTag; + } + public String getSystemTag() { - return systemTag == null ? "" : systemTag.trim(); + return systemTag == null ? IPermissionService.DEFAULT_SYSTEM_TAG : systemTag.trim(); } public void setSystemTag(String systemTag) { @@ -78,6 +90,8 @@ public class PermissionVO { .append(permissionType).append('\"'); sb.append(",\"permissionUrl\":\"") .append(permissionUrl).append('\"'); + sb.append(",\"apiTag\":\"") + .append(apiTag).append('\"'); sb.append(",\"systemTag\":\"") .append(systemTag).append('\"'); sb.append(",\"isPublic\":") diff --git a/module-permission/src/main/java/ink/wgink/module/permission/pojo/vos/SystemApiVO.java b/module-permission/src/main/java/ink/wgink/module/permission/pojo/vos/SystemApiVO.java new file mode 100644 index 00000000..7b695c22 --- /dev/null +++ b/module-permission/src/main/java/ink/wgink/module/permission/pojo/vos/SystemApiVO.java @@ -0,0 +1,97 @@ +package ink.wgink.module.permission.pojo.vos; + +import ink.wgink.annotation.CheckEmptyAnnotation; +import ink.wgink.annotation.CheckListAnnotation; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.ArrayList; +import java.util.List; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: PermissionSystemApiDTO + * @Description: 系统api + * @Author: WangGeng + * @Date: 2021/2/24 16:35 + * @Version: 1.0 + **/ +@ApiModel +public class SystemApiVO { + + @ApiModelProperty(name = "systemTag", value = "系统标识") + @CheckEmptyAnnotation(name = "系统标识") + private String systemTag; + @ApiModelProperty(name = "apis", value = "接口列表") + @CheckListAnnotation(name = "接口列表") + private List apis; + + public String getSystemTag() { + return systemTag == null ? "" : systemTag.trim(); + } + + public void setSystemTag(String systemTag) { + this.systemTag = systemTag; + } + + public List getApis() { + if (apis == null) { + return new ArrayList<>(); + } + return apis; + } + + public void setApis(List apis) { + this.apis = apis; + } + + @ApiModel + public static class ApiVO { + @ApiModelProperty(name = "api", value = "接口") + private String api; + @ApiModelProperty(name = "apiName", value = "接口名称") + private String apiName; + @ApiModelProperty(name = "apiTag", value = "api标识") + private String apiTag; + + public String getApi() { + return api == null ? "" : api.trim(); + } + + public void setApi(String api) { + this.api = api; + } + + public String getApiName() { + return apiName == null ? "" : apiName.trim(); + } + + public void setApiName(String apiName) { + this.apiName = apiName; + } + + public String getApiTag() { + return apiTag == null ? "" : apiTag.trim(); + } + + public void setApiTag(String apiTag) { + this.apiTag = apiTag; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"api\":\"") + .append(api).append('\"'); + sb.append(",\"apiName\":\"") + .append(apiName).append('\"'); + sb.append(",\"apiTag\":\"") + .append(apiTag).append('\"'); + sb.append('}'); + return sb.toString(); + } + } + +} diff --git a/module-permission/src/main/java/ink/wgink/module/permission/service/IPermissionService.java b/module-permission/src/main/java/ink/wgink/module/permission/service/IPermissionService.java index 7e7f8f0b..d51fde38 100644 --- a/module-permission/src/main/java/ink/wgink/module/permission/service/IPermissionService.java +++ b/module-permission/src/main/java/ink/wgink/module/permission/service/IPermissionService.java @@ -1,8 +1,10 @@ package ink.wgink.module.permission.service; import ink.wgink.interfaces.permission.IPermissionCheckService; +import ink.wgink.module.permission.pojo.vos.SystemApiVO; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.dtos.permission.PermissionDTO; +import ink.wgink.pojo.dtos.permission.PermissionGroupDTO; import ink.wgink.pojo.result.SuccessResultData; import ink.wgink.pojo.result.SuccessResultList; import ink.wgink.module.permission.pojo.vos.PermissionVO; @@ -19,6 +21,27 @@ import java.util.Map; **/ public interface IPermissionService extends IPermissionCheckService { + /** + * 默认系统标识 + */ + String DEFAULT_SYSTEM_TAG = "default"; + /** + * 新增权限 + */ + String PERMISSION_INSERT = "permissionInsert"; + /** + * 删除权限 + */ + String PERMISSION_DELETE = "permissionDelete"; + /** + * 修改权限 + */ + String PERMISSION_UPDATE = "permissionUpdate"; + /** + * 查询权限 + */ + String PERMISSION_QUERY = "permissionQuery"; + /** * 新增权限 * @@ -28,6 +51,14 @@ public interface IPermissionService extends IPermissionCheckService { */ void save(PermissionVO permissionVO); + /** + * 新增权限(快速) + * + * @param permissionType + * @param systemApiVO + */ + void saveQuick(String permissionType, SystemApiVO systemApiVO); + /** * 新增权限 * @@ -84,6 +115,14 @@ public interface IPermissionService extends IPermissionCheckService { */ SuccessResultList> listPage(ListPage page); + /** + * 权限分组列表 + * + * @param params + * @return + */ + List listGroup(Map params); + /** * 权限统计 * @@ -106,5 +145,15 @@ public interface IPermissionService extends IPermissionCheckService { * @param permissionIds 权限ID列表 * @return */ - List listByIds(List permissionIds); + List list(List permissionIds); + + /** + * 权限列表 + * + * @param permissionType 权限类型 + * @param systemTag 系统标识 + * @return + */ + List list(String permissionType, String systemTag); + } \ No newline at end of file diff --git a/module-permission/src/main/java/ink/wgink/module/permission/service/impl/PermissionServiceImpl.java b/module-permission/src/main/java/ink/wgink/module/permission/service/impl/PermissionServiceImpl.java index 47b7fe00..716c1186 100644 --- a/module-permission/src/main/java/ink/wgink/module/permission/service/impl/PermissionServiceImpl.java +++ b/module-permission/src/main/java/ink/wgink/module/permission/service/impl/PermissionServiceImpl.java @@ -3,8 +3,10 @@ package ink.wgink.module.permission.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.module.permission.pojo.vos.SystemApiVO; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.dtos.permission.PermissionDTO; +import ink.wgink.pojo.dtos.permission.PermissionGroupDTO; import ink.wgink.pojo.result.SuccessResultData; import ink.wgink.pojo.result.SuccessResultList; import ink.wgink.module.permission.dao.IPermissionDao; @@ -12,9 +14,13 @@ import ink.wgink.module.permission.pojo.vos.PermissionVO; import ink.wgink.module.permission.service.IPermissionService; import ink.wgink.util.UUIDUtil; import ink.wgink.util.map.HashMapUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -36,6 +42,33 @@ public class PermissionServiceImpl extends DefaultBaseService implements IPermis savePermissionReturnId(permissionVO); } + @Override + public void saveQuick(String permissionType, SystemApiVO systemApiVO) { + List permissionDTOs = list(permissionType, systemApiVO.getSystemTag()); + List apiVOs = systemApiVO.getApis(); + for (PermissionDTO permissionDTO : permissionDTOs) { + for (int i = 0; i < apiVOs.size(); i++) { + SystemApiVO.ApiVO apiVO = apiVOs.get(i); + if (StringUtils.equalsIgnoreCase(permissionDTO.getApiTag(), apiVO.getApiTag()) && + StringUtils.equalsIgnoreCase(permissionDTO.getPermissionUrl(), apiVO.getApi())) { + // 相同不进行添加 + apiVOs.remove(i); + i--; + } + } + } + for (SystemApiVO.ApiVO apiVO : apiVOs) { + PermissionVO permissionVO = new PermissionVO(); + permissionVO.setPermissionTitle(apiVO.getApiName()); + permissionVO.setPermissionUrl(apiVO.getApi()); + permissionVO.setPermissionType(permissionType); + permissionVO.setApiTag(apiVO.getApiTag()); + permissionVO.setSystemTag(systemApiVO.getSystemTag()); + permissionVO.setIsPublic(0); + savePermissionReturnId(permissionVO); + } + } + @Override public String savePermissionReturnId(PermissionVO permissionVO) { String permissionId = UUIDUtil.getUUID(); @@ -89,6 +122,50 @@ public class PermissionServiceImpl extends DefaultBaseService implements IPermis return new SuccessResultList<>(permissionDTOs, pageInfo.getPageNum(), pageInfo.getTotal()); } + @Override + public List listGroup(Map params) { + List permissionDTOs = list(params); + // 聚合 group + Map permissionGroupDTOMap = new HashMap<>(16); + for (PermissionDTO permissionDTO : permissionDTOs) { + PermissionGroupDTO permissionGroupDTO = permissionGroupDTOMap.get(permissionDTO.getSystemTag()); + if (permissionGroupDTO == null) { + permissionGroupDTO = new PermissionGroupDTO(); + permissionGroupDTO.setSystemTag(permissionDTO.getSystemTag()); + permissionGroupDTO.setPermissionApis(new ArrayList<>()); + permissionGroupDTOMap.put(permissionDTO.getSystemTag(), permissionGroupDTO); + } + } + if (permissionGroupDTOMap.isEmpty()) { + return new ArrayList<>(); + } + // 聚合 api + Map permissionApiDTOMap = new HashMap<>(16); + for (PermissionDTO permissionDTO : permissionDTOs) { + PermissionGroupDTO.PermissionApiDTO permissionApiDTO = permissionApiDTOMap.get(permissionDTO.getApiTag()); + if (permissionApiDTO == null) { + permissionApiDTO = new PermissionGroupDTO.PermissionApiDTO(); + permissionApiDTO.setSystemTag(permissionDTO.getSystemTag()); + permissionApiDTO.setApiTag(permissionDTO.getApiTag()); + permissionApiDTO.setPermissions(new ArrayList<>()); + permissionApiDTOMap.put(permissionDTO.getApiTag(), permissionApiDTO); + } + permissionApiDTO.getPermissions().add(permissionDTO); + } + List permissionGroupDTOs = new ArrayList<>(); + for (Map.Entry groupKV : permissionGroupDTOMap.entrySet()) { + List permissionApis = new ArrayList<>(); + for (Map.Entry apiKV : permissionApiDTOMap.entrySet()) { + if (StringUtils.equals(groupKV.getKey(), apiKV.getValue().getSystemTag())) { + permissionApis.add(apiKV.getValue()); + } + } + groupKV.getValue().setPermissionApis(permissionApis); + permissionGroupDTOs.add(groupKV.getValue()); + } + return permissionGroupDTOs; + } + @Override public Integer countNumberPermission(Map params) { Integer count = permissionDao.count(params); @@ -101,10 +178,18 @@ public class PermissionServiceImpl extends DefaultBaseService implements IPermis } @Override - public List listByIds(List permissionIds) { + public List list(List permissionIds) { Map params = getHashMap(2); params.put("permissionIds", permissionIds); return list(params); } + @Override + public List list(String permissionType, String systemTag) { + Map params = getHashMap(4); + params.put("permissionType", permissionType); + params.put("systemTag", StringUtils.isBlank(systemTag) ? DEFAULT_SYSTEM_TAG : systemTag); + return list(params); + } + } \ No newline at end of file diff --git a/module-permission/src/main/resources/mybatis/mapper/permission-mapper.xml b/module-permission/src/main/resources/mybatis/mapper/permission-mapper.xml index 9a21bd01..374d6a10 100644 --- a/module-permission/src/main/resources/mybatis/mapper/permission-mapper.xml +++ b/module-permission/src/main/resources/mybatis/mapper/permission-mapper.xml @@ -9,6 +9,7 @@ + @@ -21,6 +22,7 @@ `permission_title` varchar(255) DEFAULT NULL COMMENT '权限标题', `permission_type` varchar(255) DEFAULT NULL COMMENT '权限类型', `permission_url` varchar(255) DEFAULT NULL COMMENT '权限路径', + `api_tag` varchar(255) DEFAULT NULL COMMENT 'API标识(Controller名称,用于对API进行分组)', `system_tag` varchar(255) DEFAULT NULL COMMENT '系统标识(系统路径),NULL表示本系统', `is_public` int(11) DEFAULT NULL COMMENT '是否公共', `creator` char(36) DEFAULT NULL, @@ -41,6 +43,7 @@ permission_title, permission_type, permission_url, + api_tag, system_tag, is_public, creator, @@ -53,6 +56,7 @@ #{permissionTitle}, #{permissionType}, #{permissionUrl}, + #{apiTag}, #{systemTag}, #{isPublic}, #{creator}, @@ -103,6 +107,9 @@ permission_url = #{permissionUrl}, + + api_tag = #{apiTag}, + system_tag = #{systemTag}, @@ -121,6 +128,7 @@ t1.permission_title, t1.permission_type, t1.permission_url, + t1.api_tag, t1.system_tag, t1.is_public, t1.permission_id @@ -140,6 +148,7 @@ t1.permission_title, t1.permission_type, t1.permission_url, + t1.api_tag, t1.system_tag, t1.is_public, t1.permission_id @@ -162,6 +171,10 @@ AND t1.system_tag = #{systemTag} + + AND + t1.api_tag = #{apiTag} + AND t1.is_public = #{isPublic} diff --git a/module-permission/src/main/resources/templates/permission/list.html b/module-permission/src/main/resources/templates/permission/list.html index 63e745fa..1560180e 100644 --- a/module-permission/src/main/resources/templates/permission/list.html +++ b/module-permission/src/main/resources/templates/permission/list.html @@ -31,6 +31,9 @@ + @@ -225,6 +228,16 @@ reloadTable(); } }); + } else if(layEvent === 'saveQuickEvent') { + top.dialog.open({ + url: top.restAjax.path('route/permission/save-quick?permissionType={permissionType}', [permissionType]), + title: '快捷添加', + width: '900px', + height: '500px', + onClose: function() { + reloadTable(); + } + }); } else if(layEvent === 'updateEvent') { if(checkDatas.length === 0) { top.dialog.msg(top.dataMessage.table.selectEdit); diff --git a/module-permission/src/main/resources/templates/permission/save-quick.html b/module-permission/src/main/resources/templates/permission/save-quick.html new file mode 100644 index 00000000..8dc8b987 --- /dev/null +++ b/module-permission/src/main/resources/templates/permission/save-quick.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + + +
+
+
+
+ + +
+ +
+
+
+ +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/module-permission/src/main/resources/templates/permission/save.html b/module-permission/src/main/resources/templates/permission/save.html index eabb7f54..25fc2f49 100644 --- a/module-permission/src/main/resources/templates/permission/save.html +++ b/module-permission/src/main/resources/templates/permission/save.html @@ -35,6 +35,12 @@ +
+ +
+ +
+
diff --git a/module-permission/src/main/resources/templates/permission/update.html b/module-permission/src/main/resources/templates/permission/update.html index ff1fab7a..20ec8157 100644 --- a/module-permission/src/main/resources/templates/permission/update.html +++ b/module-permission/src/main/resources/templates/permission/update.html @@ -35,6 +35,12 @@
+
+ +
+ +
+
diff --git a/service-department/src/main/java/ink/wgink/service/department/controller/api/DepartmentController.java b/service-department/src/main/java/ink/wgink/service/department/controller/api/DepartmentController.java index efa7ad9c..819278fd 100644 --- a/service-department/src/main/java/ink/wgink/service/department/controller/api/DepartmentController.java +++ b/service-department/src/main/java/ink/wgink/service/department/controller/api/DepartmentController.java @@ -82,7 +82,7 @@ public class DepartmentController extends DefaultBaseController { } - @ApiOperation(value = "更新合并到新增组织", notes = "更新合并到新增组织接口") + @ApiOperation(value = "更新合并到新增组织部门", notes = "更新合并到新增组织部门接口") @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @PutMapping("updatemergenew") @CheckRequestBodyAnnotation @@ -91,7 +91,7 @@ public class DepartmentController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "更新合并到组织", notes = "更新合并到组织接口") + @ApiOperation(value = "更新合并到组织部门", notes = "更新合并到组织部门接口") @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @PutMapping("updatemerge/{departmentId}") @CheckRequestBodyAnnotation @@ -100,7 +100,7 @@ public class DepartmentController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "更新分割部门", notes = "更新分割部门接口") + @ApiOperation(value = "更新分割组织部门", notes = "更新分割组织部门接口") @ApiImplicitParams({ @ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "path"), }) @@ -112,7 +112,7 @@ public class DepartmentController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "导入Excel", notes = "导入Excel") + @ApiOperation(value = "组织部门导入Excel", notes = "组织部门导入Excel") @ApiImplicitParams({ @ApiImplicitParam(name = "excel", value = "文件名称", paramType = "query"), }) @@ -141,7 +141,7 @@ public class DepartmentController extends DefaultBaseController { return departmentService.listAll(params); } - @ApiOperation(value = "zTree列表", notes = "zTree列表接口") + @ApiOperation(value = "组织部门zTree列表", notes = "组织部门zTree列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "父ID", paramType = "query", dataType = "String") }) @@ -166,7 +166,7 @@ public class DepartmentController extends DefaultBaseController { return departmentService.get(departmentId); } - @ApiOperation(value = "easyui组织部门列表", notes = "easyui组织部门列表列表接口") + @ApiOperation(value = "组织部门分页列表", notes = "组织部门分页列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "parentId", value = "上级ID", paramType = "query", dataType = "String"), @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), @@ -188,7 +188,7 @@ public class DepartmentController extends DefaultBaseController { return departmentService.listPage(page); } - @ApiOperation(value = "获得同一级部门数量(按部门名称)", notes = "获得同一级部门数量(按部门名称)接口") + @ApiOperation(value = "组织部门获得同一级部门数量(按部门名称)", notes = "组织部门获得同一级部门数量(按部门名称)接口") @ApiImplicitParams({ @ApiImplicitParam(name = "departmentParentId", value = "上级部门ID", paramType = "path"), @ApiImplicitParam(name = "departmentName", value = "上级部门ID", paramType = "path"), diff --git a/service-department/src/main/java/ink/wgink/service/department/controller/api/DepartmentUserController.java b/service-department/src/main/java/ink/wgink/service/department/controller/api/DepartmentUserController.java index 8feb4208..1fa3df8a 100644 --- a/service-department/src/main/java/ink/wgink/service/department/controller/api/DepartmentUserController.java +++ b/service-department/src/main/java/ink/wgink/service/department/controller/api/DepartmentUserController.java @@ -35,7 +35,7 @@ public class DepartmentUserController extends DefaultBaseController { @Autowired private IDepartmentUserService departmentUserService; - @ApiOperation(value = "更新组织部门人员列表", notes = "更新组织部门人员列表接口") + @ApiOperation(value = "更新组织部门用户列表", notes = "更新组织部门用户列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "path") }) @@ -47,7 +47,7 @@ public class DepartmentUserController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "组织部门人员删除", notes = "组织部门人员删除接口") + @ApiOperation(value = "组织部门用户删除", notes = "组织部门用户删除接口") @ApiImplicitParams({ @ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "path"), @ApiImplicitParam(name = "ids", value = "人员ID列表,用下划线分隔", paramType = "path", example = "1_2_3") @@ -60,7 +60,7 @@ public class DepartmentUserController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "人员列表", notes = "人员列表接口") + @ApiOperation(value = "组织部门用户列表", notes = "组织部门用户列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "path"), @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), @@ -75,7 +75,7 @@ public class DepartmentUserController extends DefaultBaseController { return departmentUserService.listPage(departmentId, page); } - @ApiOperation(value = "人员ID列表", notes = "人员ID列表接口") + @ApiOperation(value = "组织部门用户ID列表", notes = "组织部门用户ID列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "path"), }) diff --git a/service-department/src/main/resources/templates/department/user/list.html b/service-department/src/main/resources/templates/department/user/list.html index d4907024..0824a505 100644 --- a/service-department/src/main/resources/templates/department/user/list.html +++ b/service-department/src/main/resources/templates/department/user/list.html @@ -164,7 +164,7 @@ } }); } - // 初始化角色用户ID列表 + // 初始化职位用户ID列表 function initSelectUserIds() { var layIndex; top.restAjax.get(top.restAjax.path('api/department/user/listuserid/{departmentId}', [departmentId]), {}, null, function(code, data) { diff --git a/service-group/src/main/java/ink/wgink/service/group/controller/api/GroupController.java b/service-group/src/main/java/ink/wgink/service/group/controller/api/GroupController.java index 84277873..8a3a1c3b 100644 --- a/service-group/src/main/java/ink/wgink/service/group/controller/api/GroupController.java +++ b/service-group/src/main/java/ink/wgink/service/group/controller/api/GroupController.java @@ -28,7 +28,7 @@ import java.util.Map; * @Date: 2019/1/6 3:03 PM * @Version: 1.0 **/ -@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "组信息管理接口") +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "组") @RestController @RequestMapping(ISystemConstant.API_PREFIX + "/group") public class GroupController extends DefaultBaseController { @@ -88,7 +88,7 @@ public class GroupController extends DefaultBaseController { return groupService.get(groupId); } - @ApiOperation(value = "zTree列表", notes = "zTree列表接口") + @ApiOperation(value = "组zTree列表", notes = "组zTree列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "父ID", paramType = "query", dataType = "String") }) @@ -104,7 +104,7 @@ public class GroupController extends DefaultBaseController { return groupService.listZTree(params); } - @ApiOperation(value = "分页组列表", notes = "分页组列表接口") + @ApiOperation(value = "组分页列表", notes = "组分页列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "parentId", value = "上级ID", paramType = "query", dataType = "String"), @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), diff --git a/service-group/src/main/java/ink/wgink/service/group/controller/api/GroupUserController.java b/service-group/src/main/java/ink/wgink/service/group/controller/api/GroupUserController.java index 2fa588cd..81cf8e4d 100644 --- a/service-group/src/main/java/ink/wgink/service/group/controller/api/GroupUserController.java +++ b/service-group/src/main/java/ink/wgink/service/group/controller/api/GroupUserController.java @@ -27,7 +27,7 @@ import java.util.Map; * @Date: 2021/2/16 11:31 上午 * @Version: 1.0 */ -@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "用户组用户") +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "组用户") @RestController @RequestMapping(ISystemConstant.API_PREFIX + "/group/user") public class GroupUserController extends DefaultBaseController { @@ -35,7 +35,7 @@ public class GroupUserController extends DefaultBaseController { @Autowired private IGroupUserService groupUserService; - @ApiOperation(value = "更新用户组人员列表", notes = "更新用户组人员列表接口") + @ApiOperation(value = "更新组用户列表", notes = "更新组用户列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "path") }) @@ -47,7 +47,7 @@ public class GroupUserController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "用户组人员删除", notes = "用户组人员删除接口") + @ApiOperation(value = "组用户删除", notes = "组用户删除接口") @ApiImplicitParams({ @ApiImplicitParam(name = "groupId", value = "部门ID", paramType = "path"), @ApiImplicitParam(name = "ids", value = "人员ID列表,用下划线分隔", paramType = "path", example = "1_2_3") @@ -60,7 +60,7 @@ public class GroupUserController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "组人员列表", notes = "组人员列表接口") + @ApiOperation(value = "组用户列表", notes = "组用户列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "groupId", value = "组ID", paramType = "path", dataType = "String"), @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), @@ -75,7 +75,7 @@ public class GroupUserController extends DefaultBaseController { return groupUserService.listPage(groupId, page); } - @ApiOperation(value = "人员ID列表", notes = "人员ID列表接口") + @ApiOperation(value = "组用户ID列表", notes = "组用户ID列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "groupId", value = "用户组ID", paramType = "path"), }) diff --git a/service-group/src/main/resources/templates/group/user/list.html b/service-group/src/main/resources/templates/group/user/list.html index b7935e06..50e23f9d 100644 --- a/service-group/src/main/resources/templates/group/user/list.html +++ b/service-group/src/main/resources/templates/group/user/list.html @@ -164,7 +164,7 @@ } }); } - // 初始化角色用户ID列表 + // 初始化用户组用户ID列表 function initSelectUserIds() { var layIndex; top.restAjax.get(top.restAjax.path('api/group/user/listuserid/{groupId}', [groupId]), {}, null, function(code, data) { diff --git a/service-menu/src/main/java/ink/wgink/module/menu/controller/api/MenuController.java b/service-menu/src/main/java/ink/wgink/module/menu/controller/api/MenuController.java index 35b21f8b..843833fb 100644 --- a/service-menu/src/main/java/ink/wgink/module/menu/controller/api/MenuController.java +++ b/service-menu/src/main/java/ink/wgink/module/menu/controller/api/MenuController.java @@ -27,7 +27,7 @@ import java.util.Map; * @Version: 1.0 * @MenuUrl: admin/menu/gomenus **/ -@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "菜单信息管理接口") +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "菜单") @RestController @RequestMapping(ISystemConstant.API_PREFIX + "/menu") public class MenuController extends DefaultBaseController { @@ -45,7 +45,7 @@ public class MenuController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "菜单删除", notes = "通过id列表批量删除菜单接口") + @ApiOperation(value = "删除菜单", notes = "通过id列表批量删除菜单接口") @ApiImplicitParams({ @ApiImplicitParam(name = "ids", value = "菜单ID列表,用下划线分隔", paramType = "path") }) @@ -122,7 +122,7 @@ public class MenuController extends DefaultBaseController { return menuService.listAllByParentId(menuParentId); } - @ApiOperation(value = "zTree列表", notes = "zTree列表接口") + @ApiOperation(value = "菜单zTree列表", notes = "菜单zTree列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "父ID", paramType = "query", dataType = "String") }) @@ -138,7 +138,7 @@ public class MenuController extends DefaultBaseController { return menuService.listZTree(params); } - @ApiOperation(value = "菜单列表", notes = "菜单列表接口") + @ApiOperation(value = "菜单分页列表", notes = "菜单分页列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "parentId", value = "上级ID", paramType = "query", dataType = "String"), @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), diff --git a/service-menu/src/main/java/ink/wgink/module/menu/startup/ServiceMenuStartUp.java b/service-menu/src/main/java/ink/wgink/module/menu/startup/ServiceMenuStartUp.java index 1e098466..4300221f 100644 --- a/service-menu/src/main/java/ink/wgink/module/menu/startup/ServiceMenuStartUp.java +++ b/service-menu/src/main/java/ink/wgink/module/menu/startup/ServiceMenuStartUp.java @@ -509,8 +509,8 @@ public class ServiceMenuStartUp implements ApplicationRunner { menuId = UUIDUtil.getUUID(); params.put("menuId", menuId); params.put("menuParentId", menuParentId); - params.put("menuName", "修改权限"); - params.put("menuSummary", "修改权限"); + params.put("menuName", "查询权限"); + params.put("menuSummary", "查询权限"); params.put("menuUrl", "/route/permission/list?permissionType=permissionQuery"); params.put("menuType", "1"); params.put("menuIcon", "fa-icon-color-white fa fa-users"); diff --git a/service-position/src/main/resources/templates/position/user/list.html b/service-position/src/main/resources/templates/position/user/list.html index 7e3b955c..096d42a5 100644 --- a/service-position/src/main/resources/templates/position/user/list.html +++ b/service-position/src/main/resources/templates/position/user/list.html @@ -164,10 +164,10 @@ } }); } - // 初始化角色用户ID列表 + // 初始化职位用户ID列表 function initSelectUserIds() { var layIndex; - top.restAjax.get(top.restAjax.path('api/position/user/listuserid/{groupId}', [positionId]), {}, null, function(code, data) { + top.restAjax.get(top.restAjax.path('api/position/user/listuserid/{positionId}', [positionId]), {}, null, function(code, data) { var selectedUserIds = ''; for(var i = 0, item; item = data[i++]; ) { if(selectedUserIds.length > 0) { @@ -227,6 +227,7 @@ ids: ids }, null, function (code, data) { top.dialog.msg(top.dataMessage.updated); + $('#selectedUserIds').val(ids.toString().replaceAll(',', '\_')); initSelectUserIds(); }, function (code, data) { top.dialog.msg(data.msg); diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleController.java b/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleController.java index 76ca595c..516ed381 100644 --- a/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleController.java +++ b/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleController.java @@ -29,7 +29,7 @@ import java.util.Map; * @Version: 1.0 * @MenuUrl: admin/role/goroles **/ -@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "角色信息管理接口") +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "角色") @RestController @RequestMapping(ISystemConstant.API_PREFIX + "/role") public class RoleController extends DefaultBaseController { @@ -91,7 +91,7 @@ public class RoleController extends DefaultBaseController { return roleService.get(roleId); } - @ApiOperation(value = "zTree列表", notes = "zTree列表接口") + @ApiOperation(value = "角色zTree列表", notes = "角色zTree列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "上级ID", paramType = "query", dataType = "String") }) @@ -107,7 +107,7 @@ public class RoleController extends DefaultBaseController { return roleService.listZTree(params); } - @ApiOperation(value = "角色列表", notes = "角色列表接口") + @ApiOperation(value = "角色分页列表", notes = "角色分页列表接口") @ApiImplicitParams({ @ApiImplicitParam(name = "parentId", value = "上级ID", paramType = "query", dataType = "String"), @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleDataRightController.java b/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleDataRightController.java new file mode 100644 index 00000000..76498fa3 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleDataRightController.java @@ -0,0 +1,51 @@ +package ink.wgink.service.role.controller.api; + +import ink.wgink.annotation.CheckRequestBodyAnnotation; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.pojo.dtos.role.RoleDataRightInfoDTO; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResult; +import ink.wgink.service.role.pojo.vos.RoleDataRightVO; +import ink.wgink.service.role.service.IRoleDataRightService; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleDataRightController + * @Description: 角色数据权限 + * @Author: WangGeng + * @Date: 2021/2/21 10:01 + * @Version: 1.0 + **/ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "角色数据权限") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/role/data-right") +public class RoleDataRightController { + + @Autowired + private IRoleDataRightService roleDataRightService; + + @ApiOperation(value = "更新角色数据权限", notes = "更新角色数据权限接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PutMapping("update/{roleId}") + @CheckRequestBodyAnnotation + public SuccessResult update(@PathVariable("roleId") String roleId, @RequestBody RoleDataRightVO roleDataRightVO) { + roleDataRightService.update(roleId, roleDataRightVO); + return new SuccessResult(); + } + + @ApiOperation(value = "角色数据权限详情", notes = "角色数据权限详情接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "roleId", value = "角色ID", paramType = "path") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("get/{roleId}") + public RoleDataRightInfoDTO get(@PathVariable("roleId") String roleId) { + return roleDataRightService.get(roleId); + } + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleGroupController.java b/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleGroupController.java deleted file mode 100644 index 32168ced..00000000 --- a/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleGroupController.java +++ /dev/null @@ -1,63 +0,0 @@ -package ink.wgink.service.role.controller.api; - -/** - * When you feel like quitting. Think about why you started - * 当你想要放弃的时候,想想当初你为何开始 - * - * @ClassName: RoleGroupController - * @Description: 角色组 - * @Author: wanggeng - * @Date: 2021/2/5 9:02 上午 - * @Version: 1.0 - */ -public class RoleGroupController { - -// @ApiOperation(value = "更新角色组列表", notes = "更新角色组列表接口") -// @ApiImplicitParams({ -// @ApiImplicitParam(name = "roleId", value = "角色ID", paramType = "path") -// }) -// @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) -// @PutMapping("updaterolegroup/{roleId}") -// public SuccessResult updateRoleGroup(@PathVariable("roleId") String roleId, -// @RequestBody RoleGroupVO roleGroupVO) { -// Map params = getParams(); -// params.put("selectedGroupIds", roleGroupVO.getSelectedGroupIds()); -// params.put("roleId", roleId); -// -// return groupService.updateRoleGroup(params); -// } - - -// @ApiOperation(value = "easyui组列表", notes = "easyui组列表接口") -// @ApiImplicitParams({ -// @ApiImplicitParam(name = "roleId", value = "角色ID", paramType = "path"), -// @ApiImplicitParam(name = "parentId", value = "上级ID", paramType = "query", dataType = "String"), -// @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), -// @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), -// @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), -// @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), -// @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") -// }) -// @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) -// @GetMapping("listrolegroup/{roleId}") -// public SuccessResultList> listRoleGroup(@PathVariable("roleId") String roleId, ListPage page) { -// Map params = requestParams(); -// params.put("roleId", roleId); -// page.setParams(params); -// return groupService.listRoleGroup(page); -// } - - -// @ApiOperation(value = "角色组选择列表", notes = "角色组选择列表接口") -// @ApiImplicitParams({ -// @ApiImplicitParam(name = "roleId", value = "角色ID", paramType = "path"), -// }) -// @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) -// @GetMapping("listselectrolegroup/{roleId}") -// public List listSelectRoleGroup(@PathVariable("roleId") String roleId) { -// Map params = requestParams(); -// params.put("roleId", roleId); -// return groupService.listSelectRoleGroup(params); -// } - -} diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleMenuController.java b/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleMenuController.java new file mode 100644 index 00000000..a2649a89 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleMenuController.java @@ -0,0 +1,55 @@ +package ink.wgink.service.role.controller.api; + +import ink.wgink.annotation.CheckRequestBodyAnnotation; +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.pojo.dtos.role.RoleMenuDTO; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResult; +import ink.wgink.service.role.pojo.vos.RoleDataRightVO; +import ink.wgink.service.role.pojo.vos.RoleMenuVO; +import ink.wgink.service.role.service.IRoleMenuService; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleMenuController + * @Description: 角色菜单 + * @Author: WangGeng + * @Date: 2021/2/23 21:41 + * @Version: 1.0 + **/ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "角色菜单") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/role/menu") +public class RoleMenuController extends DefaultBaseController { + + @Autowired + private IRoleMenuService roleMenuService; + + @ApiOperation(value = "更新角色菜单", notes = "更新角色菜单接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PutMapping("update/{roleId}") + @CheckRequestBodyAnnotation + public SuccessResult update(@PathVariable("roleId") String roleId, @RequestBody RoleMenuVO roleMenuVO) { + roleMenuService.update(roleId, roleMenuVO); + return new SuccessResult(); + } + + @ApiOperation(value = "角色菜单列表", notes = "角色菜单列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "roleId", value = "角色ID", paramType = "path") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("list/{roleId}") + public List list(@PathVariable("roleId") String roleId) { + return roleMenuService.list(roleId); + } + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/api/RolePermissionController.java b/service-role/src/main/java/ink/wgink/service/role/controller/api/RolePermissionController.java new file mode 100644 index 00000000..bd68ff55 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/controller/api/RolePermissionController.java @@ -0,0 +1,57 @@ +package ink.wgink.service.role.controller.api; + +import ink.wgink.annotation.CheckRequestBodyAnnotation; +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.pojo.dtos.role.RolePermissionDTO; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResult; +import ink.wgink.service.role.pojo.vos.RolePermissionVO; +import ink.wgink.service.role.service.IRolePermissionService; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RolePermissionController + * @Description: 角色权限 + * @Author: WangGeng + * @Date: 2021/2/20 17:54 + * @Version: 1.0 + **/ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "角色权限") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/role/permission") +public class RolePermissionController extends DefaultBaseController { + + @Autowired + private IRolePermissionService rolePermissionService; + + @ApiOperation(value = "修改角色权限", notes = "修改角色权限接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "roleId", value = "角色ID", paramType = "path"), + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PutMapping("update/{roleId}") + @CheckRequestBodyAnnotation + public SuccessResult update(@PathVariable("roleId") String roleId, @RequestBody RolePermissionVO rolePermissionVO) { + rolePermissionService.update(roleId, rolePermissionVO); + return new SuccessResult(); + } + + @ApiOperation(value = "角色权限详情", notes = "角色权限详情接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "roleId", value = "角色ID", paramType = "path"), + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("list/{roleId}") + public List list(@PathVariable("roleId") String roleId) { + return rolePermissionService.list(roleId); + } + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleUserController.java b/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleUserController.java new file mode 100644 index 00000000..7ec74712 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/controller/api/RoleUserController.java @@ -0,0 +1,88 @@ +package ink.wgink.service.role.controller.api; + +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.dtos.role.RoleUserDTO; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResult; +import ink.wgink.pojo.result.SuccessResultList; +import ink.wgink.pojo.vos.IdsVO; +import ink.wgink.service.role.service.IRoleUserService; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleUserController + * @Description: 角色用户 + * @Author: WangGeng + * @Date: 2021/2/18 11:19 + * @Version: 1.0 + **/ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "角色用户") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/role/user") +public class RoleUserController extends DefaultBaseController { + + @Autowired + private IRoleUserService roleUserService; + + @ApiOperation(value = "更新角色用户列表", notes = "更新角色用户列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "path") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PutMapping("update/{roleId}") + public synchronized SuccessResult update(@PathVariable("roleId") String roleId, + @RequestBody IdsVO idsVO) { + roleUserService.update(roleId, idsVO.getIds()); + return new SuccessResult(); + } + + @ApiOperation(value = "删除角色用户", notes = "删除角色用户接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "roleId", value = "部门ID", paramType = "path"), + @ApiImplicitParam(name = "ids", value = "人员ID列表,用下划线分隔", paramType = "path", example = "1_2_3") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @DeleteMapping("remove/{roleId}/{ids}") + public synchronized SuccessResult remove(@PathVariable("roleId") String roleId, + @PathVariable("ids") String ids) { + roleUserService.delete(roleId, Arrays.asList(ids.split("_"))); + return new SuccessResult(); + } + + @ApiOperation(value = "角色用户分页列表", notes = "角色用户分页列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "roleId", value = "角色ID", paramType = "path", dataType = "String"), + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage/{roleId}") + public SuccessResultList> listPage(@PathVariable("roleId") String roleId, ListPage page) { + Map params = requestParams(); + page.setParams(params); + return roleUserService.listPage(roleId, page); + } + + @ApiOperation(value = "角色用户ID列表", notes = "角色用户ID列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "roleId", value = "用户角色ID", paramType = "path"), + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listuserid/{roleId}") + public List listUserId(@PathVariable("roleId") String roleId) { + return roleUserService.listUserId(roleId); + } + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleDataRightRouteController.java b/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleDataRightRouteController.java new file mode 100644 index 00000000..71dd7001 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleDataRightRouteController.java @@ -0,0 +1,30 @@ +package ink.wgink.service.role.controller.route; + +import ink.wgink.interfaces.consts.ISystemConstant; +import io.swagger.annotations.Api; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleDataAuthorityRouteController + * @Description: 角色数据权限 + * @Author: WangGeng + * @Date: 2021/2/21 9:57 + * @Version: 1.0 + **/ +@Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "角色数据权限路由接口") +@Controller +@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/role/data-right") +public class RoleDataRightRouteController { + + @GetMapping("update") + public ModelAndView update() { + return new ModelAndView("role/dataright/update"); + } + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleMenuRouteController.java b/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleMenuRouteController.java new file mode 100644 index 00000000..3ba849d0 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleMenuRouteController.java @@ -0,0 +1,30 @@ +package ink.wgink.service.role.controller.route; + +import ink.wgink.interfaces.consts.ISystemConstant; +import io.swagger.annotations.Api; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleMenuRouteController + * @Description: 角色菜单路由 + * @Author: WangGeng + * @Date: 2021/2/23 21:35 + * @Version: 1.0 + **/ +@Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "角色菜单路由") +@Controller +@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/role/menu") +public class RoleMenuRouteController { + + @GetMapping("tree") + public ModelAndView tree() { + return new ModelAndView("role/menu/tree"); + } + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/route/RolePermissionRouteController.java b/service-role/src/main/java/ink/wgink/service/role/controller/route/RolePermissionRouteController.java new file mode 100644 index 00000000..49b3e0af --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/controller/route/RolePermissionRouteController.java @@ -0,0 +1,30 @@ +package ink.wgink.service.role.controller.route; + +import ink.wgink.interfaces.consts.ISystemConstant; +import io.swagger.annotations.Api; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RolePermissionRouteController + * @Description: 角色权限 + * @Author: WangGeng + * @Date: 2021/2/19 11:23 + * @Version: 1.0 + **/ +@Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "角色权限路由接口") +@Controller +@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/role/permission") +public class RolePermissionRouteController { + + @GetMapping("update") + public ModelAndView list() { + return new ModelAndView("role/permission/update"); + } + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleRouteController.java b/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleRouteController.java index b5af0353..b97d94bc 100644 --- a/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleRouteController.java +++ b/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleRouteController.java @@ -42,4 +42,9 @@ public class RoleRouteController { return new ModelAndView("role/list"); } + @GetMapping("data-authority") + public ModelAndView dataAuthority() { + return new ModelAndView("role/data-authority"); + } + } diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleUserRouteController.java b/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleUserRouteController.java new file mode 100644 index 00000000..ea4270f9 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleUserRouteController.java @@ -0,0 +1,30 @@ +package ink.wgink.service.role.controller.route; + +import ink.wgink.interfaces.consts.ISystemConstant; +import io.swagger.annotations.Api; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleUserRouteController + * @Description: 角色用户 + * @Author: WangGeng + * @Date: 2021/2/18 11:57 + * @Version: 1.0 + **/ +@Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "角色用户路由接口") +@Controller +@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/role/user") +public class RoleUserRouteController { + + @GetMapping("list") + public ModelAndView list() { + return new ModelAndView("role/user/list"); + } + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/dao/IRoleDao.java b/service-role/src/main/java/ink/wgink/service/role/dao/IRoleDao.java index ca5ec72a..252b021f 100644 --- a/service-role/src/main/java/ink/wgink/service/role/dao/IRoleDao.java +++ b/service-role/src/main/java/ink/wgink/service/role/dao/IRoleDao.java @@ -4,13 +4,8 @@ import ink.wgink.exceptions.RemoveException; import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; -import ink.wgink.service.role.pojo.pos.RolePO; -import ink.wgink.pojo.bos.RoleBO; -import ink.wgink.pojo.bos.RoleMenuBO; import ink.wgink.pojo.dtos.ZTreeDTO; import ink.wgink.pojo.dtos.role.RoleDTO; -import ink.wgink.pojo.dtos.role.RoleDataAuthorityDTO; -import net.sf.jsqlparser.statement.update.Update; import org.springframework.stereotype.Repository; import java.util.List; diff --git a/service-role/src/main/java/ink/wgink/service/role/dao/IRoleDataRightDao.java b/service-role/src/main/java/ink/wgink/service/role/dao/IRoleDataRightDao.java new file mode 100644 index 00000000..e3b6e398 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/dao/IRoleDataRightDao.java @@ -0,0 +1,56 @@ +package ink.wgink.service.role.dao; + +import ink.wgink.exceptions.RemoveException; +import ink.wgink.exceptions.SaveException; +import ink.wgink.exceptions.UpdateException; +import ink.wgink.pojo.dtos.role.RoleDataRightDTO; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: IRoleDataRightDao + * @Description: 角色数据权限 + * @Author: WangGeng + * @Date: 2021/2/21 15:41 + * @Version: 1.0 + **/ +@Repository +public interface IRoleDataRightDao { + + /** + * 建表 + * + * @throws UpdateException + */ + void createTable() throws UpdateException; + + /** + * 新增 + * + * @param params + * @throws SaveException + */ + void save(Map params) throws SaveException; + + /** + * 删除 + * + * @param params + * @throws SaveException + */ + void delete(Map params) throws RemoveException; + + /** + * 数据权限列表 + * + * @param params + * @return + */ + List list(Map params); + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/dao/IRoleGroupDao.java b/service-role/src/main/java/ink/wgink/service/role/dao/IRoleGroupDao.java deleted file mode 100644 index 0a181a4b..00000000 --- a/service-role/src/main/java/ink/wgink/service/role/dao/IRoleGroupDao.java +++ /dev/null @@ -1,28 +0,0 @@ -package ink.wgink.service.role.dao; - -import ink.wgink.exceptions.SearchException; -import org.springframework.stereotype.Repository; - -/** - * When you feel like quitting. Think about why you started - * 当你想要放弃的时候,想想当初你为何开始 - * - * @ClassName: IRoleGroupDao - * @Description: 角色组 - * @Author: wanggeng - * @Date: 2021/2/5 8:43 上午 - * @Version: 1.0 - */ -@Repository -public interface IRoleGroupDao { - - /** - * 角色组列表 - * - * @param params - * @return - * @throws SearchException - */ - // List listRoleGroups(Map params) throws SearchException; - -} diff --git a/service-role/src/main/java/ink/wgink/service/role/dao/IRoleMenuDao.java b/service-role/src/main/java/ink/wgink/service/role/dao/IRoleMenuDao.java index befa2884..c2f54f44 100644 --- a/service-role/src/main/java/ink/wgink/service/role/dao/IRoleMenuDao.java +++ b/service-role/src/main/java/ink/wgink/service/role/dao/IRoleMenuDao.java @@ -1,5 +1,15 @@ package ink.wgink.service.role.dao; +import ink.wgink.exceptions.RemoveException; +import ink.wgink.exceptions.SaveException; +import ink.wgink.exceptions.SearchException; +import ink.wgink.exceptions.UpdateException; +import ink.wgink.pojo.dtos.role.RoleMenuDTO; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + /** * When you feel like quitting. Think about why you started * 当你想要放弃的时候,想想当初你为何开始 @@ -10,5 +20,39 @@ package ink.wgink.service.role.dao; * @Date: 2021/2/2 12:38 下午 * @Version: 1.0 */ +@Repository public interface IRoleMenuDao { + + /** + * 建表 + * + * @throws UpdateException + */ + void createTable() throws UpdateException; + + /** + * 新增 + * + * @param params + * @throws SaveException + */ + void save(Map params) throws SaveException; + + /** + * 删除 + * + * @param params + * @throws RemoveException + */ + void delete(Map params) throws RemoveException; + + /** + * 列表 + * + * @param params + * @return + * @throws SearchException + */ + List list(Map params) throws SearchException; + } diff --git a/service-role/src/main/java/ink/wgink/service/role/dao/IRolePermissionDao.java b/service-role/src/main/java/ink/wgink/service/role/dao/IRolePermissionDao.java index bec055f3..adb9510d 100644 --- a/service-role/src/main/java/ink/wgink/service/role/dao/IRolePermissionDao.java +++ b/service-role/src/main/java/ink/wgink/service/role/dao/IRolePermissionDao.java @@ -3,6 +3,7 @@ package ink.wgink.service.role.dao; import ink.wgink.exceptions.RemoveException; import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SearchException; +import ink.wgink.exceptions.UpdateException; import ink.wgink.pojo.dtos.role.RolePermissionDTO; import org.springframework.stereotype.Repository; @@ -22,6 +23,13 @@ import java.util.Map; @Repository public interface IRolePermissionDao { + /** + * 建表 + * + * @throws UpdateException + */ + void createTable() throws UpdateException; + /** * 新增权限角色 * @@ -39,21 +47,12 @@ public interface IRolePermissionDao { void delete(Map params) throws RemoveException; /** - * 权限详情 + * 权限列表 * * @param params * @return * @throws SearchException */ - RolePermissionDTO get(Map params) throws SearchException; - - /** - * 权限列表 - * - * @param roleId 角色ID - * @return - * @throws SearchException - */ - List listByRoleId(String roleId) throws SearchException; + List list(Map params) throws SearchException; } diff --git a/service-role/src/main/java/ink/wgink/service/role/dao/IRoleUserDao.java b/service-role/src/main/java/ink/wgink/service/role/dao/IRoleUserDao.java new file mode 100644 index 00000000..8aafe80e --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/dao/IRoleUserDao.java @@ -0,0 +1,66 @@ +package ink.wgink.service.role.dao; + +import ink.wgink.exceptions.RemoveException; +import ink.wgink.exceptions.SaveException; +import ink.wgink.exceptions.SearchException; +import ink.wgink.exceptions.UpdateException; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: IRoleUserDao + * @Description: 角色用户 + * @Author: WangGeng + * @Date: 2021/2/18 11:38 + * @Version: 1.0 + **/ +@Repository +public interface IRoleUserDao { + + /** + * 建表 + * + * @throws UpdateException + */ + void createTable() throws UpdateException; + + /** + * 新增 + * + * @param params + * @throws SaveException + */ + void save(Map params) throws SaveException; + + /** + * 删除 + * + * @param params + * @throws RemoveException + */ + void delete(Map params) throws RemoveException; + + /** + * 用户ID列表 + * + * @param params + * @return + * @throws SearchException + */ + List listUserId(Map params) throws SearchException; + + /** + * 用户ID列表 + * + * @param params + * @return + * @throws SearchException + */ + List listGroupUserId(Map params) throws SearchException; + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleDataAuthorityVO.java b/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleDataAuthorityVO.java deleted file mode 100644 index 66d9a981..00000000 --- a/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleDataAuthorityVO.java +++ /dev/null @@ -1,56 +0,0 @@ -package ink.wgink.service.role.pojo.vos; - -import ink.wgink.annotation.CheckEmptyAnnotation; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -import java.util.ArrayList; -import java.util.List; - -/** - * When you feel like quitting. Think about why you started - * 当你想要放弃的时候,想想当初你为何开始 - * - * @ClassName: RoleDataAuthorityVO - * @Description: 角色数据权限 - * @Author: WangGeng - * @Date: 2019/11/23 8:10 下午 - * @Version: 1.0 - **/ -@ApiModel -public class RoleDataAuthorityVO { - - @ApiModelProperty(name = "dataAuthorityType", value = "数据权限类型") - @CheckEmptyAnnotation(name = "数据权限类型", types = {"all", "department", "custom", "self"}) - private String dataAuthorityType; - - @ApiModelProperty(name = "roleUserAuthorityList", value = "角色数据权限列表") - private List roleUserAuthorityList; - - public String getDataAuthorityType() { - return dataAuthorityType == null ? "" : dataAuthorityType.trim(); - } - - public void setDataAuthorityType(String dataAuthorityType) { - this.dataAuthorityType = dataAuthorityType; - } - - public List getRoleUserAuthorityList() { - return roleUserAuthorityList == null ? new ArrayList<>(0) : roleUserAuthorityList; - } - - public void setRoleUserAuthorityList(List roleUserAuthorityList) { - this.roleUserAuthorityList = roleUserAuthorityList; - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("{"); - sb.append("\"dataAuthorityType\":") - .append("\"").append(dataAuthorityType).append("\""); - sb.append(",\"roleUserAuthorityList\":") - .append(roleUserAuthorityList); - sb.append('}'); - return sb.toString(); - } -} diff --git a/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleDataRightVO.java b/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleDataRightVO.java new file mode 100644 index 00000000..51b29e6f --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleDataRightVO.java @@ -0,0 +1,59 @@ +package ink.wgink.service.role.pojo.vos; + +import ink.wgink.annotation.CheckEmptyAnnotation; +import ink.wgink.common.enums.RoleDataRightEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.ArrayList; +import java.util.List; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleDataAuthorityVO + * @Description: 角色数据权限 + * @Author: WangGeng + * @Date: 2019/11/23 8:10 下午 + * @Version: 1.0 + **/ +@ApiModel +public class RoleDataRightVO { + + @ApiModelProperty(name = "roleDataRight", value = "数据权限类型") + @CheckEmptyAnnotation(name = "数据权限类型", types = {"all", "department", "custom", "self"}) + private String roleDataRight; + @ApiModelProperty(name = "userIds", value = "角色数据权限列表") + private List userIds; + + public String getRoleDataRight() { + return roleDataRight == null ? "" : roleDataRight.trim(); + } + + public void setRoleDataRight(String roleDataRight) { + this.roleDataRight = roleDataRight; + } + + public List getUserIds() { + if (userIds == null) { + return new ArrayList<>(); + } + return userIds; + } + + public void setUserIds(List userIds) { + this.userIds = userIds; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"roleDataRight\":\"") + .append(roleDataRight).append('\"'); + sb.append(",\"userIds\":") + .append(userIds); + sb.append('}'); + return sb.toString(); + } +} diff --git a/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleUserAuthorizationVO.java b/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleMenuVO.java similarity index 64% rename from service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleUserAuthorizationVO.java rename to service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleMenuVO.java index d3b56f94..09d91f6d 100644 --- a/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleUserAuthorizationVO.java +++ b/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleMenuVO.java @@ -3,6 +3,9 @@ package ink.wgink.service.role.pojo.vos; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.util.ArrayList; +import java.util.List; + /** * @ClassName: RoleUserAuthorizationVO * @Description: 角色用户授权 @@ -11,16 +14,19 @@ import io.swagger.annotations.ApiModelProperty; * @Version: 1.0 **/ @ApiModel -public class RoleUserAuthorizationVO { +public class RoleMenuVO { - @ApiModelProperty(name = "menuIds", value = "菜单ID列表,下划线分隔", example = "1_2_3") - private String menuIds; + @ApiModelProperty(name = "menuIds", value = "菜单ID列表") + private List menuIds; - public String getMenuIds() { + public List getMenuIds() { + if (menuIds == null) { + return new ArrayList<>(); + } return menuIds; } - public void setMenuIds(String menuIds) { + public void setMenuIds(List menuIds) { this.menuIds = menuIds; } diff --git a/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RolePermissionVO.java b/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RolePermissionVO.java index 134fdfdd..98f3d788 100644 --- a/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RolePermissionVO.java +++ b/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RolePermissionVO.java @@ -1,10 +1,12 @@ package ink.wgink.service.role.pojo.vos; -import ink.wgink.annotation.CheckBooleanAnnotation; +import ink.wgink.annotation.CheckEmptyAnnotation; import ink.wgink.annotation.CheckListAnnotation; +import ink.wgink.service.role.service.IRolePermissionService; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.util.ArrayList; import java.util.List; /** @@ -17,36 +19,39 @@ import java.util.List; @ApiModel public class RolePermissionVO { - @ApiModelProperty(name = "isChecked", value = "是否选中") - @CheckBooleanAnnotation(name = "是否选中") - private Boolean isChecked; + @ApiModelProperty(name = "type", value = "类型") + @CheckEmptyAnnotation(name = "类型", types = {IRolePermissionService.PERMISSION_INSERT, IRolePermissionService.PERMISSION_DELETE, IRolePermissionService.PERMISSION_UPDATE, IRolePermissionService.PERMISSION_QUERY}) + private String type; @ApiModelProperty(name = "permissionIdArray", value = "权限ID列表") @CheckListAnnotation(name = "权限ID列表") - private List permissionIdArray; + private List permissionIds; - public Boolean getChecked() { - return isChecked; + public String getType() { + return type == null ? "" : type.trim(); } - public void setChecked(Boolean checked) { - isChecked = checked; + public void setType(String type) { + this.type = type; } - public List getPermissionIdArray() { - return permissionIdArray; + public List getPermissionIds() { + if (permissionIds == null) { + return new ArrayList<>(); + } + return permissionIds; } - public void setPermissionIdArray(List permissionIdArray) { - this.permissionIdArray = permissionIdArray; + public void setPermissionIds(List permissionIds) { + this.permissionIds = permissionIds; } @Override public String toString() { final StringBuilder sb = new StringBuilder("{"); - sb.append("\"isChecked\":") - .append(isChecked); - sb.append(",\"permissionIdArray\":") - .append(permissionIdArray); + sb.append("\"type\":\"") + .append(type).append('\"'); + sb.append(",\"permissionIds\":") + .append(permissionIds); sb.append('}'); return sb.toString(); } diff --git a/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleUserAuthorityVO.java b/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleUserAuthorityVO.java deleted file mode 100644 index dd837baa..00000000 --- a/service-role/src/main/java/ink/wgink/service/role/pojo/vos/RoleUserAuthorityVO.java +++ /dev/null @@ -1,50 +0,0 @@ -package ink.wgink.service.role.pojo.vos; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -/** - * When you feel like quitting. Think about why you started - * 当你想要放弃的时候,想想当初你为何开始 - * - * @ClassName: RoleUserAuthorityVO - * @Description: 角色用户 - * @Author: WangGeng - * @Date: 2019/11/23 8:14 下午 - * @Version: 1.0 - **/ -@ApiModel -public class RoleUserAuthorityVO { - - @ApiModelProperty(name = "departmentId", value = "部门ID") - private String departmentId; - @ApiModelProperty(name = "userId", value = "用户ID") - private String userId; - - public String getDepartmentId() { - return departmentId == null ? "" : departmentId.trim(); - } - - public void setDepartmentId(String departmentId) { - this.departmentId = departmentId; - } - - public String getUserId() { - return userId == null ? "" : userId.trim(); - } - - public void setUserId(String userId) { - this.userId = userId; - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("{"); - sb.append("\"departmentId\":") - .append("\"").append(departmentId).append("\""); - sb.append(",\"userId\":") - .append("\"").append(userId).append("\""); - sb.append('}'); - return sb.toString(); - } -} diff --git a/service-role/src/main/java/ink/wgink/service/role/service/IRoleDataRightService.java b/service-role/src/main/java/ink/wgink/service/role/service/IRoleDataRightService.java new file mode 100644 index 00000000..5dd8ee65 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/service/IRoleDataRightService.java @@ -0,0 +1,53 @@ +package ink.wgink.service.role.service; + +import ink.wgink.pojo.dtos.role.RoleDataRightDTO; +import ink.wgink.pojo.dtos.role.RoleDataRightInfoDTO; +import ink.wgink.service.role.pojo.vos.RoleDataRightVO; + +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: IRoleDataRightService + * @Description: 角色数据权限 + * @Author: WangGeng + * @Date: 2021/2/21 18:32 + * @Version: 1.0 + **/ +public interface IRoleDataRightService { + + /** + * 更新 + * + * @param roleId + * @param roleDataRightVO + */ + void update(String roleId, RoleDataRightVO roleDataRightVO); + + /** + * 详情 + * + * @param roleId + * @return + */ + RoleDataRightInfoDTO get(String roleId); + + /** + * 数据权限列表 + * + * @param params + * @return + */ + List list(Map params); + + /** + * 数据权限列表 + * + * @param roleId + * @return + */ + List list(String roleId); +} diff --git a/service-role/src/main/java/ink/wgink/service/role/service/IRoleGroupService.java b/service-role/src/main/java/ink/wgink/service/role/service/IRoleGroupService.java deleted file mode 100644 index 7b51b44d..00000000 --- a/service-role/src/main/java/ink/wgink/service/role/service/IRoleGroupService.java +++ /dev/null @@ -1,31 +0,0 @@ -package ink.wgink.service.role.service; - -/** - * When you feel like quitting. Think about why you started - * 当你想要放弃的时候,想想当初你为何开始 - * - * @ClassName: IRoleGroupService - * @Description: 角色组 - * @Author: wanggeng - * @Date: 2021/2/5 8:55 上午 - * @Version: 1.0 - */ -public interface IRoleGroupService { - - /** - * 角色组列表 - * - * @param page - * @return - */ - // SuccessResultList> listRoleGroup(ListPage page); - - /** - * 角色组选择列表 - * - * @param params - * @return - */ - // List listSelectRoleGroup(Map params); - -} diff --git a/service-role/src/main/java/ink/wgink/service/role/service/IRoleMenuService.java b/service-role/src/main/java/ink/wgink/service/role/service/IRoleMenuService.java index d7f91f8b..18e8ace5 100644 --- a/service-role/src/main/java/ink/wgink/service/role/service/IRoleMenuService.java +++ b/service-role/src/main/java/ink/wgink/service/role/service/IRoleMenuService.java @@ -1,5 +1,10 @@ package ink.wgink.service.role.service; +import ink.wgink.pojo.dtos.role.RoleMenuDTO; +import ink.wgink.service.role.pojo.vos.RoleMenuVO; + +import java.util.List; + /** * When you feel like quitting. Think about why you started * 当你想要放弃的时候,想想当初你为何开始 @@ -11,4 +16,21 @@ package ink.wgink.service.role.service; * @Version: 1.0 */ public interface IRoleMenuService { + + /** + * 更新 + * + * @param roleId + * @param roleMenuVO + */ + void update(String roleId, RoleMenuVO roleMenuVO); + + /** + * 角色菜单列表 + * + * @param roleId + * @return + */ + List list(String roleId); + } diff --git a/service-role/src/main/java/ink/wgink/service/role/service/IRolePermissionService.java b/service-role/src/main/java/ink/wgink/service/role/service/IRolePermissionService.java index 0f8266bc..4996651c 100644 --- a/service-role/src/main/java/ink/wgink/service/role/service/IRolePermissionService.java +++ b/service-role/src/main/java/ink/wgink/service/role/service/IRolePermissionService.java @@ -1,11 +1,10 @@ package ink.wgink.service.role.service; -import ink.wgink.exceptions.SearchException; -import ink.wgink.exceptions.UpdateException; import ink.wgink.pojo.dtos.role.RolePermissionDTO; import ink.wgink.service.role.pojo.vos.RolePermissionVO; import java.util.List; +import java.util.Map; /** * When you feel like quitting. Think about why you started @@ -20,24 +19,37 @@ import java.util.List; public interface IRolePermissionService { /** - * 修改权限(通过角色) + * 新增权限 + */ + String PERMISSION_INSERT = "insert"; + /** + * 删除权限 + */ + String PERMISSION_DELETE = "delete"; + /** + * 修改权限 + */ + String PERMISSION_UPDATE = "update"; + /** + * 查询权限 + */ + String PERMISSION_QUERY = "query"; + + /** + * 更新权限 * * @param roleId * @param rolePermissionVO - * @return - * @throws UpdateException */ - void updateByRoleId(String roleId, RolePermissionVO rolePermissionVO); + void update(String roleId, RolePermissionVO rolePermissionVO); /** - * 权限角色 + * 权限列表 * - * @param permissionId - * @param roleId + * @param params * @return - * @throws SearchException */ - RolePermissionDTO getByPermissionIdAndRoleId(String permissionId, String roleId); + List list(Map params); /** * 权限列表 @@ -45,6 +57,15 @@ public interface IRolePermissionService { * @param roleId 角色ID * @return */ - List listByRoleId(String roleId); + List list(String roleId); + + /** + * 权限列表 + * + * @param roleId 角色ID + * @param permissionType 权限类型 + * @return + */ + List list(String roleId, String permissionType); } diff --git a/service-role/src/main/java/ink/wgink/service/role/service/IRoleService.java b/service-role/src/main/java/ink/wgink/service/role/service/IRoleService.java index e3fd6b0a..a961ac12 100644 --- a/service-role/src/main/java/ink/wgink/service/role/service/IRoleService.java +++ b/service-role/src/main/java/ink/wgink/service/role/service/IRoleService.java @@ -1,23 +1,12 @@ package ink.wgink.service.role.service; -import ink.wgink.exceptions.RemoveException; -import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SearchException; -import ink.wgink.exceptions.UpdateException; import ink.wgink.interfaces.role.IRoleBaseService; import ink.wgink.interfaces.role.IRoleCheckService; import ink.wgink.pojo.ListPage; -import ink.wgink.pojo.bos.DepartmentBO; -import ink.wgink.pojo.bos.GroupBO; -import ink.wgink.pojo.bos.RoleBO; -import ink.wgink.pojo.bos.RoleMenuBO; import ink.wgink.pojo.dtos.ZTreeDTO; import ink.wgink.pojo.dtos.role.RoleDTO; -import ink.wgink.pojo.dtos.role.RoleDataAuthorityDTO; -import ink.wgink.pojo.dtos.role.RoleDataAuthorityTypeDTO; -import ink.wgink.pojo.result.SuccessResult; import ink.wgink.pojo.result.SuccessResultList; -import ink.wgink.service.role.pojo.vos.RoleDataAuthorityVO; import ink.wgink.service.role.pojo.vos.RoleVO; import java.util.List; @@ -105,6 +94,14 @@ public interface IRoleService extends IRoleBaseService, IRoleCheckService { */ void update(String roleId, RoleVO roleVO); + /** + * 修改角色数据权限 + * + * @param roleId + * @param roleDataRight + */ + void updateRoleDataRight(String roleId, String roleDataRight); + /** * 角色详情 * diff --git a/service-role/src/main/java/ink/wgink/service/role/service/IRoleUserService.java b/service-role/src/main/java/ink/wgink/service/role/service/IRoleUserService.java new file mode 100644 index 00000000..198f9965 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/service/IRoleUserService.java @@ -0,0 +1,35 @@ +package ink.wgink.service.role.service; + +import ink.wgink.interfaces.role.IRoleUserBaseService; + +import java.util.List; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: IRoleUserService + * @Description: 角色用户 + * @Author: WangGeng + * @Date: 2021/2/18 11:24 + * @Version: 1.0 + **/ +public interface IRoleUserService extends IRoleUserBaseService { + + /** + * 更新用户组人员列表 + * + * @param groupId 用户组ID + * @param userIds 用户ID列表 + */ + void update(String groupId, List userIds); + + /** + * 用户组人员删除 + * + * @param groupId 用户组ID + * @param userIds 用户ID列表 + */ + void delete(String groupId, List userIds); + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleDataRightServiceImpl.java b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleDataRightServiceImpl.java new file mode 100644 index 00000000..c854ce98 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleDataRightServiceImpl.java @@ -0,0 +1,88 @@ +package ink.wgink.service.role.service.impl; + +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.common.enums.RoleDataRightEnum; +import ink.wgink.exceptions.SearchException; +import ink.wgink.interfaces.department.IDepartmentUserBaseService; +import ink.wgink.pojo.dtos.role.RoleDTO; +import ink.wgink.pojo.dtos.role.RoleDataRightDTO; +import ink.wgink.pojo.dtos.role.RoleDataRightInfoDTO; +import ink.wgink.service.role.dao.IRoleDataRightDao; +import ink.wgink.service.role.pojo.vos.RoleDataRightVO; +import ink.wgink.service.role.service.IRoleDataRightService; +import ink.wgink.service.role.service.IRoleService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleDataRightServiceImpl + * @Description: 角色数据权限 + * @Author: WangGeng + * @Date: 2021/2/21 18:32 + * @Version: 1.0 + **/ +@Service +public class RoleDataRightServiceImpl extends DefaultBaseService implements IRoleDataRightService { + + @Autowired + private IRoleDataRightDao roleDataRightDao; + @Autowired + private IRoleService roleService; + + @Override + public void update(String roleId, RoleDataRightVO roleDataRightVO) { + roleService.updateRoleDataRight(roleId, roleDataRightVO.getRoleDataRight()); + // 删除角色数据权限 + Map params = getHashMap(4); + params.put("roleId", roleId); + roleDataRightDao.delete(params); + if (StringUtils.equals(roleDataRightVO.getRoleDataRight(), RoleDataRightEnum.CUSTOM.getValue())) { + // 更新自定义权限用户列表 + for (String userId : roleDataRightVO.getUserIds()) { + params.put("userId", userId); + roleDataRightDao.save(params); + } + } + } + + @Override + public RoleDataRightInfoDTO get(String roleId) { + RoleDTO roleDTO = roleService.get(roleId); + if (roleDTO == null) { + throw new SearchException("角色不存在"); + } + List userIds = new ArrayList<>(); + if (StringUtils.equals(roleDTO.getRoleDataRight(), RoleDataRightEnum.CUSTOM.getValue())) { + List roleDataRightDTOs = list(roleId); + for (RoleDataRightDTO roleDataRightDTO : roleDataRightDTOs) { + userIds.add(roleDataRightDTO.getUserId()); + } + } + RoleDataRightInfoDTO roleDataRightInfoDTO = new RoleDataRightInfoDTO(); + roleDataRightInfoDTO.setRoleDataRight(roleDTO.getRoleDataRight()); + roleDataRightInfoDTO.setUserIds(userIds); + return roleDataRightInfoDTO; + } + + @Override + public List list(Map params) { + return roleDataRightDao.list(params); + } + + @Override + public List list(String roleId) { + Map params = getHashMap(2); + params.put("roleId", roleId); + return list(params); + } + + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleGroupServiceImpl.java b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleGroupServiceImpl.java deleted file mode 100644 index 88f51fe2..00000000 --- a/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleGroupServiceImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package ink.wgink.service.role.service.impl; - -import org.springframework.stereotype.Service; - -/** - * When you feel like quitting. Think about why you started - * 当你想要放弃的时候,想想当初你为何开始 - * - * @ClassName: RoleGroupServiceImpl - * @Description: 角色组 - * @Author: wanggeng - * @Date: 2021/2/5 8:55 上午 - * @Version: 1.0 - */ -@Service -public class RoleGroupServiceImpl { - -// @Override -// public SuccessResultList> listRoleGroup(ListPage page) { -// PageHelper.startPage(page.getPage(), page.getRows()); -// List roleGroupDTOs = groupDao.listRoleGroups(page.getParams()); -// PageInfo pageInfo = new PageInfo<>(roleGroupDTOs); -// return new SuccessResultList<>(roleGroupDTOs, pageInfo.getPageNum(), pageInfo.getTotal()); -// } - -// @Override -// public List listSelectRoleGroup(Map params) { -// return groupDao.listRoleGroups(params); -// } - -} diff --git a/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleMenuServiceImpl.java b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleMenuServiceImpl.java index bfb62c01..e4517699 100644 --- a/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleMenuServiceImpl.java +++ b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleMenuServiceImpl.java @@ -1,9 +1,16 @@ package ink.wgink.service.role.service.impl; import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.pojo.dtos.role.RoleMenuDTO; +import ink.wgink.service.role.dao.IRoleMenuDao; +import ink.wgink.service.role.pojo.vos.RoleMenuVO; import ink.wgink.service.role.service.IRoleMenuService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; + /** * When you feel like quitting. Think about why you started * 当你想要放弃的时候,想想当初你为何开始 @@ -17,4 +24,24 @@ import org.springframework.stereotype.Service; @Service public class RoleMenuServiceImpl extends DefaultBaseService implements IRoleMenuService { + @Autowired + private IRoleMenuDao roleMenuDao; + + @Override + public void update(String roleId, RoleMenuVO roleMenuVO) { + Map params = getHashMap(4); + params.put("roleId", roleId); + roleMenuDao.delete(params); + for (String menuId : roleMenuVO.getMenuIds()) { + params.put("menuId", menuId); + roleMenuDao.save(params); + } + } + + @Override + public List list(String roleId) { + Map params = getHashMap(2); + params.put("roleId", roleId); + return roleMenuDao.list(params); + } } diff --git a/service-role/src/main/java/ink/wgink/service/role/service/impl/RolePermissionServiceImpl.java b/service-role/src/main/java/ink/wgink/service/role/service/impl/RolePermissionServiceImpl.java index f7c03b44..5ebfbc72 100644 --- a/service-role/src/main/java/ink/wgink/service/role/service/impl/RolePermissionServiceImpl.java +++ b/service-role/src/main/java/ink/wgink/service/role/service/impl/RolePermissionServiceImpl.java @@ -30,86 +30,41 @@ public class RolePermissionServiceImpl extends DefaultBaseService implements IRo @Autowired private IRolePermissionDao rolePermissionDao; - @Autowired - private IPermissionService permissionService; @Override - public void updateByRoleId(String roleId, RolePermissionVO rolePermissionVO) { + public void update(String roleId, RolePermissionVO rolePermissionVO) { + // 清空原有内容 + Map params = getHashMap(4); + params.put("roleId", roleId); + params.put("permissionType", rolePermissionVO.getType()); + rolePermissionDao.delete(params); + for (String permissionId : rolePermissionVO.getPermissionIds()) { + String[] permissionIdArray = permissionId.split("\\_"); + params.put("apiTag", permissionIdArray[0]); + params.put("permissionId", permissionIdArray[1]); + rolePermissionDao.save(params); + } + } + + @Override + public List list(Map params) { + return rolePermissionDao.list(params); + } + + @Override + public List list(String roleId) { Map params = getHashMap(2); params.put("roleId", roleId); - if (rolePermissionVO.getChecked()) { - LOG.debug("新增权限角色,roleId: {}", roleId); - for (String permissionId : rolePermissionVO.getPermissionIdArray()) { - if (getByPermissionIdAndRoleId(permissionId, roleId) != null) { - continue; - } - params.put("permissionId", permissionId); - rolePermissionDao.save(params); - } - } else { - LOG.debug("删除权限角色,roleId: {}", roleId); - params.put("permissionIds", rolePermissionVO.getPermissionIdArray()); - rolePermissionDao.delete(params); - } + return list(params); } @Override - public RolePermissionDTO getByPermissionIdAndRoleId(String permissionId, String roleId) { - PermissionDTO permissionDTO = permissionService.get(permissionId); - if (permissionDTO == null) { - return null; - } - Map params = getHashMap(2); - params.put("permissionId", permissionId); + public List list(String roleId, String permissionType) { + Map params = getHashMap(4); params.put("roleId", roleId); - RolePermissionDTO rolePermissionDTO = rolePermissionDao.get(params); - if (rolePermissionDTO == null) { - return null; - } - rolePermissionDTO.setPermissionTitle(permissionDTO.getPermissionTitle()); - rolePermissionDTO.setPermissionType(permissionDTO.getPermissionType()); - rolePermissionDTO.setPermissionUrl(permissionDTO.getPermissionUrl()); -// rolePermissionDTO.setPermissionClientId(permissionDTO.getPermissionClientId()); -// rolePermissionDTO.setPermissionClientName(permissionDTO.getPermissionClientName()); - rolePermissionDTO.setIsPublic(permissionDTO.getIsPublic()); - return rolePermissionDTO; + params.put("permissionType", permissionType); + return list(params); } - @Override - public List listByRoleId(String roleId) { - List rolePermissionDTOs = rolePermissionDao.listByRoleId(roleId); - if (rolePermissionDTOs.isEmpty()) { - return rolePermissionDTOs; - } - List permissionIds = new ArrayList<>(); - for (RolePermissionDTO rolePermissionDTO : rolePermissionDTOs) { - permissionIds.add(rolePermissionDTO.getPermissionId()); - } - List permissionDTOs = permissionService.listByIds(permissionIds); - if (permissionDTOs.isEmpty()) { - return new ArrayList<>(); - } - for (int i = 0; i < rolePermissionDTOs.size(); i++) { - RolePermissionDTO rolePermissionDTO = rolePermissionDTOs.get(i); - boolean isExist = false; - for (PermissionDTO permissionDTO : permissionDTOs) { - if (StringUtils.equals(rolePermissionDTO.getPermissionId(), permissionDTO.getPermissionId())) { - isExist = true; - rolePermissionDTO.setPermissionTitle(permissionDTO.getPermissionTitle()); - rolePermissionDTO.setPermissionType(permissionDTO.getPermissionType()); - rolePermissionDTO.setPermissionUrl(permissionDTO.getPermissionUrl()); -// rolePermissionDTO.setPermissionClientId(permissionDTO.getPermissionClientId()); -// rolePermissionDTO.setPermissionClientName(permissionDTO.getPermissionClientName()); - rolePermissionDTO.setIsPublic(permissionDTO.getIsPublic()); - break; - } - } - if (!isExist) { - rolePermissionDTOs.remove(i); - i--; - } - } - return rolePermissionDTOs; - } } diff --git a/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleServiceImpl.java b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleServiceImpl.java index 3ceddabb..1e586eda 100644 --- a/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleServiceImpl.java +++ b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleServiceImpl.java @@ -72,6 +72,15 @@ public class RoleServiceImpl extends DefaultBaseService implements IRoleService roleDao.update(params); } + @Override + public void updateRoleDataRight(String roleId, String roleDataRight) { + Map params = getHashMap(4); + params.put("roleId", roleId); + params.put("roleDataRight", roleDataRight); + setUpdateInfo(params); + roleDao.update(params); + } + @Override public RoleDTO get(Map params) throws SearchException { return roleDao.get(params); diff --git a/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleUserServiceImpl.java b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleUserServiceImpl.java new file mode 100644 index 00000000..9b863ce7 --- /dev/null +++ b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleUserServiceImpl.java @@ -0,0 +1,122 @@ +package ink.wgink.service.role.service.impl; + +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.interfaces.user.IUserBaseService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.dtos.role.RoleUserDTO; +import ink.wgink.pojo.dtos.user.UserDTO; +import ink.wgink.pojo.result.SuccessResultList; +import ink.wgink.service.role.dao.IRoleUserDao; +import ink.wgink.service.role.service.IRoleUserService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: RoleUserServiceImpl + * @Description: 角色用户 + * @Author: WangGeng + * @Date: 2021/2/18 11:24 + * @Version: 1.0 + **/ +@Service +public class RoleUserServiceImpl extends DefaultBaseService implements IRoleUserService { + + @Autowired + private IRoleUserDao roleUserDao; + @Autowired + private IUserBaseService userBaseService; + + @Override + public void update(String roleId, List userIds) { + delete(roleId, userIds); + if (!userIds.isEmpty()) { + Map params = getHashMap(4); + params.put("roleId", roleId); + for (String userId : userIds) { + params.put("userId", userId); + roleUserDao.save(params); + } + } + } + + @Override + public void delete(String roleId, List userIds) { + Map params = getHashMap(4); + params.put("roleId", roleId); + params.put("userIds", userIds); + roleUserDao.delete(params); + } + + @Override + public List listUserId(String roleId) { + Map params = getHashMap(2); + params.put("roleId", roleId); + return roleUserDao.listUserId(params); + } + + @Override + public List listUserId(List roleIds) { + Map params = getHashMap(2); + params.put("roleIds", roleIds); + return roleUserDao.listUserId(params); + } + + @Override + public SuccessResultList> listPage(String roleId, ListPage page) { + SuccessResultList> successResultList; + if (StringUtils.equals(roleId, ISystemConstant.TREE_BASE_ROOT_ID_VALUE)) { + successResultList = listPageUserDTOByExcludeRole(page); + } else { + successResultList = listPageUser(roleId, page); + } + List userDTOs = successResultList.getRows(); + List roleUserDTOs = new ArrayList<>(); + for (UserDTO userDTO : userDTOs) { + RoleUserDTO roleUserDTO = new RoleUserDTO(userDTO); + roleUserDTOs.add(roleUserDTO); + } + return new SuccessResultList<>(roleUserDTOs, successResultList.getPage(), successResultList.getTotal()); + } + + + private List listGroupUserId(Map params) { + return roleUserDao.listGroupUserId(params); + } + + /** + * 没有用户组的用户分页列表 + * + * @param page + * @return + */ + private SuccessResultList> listPageUserDTOByExcludeRole(ListPage page) { + List hasRoleUserIds = listGroupUserId(new HashMap<>(0)); + return userBaseService.listPageByExcludeIds(hasRoleUserIds, page); + } + + /** + * 用户组的用户分页列表 + * + * @param roleId 用户组ID + * @param page + * @return + */ + private SuccessResultList> listPageUser(String roleId, ListPage page) { + List userIds = listUserId(roleId); + if (userIds.isEmpty()) { + return new SuccessResultList<>(new ArrayList<>(), 1, 0L); + } + return userBaseService.listPageByIds(userIds, page); + } + +} diff --git a/service-role/src/main/java/ink/wgink/service/role/startup/ServiceRoleStartUp.java b/service-role/src/main/java/ink/wgink/service/role/startup/ServiceRoleStartUp.java index d04f8593..8a642574 100644 --- a/service-role/src/main/java/ink/wgink/service/role/startup/ServiceRoleStartUp.java +++ b/service-role/src/main/java/ink/wgink/service/role/startup/ServiceRoleStartUp.java @@ -1,7 +1,7 @@ package ink.wgink.service.role.startup; import ink.wgink.pojo.dtos.user.UserDTO; -import ink.wgink.service.role.dao.IRoleDao; +import ink.wgink.service.role.dao.*; import ink.wgink.util.date.DateUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,6 +29,14 @@ public class ServiceRoleStartUp implements ApplicationRunner { private static final Logger LOG = LoggerFactory.getLogger(ServiceRoleStartUp.class); @Autowired private IRoleDao roleDao; + @Autowired + private IRoleUserDao roleUserDao; + @Autowired + private IRolePermissionDao rolePermissionDao; + @Autowired + private IRoleDataRightDao roleDataRightDao; + @Autowired + private IRoleMenuDao roleMenuDao; @Override public void run(ApplicationArguments args) throws Exception { @@ -41,6 +49,18 @@ public class ServiceRoleStartUp implements ApplicationRunner { private void initTable() { LOG.debug("创建 sys_role 表"); roleDao.createTable(); + + LOG.debug("创建 sys_role_user 表"); + roleUserDao.createTable(); + + LOG.debug("创建 sys_role_permission 表"); + rolePermissionDao.createTable(); + + LOG.debug("创建 sys_role_data_right 表"); + roleDataRightDao.createTable(); + + LOG.debug("创建 sys_role_menu 表"); + roleMenuDao.createTable(); } } diff --git a/service-role/src/main/resources/mybatis/mapper/role-data-right-mapper.xml b/service-role/src/main/resources/mybatis/mapper/role-data-right-mapper.xml new file mode 100644 index 00000000..359685c7 --- /dev/null +++ b/service-role/src/main/resources/mybatis/mapper/role-data-right-mapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + CREATE TABLE IF NOT EXISTS `sys_role_data_right` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `role_id` char(36) DEFAULT NULL COMMENT '角色ID', + `user_id` char(36) DEFAULT NULL COMMENT '用户ID', + PRIMARY KEY (`id`), + KEY `role_id` (`role_id`) USING BTREE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + + + + INSERT INTO sys_role_data_right( + role_id, + user_id + ) VALUES( + #{roleId}, + #{userId} + ) + + + + + DELETE FROM + sys_role_data_right + WHERE + role_id = #{roleId} + + + + + + \ No newline at end of file diff --git a/service-role/src/main/resources/mybatis/mapper/role-group-mapper.xml b/service-role/src/main/resources/mybatis/mapper/role-group-mapper.xml deleted file mode 100644 index 66237a9f..00000000 --- a/service-role/src/main/resources/mybatis/mapper/role-group-mapper.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/service-role/src/main/resources/mybatis/mapper/role-mapper.xml b/service-role/src/main/resources/mybatis/mapper/role-mapper.xml index 1ea53a97..b8b41703 100644 --- a/service-role/src/main/resources/mybatis/mapper/role-mapper.xml +++ b/service-role/src/main/resources/mybatis/mapper/role-mapper.xml @@ -11,7 +11,7 @@ - + @@ -29,7 +29,7 @@ `role_name` varchar(255) DEFAULT NULL COMMENT '角色名称', `role_summary` varchar(255) DEFAULT NULL COMMENT '角色说明', `role_code` varchar(255) DEFAULT NULL COMMENT '角色编码', - `role_data_authority` varchar(20) DEFAULT 'self' COMMENT '数据权限', + `role_data_right` varchar(20) DEFAULT 'self' COMMENT '数据权限', `creator` char(36) DEFAULT NULL, `gmt_create` datetime DEFAULT NULL, `modifier` char(36) DEFAULT NULL, @@ -38,8 +38,6 @@ PRIMARY KEY (`id`,`role_id`), UNIQUE KEY `role_id` (`role_id`) ) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8; - - @@ -98,8 +96,8 @@ role_summary = #{roleSummary}, - - role_data_authority = #{roleDataAuthority}, + + role_data_right = #{roleDataRight}, modifier = #{modifier}, gmt_modified = #{gmtModified} diff --git a/service-role/src/main/resources/mybatis/mapper/role-menu-mapper.xml b/service-role/src/main/resources/mybatis/mapper/role-menu-mapper.xml new file mode 100644 index 00000000..38d727c8 --- /dev/null +++ b/service-role/src/main/resources/mybatis/mapper/role-menu-mapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + CREATE TABLE IF NOT EXISTS `sys_role_menu` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `role_id` char(36) DEFAULT NULL COMMENT '角色ID', + `menu_id` char(36) DEFAULT NULL COMMENT '菜单ID', + PRIMARY KEY (`id`), + KEY `role_id` (`role_id`) USING BTREE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + + + + INSERT INTO sys_role_menu( + role_id, + menu_id + ) VALUES( + #{roleId}, + #{menuId} + ) + + + + + DELETE FROM + sys_role_menu + WHERE + role_id = #{roleId} + + + + + + \ No newline at end of file diff --git a/service-role/src/main/resources/mybatis/mapper/role-permission-mapper.xml b/service-role/src/main/resources/mybatis/mapper/role-permission-mapper.xml index 84a1fded..8c127492 100644 --- a/service-role/src/main/resources/mybatis/mapper/role-permission-mapper.xml +++ b/service-role/src/main/resources/mybatis/mapper/role-permission-mapper.xml @@ -2,62 +2,89 @@ + + - + + + + + + CREATE TABLE IF NOT EXISTS `sys_role_permission` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `role_id` char(36) DEFAULT NULL COMMENT '角色ID', + `api_tag` varchar(255) DEFAULT NULL COMMENT '接口标识', + `permission_id` char(36) DEFAULT NULL COMMENT '权限ID', + `permission_type` char(36) DEFAULT NULL COMMENT '权限类型', + PRIMARY KEY (`id`), + KEY `role_id` (`role_id`), + KEY `permission_type` (`permission_type`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + - + INSERT INTO sys_role_permission ( + role_id, + api_tag, permission_id, - role_id + permission_type ) VALUES( + #{roleId}, + #{apiTag}, #{permissionId}, - #{roleId} + #{permissionType} ) - - + + DELETE FROM sys_role_permission WHERE role_id = #{roleId} + + AND + permission_type = #{permissionType} + + AND permission_id IN - - #{permissionIds[${index}]} - + + #{permissionType[${index}]} + + - - SELECT - * - FROM - sys_role_permission - WHERE - permission_id = #{permissionId} - AND - role_id = #{roleId} - - - - \ No newline at end of file diff --git a/service-role/src/main/resources/mybatis/mapper/role-user-mapper.xml b/service-role/src/main/resources/mybatis/mapper/role-user-mapper.xml new file mode 100644 index 00000000..74e24cad --- /dev/null +++ b/service-role/src/main/resources/mybatis/mapper/role-user-mapper.xml @@ -0,0 +1,85 @@ + + + + + + + + + CREATE TABLE IF NOT EXISTS `sys_role_user` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `role_id` char(36) NOT NULL COMMENT '组ID', + `user_id` char(36) NOT NULL, + PRIMARY KEY (`id`), + KEY `user_id_idx` (`user_id`) USING BTREE, + KEY `role_id_idx` (`role_id`) USING BTREE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + + + + INSERT INTO sys_role_user( + role_id, + user_id + ) VALUES( + #{roleId}, + #{userId} + ) + + + + + DELETE FROM + sys_role_user + WHERE + 1 = 1 + + AND + role_id = #{roleId} + + + AND + user_id = #{userId} + + + AND + user_id IN + + #{userIds[${index}]} + + + + + + + + + + + + \ No newline at end of file diff --git a/service-role/src/main/resources/templates/role/list-data-authority.html b/service-role/src/main/resources/templates/role/dataright/update.html similarity index 74% rename from service-role/src/main/resources/templates/role/list-data-authority.html rename to service-role/src/main/resources/templates/role/dataright/update.html index f61f2838..1e3c7a19 100644 --- a/service-role/src/main/resources/templates/role/list-data-authority.html +++ b/service-role/src/main/resources/templates/role/dataright/update.html @@ -1,7 +1,7 @@ - + - + @@ -20,7 +20,7 @@
- @@ -50,36 +50,33 @@ var $ = layui.$; var form = layui.form; var roleId = top.restAjax.params(window.location.href).roleId; - var roleUserAuthorityList = []; + var roleDataRightUserIds = []; var roleUsers = []; function closeBox() { parent.layer.close(parent.layer.getFrameIndex(window.name)); } // 初始化角色人员 function initCustomRoleUsers(selectedUsers) { - roleUserAuthorityList.splice(0, roleUserAuthorityList.length); + roleDataRightUserIds.splice(0, roleDataRightUserIds.length); roleUsers.splice(0, roleUsers.length); $('#customUserBox').empty(); for (var i = 0, item; item = selectedUsers[i++];) { - roleUserAuthorityList.push({ - departmentId: item.departmentId, - userId: item.userId - }); + roleDataRightUserIds.push(item.userId); roleUsers.push({ userName: item.userName, - userTitle: item.userTitle + userTitle: item.userUsername }); } } // 初始化 function initCustomData(ids) { $('#customUserBox').show(); - if(!ids) { + if(!ids || ids.length == 0) { return; } var loadLayerIndex; - top.restAjax.post(top.restAjax.path('api/user/listdepartmentuserbyids', []), { - selectedUserIds: ids + top.restAjax.post(top.restAjax.path('api/user/listbyids', []), { + ids: ids }, null, function(code, data) { initCustomRoleUsers(data); setCustomRoleUsers(); @@ -94,16 +91,16 @@ // 初始化 function initData() { var loadLayerIndex; - top.restAjax.get(top.restAjax.path('api/role/getroledataauthoritytype/{roleId}', [roleId]), {}, null, function(code, data) { + top.restAjax.get(top.restAjax.path('api/role/data-right/get/{roleId}', [roleId]), {}, null, function(code, data) { form.val('dataForm', { - dataAuthorityType: data.roleDataAuthorityType + roleDataRight: data.roleDataRight }); form.render(null, 'dataForm'); - if(data.roleDataAuthorityType === 'custom') { - initCustomData(data.roleDataAuthority); + if(data.roleDataRight === 'custom') { + initCustomData(data.userIds); } }, function(code, data) { - top.DialogBox.msg(data.msg); + top.dialog.msg(data.msg); }, function() { loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3}); }, function() { @@ -119,17 +116,11 @@ // 打开自定义角色用户 function openCustomRoleUsers() { $('#customUserBox').show(); - var selectedUsers = []; - for(var i = 0, item = roleUserAuthorityList[i]; item = roleUserAuthorityList[i++];) { - selectedUsers.push({ - userId: item.userId, - departmentId: item.departmentId - }); - } - top.dialog.dialogData.selectedUsers = selectedUsers; + console.log(roleDataRightUserIds) + top.dialog.dialogData.selectedUserIds = roleDataRightUserIds.toString().replaceAll(',', '\_'); top.dialog.open({ - url: top.restAjax.path('route/system/user/select-department-and-user.html', []), - title: '选择组织部门人员', + url: top.restAjax.path('route/department/user/select-user', []), + title: '选择人员', width: '500px', height: '500px', onClose: function() { @@ -139,7 +130,7 @@ initCustomRoleUsers(selectedUsers); setCustomRoleUsers(); } else { - roleUserAuthorityList.splice(0, roleUserAuthorityList.length); + roleDataRightUserIds.splice(0, roleDataRightUserIds.length); roleUsers.splice(0, roleUsers.length); $('#customUserBox').empty(); } @@ -152,17 +143,14 @@ form.on('submit(submitForm)', function(formData) { top.dialog.confirm(top.dataMessage.commit, function(index) { top.dialog.close(index); - var roleUserAuthorities = []; + var userIds = []; var loadLayerIndex; - for(var i = 0, item = roleUserAuthorityList[i]; item = roleUserAuthorityList[i++];) { - roleUserAuthorities.push({ - departmentId: item.departmentId, - userId: item.userId - }) + for(var i = 0, item = roleDataRightUserIds[i]; item = roleDataRightUserIds[i++];) { + userIds.push(item) } - top.restAjax.put(top.restAjax.path('api/role/updateroledataauthority/{roleId}', [roleId]), { - dataAuthorityType: formData.field.dataAuthorityType, - roleUserAuthorityList: roleUserAuthorities + top.restAjax.put(top.restAjax.path('api/role/data-right/update/{roleId}', [roleId]), { + roleDataRight: formData.field.roleDataRight, + userIds: userIds }, null, function(code, data) { top.dialog.msg(top.dataMessage.commitSuccess, { time: 0, @@ -185,9 +173,9 @@ }); return false; }); - form.on('select(dataAuthorityType)', function(data) { - var dataAuthorityType = data.value; - if(dataAuthorityType === 'custom') { + form.on('select(roleDataRight)', function(data) { + var roleDataRight = data.value; + if(roleDataRight === 'custom') { openCustomRoleUsers(); } else { $('#customUserBox').hide(); diff --git a/service-role/src/main/resources/templates/role/list-tree.html b/service-role/src/main/resources/templates/role/list-tree.html index 0040abc2..09437d93 100644 --- a/service-role/src/main/resources/templates/role/list-tree.html +++ b/service-role/src/main/resources/templates/role/list-tree.html @@ -68,7 +68,7 @@ enable: true, autoLoad: false, type: 'get', - url: top.restAjax.path('api/role/listztreerole', []), + url: top.restAjax.path('api/role/listztree', []), autoParam: ['id'], otherParam: {}, dataFilter: function (treeId, parentNode, childNodes) { diff --git a/service-role/src/main/resources/templates/role/list.html b/service-role/src/main/resources/templates/role/list.html index ca1ec9a4..eb75b18f 100644 --- a/service-role/src/main/resources/templates/role/list.html +++ b/service-role/src/main/resources/templates/role/list.html @@ -20,12 +20,14 @@
- - +
+ + +
@@ -90,15 +92,10 @@ return ''; } }, - {field:'groups', width:100, title: '组列表', align:'center', - templet: function(item) { - return ''; - } - }, {field:'roleName', width:170, title: '角色名称', align:'center',}, {field:'roleSummary', width:170, title: '角色说明', align:'center',}, {field:'roleCode', width:170, title: '角色编码', align:'center',}, - {field:'jurisdiction', width:200, title: '快捷权限', align:'center', + {field:'jurisdiction', width:190, title: '接口权限', align:'center', templet: function(item) { return '
' + '' + @@ -108,12 +105,11 @@ '
' } }, - {field:'jurisdiction', width:200, title: '其他权限', align:'center', + {field:'jurisdiction', width:140, title: '其他权限', align:'center', templet: function(item) { return '
' + '' + ''+ - ''+ '
' } }, @@ -143,10 +139,6 @@ height: $win.height() - 60, }); } - function refreshTable() { - parent.common.refreshTree('leftTree'); - reloadTable(); - } // 初始化日期 function initDate() { // 日期选择 @@ -169,9 +161,9 @@ top.dialog.close(index); var layIndex; top.restAjax.delete(top.restAjax.path('api/role/remove/{ids}', [ids]), {}, null, function (code, data) { - top.dialog.msg(top.dataMessage.deleteSuccess, {time: 1000}, function () { - refreshTable(); - }); + top.dialog.msg(top.dataMessage.deleteSuccess, {time: 1000}); + parent.common.refreshTree('leftTree'); + reloadTable(); }, function (code, data) { top.dialog.msg(data.msg); }, function () { @@ -195,7 +187,7 @@ }); // 事件 - 管理员菜单 $(document).on('click', '#adminMenu', function() { - roleAuth('admin', 5); + roleMenu('admin', '管理员菜单(不设置显示全部)'); }); // 事件 - 增删改 table.on('toolbar(dataTable)', function(obj) { @@ -212,7 +204,7 @@ anim: 2, content: top.restAjax.path('route/role/save?roleParentId={parentId}', [parentId]), end: function() { - refreshTable(); + reloadTable(); } }); } else if(layEvent === 'update') { @@ -230,7 +222,7 @@ anim: 2, content: top.restAjax.path('route/role/update?roleId={roleId}', [checkDatas[0].roleId]), end: function() { - refreshTable(); + reloadTable(); } }); } @@ -253,30 +245,47 @@ // 角色权限 function roleAuth(roleId, type) { var title; + var permissionType; switch (type) { case 1: title = '新增'; + permissionType = 'permissionInsert'; break; case 2: title = '删除'; + permissionType = 'permissionDelete'; break; case 3: title = '修改'; - break; - case 4: - title = '查询'; + permissionType = 'permissionUpdate'; break; default: - title = '菜单'; + title = '查询'; + permissionType = 'permissionQuery'; } top.dialog.open({ - url: top.restAjax.path('route/system/role/menu-tree.html?roleId={roleId}&type={type}', [roleId, type]), + url: top.restAjax.path('route/role/permission/update?roleId={roleId}&permissionType={permissionType}', [roleId, permissionType]), title: title +'授权', - width: '200px', - height: '400px', + width: '900px', + height: '500px', onClose: function() {} }); } + + /** + * 角色菜单 + * @param roleId + */ + function roleMenu(roleId, title) { + top.dialog.open({ + url: top.restAjax.path('route/role/menu/tree?roleId={roleId}', [roleId]), + title: title, + width: '300px', + height: '500px', + onClose: function() {} + }); + } + table.on('tool(dataTable)', function(obj) { var data = obj.data; var layEvent = obj.event; @@ -289,41 +298,24 @@ } else if(layEvent === 'queryEvent') { roleAuth(data.roleId, 4); } else if(layEvent === 'menuEvent') { - roleAuth(data.roleId, 5); + roleMenu(data.roleId, '角色菜单'); } else if(layEvent === 'userEvent') { top.dialog.open({ - url: top.restAjax.path('route/system/user/list-role-user.html?roleId={roleId}', [data.roleId]), - title: '角色用户列表', - width: '800px', - height: '500px', - onClose: function() {} - }); - } else if(layEvent === 'groupEvent') { - top.dialog.open({ - url: top.restAjax.path('route/system/group/list-role-group.html?roleId={roleId}', [data.roleId]), - title: '角色用户组列表', + url: top.restAjax.path('route/role/user/list?roleId={roleId}', [data.roleId]), + title: '【'+ data.roleName +'】用户列表', width: '800px', height: '500px', onClose: function() {} }); } else if(layEvent === 'dataEvent') { top.dialog.open({ - url: top.restAjax.path('route/system/role/list-data-authority.html?roleId={roleId}', [data.roleId]), - title: '选择数据权限', + url: top.restAjax.path('route/role/data-right/update?roleId={roleId}', [data.roleId]), + title: '修改数据权限', width: '200px', height: '350px', onClose: function() { } }); - } else if(layEvent === 'permissionEvent') { - top.dialog.open({ - url: top.restAjax.path('route/permission/list-permission-role.html?roleId={roleId}', [data.roleId]), - title: '设置接口权限', - width: '900px', - height: '500px', - onClose: function() { - } - }); } }); }); diff --git a/service-role/src/main/resources/templates/role/menu-tree.html b/service-role/src/main/resources/templates/role/menu/tree.html similarity index 71% rename from service-role/src/main/resources/templates/role/menu-tree.html rename to service-role/src/main/resources/templates/role/menu/tree.html index 77ce5733..8253bbcd 100644 --- a/service-role/src/main/resources/templates/role/menu-tree.html +++ b/service-role/src/main/resources/templates/role/menu/tree.html @@ -1,7 +1,7 @@ - + - + @@ -14,10 +14,10 @@
-
+
-
-
    +
    +
      @@ -31,8 +31,6 @@
      - - - -
      -
      -
      -
      -
      -
      -
      - - - - - \ No newline at end of file diff --git a/service-role/src/main/resources/templates/role/permission/update.html b/service-role/src/main/resources/templates/role/permission/update.html new file mode 100644 index 00000000..c0c06ec9 --- /dev/null +++ b/service-role/src/main/resources/templates/role/permission/update.html @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + +
      +
      +
      +
      +
      + +
      + +
      +
      + +
      +
      + +
      +
      +
      +
      +
      + + + + + \ No newline at end of file diff --git a/service-role/src/main/resources/templates/role/save.html b/service-role/src/main/resources/templates/role/save.html index c8fb13af..c3f6cb1b 100644 --- a/service-role/src/main/resources/templates/role/save.html +++ b/service-role/src/main/resources/templates/role/save.html @@ -79,7 +79,7 @@ return; } var loadLayerIndex; - top.restAjax.get(top.restAjax.path('api/role/getrole/{roleParentId}', [roleParentId]), {}, null, function(code, data) { + top.restAjax.get(top.restAjax.path('api/role/get/{roleParentId}', [roleParentId]), {}, null, function(code, data) { form.val('dataForm', { roleParentName: data.roleName }); @@ -99,7 +99,8 @@ top.dialog.confirm(top.dataMessage.commit, function(index) { top.dialog.close(index); var loadLayerIndex; - top.restAjax.post(top.restAjax.path('api/role/saverole', []), formData.field, null, function(code, data) { + top.restAjax.post(top.restAjax.path('api/role/save', []), formData.field, null, function(code, data) { + parent.parent.common.refreshTree('leftTree'); var layerIndex = top.dialog.msg(top.dataMessage.commitSuccess, { time: 0, btn: [top.dataMessage.button.yes, top.dataMessage.button.no], diff --git a/service-role/src/main/resources/templates/role/update.html b/service-role/src/main/resources/templates/role/update.html index 0471dc76..9cec1d9d 100644 --- a/service-role/src/main/resources/templates/role/update.html +++ b/service-role/src/main/resources/templates/role/update.html @@ -69,7 +69,7 @@ // 初始化 function initData() { var loadLayerIndex; - top.restAjax.get(top.restAjax.path('api/role/getrole/{roleId}', [roleId]), {}, null, function(code, data) { + top.restAjax.get(top.restAjax.path('api/role/get/{roleId}', [roleId]), {}, null, function(code, data) { form.val('dataForm', { roleParentName: data.roleParentName == '' ? '根节点' : data.roleParentName, roleParentId: data.roleParentId, @@ -92,7 +92,8 @@ top.dialog.confirm(top.dataMessage.commit, function(index) { top.dialog.close(index); var loadLayerIndex; - top.restAjax.put(top.restAjax.path('api/role/updaterole/{roleId}', [roleId]), formData.field, null, function(code, data) { + top.restAjax.put(top.restAjax.path('api/role/update/{roleId}', [roleId]), formData.field, null, function(code, data) { + parent.parent.common.refreshTree('leftTree'); var layerIndex = top.dialog.msg(top.dataMessage.commitSuccess, { time: 0, btn: [top.dataMessage.button.yes, top.dataMessage.button.no], diff --git a/service-role/src/main/resources/templates/role/user/list.html b/service-role/src/main/resources/templates/role/user/list.html new file mode 100644 index 00000000..28f3604b --- /dev/null +++ b/service-role/src/main/resources/templates/role/user/list.html @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + +
      +
      +
      +
      +
      +
      +
      + +
      + +
      +
      + + +
      +
      +
      +
      +
      + + + + + \ No newline at end of file diff --git a/service-user/src/main/java/ink/wgink/service/user/controller/api/UserController.java b/service-user/src/main/java/ink/wgink/service/user/controller/api/UserController.java index 5ccaf1a9..c122468d 100644 --- a/service-user/src/main/java/ink/wgink/service/user/controller/api/UserController.java +++ b/service-user/src/main/java/ink/wgink/service/user/controller/api/UserController.java @@ -47,7 +47,7 @@ public class UserController extends DefaultBaseController { @Autowired private IUserService userService; - @ApiOperation(value = "用户新增", notes = "用户新增接口") + @ApiOperation(value = "新增用户", notes = "新增用户接口") @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @PostMapping("save") public SuccessResult save(@RequestBody UserVO userVO) { @@ -56,7 +56,7 @@ public class UserController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "用户删除", notes = "用户删除接口") + @ApiOperation(value = "删除用户", notes = "删除用户接口") @ApiImplicitParams({ @ApiImplicitParam(name = "ids", value = "用户ID列表,用下划线分隔", paramType = "path") }) @@ -67,7 +67,7 @@ public class UserController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "用户修改", notes = "用户修改接口") + @ApiOperation(value = "修改用户", notes = "修改用户接口") @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户ID", paramType = "path"), }) @@ -94,7 +94,7 @@ public class UserController extends DefaultBaseController { } } - @ApiOperation(value = "重置密码", notes = "重置密码接口") + @ApiOperation(value = "用户重置密码", notes = "用户重置密码接口") @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @PutMapping("resetpassword/{userId}") @CheckRequestBodyAnnotation @@ -103,7 +103,7 @@ public class UserController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "修改用户名", notes = "修改用户名密码接口") + @ApiOperation(value = "用户修改用户名", notes = "用户修改用户名接口") @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @PutMapping("updateusername/{userId}") @CheckRequestBodyAnnotation @@ -112,7 +112,7 @@ public class UserController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "导入Excel", notes = "导入Excel接口") + @ApiOperation(value = "用户导入Excel", notes = "用户导入Excel接口") @ApiImplicitParams({ @ApiImplicitParam(name = "excel", value = "文件名称", paramType = "query"), })