From 857a1c90838c8305f916af9dccfd4ca847ca8c66 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Fri, 17 May 2024 20:41:15 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=94=A8=E6=88=B7=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E5=90=8D=E7=A7=B0=E8=B0=83=E6=95=B4=E4=B8=BA=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E5=90=8D=E7=A7=B0=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E5=85=A8=E5=B1=80=E4=BC=98=E5=8C=96=20Crane4?= =?UTF-8?q?j=20=E7=BB=84=E4=BB=B6=E7=9A=84=E4=BD=BF=E7=94=A8=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/ContainerConstants.java | 9 ++------- .../admin/auth/model/resp/OnlineUserResp.java | 8 ++++---- .../service/impl/OnlineUserServiceImpl.java | 4 ---- .../admin/system/model/resp/DeptResp.java | 2 +- .../admin/system/model/resp/MessageResp.java | 3 +-- .../system/model/resp/RoleDetailResp.java | 9 +++++---- .../system/model/resp/UserDetailResp.java | 12 ++++++----- .../admin/system/model/resp/UserResp.java | 20 ++++++++++++++++++- .../system/model/resp/log/LogDetailResp.java | 3 +-- .../service/impl/RoleDeptServiceImpl.java | 4 ---- .../system/service/impl/RoleServiceImpl.java | 4 ++++ .../system/service/impl/UserServiceImpl.java | 12 ----------- 12 files changed, 44 insertions(+), 46 deletions(-) diff --git a/continew-admin-common/src/main/java/top/continew/admin/common/constant/ContainerConstants.java b/continew-admin-common/src/main/java/top/continew/admin/common/constant/ContainerConstants.java index 179159a1..0b8030f6 100644 --- a/continew-admin-common/src/main/java/top/continew/admin/common/constant/ContainerConstants.java +++ b/continew-admin-common/src/main/java/top/continew/admin/common/constant/ContainerConstants.java @@ -37,14 +37,9 @@ public class ContainerConstants extends ContainerPool { public static final String USER_ROLE_ID_LIST = "UserRoleIdList"; /** - * 角色部门列表 + * 用户角色名称列表 */ - public static final String ROLE_DEPT_ID_LIST = "RoleDeptIdList"; - - /** - * 在线用户最后活跃时间 - */ - public static final String ONLINE_USER_LAST_ACTIVE_TIME = "OnlineUserLastActiveTime"; + public static final String USER_ROLE_NAME_LIST = "UserRoleNameList"; private ContainerConstants() { } diff --git a/continew-admin-system/src/main/java/top/continew/admin/auth/model/resp/OnlineUserResp.java b/continew-admin-system/src/main/java/top/continew/admin/auth/model/resp/OnlineUserResp.java index 2afb6e69..ee74a30f 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/auth/model/resp/OnlineUserResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/auth/model/resp/OnlineUserResp.java @@ -16,10 +16,10 @@ package top.continew.admin.auth.model.resp; -import cn.crane4j.annotation.Assemble; -import cn.crane4j.annotation.Mapping; +import cn.crane4j.annotation.*; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import top.continew.admin.auth.service.OnlineUserService; import top.continew.admin.common.constant.ContainerConstants; import java.io.Serial; @@ -43,14 +43,14 @@ public class OnlineUserResp implements Serializable { * ID */ @Schema(description = "ID", example = "1") - @Assemble(container = ContainerConstants.USER_NICKNAME, props = @Mapping(ref = "nickname")) + @Assemble(prop = ":nickname", container = ContainerConstants.USER_NICKNAME) private Long id; /** * 令牌 */ @Schema(description = "令牌", example = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsInJuU3RyIjoiTUd6djdyOVFoeHEwdVFqdFAzV3M5YjVJRzh4YjZPSEUifQ.7q7U3ouoN7WPhH2kUEM7vPe5KF3G_qavSG-vRgIxKvE") - @Assemble(container = ContainerConstants.ONLINE_USER_LAST_ACTIVE_TIME, props = @Mapping(ref = "lastActiveTime")) + @AssembleMethod(prop = ":lastActiveTime", targetType = OnlineUserService.class, method = @ContainerMethod(bindMethod = "getLastActiveTime", type = MappingType.ORDER_OF_KEYS)) private String token; /** diff --git a/continew-admin-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java b/continew-admin-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java index bf66d6c8..9af1ec95 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java @@ -17,8 +17,6 @@ package top.continew.admin.auth.service.impl; import cn.crane4j.annotation.AutoOperate; -import cn.crane4j.annotation.ContainerMethod; -import cn.crane4j.annotation.MappingType; import cn.dev33.satoken.dao.SaTokenDao; import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.stp.StpUtil; @@ -30,7 +28,6 @@ import org.springframework.stereotype.Service; import top.continew.admin.auth.model.query.OnlineUserQuery; import top.continew.admin.auth.model.resp.OnlineUserResp; import top.continew.admin.auth.service.OnlineUserService; -import top.continew.admin.common.constant.ContainerConstants; import top.continew.admin.common.model.dto.LoginUser; import top.continew.admin.common.util.helper.LoginHelper; import top.continew.starter.core.constant.StringConstants; @@ -84,7 +81,6 @@ public class OnlineUserServiceImpl implements OnlineUserService { } @Override - @ContainerMethod(namespace = ContainerConstants.ONLINE_USER_LAST_ACTIVE_TIME, type = MappingType.ORDER_OF_KEYS) public LocalDateTime getLastActiveTime(String token) { long lastActiveTime = StpUtil.getStpLogic().getTokenLastActiveTime(token); return lastActiveTime == SaTokenDao.NOT_VALUE_EXPIRE ? null : DateUtil.date(lastActiveTime).toLocalDateTime(); diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/DeptResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/DeptResp.java index 94eb1b8c..c2dd91a9 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/DeptResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/DeptResp.java @@ -59,7 +59,7 @@ public class DeptResp extends BaseDetailResp { */ @Schema(description = "上级部门 ID", example = "2") @ConditionOnExpression(value = "#target.parentId != 0") - @AssembleMethod(targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptResp.class), props = @Mapping(src = "name", ref = "parentName")) + @AssembleMethod(props = @Mapping(src = "name", ref = "parentName"), targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptResp.class)) @ExcelProperty(value = "上级部门 ID", order = 3) private Long parentId; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/MessageResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/MessageResp.java index 7ed66d6c..dea68407 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/MessageResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/MessageResp.java @@ -17,7 +17,6 @@ package top.continew.admin.system.model.resp; import cn.crane4j.annotation.Assemble; -import cn.crane4j.annotation.Mapping; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -81,7 +80,7 @@ public class MessageResp implements Serializable { * 创建人 */ @JsonIgnore - @Assemble(container = ContainerConstants.USER_NICKNAME, props = @Mapping(ref = "createUserString")) + @Assemble(prop = ":createUserString", container = ContainerConstants.USER_NICKNAME) private Long createUser; /** diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/RoleDetailResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/RoleDetailResp.java index ef109ed9..652efc66 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/RoleDetailResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/RoleDetailResp.java @@ -16,14 +16,15 @@ package top.continew.admin.system.model.resp; -import cn.crane4j.annotation.Assemble; -import cn.crane4j.annotation.Mapping; +import cn.crane4j.annotation.AssembleMethod; +import cn.crane4j.annotation.ContainerMethod; +import cn.crane4j.annotation.MappingType; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import top.continew.admin.common.constant.ContainerConstants; import top.continew.admin.common.enums.DataScopeEnum; +import top.continew.admin.system.service.RoleDeptService; import top.continew.starter.extension.crud.converter.ExcelBaseEnumConverter; import top.continew.starter.extension.crud.model.resp.BaseDetailResp; @@ -39,7 +40,7 @@ import java.util.List; @Data @ExcelIgnoreUnannotated @Schema(description = "角色详情信息") -@Assemble(container = ContainerConstants.ROLE_DEPT_ID_LIST, key = "id", props = @Mapping(ref = "deptIds")) +@AssembleMethod(key = "id", prop = ":deptIds", targetType = RoleDeptService.class, method = @ContainerMethod(bindMethod = "listDeptIdByRoleId", type = MappingType.ORDER_OF_KEYS)) public class RoleDetailResp extends BaseDetailResp { @Serial diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserDetailResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserDetailResp.java index d9f905ed..a2b1527e 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserDetailResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserDetailResp.java @@ -20,6 +20,7 @@ import cn.crane4j.annotation.Assemble; import cn.crane4j.annotation.AssembleMethod; import cn.crane4j.annotation.ContainerMethod; import cn.crane4j.annotation.Mapping; +import cn.crane4j.core.executor.handler.ManyToManyAssembleOperationHandler; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -46,7 +47,7 @@ import java.util.Objects; @Data @ExcelIgnoreUnannotated @Schema(description = "用户详情信息") -@Assemble(container = ContainerConstants.USER_ROLE_ID_LIST, key = "id", props = @Mapping(ref = "roleIds")) +@Assemble(key = "id", prop = ":roleIds", container = ContainerConstants.USER_ROLE_ID_LIST) public class UserDetailResp extends BaseDetailResp { @Serial @@ -125,7 +126,7 @@ public class UserDetailResp extends BaseDetailResp { * 部门 ID */ @Schema(description = "部门 ID", example = "5") - @AssembleMethod(targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptResp.class), props = @Mapping(src = "name", ref = "deptName")) + @AssembleMethod(props = @Mapping(src = "name", ref = "deptName"), targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptResp.class)) private Long deptId; /** @@ -139,14 +140,15 @@ public class UserDetailResp extends BaseDetailResp { * 角色 ID 列表 */ @Schema(description = "角色 ID 列表", example = "2") + @Assemble(prop = ":roleNames", container = ContainerConstants.USER_ROLE_NAME_LIST, handlerType = ManyToManyAssembleOperationHandler.class) private List roleIds; /** - * 角色 + * 角色名称列表 */ - @Schema(description = "角色", example = "测试人员") + @Schema(description = "角色名称列表", example = "测试人员") @ExcelProperty(value = "角色") - private String roleNames; + private List roleNames; @Override public Boolean getDisabled() { diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserResp.java index 29e4044e..0c6950eb 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserResp.java @@ -16,11 +16,14 @@ package top.continew.admin.system.model.resp; +import cn.crane4j.annotation.Assemble; import cn.crane4j.annotation.AssembleMethod; import cn.crane4j.annotation.ContainerMethod; import cn.crane4j.annotation.Mapping; +import cn.crane4j.core.executor.handler.ManyToManyAssembleOperationHandler; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import top.continew.admin.common.constant.ContainerConstants; import top.continew.admin.common.enums.DisEnableStatusEnum; import top.continew.admin.common.enums.GenderEnum; import top.continew.admin.common.util.helper.LoginHelper; @@ -30,6 +33,7 @@ import top.continew.starter.security.mask.annotation.JsonMask; import top.continew.starter.security.mask.enums.MaskType; import java.io.Serial; +import java.util.List; import java.util.Objects; /** @@ -40,6 +44,7 @@ import java.util.Objects; */ @Data @Schema(description = "用户信息") +@Assemble(key = "id", prop = ":roleIds", container = ContainerConstants.USER_ROLE_ID_LIST) public class UserResp extends BaseDetailResp { @Serial @@ -105,7 +110,7 @@ public class UserResp extends BaseDetailResp { * 部门 ID */ @Schema(description = "部门 ID", example = "5") - @AssembleMethod(targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptResp.class), props = @Mapping(src = "name", ref = "deptName")) + @AssembleMethod(props = @Mapping(src = "name", ref = "deptName"), targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptResp.class)) private Long deptId; /** @@ -114,6 +119,19 @@ public class UserResp extends BaseDetailResp { @Schema(description = "所属部门", example = "测试部") private String deptName; + /** + * 角色 ID 列表 + */ + @Schema(description = "角色 ID 列表", example = "2") + @Assemble(prop = ":roleNames", container = ContainerConstants.USER_ROLE_NAME_LIST, handlerType = ManyToManyAssembleOperationHandler.class) + private List roleIds; + + /** + * 角色名称列表 + */ + @Schema(description = "角色名称列表", example = "测试人员") + private List roleNames; + @Override public Boolean getDisabled() { return this.getIsSystem() || Objects.equals(this.getId(), LoginHelper.getUserId()); diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/log/LogDetailResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/log/LogDetailResp.java index 7bf9ee84..a3883b13 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/log/LogDetailResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/log/LogDetailResp.java @@ -17,7 +17,6 @@ package top.continew.admin.system.model.resp.log; import cn.crane4j.annotation.Assemble; -import cn.crane4j.annotation.Mapping; import cn.crane4j.annotation.condition.ConditionOnPropertyNotNull; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.v3.oas.annotations.media.Schema; @@ -155,7 +154,7 @@ public class LogDetailResp implements Serializable { */ @JsonIgnore @ConditionOnPropertyNotNull - @Assemble(container = ContainerConstants.USER_NICKNAME, props = @Mapping(ref = "createUserString")) + @Assemble(prop = ":createUserString", container = ContainerConstants.USER_NICKNAME) private Long createUser; /** diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/RoleDeptServiceImpl.java b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/RoleDeptServiceImpl.java index b8b2ea34..5d94fada 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/RoleDeptServiceImpl.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/RoleDeptServiceImpl.java @@ -16,13 +16,10 @@ package top.continew.admin.system.service.impl; -import cn.crane4j.annotation.ContainerMethod; -import cn.crane4j.annotation.MappingType; import cn.hutool.core.collection.CollUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import top.continew.admin.common.constant.ContainerConstants; import top.continew.admin.system.mapper.RoleDeptMapper; import top.continew.admin.system.model.entity.RoleDeptDO; import top.continew.admin.system.service.RoleDeptService; @@ -75,7 +72,6 @@ public class RoleDeptServiceImpl implements RoleDeptService { } @Override - @ContainerMethod(namespace = ContainerConstants.ROLE_DEPT_ID_LIST, type = MappingType.ORDER_OF_KEYS) public List listDeptIdByRoleId(Long roleId) { return baseMapper.selectDeptIdByRoleId(roleId); } diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/RoleServiceImpl.java b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/RoleServiceImpl.java index 4ea69954..7e19a2b7 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/RoleServiceImpl.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/RoleServiceImpl.java @@ -16,6 +16,8 @@ package top.continew.admin.system.service.impl; +import cn.crane4j.annotation.ContainerMethod; +import cn.crane4j.annotation.MappingType; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -25,6 +27,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import top.continew.admin.auth.service.OnlineUserService; import top.continew.admin.common.constant.CacheConstants; +import top.continew.admin.common.constant.ContainerConstants; import top.continew.admin.common.constant.SysConstants; import top.continew.admin.common.enums.DataScopeEnum; import top.continew.admin.common.model.dto.RoleDTO; @@ -142,6 +145,7 @@ public class RoleServiceImpl extends BaseServiceImpl listNameByIds(List ids) { List roleList = baseMapper.lambdaQuery().select(RoleDO::getName).in(RoleDO::getId, ids).list(); return roleList.stream().map(RoleDO::getName).toList(); diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java index 7b750c64..e4e0b839 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java @@ -79,7 +79,6 @@ import static top.continew.admin.system.enums.PasswordPolicyEnum.*; public class UserServiceImpl extends BaseServiceImpl implements UserService, CommonUserService { private final OnlineUserService onlineUserService; - private final RoleService roleService; private final UserRoleService userRoleService; private final FileService fileService; private final FileStorageService fileStorageService; @@ -283,17 +282,6 @@ public class UserServiceImpl extends BaseServiceImpl roleIdList = detail.getRoleIds(); - if (CollUtil.isNotEmpty(roleIdList)) { - detail.setRoleNames(String.join(StringConstants.CHINESE_COMMA, roleService.listNameByIds(roleIdList))); - } - } - } - @Override protected QueryWrapper buildQueryWrapper(UserQuery query) { String description = query.getDescription();