From 461f9aeb6dfbdee3ecac9d6a5dffe41929059dd3 Mon Sep 17 00:00:00 2001 From: yangsb Date: Wed, 10 Apr 2024 18:17:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=84=E7=BB=87=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E8=A7=92=E8=89=B2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/SecurityFrameworkServiceImpl.java | 3 +- .../core/handler/GlobalExceptionHandler.java | 1 + .../admin/plan/dto/BlockPlaceMessage.java | 2 +- .../controller/admin/plan/dto/Material.java | 6 +-- .../admin/plan/dto/UsedBoardMessage.java | 8 ++-- .../service/order/OrderInputProcessor.java | 20 +++++++++ .../system/api/oauth2/OAuth2TokenApiImpl.java | 6 +-- .../api/permission/PermissionApiImpl.java | 3 +- .../controller/admin/auth/AuthController.java | 9 ++-- .../auth/vo/AuthPermissionInfoRespVO.java | 2 + .../permission/PermissionController.java | 3 +- .../system/convert/auth/AuthConvert.java | 2 +- .../dal/dataobject/permission/RoleDO.java | 7 +++- .../dal/dataobject/permission/UserRoleDO.java | 5 ++- .../dal/mysql/permission/RoleMapper.java | 1 + .../service/auth/AdminAuthServiceImpl.java | 6 +-- .../oauth2/OAuth2GrantServiceImpl.java | 18 ++++---- .../service/organ/OrganServiceImpl.java | 10 +++-- .../service/permission/MenuService.java | 2 + .../service/permission/MenuServiceImpl.java | 9 +++- .../service/permission/PermissionService.java | 11 ++++- .../permission/PermissionServiceImpl.java | 41 +++++++++++++++++-- .../service/permission/RoleService.java | 9 ++++ .../service/permission/RoleServiceImpl.java | 27 +++++++++++- .../service/user/AdminUserServiceImpl.java | 1 + .../src/main/resources/application.yaml | 2 +- .../service/organ/TenantServiceImplTest.java | 2 +- .../permission/PermissionServiceTest.java | 2 +- 28 files changed, 172 insertions(+), 46 deletions(-) diff --git a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java index f17b621d6..fb73e6d31 100644 --- a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java +++ b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java @@ -48,7 +48,8 @@ public class SecurityFrameworkServiceImpl implements SecurityFrameworkService { @Override public Boolean load(KeyValue> key) { - return permissionApi.hasAnyPermissions(key.getKey(), key.getValue().toArray(new String[0])).getCheckedData(); + Boolean checkedData = permissionApi.hasAnyPermissions(key.getKey(), key.getValue().toArray(new String[0])).getCheckedData(); + return checkedData; } }); diff --git a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java index 977f6117e..1a5d710b8 100644 --- a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java +++ b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java @@ -87,6 +87,7 @@ public class GlobalExceptionHandler { return serviceExceptionHandler((ServiceException) ex); } if (ex instanceof AccessDeniedException) { + ex.printStackTrace(); return accessDeniedExceptionHandler(request, (AccessDeniedException) ex); } return defaultExceptionHandler(request, ex); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/BlockPlaceMessage.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/BlockPlaceMessage.java index 2133b01d3..7537d4793 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/BlockPlaceMessage.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/BlockPlaceMessage.java @@ -12,7 +12,7 @@ import java.util.List; public class BlockPlaceMessage { @Schema(description = "自增板信息") - private String zzInfo; + private String incrInfo; @Schema(description = "大板ID") private Integer bi; @Schema(description = "小板号") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/Material.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/Material.java index b25cdc051..a779177f7 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/Material.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/Material.java @@ -59,8 +59,8 @@ public class Material { private List blockPlaceMessageList; @Schema(description = "状态") private Integer state; - @Schema(description = "有波纹") - private Boolean hasWave; + @Schema(description = "有纹路") + private Boolean hasTexture; @Schema(description = "板材原宽") private Integer orgWidth; @Schema(description = "板材原长") @@ -72,7 +72,7 @@ public class Material { @Schema(description = "预洗值") private Integer preCutValue; @Schema(description = "废料板列表") - private List scrapBoardList; + private List remainBoardList; @Schema(description = "是否辅助开料") private Boolean helpCut; @Schema(description = "同刀辅助 厚度") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/UsedBoardMessage.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/UsedBoardMessage.java index c3d865300..18505cb6e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/UsedBoardMessage.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/dto/UsedBoardMessage.java @@ -18,8 +18,8 @@ public class UsedBoardMessage { private Integer l; @Schema(description = "余料板ID") private Integer si; - @Schema(description = "仓库号") - private String so; + /*@Schema(description = "仓库号") + private String so;*/ @Schema(description = "余料板号,大板为空") private String no; @Schema(description = "RM") @@ -27,9 +27,9 @@ public class UsedBoardMessage { @Schema(description = "是否锁定") private Boolean lK; @Schema(description = "余料母板") - private List scrapPtList; + private List remainPtList; @Schema(description = "余料空间") - private List scrapBlocks; + private List remainBlocks; @Schema(description = "左边不能加工区域,有造型") private Boolean le; @Schema(description = "右边不能加工区域,有造型") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderInputProcessor.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderInputProcessor.java index ea246aaf7..2038042b9 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderInputProcessor.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderInputProcessor.java @@ -257,6 +257,16 @@ public class OrderInputProcessor { } + /** + * 批量保存生产单小板五金数据 + * @param rawGoodsDOS + * @param orderBodyDOS + * @param orderGroupDOS + * @param orderPartsDOS + * @param plateDOS + * @param orderModuleExtraDOS + * @param itemDOS + */ @Transactional public void batchInsert(Collection rawGoodsDOS, Collection orderBodyDOS, Collection orderGroupDOS, Collection orderPartsDOS, @@ -270,5 +280,15 @@ public class OrderInputProcessor { orderItemMapper.insertBatch(itemDOS); } + /** + * 保存生产单造型数据 + * @param sourceList + * @param orderId + */ + public void saveModel(List sourceList, Long orderId) { + + + } + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/oauth2/OAuth2TokenApiImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/oauth2/OAuth2TokenApiImpl.java index 27aecdeaf..5ed9dc224 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/oauth2/OAuth2TokenApiImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/oauth2/OAuth2TokenApiImpl.java @@ -34,13 +34,13 @@ public class OAuth2TokenApiImpl implements OAuth2TokenApi { @Override @Operation(description = "创建访问令牌") public CommonResult createAccessToken(OAuth2AccessTokenCreateReqDTO reqDTO) { - Long organId = OrganContextHolder.getOrganId(); + /* Long organId = OrganContextHolder.getOrganId(); OrganizationDO organ = organService.getOrgan(organId); if(Objects.isNull(organ)) { throw new ServerException(10023,"组织不存在"); - } + }*/ OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken( - reqDTO.getUserId(), reqDTO.getUserType(), reqDTO.getClientId(), reqDTO.getScopes(),organ.getLarge(), organ.getDbNo(), organ.getTableNo(), organ.getDataSourceCode()); + reqDTO.getUserId(), reqDTO.getUserType(), reqDTO.getClientId(), reqDTO.getScopes(), null, null, null, null); return success(BeanUtils.toBean(accessTokenDO, OAuth2AccessTokenRespDTO.class)); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/permission/PermissionApiImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/permission/PermissionApiImpl.java index e2a584202..e4941eeab 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/permission/PermissionApiImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/permission/PermissionApiImpl.java @@ -36,7 +36,8 @@ public class PermissionApiImpl implements PermissionApi { @Override public CommonResult getDeptDataPermission(Long userId) { - return success(permissionService.getDeptDataPermission(userId)); + DeptDataPermissionRespDTO deptDataPermission = permissionService.getDeptDataPermission(userId); + return success(deptDataPermission); } } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/auth/AuthController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/auth/AuthController.java index d36eb22aa..84177ba6a 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/auth/AuthController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/auth/AuthController.java @@ -113,12 +113,15 @@ public class AuthController { if (CollUtil.isEmpty(roleIds)) { return success(AuthConvert.INSTANCE.convert(user, Collections.emptyList(), Collections.emptyList())); } - List roles = roleService.getRoleList(roleIds); + //List roles = roleService.getRoleList(roleIds); + List roles = roleService.getRoleList1(roleIds); roles.removeIf(role -> !CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())); // 移除禁用的角色 // 1.3 获得菜单列表 - Set menuIds = permissionService.getRoleMenuListByRoleId(convertSet(roles, RoleDO::getId)); - List menuList = menuService.getMenuList(menuIds); + //Set menuIds = permissionService.getRoleMenuListByRoleId(convertSet(roles, RoleDO::getId)); + Set menuIds = permissionService.getRoleMenuListByRoleId2(convertSet(roles, RoleDO::getId)); + //List menuList = menuService.getMenuList(menuIds); + List menuList = menuService.getMenuList1(menuIds); menuList.removeIf(menu -> !CommonStatusEnum.ENABLE.getStatus().equals(menu.getStatus())); // 移除禁用的菜单 // 2. 拼接结果返回 diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java index 9e1da6417..8efa123a6 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java @@ -44,6 +44,8 @@ public class AuthPermissionInfoRespVO { @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.cf.com/xx.jpg") private String avatar; + @Schema(description = "组织id") + private Long organId; } @Schema(description = "管理后台 - 登录用户的菜单信息 Response VO") diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java index 5b84f4c6f..59f720886 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/permission/PermissionController.java @@ -2,6 +2,7 @@ package com.cf.imes.module.system.controller.admin.permission; import cn.hutool.core.collection.CollUtil; import com.cf.imes.framework.common.pojo.CommonResult; +import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.module.system.controller.admin.permission.vo.permission.PermissionAssignRoleDataScopeReqVO; import com.cf.imes.module.system.controller.admin.permission.vo.permission.PermissionAssignRoleMenuReqVO; import com.cf.imes.module.system.controller.admin.permission.vo.permission.PermissionAssignUserRoleReqVO; @@ -75,7 +76,7 @@ public class PermissionController { @PostMapping("/assign-user-role") @PreAuthorize("@ss.hasPermission('system:permission:assign-user-role')") public CommonResult assignUserRole(@Validated @RequestBody PermissionAssignUserRoleReqVO reqVO) { - permissionService.assignUserRole(reqVO.getUserId(), reqVO.getRoleIds()); + permissionService.assignUserRole(reqVO.getUserId(), reqVO.getRoleIds(),OrganContextHolder.getOrganId()); return success(true); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/auth/AuthConvert.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/auth/AuthConvert.java index 4f6d4bf2a..faaa9cdb8 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/auth/AuthConvert.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/auth/AuthConvert.java @@ -33,7 +33,7 @@ public interface AuthConvert { default AuthPermissionInfoRespVO convert(AdminUserDO user, List roleList, List menuList) { return AuthPermissionInfoRespVO.builder() - .user(AuthPermissionInfoRespVO.UserVO.builder().id(user.getId()).nickname(user.getNickname()).avatar(user.getAvatar()).build()) + .user(AuthPermissionInfoRespVO.UserVO.builder().id(user.getId()).nickname(user.getNickname()).avatar(user.getAvatar()).organId(user.getOrganId()).build()) .roles(convertSet(roleList, RoleDO::getCode)) // 权限标识信息 .permissions(convertSet(menuList, MenuDO::getPermission)) diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/permission/RoleDO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/permission/RoleDO.java index 1bc482bfe..de2290182 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/permission/RoleDO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/permission/RoleDO.java @@ -1,6 +1,7 @@ package com.cf.imes.module.system.dal.dataobject.permission; import com.cf.imes.framework.common.enums.CommonStatusEnum; +import com.cf.imes.framework.mybatis.core.dataobject.BaseDO; import com.cf.imes.framework.mybatis.core.type.JsonLongSetTypeHandler; import com.cf.imes.module.system.enums.permission.DataScopeEnum; import com.cf.imes.framework.organ.core.db.OrganBaseDO; @@ -23,7 +24,7 @@ import java.util.Set; @KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) -public class RoleDO extends OrganBaseDO { +public class RoleDO extends BaseDO { /** * 角色ID @@ -74,5 +75,9 @@ public class RoleDO extends OrganBaseDO { */ @TableField(typeHandler = JsonLongSetTypeHandler.class) private Set dataScopeDeptIds; + /** + * 组织id + */ + private Long organId; } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/permission/UserRoleDO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/permission/UserRoleDO.java index cb6cb8f50..895915446 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/permission/UserRoleDO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/permission/UserRoleDO.java @@ -31,5 +31,8 @@ public class UserRoleDO extends BaseDO { * 角色 ID */ private Long roleId; - + /** + * 组织 id + */ + private Long organId; } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMapper.java index 682655829..71e6b2aa4 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMapper.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMapper.java @@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Mapper; import org.springframework.lang.Nullable; import java.util.Collection; +import java.util.HashSet; import java.util.List; @Mapper diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/auth/AdminAuthServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/auth/AdminAuthServiceImpl.java index 9d2f00f54..5b877af53 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/auth/AdminAuthServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/auth/AdminAuthServiceImpl.java @@ -210,14 +210,14 @@ public class AdminAuthServiceImpl implements AdminAuthService { private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType) { // 插入登陆日志 createLoginLog(userId, username, logType, LoginResultEnum.SUCCESS); - Long organId = OrganContextHolder.getOrganId(); + /*Long organId = OrganContextHolder.getOrganId(); OrganizationDO organ = organService.getOrgan(organId); if(Objects.isNull(organ)) { throw new ServerException(10023,"组织不存在"); - } + }*/ // 创建访问令牌 OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, getUserType().getValue(), - OAuth2ClientConstants.CLIENT_ID_DEFAULT, null, organ.getLarge(), organ.getDbNo(), organ.getTableNo(), organ.getDataSourceCode()); + OAuth2ClientConstants.CLIENT_ID_DEFAULT, null, null, null, null, null); // 构建返回结果 return AuthConvert.INSTANCE.convert(accessTokenDO); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2GrantServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2GrantServiceImpl.java index 5d81589ae..245dd9a71 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2GrantServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2GrantServiceImpl.java @@ -42,12 +42,12 @@ public class OAuth2GrantServiceImpl implements OAuth2GrantService { @Override public OAuth2AccessTokenDO grantImplicit(Long userId, Integer userType, String clientId, List scopes) { - Long organId = OrganContextHolder.getOrganId(); + /* Long organId = OrganContextHolder.getOrganId(); OrganizationDO organ = organService.getOrgan(organId); if(Objects.isNull(organ)) { throw new ServerException(10023,"组织不存在"); - } - return oauth2TokenService.createAccessToken(userId, userType, clientId, scopes, organ.getLarge(), organ.getDbNo(), organ.getTableNo(), organ.getDataSourceCode()); + }*/ + return oauth2TokenService.createAccessToken(userId, userType, clientId, scopes, null, null, null, null); } @Override @@ -77,15 +77,15 @@ public class OAuth2GrantServiceImpl implements OAuth2GrantService { throw exception(ErrorCodeConstants.OAUTH2_GRANT_STATE_MISMATCH); } - Long organId = OrganContextHolder.getOrganId(); + /* Long organId = OrganContextHolder.getOrganId(); OrganizationDO organ = organService.getOrgan(organId); if(Objects.isNull(organ)) { throw new ServerException(10023,"组织不存在"); - } + }*/ // 创建访问令牌 return oauth2TokenService.createAccessToken(codeDO.getUserId(), codeDO.getUserType(), - codeDO.getClientId(), codeDO.getScopes(), organ.getLarge(), organ.getDbNo(), organ.getTableNo(), organ.getDataSourceCode()); + codeDO.getClientId(), codeDO.getScopes(),null, null, null, null); } @Override @@ -93,13 +93,13 @@ public class OAuth2GrantServiceImpl implements OAuth2GrantService { // 使用账号 + 密码进行登录 AdminUserDO user = adminAuthService.authenticate(username, password, null); Assert.notNull(user, "用户不能为空!"); // 防御性编程 - Long organId = OrganContextHolder.getOrganId(); + /*Long organId = OrganContextHolder.getOrganId(); OrganizationDO organ = organService.getOrgan(organId); if(Objects.isNull(organ)) { throw new ServerException(10023,"组织不存在"); - } + }*/ // 创建访问令牌 - return oauth2TokenService.createAccessToken(user.getId(), UserTypeEnum.ADMIN.getValue(), clientId, scopes, organ.getLarge(), organ.getDbNo(), organ.getTableNo(), organ.getDataSourceCode()); + return oauth2TokenService.createAccessToken(user.getId(), UserTypeEnum.ADMIN.getValue(), clientId, scopes,null, null, null, null); } @Override diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java index 292889911..795ebefcf 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java @@ -78,6 +78,10 @@ public class OrganServiceImpl implements OrganService { private MenuService menuService; @Resource private PermissionService permissionService; + //组织管理员角色id + private static final Long ORGAN_ADMIN_ROLE_ID = 165L; + //组织员工角色id + private static final Long ORGAN_STAFF_ROLE_ID = 166L; @Override public List getOrganIdList() { @@ -137,9 +141,9 @@ public class OrganServiceImpl implements OrganService { // 创建组织的管理员 OrganUtils.execute(organId, () -> { // 创建角色 - Long roleId = createRole(tenantPackage, organId); + /*Long roleId = createRole(tenantPackage, organId);*/ // 创建用户,并分配角色 - Long userId = createUser(roleId, createReqVO, organId); + Long userId = createUser(ORGAN_ADMIN_ROLE_ID, createReqVO, organId); // 修改组织的管理员 organMapper.updateById(new OrganizationDO().setId(tenant.getId()).setContactUserId(userId)); }); @@ -152,7 +156,7 @@ public class OrganServiceImpl implements OrganService { reqVO.setOrganId(organId); Long userId = userService.createUser(reqVO); // 分配角色 - permissionService.assignUserRole(userId, singleton(roleId)); + permissionService.assignUserRole(userId, singleton(roleId), organId); return userId; } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuService.java index 65439bd36..66c918c3e 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuService.java @@ -6,6 +6,7 @@ import com.cf.imes.module.system.dal.dataobject.permission.MenuDO; import java.util.Collection; import java.util.List; +import java.util.Set; /** * 菜单 Service 接口 @@ -84,4 +85,5 @@ public interface MenuService { */ List getMenuList(Collection ids); + List getMenuList1(Collection ids); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuServiceImpl.java index 7fa5b3629..c032c8454 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/MenuServiceImpl.java @@ -2,6 +2,7 @@ package com.cf.imes.module.system.service.permission; import cn.hutool.core.collection.CollUtil; import com.cf.imes.framework.common.util.object.BeanUtils; +import com.cf.imes.framework.organ.core.aop.OrganIgnore; import com.cf.imes.module.system.controller.admin.permission.vo.menu.MenuListReqVO; import com.cf.imes.module.system.controller.admin.permission.vo.menu.MenuSaveVO; import com.cf.imes.module.system.dal.dataobject.permission.MenuDO; @@ -132,6 +133,12 @@ public class MenuServiceImpl implements MenuService { return menuMapper.selectBatchIds(ids); } + @Override + @OrganIgnore + public List getMenuList1(Collection ids) { + return menuMapper.selectBatchIds(ids); + } + /** * 校验父菜单是否合法 *

@@ -174,9 +181,7 @@ public class MenuServiceImpl implements MenuService { */ @VisibleForTesting void validateMenu(Long parentId, String name, Long id) { - System.out.println("parentId = " + parentId+"name = "+ name); MenuDO menu = menuMapper.selectByParentIdAndName(parentId, name); - System.out.println("!!!!!!!!!!!!!!!!" + menu); if (menu == null) { return; } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionService.java index e7e432161..26602d060 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionService.java @@ -83,6 +83,14 @@ public interface PermissionService { */ Set getMenuRoleIdListByMenuIdFromCache(Long menuId); + /** + * 获得拥有指定菜单的角色编号数组,从缓存中获取 + * + * @param menuId 菜单编号 + * @return 角色编号数组 + */ + Set getMenuRoleIdListByMenuIdFromCache1(Long menuId); + // ========== 用户-角色的相关方法 ========== /** @@ -91,7 +99,7 @@ public interface PermissionService { * @param userId 角色编号 * @param roleIds 角色编号集合 */ - void assignUserRole(Long userId, Set roleIds); + void assignUserRole(Long userId, Set roleIds, Long organId); /** * 处理用户删除时,删除关联授权数据 @@ -143,4 +151,5 @@ public interface PermissionService { */ DeptDataPermissionRespDTO getDeptDataPermission(Long userId); + Set getRoleMenuListByRoleId2(Set roleIds); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java index 2485a655c..db9c86b35 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java @@ -7,6 +7,10 @@ import cn.hutool.extra.spring.SpringUtil; import com.cf.imes.framework.common.enums.CommonStatusEnum; import com.cf.imes.framework.common.util.collection.CollectionUtils; import com.cf.imes.framework.datapermission.core.annotation.DataPermission; +import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.cf.imes.framework.organ.core.aop.OrganIgnore; +import com.cf.imes.framework.organ.core.context.OrganContextHolder; +import com.cf.imes.framework.organ.core.db.OrganBaseDO; import com.cf.imes.module.system.api.permission.dto.DeptDataPermissionRespDTO; import com.cf.imes.module.system.dal.dataobject.permission.MenuDO; import com.cf.imes.module.system.dal.dataobject.permission.RoleDO; @@ -101,7 +105,8 @@ public class PermissionServiceImpl implements PermissionService { Set roleIds = convertSet(roles, RoleDO::getId); for (Long menuId : menuIds) { // 获得拥有该菜单的角色编号集合 - Set menuRoleIds = getSelf().getMenuRoleIdListByMenuIdFromCache(menuId); + //Set menuRoleIds = getSelf().getMenuRoleIdListByMenuIdFromCache(menuId); + Set menuRoleIds = getSelf().getMenuRoleIdListByMenuIdFromCache1(menuId); // 如果有交集,说明有权限 if (CollUtil.containsAny(menuRoleIds, roleIds)) { return true; @@ -187,7 +192,24 @@ public class PermissionServiceImpl implements PermissionService { return convertSet(menuService.getMenuList(), MenuDO::getId); } // 如果是非管理员的情况下,获得拥有的菜单编号 - return convertSet(roleMenuMapper.selectListByRoleId(roleIds), RoleMenuDO::getMenuId); + List from = roleMenuMapper.selectListByRoleId(roleIds); + return convertSet(from, RoleMenuDO::getMenuId); + } + + @Override + @OrganIgnore + public Set getRoleMenuListByRoleId2(Set roleIds) { + if (CollUtil.isEmpty(roleIds)) { + return Collections.emptySet(); + } + + // 如果是管理员的情况下,获取全部菜单编号 + if (roleService.hasAnySuperAdmin(roleIds)) { + return convertSet(menuService.getMenuList(), MenuDO::getId); + } + // 如果是非管理员的情况下,获得拥有的菜单编号 + List from = roleMenuMapper.selectListByRoleId(roleIds); + return convertSet(from, RoleMenuDO::getMenuId); } @Override @@ -196,12 +218,23 @@ public class PermissionServiceImpl implements PermissionService { return convertSet(roleMenuMapper.selectListByMenuId(menuId), RoleMenuDO::getRoleId); } + @Override + @Cacheable(value = RedisKeyConstants.MENU_ROLE_ID_LIST, key = "#menuId") + @OrganIgnore + public Set getMenuRoleIdListByMenuIdFromCache1(Long menuId) { + List roleMenuDOS = roleMenuMapper.selectList(new LambdaQueryWrapperX().in(RoleMenuDO::getOrganId, 0l, OrganContextHolder.getOrganId()) + .eq(RoleMenuDO::getMenuId, menuId) + ); + return convertSet(roleMenuDOS, RoleMenuDO::getRoleId); + // return convertSet(roleMenuMapper.selectListByMenuId(menuId), RoleMenuDO::getRoleId); + } + // ========== 用户-角色的相关方法 ========== @Override @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换 @CacheEvict(value = RedisKeyConstants.USER_ROLE_ID_LIST, key = "#userId") - public void assignUserRole(Long userId, Set roleIds) { + public void assignUserRole(Long userId, Set roleIds, Long organId) { // 获得角色拥有角色编号 Set dbRoleIds = convertSet(userRoleMapper.selectListByUserId(userId), UserRoleDO::getRoleId); @@ -215,6 +248,7 @@ public class PermissionServiceImpl implements PermissionService { UserRoleDO entity = new UserRoleDO(); entity.setUserId(userId); entity.setRoleId(roleId); + entity.setOrganId(organId); return entity; })); } @@ -325,6 +359,7 @@ public class PermissionServiceImpl implements PermissionService { return result; } + /** * 获得自身的代理对象,解决 AOP 生效问题 * diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java index 58fcc6e53..1419d5fcd 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java @@ -73,6 +73,14 @@ public interface RoleService { */ RoleDO getRoleFromCache(Long id); + /** + * 获得角色,从缓存中 加上组织0 + * + * @param id 角色编号 + * @return 角色 + */ + RoleDO getRoleFromCache1(Long id); + /** * 获得角色列表 * @@ -129,4 +137,5 @@ public interface RoleService { */ void validateRoleList(Collection ids); + List getRoleList1(Set roleIds); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java index 5f70fb828..91acb65b7 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java @@ -8,6 +8,9 @@ import com.cf.imes.framework.common.enums.CommonStatusEnum; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.collection.CollectionUtils; import com.cf.imes.framework.common.util.object.BeanUtils; +import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.cf.imes.framework.organ.core.aop.OrganIgnore; +import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.system.controller.admin.permission.vo.role.RolePageReqVO; import com.cf.imes.module.system.controller.admin.permission.vo.role.RoleSaveReqVO; @@ -174,6 +177,15 @@ public class RoleServiceImpl implements RoleService { return roleMapper.selectById(id); } + @Override + @Cacheable(value = RedisKeyConstants.ROLE, key = "#id", + unless = "#result == null") + @OrganIgnore + public RoleDO getRoleFromCache1(Long id) { + RoleDO roleDO = roleMapper.selectById(id); + return roleDO; + } + @Override public List getRoleListByStatus(Collection statuses) { @@ -190,7 +202,7 @@ public class RoleServiceImpl implements RoleService { if (CollectionUtil.isEmpty(ids)) { return Collections.emptyList(); } - return roleMapper.selectBatchIds(ids); + return roleMapper.selectBatchIds(ids); } @Override @@ -200,10 +212,12 @@ public class RoleServiceImpl implements RoleService { } // 这里采用 for 循环从缓存中获取,主要考虑 Spring CacheManager 无法批量操作的问题 RoleServiceImpl self = getSelf(); - return CollectionUtils.convertList(ids, self::getRoleFromCache); + List roleDOS = CollectionUtils.convertList(ids, self::getRoleFromCache1); + return roleDOS; } @Override + //@OrganIgnore public PageResult getRolePage(RolePageReqVO reqVO) { return roleMapper.selectPage(reqVO); } @@ -249,4 +263,13 @@ public class RoleServiceImpl implements RoleService { return SpringUtil.getBean(getClass()); } + @Override + @OrganIgnore + public List getRoleList1(Set roleIds) { + if (CollectionUtil.isEmpty(roleIds)) { + return Collections.emptyList(); + } + return roleMapper.selectBatchIds(roleIds); + } + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java index 989d11c53..87259dc9e 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/user/AdminUserServiceImpl.java @@ -95,6 +95,7 @@ public class AdminUserServiceImpl implements AdminUserService { createReqVO.getMobile(), createReqVO.getEmail(), createReqVO.getDeptId(), createReqVO.getPostIds(), createReqVO.getOrganId()); // 插入用户 AdminUserDO user = BeanUtils.toBean(createReqVO, AdminUserDO.class); + user.setOrganId(createReqVO.getOrganId()); user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 user.setPassword(encodePassword(createReqVO.getPassword())); // 加密密码 diff --git a/cf-module-system/cf-module-system-biz/src/main/resources/application.yaml b/cf-module-system/cf-module-system-biz/src/main/resources/application.yaml index 961ba9040..96d3bc550 100644 --- a/cf-module-system/cf-module-system-biz/src/main/resources/application.yaml +++ b/cf-module-system/cf-module-system-biz/src/main/resources/application.yaml @@ -182,7 +182,7 @@ chenfeng: - system_label_template - system_label_element_template - system_data_source - - system_users + sms-code: # 短信验证码相关的配置项 expire-times: 10m send-frequency: 1m diff --git a/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/organ/TenantServiceImplTest.java b/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/organ/TenantServiceImplTest.java index cd0a6b74d..89a3b5716 100644 --- a/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/organ/TenantServiceImplTest.java +++ b/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/organ/TenantServiceImplTest.java @@ -170,7 +170,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest { // verify 分配权限 verify(permissionService).assignRoleMenu(eq(200L), same(tenantPackage.getMenuIds())); // verify 分配角色 - verify(permissionService).assignUserRole(eq(300L), eq(singleton(200L))); + verify(permissionService).assignUserRole(eq(300L), eq(singleton(200L)),1L); } @Test diff --git a/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/permission/PermissionServiceTest.java b/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/permission/PermissionServiceTest.java index f854dd7f9..2632e8017 100644 --- a/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/permission/PermissionServiceTest.java +++ b/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/permission/PermissionServiceTest.java @@ -254,7 +254,7 @@ public class PermissionServiceTest extends BaseDbUnitTest { userRoleMapper.insert(userRole02); // 调用 - permissionService.assignUserRole(userId, roleIds); + permissionService.assignUserRole(userId, roleIds, 1L); // 断言 List userRoleDOList = userRoleMapper.selectList(); assertEquals(2, userRoleDOList.size());