将当前管理员相关的信息、权限等接口,迁移到 Passport 模块,更加统一
This commit is contained in:
@@ -1,37 +0,0 @@
|
||||
package cn.iocoder.mall.managementweb.manager.passport;
|
||||
|
||||
import cn.iocoder.common.framework.enums.UserTypeEnum;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.managementweb.controller.passport.dto.AdminPassportLoginDTO;
|
||||
import cn.iocoder.mall.managementweb.controller.passport.vo.AdminPassportVO;
|
||||
import cn.iocoder.mall.managementweb.convert.passport.AdminPassportConvert;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.AdminRpc;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO;
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AdminPassportManager {
|
||||
|
||||
@Reference(version = "${dubbo.consumer.AdminRpc.version}", validation = "false")
|
||||
private AdminRpc adminRpc;
|
||||
@Reference(version = "${dubbo.consumer.OAuth2Rpc.version}", validation = "false")
|
||||
private OAuth2Rpc oauth2Rpc;
|
||||
|
||||
public AdminPassportVO login(AdminPassportLoginDTO loginDTO, String ip) {
|
||||
// 校验管理员密码
|
||||
CommonResult<AdminVO> verifyPasswordResult = adminRpc.verifyPassword(AdminPassportConvert.INSTANCE.convert(loginDTO).setIp(ip));
|
||||
verifyPasswordResult.checkError();
|
||||
// 创建访问令牌
|
||||
CommonResult<OAuth2AccessTokenVO> createAccessTokenResult = oauth2Rpc.createAccessToken(
|
||||
new OAuth2CreateAccessTokenDTO().setUserId(verifyPasswordResult.getData().getId())
|
||||
.setUserType(UserTypeEnum.ADMIN.getValue()).setCreateIp(ip));
|
||||
createAccessTokenResult.checkError();
|
||||
// 返回
|
||||
return AdminPassportConvert.INSTANCE.convert(verifyPasswordResult.getData(), createAccessTokenResult.getData());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
package cn.iocoder.mall.managementweb.manager.passport;
|
||||
|
||||
import cn.iocoder.common.framework.enums.UserTypeEnum;
|
||||
import cn.iocoder.common.framework.util.CollectionUtils;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.managementweb.controller.passport.dto.PassportLoginDTO;
|
||||
import cn.iocoder.mall.managementweb.controller.passport.vo.PassportAccessTokenVO;
|
||||
import cn.iocoder.mall.managementweb.controller.passport.vo.PassportAdminMenuTreeNodeVO;
|
||||
import cn.iocoder.mall.managementweb.controller.passport.vo.PassportAdminVO;
|
||||
import cn.iocoder.mall.managementweb.controller.permission.vo.ResourceTreeNodeVO;
|
||||
import cn.iocoder.mall.managementweb.convert.passport.AdminPassportConvert;
|
||||
import cn.iocoder.mall.managementweb.convert.permission.ResourceConvert;
|
||||
import cn.iocoder.mall.managementweb.manager.permission.ResourceManager;
|
||||
import cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.AdminRpc;
|
||||
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO;
|
||||
import cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO;
|
||||
import cn.iocoder.mall.systemservice.rpc.permission.ResourceRpc;
|
||||
import cn.iocoder.mall.systemservice.rpc.permission.RoleRpc;
|
||||
import cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO;
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Service
|
||||
public class PassportManager {
|
||||
|
||||
@Reference(version = "${dubbo.consumer.AdminRpc.version}", validation = "false")
|
||||
private AdminRpc adminRpc;
|
||||
@Reference(version = "${dubbo.consumer.OAuth2Rpc.version}", validation = "false")
|
||||
private OAuth2Rpc oauth2Rpc;
|
||||
@Reference(version = "${dubbo.consumer.RoleRpc.version}", validation = "false")
|
||||
private RoleRpc roleRpc;
|
||||
@Reference(version = "${dubbo.consumer.ResourceRpc.version}", validation = "false")
|
||||
private ResourceRpc resourceRpc;
|
||||
|
||||
public PassportAccessTokenVO login(PassportLoginDTO loginDTO, String ip) {
|
||||
// 校验管理员密码
|
||||
CommonResult<AdminVO> verifyPasswordResult = adminRpc.verifyPassword(AdminPassportConvert.INSTANCE.convert(loginDTO).setIp(ip));
|
||||
verifyPasswordResult.checkError();
|
||||
// 创建访问令牌
|
||||
CommonResult<OAuth2AccessTokenVO> createAccessTokenResult = oauth2Rpc.createAccessToken(
|
||||
new OAuth2CreateAccessTokenDTO().setUserId(verifyPasswordResult.getData().getId())
|
||||
.setUserType(UserTypeEnum.ADMIN.getValue()).setCreateIp(ip));
|
||||
createAccessTokenResult.checkError();
|
||||
// 返回
|
||||
return AdminPassportConvert.INSTANCE.convert(createAccessTokenResult.getData());
|
||||
}
|
||||
|
||||
public PassportAdminVO getAdmin(Integer adminId) {
|
||||
CommonResult<AdminVO> getAdminResult = adminRpc.getAdmin(adminId);
|
||||
getAdminResult.checkError();
|
||||
return AdminPassportConvert.INSTANCE.convert(getAdminResult.getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得指定管理员的权限列表
|
||||
*
|
||||
* @param adminId 管理员编号
|
||||
* @return 权限列表
|
||||
*/
|
||||
public Set<String> listAdminPermission(Integer adminId) {
|
||||
// 获得管理员拥有的角色编号列表
|
||||
CommonResult<Set<Integer>> listAdminRoleIdsResult = roleRpc.listAdminRoleIds(adminId);
|
||||
listAdminRoleIdsResult.checkError();
|
||||
if (CollectionUtils.isEmpty(listAdminRoleIdsResult.getData())) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
// 获得角色拥有的资源列表
|
||||
CommonResult<List<ResourceVO>> resourceVOResult = resourceRpc.listRoleResource(
|
||||
listAdminRoleIdsResult.getData(), null);
|
||||
resourceVOResult.checkError();
|
||||
return CollectionUtils.convertSet(resourceVOResult.getData(), cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO::getPermission);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得管理员的菜单树
|
||||
*
|
||||
* @param adminId 管理员编号
|
||||
* @return 菜单树
|
||||
*/
|
||||
public List<PassportAdminMenuTreeNodeVO> treeAdminMenu(Integer adminId) {
|
||||
// 获得管理员拥有的角色编号列表
|
||||
CommonResult<Set<Integer>> listAdminRoleIdsResult = roleRpc.listAdminRoleIds(adminId);
|
||||
listAdminRoleIdsResult.checkError();
|
||||
if (CollectionUtils.isEmpty(listAdminRoleIdsResult.getData())) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
// 获得角色拥有的资源(菜单)列表
|
||||
CommonResult<List<cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO>> resourceVOResult = resourceRpc.listRoleResource(
|
||||
listAdminRoleIdsResult.getData(), ResourceTypeEnum.MENU.getType());
|
||||
resourceVOResult.checkError();
|
||||
// 构建菜单树
|
||||
return this.buildAdminMenuTree(resourceVOResult.getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建菜单树
|
||||
*
|
||||
* @param resourceVOs 资源(都是菜单)列表
|
||||
* @return 菜单树
|
||||
*/
|
||||
private List<PassportAdminMenuTreeNodeVO> buildAdminMenuTree(List<cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO> resourceVOs) {
|
||||
List<ResourceTreeNodeVO> treeNodeVOS = ResourceManager.buildResourceTree(resourceVOs);
|
||||
// 虽然多了一层转换,但是可维护性更好。
|
||||
return ResourceConvert.INSTANCE.convert(treeNodeVOS);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,15 +1,12 @@
|
||||
package cn.iocoder.mall.managementweb.manager.permission;
|
||||
|
||||
import cn.iocoder.common.framework.util.CollectionUtils;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.managementweb.controller.permission.dto.ResourceCreateDTO;
|
||||
import cn.iocoder.mall.managementweb.controller.permission.dto.ResourceUpdateDTO;
|
||||
import cn.iocoder.mall.managementweb.controller.permission.vo.AdminMenuTreeNodeVO;
|
||||
import cn.iocoder.mall.managementweb.controller.permission.vo.ResourceTreeNodeVO;
|
||||
import cn.iocoder.mall.managementweb.controller.permission.vo.ResourceVO;
|
||||
import cn.iocoder.mall.managementweb.convert.permission.ResourceConvert;
|
||||
import cn.iocoder.mall.systemservice.enums.permission.ResourceIdEnum;
|
||||
import cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum;
|
||||
import cn.iocoder.mall.systemservice.rpc.permission.ResourceRpc;
|
||||
import cn.iocoder.mall.systemservice.rpc.permission.RoleRpc;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -97,40 +94,7 @@ public class ResourceManager {
|
||||
CommonResult<List<cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO>> listResourceResult = resourceRpc.listResource();
|
||||
listResourceResult.checkError();
|
||||
// 构建菜单树
|
||||
return this.buildResourceTree(listResourceResult.getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得管理员的菜单树
|
||||
*
|
||||
* @param adminId 管理员编号
|
||||
* @return 菜单树
|
||||
*/
|
||||
public List<AdminMenuTreeNodeVO> treeAdminMenu(Integer adminId) {
|
||||
// 获得管理员拥有的角色编号列表
|
||||
CommonResult<Set<Integer>> listAdminRoleIdsResult = roleRpc.listAdminRoleIds(adminId);
|
||||
listAdminRoleIdsResult.checkError();
|
||||
if (CollectionUtils.isEmpty(listAdminRoleIdsResult.getData())) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
// 获得角色拥有的资源(菜单)列表
|
||||
CommonResult<List<cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO>> resourceVOResult = resourceRpc.listRoleResource(
|
||||
listAdminRoleIdsResult.getData(), ResourceTypeEnum.MENU.getType());
|
||||
resourceVOResult.checkError();
|
||||
// 构建菜单树
|
||||
return this.buildAdminMenuTree(resourceVOResult.getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建菜单树
|
||||
*
|
||||
* @param resourceVOs 资源(都是菜单)列表
|
||||
* @return 菜单树
|
||||
*/
|
||||
private List<AdminMenuTreeNodeVO> buildAdminMenuTree(List<cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO> resourceVOs) {
|
||||
List<ResourceTreeNodeVO> treeNodeVOS = this.buildResourceTree(resourceVOs);
|
||||
// 虽然多了一层转换,但是可维护性更好。
|
||||
return ResourceConvert.INSTANCE.convert(treeNodeVOS);
|
||||
return buildResourceTree(listResourceResult.getData());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -139,7 +103,7 @@ public class ResourceManager {
|
||||
* @param resourceVOs 资源列表
|
||||
* @return 资源树
|
||||
*/
|
||||
private List<ResourceTreeNodeVO> buildResourceTree(List<cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO> resourceVOs) {
|
||||
public static List<ResourceTreeNodeVO> buildResourceTree(List<cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO> resourceVOs) {
|
||||
// 排序,保证菜单的有序性
|
||||
resourceVOs.sort(Comparator.comparing(cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO::getSort));
|
||||
// 构建菜单树
|
||||
@@ -164,24 +128,4 @@ public class ResourceManager {
|
||||
return treeNodeMap.values().stream().filter(node -> node.getPid().equals(ResourceIdEnum.ROOT.getId())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得指定管理员的权限列表
|
||||
*
|
||||
* @param adminId 管理员编号
|
||||
* @return 权限列表
|
||||
*/
|
||||
public Set<String> listAdminPermission(Integer adminId) {
|
||||
// 获得管理员拥有的角色编号列表
|
||||
CommonResult<Set<Integer>> listAdminRoleIdsResult = roleRpc.listAdminRoleIds(adminId);
|
||||
listAdminRoleIdsResult.checkError();
|
||||
if (CollectionUtils.isEmpty(listAdminRoleIdsResult.getData())) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
// 获得角色拥有的资源列表
|
||||
CommonResult<List<cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO>> resourceVOResult = resourceRpc.listRoleResource(
|
||||
listAdminRoleIdsResult.getData(), null);
|
||||
resourceVOResult.checkError();
|
||||
return CollectionUtils.convertSet(resourceVOResult.getData(), cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO::getPermission);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user