From 9603dd30c750e09ca31a2e91cbaf1099d4433687 Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Wed, 22 Nov 2023 23:47:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:2.5.0=201.=20=E5=AE=8C=E6=88=90=E7=BB=84?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=A1=B5=E9=9D=A2=202.=20=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E7=A9=BA=E9=97=B4=E7=9A=84=E5=88=87=E6=8D=A2?= =?UTF-8?q?=203.=20=E6=96=B0=E5=A2=9E=E7=99=BB=E5=BD=95=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/sql/easy_retry_mysql.sql | 1 + .../persistence/po/SequenceAlloc.java | 2 + .../web/controller/GroupConfigController.java | 16 +++-- .../web/controller/SystemUserController.java | 4 +- .../AuthenticationInterceptor.java | 11 ++- .../LoginUserMethodArgumentResolver.java | 5 +- .../web/model/request/GroupConfigQueryVO.java | 5 -- .../model/request/GroupConfigRequestVO.java | 6 -- .../web/model/request/UserSessionVO.java | 21 ++++++ .../web/service/GroupConfigService.java | 8 ++- .../server/web/service/SystemUserService.java | 4 +- .../SystemUserResponseVOConverter.java | 3 + .../service/impl/GroupConfigServiceImpl.java | 37 +++++++--- .../service/impl/SystemUserServiceImpl.java | 69 ++++++++++--------- .../server/web/util/UserSessionUtils.java | 20 ++++++ frontend/src/api/manage.js | 8 +++ .../src/components/GlobalHeader/Namespace.vue | 36 ++++++++++ .../components/GlobalHeader/RightContent.vue | 21 ++---- frontend/src/store/getters.js | 3 +- frontend/src/store/modules/user.js | 8 ++- frontend/src/store/namespace-mixin.js | 16 +++++ frontend/src/utils/request.js | 7 +- .../src/views/namespace/NamespaceForm.vue | 2 +- 23 files changed, 225 insertions(+), 88 deletions(-) create mode 100644 easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserSessionVO.java create mode 100644 easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/util/UserSessionUtils.java create mode 100644 frontend/src/components/GlobalHeader/Namespace.vue create mode 100644 frontend/src/store/namespace-mixin.js diff --git a/doc/sql/easy_retry_mysql.sql b/doc/sql/easy_retry_mysql.sql index 1a3c5ed5b..d98e2e568 100644 --- a/doc/sql/easy_retry_mysql.sql +++ b/doc/sql/easy_retry_mysql.sql @@ -259,6 +259,7 @@ CREATE TABLE `system_user_permission` CREATE TABLE `sequence_alloc` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', `group_name` varchar(64) NOT NULL DEFAULT '' COMMENT '组名称', `max_id` bigint(20) NOT NULL DEFAULT '1' COMMENT '最大id', `step` int(11) NOT NULL DEFAULT '100' COMMENT '步长', diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SequenceAlloc.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SequenceAlloc.java index 824149789..c62d53ee0 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SequenceAlloc.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SequenceAlloc.java @@ -35,6 +35,8 @@ public class SequenceAlloc implements Serializable { */ private String groupName; + private String namespaceId; + /** * 最大id */ diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java index d8d850b6a..c3fd0cfd9 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java @@ -2,9 +2,11 @@ package com.aizuda.easy.retry.server.web.controller; import cn.hutool.core.util.ReUtil; import com.aizuda.easy.retry.server.common.config.SystemProperties; +import com.aizuda.easy.retry.server.web.annotation.LoginUser; import com.aizuda.easy.retry.server.web.model.base.PageResult; import com.aizuda.easy.retry.server.web.model.request.GroupConfigQueryVO; import com.aizuda.easy.retry.server.web.model.request.GroupConfigRequestVO; +import com.aizuda.easy.retry.server.web.model.request.UserSessionVO; import com.aizuda.easy.retry.server.web.model.response.GroupConfigResponseVO; import com.aizuda.easy.retry.server.web.annotation.LoginRequired; import com.aizuda.easy.retry.server.web.annotation.RoleEnum; @@ -37,8 +39,8 @@ public class GroupConfigController { @LoginRequired(role = RoleEnum.ADMIN) @PostMapping("") - public Boolean addGroup(@RequestBody @Validated GroupConfigRequestVO groupConfigRequestVO) { - return groupConfigService.addGroup(groupConfigRequestVO); + public Boolean addGroup(@LoginUser UserSessionVO systemUser, @RequestBody @Validated GroupConfigRequestVO groupConfigRequestVO) { + return groupConfigService.addGroup(systemUser, groupConfigRequestVO); } @LoginRequired @@ -68,9 +70,15 @@ public class GroupConfigController { } @LoginRequired - @PostMapping("/all/group-name/list") + @PostMapping("/all/group-config/list") public List getAllGroupNameList(@RequestBody List namespaceIds) { - return groupConfigService.getAllGroupNameList(namespaceIds); + return groupConfigService.getAllGroupConfigList(namespaceIds); + } + + @LoginRequired + @PostMapping("/all/group-name/list") + public List getAllGroupNameList() { + return groupConfigService.getAllGroupNameList(); } @Deprecated diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/SystemUserController.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/SystemUserController.java index 1039970ae..bd24d7aef 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/SystemUserController.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/SystemUserController.java @@ -1,7 +1,7 @@ package com.aizuda.easy.retry.server.web.controller; +import com.aizuda.easy.retry.server.web.model.request.UserSessionVO; import com.aizuda.easy.retry.server.web.service.SystemUserService; -import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser; import com.aizuda.easy.retry.server.web.model.base.PageResult; import com.aizuda.easy.retry.server.web.model.request.SystemUserQueryVO; import com.aizuda.easy.retry.server.web.model.request.SystemUserRequestVO; @@ -34,7 +34,7 @@ public class SystemUserController { @LoginRequired @GetMapping("/user/info") - public SystemUserResponseVO getUserInfo(@LoginUser SystemUser systemUser) { + public SystemUserResponseVO getUserInfo(@LoginUser UserSessionVO systemUser) { return systemUserService.getUserInfo(systemUser); } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/AuthenticationInterceptor.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/AuthenticationInterceptor.java index 7f7878038..0a8738527 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/AuthenticationInterceptor.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/AuthenticationInterceptor.java @@ -1,6 +1,7 @@ package com.aizuda.easy.retry.server.web.interceptor; import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; +import com.aizuda.easy.retry.server.web.model.request.UserSessionVO; import com.aizuda.easy.retry.template.datasource.persistence.mapper.SystemUserMapper; import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser; import com.auth0.jwt.JWT; @@ -33,6 +34,7 @@ import java.util.Objects; public class AuthenticationInterceptor implements HandlerInterceptor { public static final String AUTHENTICATION = "EASY-RETRY-AUTH"; + public static final String NAMESPACE_ID = "EASY-RETRY-NAMESPACE-ID"; @Autowired private SystemUserMapper systemUserMapper; @@ -41,6 +43,7 @@ public class AuthenticationInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object object) throws Exception { // 从 http 请求头中取出 token String token = httpServletRequest.getHeader(AUTHENTICATION); + String namespaceId = httpServletRequest.getHeader(NAMESPACE_ID); // 如果不是映射到方法直接通过 if (!(object instanceof HandlerMethod)) { @@ -74,7 +77,13 @@ public class AuthenticationInterceptor implements HandlerInterceptor { throw new EasyRetryServerException("{} 用户不存在", systemUser.getUsername()); } - httpServletRequest.setAttribute("currentUser", systemUser); + UserSessionVO userSessionVO = new UserSessionVO(); + userSessionVO.setId(systemUser.getId()); + userSessionVO.setUsername(systemUser.getUsername()); + userSessionVO.setRole(systemUser.getRole()); + userSessionVO.setNamespaceId(namespaceId); + + httpServletRequest.setAttribute("currentUser", userSessionVO); // 验证 token JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(systemUser.getPassword())).build(); diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/LoginUserMethodArgumentResolver.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/LoginUserMethodArgumentResolver.java index aeab239e2..e52091f07 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/LoginUserMethodArgumentResolver.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/interceptor/LoginUserMethodArgumentResolver.java @@ -1,5 +1,6 @@ package com.aizuda.easy.retry.server.web.interceptor; +import com.aizuda.easy.retry.server.web.model.request.UserSessionVO; import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser; import com.aizuda.easy.retry.server.web.annotation.LoginUser; import org.springframework.core.MethodParameter; @@ -21,13 +22,13 @@ public class LoginUserMethodArgumentResolver implements HandlerMethodArgumentRes @Override public boolean supportsParameter(MethodParameter parameter) { - return parameter.getParameterType().isAssignableFrom(SystemUser.class) + return parameter.getParameterType().isAssignableFrom(UserSessionVO.class) && parameter.hasParameterAnnotation(LoginUser.class); } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { - SystemUser userInfo = (SystemUser) webRequest.getAttribute("currentUser", RequestAttributes.SCOPE_REQUEST); + UserSessionVO userInfo = (UserSessionVO) webRequest.getAttribute("currentUser", RequestAttributes.SCOPE_REQUEST); if (userInfo != null) { return userInfo; } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java index 7a4c1e32b..36ddcc2ff 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java @@ -22,9 +22,4 @@ public class GroupConfigQueryVO extends BaseQueryVO { @NotNull(message = "组状态不能为空") private Integer groupStatus; - /** - * 命名空间id - */ - private Long namespaceId; - } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java index aff84d3d1..40fa7d057 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java @@ -17,12 +17,6 @@ import javax.validation.constraints.Pattern; @Data public class GroupConfigRequestVO { - /** - * 命名空间id - */ - @NotNull(message = "命名空间id 不能为空") - private Long namespaceId; - @NotBlank(message = "组名称不能为空") @Pattern(regexp = "^[A-Za-z0-9_]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线") private String groupName; diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserSessionVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserSessionVO.java new file mode 100644 index 000000000..e25559456 --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/UserSessionVO.java @@ -0,0 +1,21 @@ +package com.aizuda.easy.retry.server.web.model.request; + +import lombok.Data; + +/** + * @author xiaowoniu + * @date 2023-11-22 22:42:26 + * @since 2.5.0 + */ +@Data +public final class UserSessionVO { + + private Long id; + + private String username; + + private Integer role; + + private String namespaceId; + +} diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java index b7e42c9c2..db372cf06 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java @@ -3,6 +3,7 @@ package com.aizuda.easy.retry.server.web.service; import com.aizuda.easy.retry.server.web.model.base.PageResult; import com.aizuda.easy.retry.server.web.model.request.GroupConfigQueryVO; import com.aizuda.easy.retry.server.web.model.request.GroupConfigRequestVO; +import com.aizuda.easy.retry.server.web.model.request.UserSessionVO; import com.aizuda.easy.retry.server.web.model.response.GroupConfigResponseVO; import java.util.List; @@ -13,7 +14,7 @@ import java.util.List; */ public interface GroupConfigService { - Boolean addGroup(GroupConfigRequestVO groupConfigRequestVO); + Boolean addGroup(UserSessionVO systemUser, GroupConfigRequestVO groupConfigRequestVO); Boolean updateGroup(GroupConfigRequestVO groupConfigRequestVO); @@ -23,5 +24,8 @@ public interface GroupConfigService { GroupConfigResponseVO getGroupConfigByGroupName(String groupName); - List getAllGroupNameList(final List namespaceId); + List getAllGroupConfigList(final List namespaceId); + + List getAllGroupNameList(); + } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/SystemUserService.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/SystemUserService.java index 815570900..93c09ac95 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/SystemUserService.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/SystemUserService.java @@ -1,6 +1,6 @@ package com.aizuda.easy.retry.server.web.service; -import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser; +import com.aizuda.easy.retry.server.web.model.request.UserSessionVO; import com.aizuda.easy.retry.server.web.model.base.PageResult; import com.aizuda.easy.retry.server.web.model.request.SystemUserQueryVO; import com.aizuda.easy.retry.server.web.model.request.SystemUserRequestVO; @@ -20,7 +20,7 @@ public interface SystemUserService { SystemUserResponseVO login(SystemUserRequestVO requestVO); - SystemUserResponseVO getUserInfo(SystemUser systemUser); + SystemUserResponseVO getUserInfo(UserSessionVO systemUser); void addUser(SystemUserRequestVO requestVO); diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/convert/SystemUserResponseVOConverter.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/convert/SystemUserResponseVOConverter.java index 8d372e10f..d62fc2778 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/convert/SystemUserResponseVOConverter.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/convert/SystemUserResponseVOConverter.java @@ -1,5 +1,6 @@ package com.aizuda.easy.retry.server.web.service.convert; +import com.aizuda.easy.retry.server.web.model.request.UserSessionVO; import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser; import com.aizuda.easy.retry.server.web.model.response.SystemUserResponseVO; import org.mapstruct.Mapper; @@ -17,6 +18,8 @@ public interface SystemUserResponseVOConverter { SystemUserResponseVOConverter INSTANCE = Mappers.getMapper(SystemUserResponseVOConverter.class); + SystemUserResponseVO convert(UserSessionVO systemUser); + SystemUserResponseVO convert(SystemUser systemUser); List batchConvert(List systemUsers); diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java index 60fd4873b..a5015a52b 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java @@ -11,10 +11,12 @@ import com.aizuda.easy.retry.server.retry.task.support.handler.ConfigVersionSync import com.aizuda.easy.retry.server.web.model.base.PageResult; import com.aizuda.easy.retry.server.web.model.request.GroupConfigQueryVO; import com.aizuda.easy.retry.server.web.model.request.GroupConfigRequestVO; +import com.aizuda.easy.retry.server.web.model.request.UserSessionVO; import com.aizuda.easy.retry.server.web.model.response.GroupConfigResponseVO; import com.aizuda.easy.retry.server.web.service.GroupConfigService; import com.aizuda.easy.retry.server.web.service.convert.GroupConfigConverter; import com.aizuda.easy.retry.server.web.service.convert.GroupConfigResponseVOConverter; +import com.aizuda.easy.retry.server.web.util.UserSessionUtils; import com.aizuda.easy.retry.template.datasource.access.AccessTemplate; import com.aizuda.easy.retry.template.datasource.access.ConfigAccess; import com.aizuda.easy.retry.template.datasource.access.TaskAccess; @@ -62,7 +64,7 @@ public class GroupConfigServiceImpl implements GroupConfigService { @Override @Transactional - public Boolean addGroup(GroupConfigRequestVO groupConfigRequestVO) { + public Boolean addGroup(UserSessionVO systemUser, GroupConfigRequestVO groupConfigRequestVO) { ConfigAccess groupConfigAccess = accessTemplate.getGroupConfigAccess(); Assert.isTrue(groupConfigAccess.count(new LambdaQueryWrapper() @@ -70,10 +72,10 @@ public class GroupConfigServiceImpl implements GroupConfigService { () -> new EasyRetryServerException("GroupName已经存在 {}", groupConfigRequestVO.getGroupName())); // 保存组配置 - doSaveGroupConfig(groupConfigRequestVO); + doSaveGroupConfig(systemUser, groupConfigRequestVO); // 保存生成唯一id配置 - doSaveSequenceAlloc(groupConfigRequestVO); + doSaveSequenceAlloc(systemUser, groupConfigRequestVO); return Boolean.TRUE; } @@ -81,11 +83,13 @@ public class GroupConfigServiceImpl implements GroupConfigService { /** * 保存序号生成规则配置失败 * + * @param systemUser * @param groupConfigRequestVO 组、场景、通知配置类 */ - private void doSaveSequenceAlloc(final GroupConfigRequestVO groupConfigRequestVO) { + private void doSaveSequenceAlloc(UserSessionVO systemUser, final GroupConfigRequestVO groupConfigRequestVO) { SequenceAlloc sequenceAlloc = new SequenceAlloc(); sequenceAlloc.setGroupName(groupConfigRequestVO.getGroupName()); + sequenceAlloc.setNamespaceId(systemUser.getNamespaceId()); sequenceAlloc.setStep(systemProperties.getStep()); sequenceAlloc.setUpdateDt(LocalDateTime.now()); Assert.isTrue(1 == sequenceAllocMapper.insert(sequenceAlloc), () -> new EasyRetryServerException("failed to save sequence generation rule configuration [{}].", groupConfigRequestVO.getGroupName())); @@ -141,7 +145,7 @@ public class GroupConfigServiceImpl implements GroupConfigService { public PageResult> getGroupConfigForPage(GroupConfigQueryVO queryVO) { LambdaQueryWrapper groupConfigLambdaQueryWrapper = new LambdaQueryWrapper<>(); - groupConfigLambdaQueryWrapper.eq(GroupConfig::getNamespaceId, queryVO.getNamespaceId()); + groupConfigLambdaQueryWrapper.eq(GroupConfig::getNamespaceId, UserSessionUtils.currentUserSession().getNamespaceId()); if (StrUtil.isNotBlank(queryVO.getGroupName())) { groupConfigLambdaQueryWrapper.like(GroupConfig::getGroupName, queryVO.getGroupName() + "%"); } @@ -172,10 +176,11 @@ public class GroupConfigServiceImpl implements GroupConfigService { return pageResult; } - private void doSaveGroupConfig(GroupConfigRequestVO groupConfigRequestVO) { + private void doSaveGroupConfig(UserSessionVO systemUser, GroupConfigRequestVO groupConfigRequestVO) { GroupConfig groupConfig = GroupConfigConverter.INSTANCE.convert(groupConfigRequestVO); groupConfig.setCreateDt(LocalDateTime.now()); groupConfig.setVersion(1); + groupConfig.setNamespaceId(systemUser.getNamespaceId()); groupConfig.setGroupName(groupConfigRequestVO.getGroupName()); groupConfig.setDescription(Optional.ofNullable(groupConfigRequestVO.getDescription()).orElse(StrUtil.EMPTY)); if (Objects.isNull(groupConfigRequestVO.getGroupPartition())) { @@ -236,14 +241,26 @@ public class GroupConfigServiceImpl implements GroupConfigService { } @Override - public List getAllGroupNameList(final List namespaceId) { + public List getAllGroupConfigList(final List namespaceId) { ConfigAccess groupConfigAccess = accessTemplate.getGroupConfigAccess(); List groupConfigs = groupConfigAccess.list(new LambdaQueryWrapper() - .in(GroupConfig::getNamespaceId, namespaceId) - .select(GroupConfig::getGroupName, GroupConfig::getNamespaceId)).stream() - .collect(Collectors.toList()); + .in(GroupConfig::getNamespaceId, namespaceId) + .select(GroupConfig::getGroupName, GroupConfig::getNamespaceId)).stream() + .collect(Collectors.toList()); return GroupConfigResponseVOConverter.INSTANCE.toGroupConfigResponseVO(groupConfigs); } + @Override + public List getAllGroupNameList() { + ConfigAccess groupConfigAccess = accessTemplate.getGroupConfigAccess(); + + List groupConfigs = groupConfigAccess.list(new LambdaQueryWrapper() + .in(GroupConfig::getNamespaceId, UserSessionUtils.currentUserSession().getNamespaceId()) + .select(GroupConfig::getGroupName)).stream() + .collect(Collectors.toList()); + + return groupConfigs.stream().map(GroupConfig::getGroupName).collect(Collectors.toList()); + } + } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SystemUserServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SystemUserServiceImpl.java index b847bc66d..7fa940ba3 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SystemUserServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/SystemUserServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.crypto.SecureUtil; import com.aizuda.easy.retry.server.common.config.SystemProperties; import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; import com.aizuda.easy.retry.server.web.model.request.UserPermissionRequestVO; +import com.aizuda.easy.retry.server.web.model.request.UserSessionVO; import com.aizuda.easy.retry.server.web.service.convert.NamespaceResponseVOConverter; import com.aizuda.easy.retry.template.datasource.persistence.mapper.NamespaceMapper; import com.aizuda.easy.retry.template.datasource.persistence.mapper.SystemUserMapper; @@ -61,7 +62,7 @@ public class SystemUserServiceImpl implements SystemUserService { public SystemUserResponseVO login(SystemUserRequestVO requestVO) { SystemUser systemUser = systemUserMapper.selectOne( - new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername())); + new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername())); if (Objects.isNull(systemUser)) { throw new EasyRetryServerException("用户名或密码错误"); } @@ -76,36 +77,36 @@ public class SystemUserServiceImpl implements SystemUserService { systemUserResponseVO.setToken(token); systemUserResponseVO.setMode(systemProperties.getMode().name()); - getPermission(systemUser, systemUserResponseVO); + getPermission(systemUser.getRole(), systemUser.getId(), systemUserResponseVO); return systemUserResponseVO; } - private void getPermission(final SystemUser systemUser, final SystemUserResponseVO systemUserResponseVO) { + private void getPermission(Integer role, Long userId, final SystemUserResponseVO systemUserResponseVO) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.select(Namespace::getId, Namespace::getUniqueId, Namespace::getName); - if (RoleEnum.USER.getRoleId().equals(systemUser.getRole())) { + if (RoleEnum.USER.getRoleId().equals(role)) { List systemUserPermissions = systemUserPermissionMapper.selectList( - new LambdaQueryWrapper() - .select(SystemUserPermission::getNamespaceId) - .eq(SystemUserPermission::getSystemUserId, systemUser.getId()) - .groupBy(SystemUserPermission::getNamespaceId)); + new LambdaQueryWrapper() + .select(SystemUserPermission::getNamespaceId) + .eq(SystemUserPermission::getSystemUserId, userId) + .groupBy(SystemUserPermission::getNamespaceId)); queryWrapper.in(Namespace::getId, systemUserPermissions.stream() - .map(SystemUserPermission::getNamespaceId).collect(Collectors.toList())); + .map(SystemUserPermission::getNamespaceId).collect(Collectors.toList())); } List namespaces = namespaceMapper.selectList(queryWrapper); systemUserResponseVO.setNamespaceIdList( - NamespaceResponseVOConverter.INSTANCE.toNamespaceResponseVOs(namespaces)); + NamespaceResponseVOConverter.INSTANCE.toNamespaceResponseVOs(namespaces)); } @Override - public SystemUserResponseVO getUserInfo(SystemUser systemUser) { + public SystemUserResponseVO getUserInfo(UserSessionVO systemUser) { SystemUserResponseVO systemUserResponseVO = SystemUserResponseVOConverter.INSTANCE.convert(systemUser); systemUserResponseVO.setMode(systemProperties.getMode().name()); - getPermission(systemUser, systemUserResponseVO); + getPermission(systemUser.getRole(), systemUser.getId(), systemUserResponseVO); return systemUserResponseVO; } @@ -114,7 +115,7 @@ public class SystemUserServiceImpl implements SystemUserService { @Transactional public void addUser(SystemUserRequestVO requestVO) { long count = systemUserMapper.selectCount( - new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername())); + new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername())); if (count > 0) { throw new EasyRetryServerException("该用户已存在"); } @@ -138,7 +139,7 @@ public class SystemUserServiceImpl implements SystemUserService { systemUserPermission.setGroupName(permission.getGroupName()); systemUserPermission.setNamespaceId(permission.getNamespaceId()); Assert.isTrue(1 == systemUserPermissionMapper.insert(systemUserPermission), - () -> new EasyRetryServerException("新增用户权限失败")); + () -> new EasyRetryServerException("新增用户权限失败")); } } @@ -147,14 +148,14 @@ public class SystemUserServiceImpl implements SystemUserService { @Transactional public void update(SystemUserRequestVO requestVO) { SystemUser systemUser = systemUserMapper.selectOne( - new LambdaQueryWrapper().eq(SystemUser::getId, requestVO.getId())); + new LambdaQueryWrapper().eq(SystemUser::getId, requestVO.getId())); if (Objects.isNull(systemUser)) { throw new EasyRetryServerException("该用户不存在"); } if (!systemUser.getUsername().equals(requestVO.getUsername())) { long count = systemUserMapper.selectCount( - new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername())); + new LambdaQueryWrapper().eq(SystemUser::getUsername, requestVO.getUsername())); if (count > 0) { throw new EasyRetryServerException("该用户已存在"); } @@ -176,7 +177,7 @@ public class SystemUserServiceImpl implements SystemUserService { } systemUserPermissionMapper.delete(new LambdaQueryWrapper() - .eq(SystemUserPermission::getSystemUserId, systemUser.getId())); + .eq(SystemUserPermission::getSystemUserId, systemUser.getId())); for (UserPermissionRequestVO permission : permissions) { SystemUserPermission systemUserPermission = new SystemUserPermission(); @@ -184,7 +185,7 @@ public class SystemUserServiceImpl implements SystemUserService { systemUserPermission.setGroupName(permission.getGroupName()); systemUserPermission.setNamespaceId(permission.getNamespaceId()); Assert.isTrue(1 == systemUserPermissionMapper.insert(systemUserPermission), - () -> new EasyRetryServerException("更新用户权限失败")); + () -> new EasyRetryServerException("更新用户权限失败")); } } @@ -199,22 +200,22 @@ public class SystemUserServiceImpl implements SystemUserService { } userPageDTO = systemUserMapper.selectPage(userPageDTO, - systemUserLambdaQueryWrapper.orderByDesc(SystemUser::getId)); + systemUserLambdaQueryWrapper.orderByDesc(SystemUser::getId)); List userResponseVOList = SystemUserResponseVOConverter.INSTANCE.batchConvert( - userPageDTO.getRecords()); + userPageDTO.getRecords()); userResponseVOList.stream() - .filter(systemUserResponseVO -> systemUserResponseVO.getRole().equals(RoleEnum.USER.getRoleId())) - .forEach(systemUserResponseVO -> { - List systemUserPermissionList = systemUserPermissionMapper.selectList( - new LambdaQueryWrapper() - .select(SystemUserPermission::getGroupName) - .eq(SystemUserPermission::getSystemUserId, systemUserResponseVO.getId())); + .filter(systemUserResponseVO -> systemUserResponseVO.getRole().equals(RoleEnum.USER.getRoleId())) + .forEach(systemUserResponseVO -> { + List systemUserPermissionList = systemUserPermissionMapper.selectList( + new LambdaQueryWrapper() + .select(SystemUserPermission::getGroupName) + .eq(SystemUserPermission::getSystemUserId, systemUserResponseVO.getId())); - systemUserResponseVO.setGroupNameList(systemUserPermissionList.stream() - .map(SystemUserPermission::getGroupName).collect(Collectors.toList())); - }); + systemUserResponseVO.setGroupNameList(systemUserPermissionList.stream() + .map(SystemUserPermission::getGroupName).collect(Collectors.toList())); + }); return new PageResult<>(userPageDTO, userResponseVOList); } @@ -222,12 +223,14 @@ public class SystemUserServiceImpl implements SystemUserService { @Override public SystemUserResponseVO getSystemUserByUserName(String username) { SystemUser systemUser = systemUserMapper.selectOne( - new LambdaQueryWrapper().eq(SystemUser::getUsername, username)); + new LambdaQueryWrapper().eq(SystemUser::getUsername, username)); if (Objects.isNull(systemUser)) { throw new EasyRetryServerException("用户不存在"); } - return getUserInfo(systemUser); + SystemUserResponseVO responseVO = SystemUserResponseVOConverter.INSTANCE.convert(systemUser); + getPermission(systemUser.getRole(), systemUser.getId(), responseVO); + return responseVO; } @Override @@ -241,7 +244,7 @@ public class SystemUserServiceImpl implements SystemUserService { private String getToken(SystemUser systemUser) { String sign = systemUser.getPassword(); return JWT.create().withExpiresAt(new Date(System.currentTimeMillis() + EXPIRE_TIME)) - .withAudience(JsonUtil.toJsonString(SystemUserResponseVOConverter.INSTANCE.convert(systemUser))) - .sign(Algorithm.HMAC256(sign)); + .withAudience(JsonUtil.toJsonString(SystemUserResponseVOConverter.INSTANCE.convert(systemUser))) + .sign(Algorithm.HMAC256(sign)); } } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/util/UserSessionUtils.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/util/UserSessionUtils.java new file mode 100644 index 000000000..d6291daed --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/util/UserSessionUtils.java @@ -0,0 +1,20 @@ +package com.aizuda.easy.retry.server.web.util; + +import com.aizuda.easy.retry.server.web.model.request.UserSessionVO; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + +/** + * @author www.byteblogs.com + * @date 2023-11-22 23:14:53 + * @since 2.4.0 + */ +public final class UserSessionUtils { + + public static UserSessionVO currentUserSession() { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + return (UserSessionVO) request.getAttribute("currentUser"); + } +} diff --git a/frontend/src/api/manage.js b/frontend/src/api/manage.js index 5b2811af5..8f634624a 100644 --- a/frontend/src/api/manage.js +++ b/frontend/src/api/manage.js @@ -70,6 +70,14 @@ export function delNamespace (id) { }) } +export function updateNamespace (data) { + return request({ + url: api.addNamespace, + method: 'put', + data + }) +} + export function addNamespace (data) { return request({ url: api.addNamespace, diff --git a/frontend/src/components/GlobalHeader/Namespace.vue b/frontend/src/components/GlobalHeader/Namespace.vue new file mode 100644 index 000000000..a53229493 --- /dev/null +++ b/frontend/src/components/GlobalHeader/Namespace.vue @@ -0,0 +1,36 @@ + + diff --git a/frontend/src/components/GlobalHeader/RightContent.vue b/frontend/src/components/GlobalHeader/RightContent.vue index ed73e0d33..baba8eb27 100644 --- a/frontend/src/components/GlobalHeader/RightContent.vue +++ b/frontend/src/components/GlobalHeader/RightContent.vue @@ -1,21 +1,6 @@