diff --git a/continew-admin-common/src/main/java/top/continew/admin/common/model/resp/LabelValueResp.java b/continew-admin-common/src/main/java/top/continew/admin/common/model/resp/LabelValueResp.java index d100a36c..f2afb83a 100644 --- a/continew-admin-common/src/main/java/top/continew/admin/common/model/resp/LabelValueResp.java +++ b/continew-admin-common/src/main/java/top/continew/admin/common/model/resp/LabelValueResp.java @@ -51,6 +51,12 @@ public class LabelValueResp implements Serializable { @Schema(description = "值", example = "1") private T value; + /** + * 是否禁用 + */ + @Schema(description = "是否禁用", example = "false") + private Boolean disabled; + /** * 颜色 */ @@ -68,4 +74,10 @@ public class LabelValueResp implements Serializable { this.value = value; this.color = color; } + + public LabelValueResp(String label, T value, Boolean disabled) { + this.label = label; + this.value = value; + this.disabled = disabled; + } } diff --git a/continew-admin-system/src/main/java/top/continew/admin/auth/service/OnlineUserService.java b/continew-admin-system/src/main/java/top/continew/admin/auth/service/OnlineUserService.java index 20fc28e2..e0cbf2e6 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/auth/service/OnlineUserService.java +++ b/continew-admin-system/src/main/java/top/continew/admin/auth/service/OnlineUserService.java @@ -55,4 +55,11 @@ public interface OnlineUserService { * @param roleId 角色 ID */ void cleanByRoleId(Long roleId); + + /** + * 根据用户 ID 清除登录 + * + * @param userId 用户 ID + */ + void cleanByUserId(Long userId); } 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 0f46845b..acadc394 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 @@ -92,6 +92,14 @@ public class OnlineUserServiceImpl implements OnlineUserService { }); } + @Override + public void cleanByUserId(Long userId) { + if (!StpUtil.isLogin(userId)) { + return; + } + StpUtil.logout(userId); + } + /** * 是否符合查询条件 * diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/service/UserRoleService.java b/continew-admin-system/src/main/java/top/continew/admin/system/service/UserRoleService.java index e965676d..bc0f4648 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/service/UserRoleService.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/service/UserRoleService.java @@ -57,4 +57,12 @@ public interface UserRoleService { * @return 总记录数 */ Long countByRoleIds(List roleIds); + + /** + * 根据角色 ID 判断是否已被用户关联 + * + * @param roleId 角色 ID + * @return 是否已关联 + */ + boolean isRoleIdExists(Long roleId); } \ No newline at end of file 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 8d78078d..5c764072 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 @@ -84,6 +84,8 @@ public class RoleServiceImpl extends BaseServiceImpl(0); } - return list.stream().map(r -> new LabelValueResp<>(r.getName(), r.getId())).toList(); + return list.stream() + .map(r -> new LabelValueResp<>(r.getName(), r.getId(), DisEnableStatusEnum.DISABLE.equals(r.getStatus()))) + .toList(); } @Override diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserRoleServiceImpl.java b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserRoleServiceImpl.java index 408dd557..fa6a0612 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserRoleServiceImpl.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserRoleServiceImpl.java @@ -78,4 +78,9 @@ public class UserRoleServiceImpl implements UserRoleService { public Long countByRoleIds(List roleIds) { return userRoleMapper.lambdaQuery().in(UserRoleDO::getRoleId, roleIds).count(); } + + @Override + public boolean isRoleIdExists(Long roleId) { + return userRoleMapper.lambdaQuery().eq(UserRoleDO::getRoleId, roleId).exists(); + } } 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 dc91bf3b..91ccade8 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 @@ -16,6 +16,7 @@ package top.continew.admin.system.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.file.FileNameUtil; import cn.hutool.core.util.ObjectUtil; @@ -32,6 +33,7 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import top.continew.admin.auth.service.OnlineUserService; import top.continew.admin.common.constant.CacheConstants; import top.continew.admin.common.enums.DisEnableStatusEnum; import top.continew.admin.common.util.helper.LoginHelper; @@ -68,6 +70,7 @@ import java.util.Optional; @RequiredArgsConstructor public class UserServiceImpl extends BaseServiceImpl implements UserService, CommonUserService { + private final OnlineUserService onlineUserService; private final RoleService roleService; private final UserRoleService userRoleService; private final FileService fileService; @@ -125,9 +128,15 @@ public class UserServiceImpl extends BaseServiceImpl