diff --git a/README.md b/README.md index c6e37271..e737a4b4 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ ContiNew Admin 中后台管理框架/脚手架,Continue New Admin,持续以 - [x] 依赖升级:升级并适配 Spring Boot 3.x - [x] 依赖升级:其他依赖升级 +- [x] 适配 Java 8 => Java 17 新 API 及特性 - [ ] 计划对接 FlowLong 纯国产工作流引擎 - [ ] 其他需求汇集中... diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/properties/RsaProperties.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/properties/RsaProperties.java index c2c6880e..71c3b9aa 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/properties/RsaProperties.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/properties/RsaProperties.java @@ -16,9 +16,8 @@ package top.charles7c.cnadmin.common.config.properties; -import lombok.Data; - -import org.springframework.stereotype.Component; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import cn.hutool.extra.spring.SpringUtil; @@ -29,8 +28,7 @@ import cn.hutool.extra.spring.SpringUtil; * @author Charles7c * @since 2022/12/21 20:21 */ -@Data -@Component +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class RsaProperties { /** 私钥 */ diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolConfiguration.java index a73d4bd7..c0255560 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolConfiguration.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolConfiguration.java @@ -20,11 +20,11 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.concurrent.BasicThreadFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; @@ -40,10 +40,9 @@ import top.charles7c.cnadmin.common.util.ExceptionUtils; */ @Slf4j @Configuration -@RequiredArgsConstructor +@EnableConfigurationProperties(ThreadPoolProperties.class) public class ThreadPoolConfiguration { - private final ThreadPoolProperties threadPoolProperties; /** 核心(最小)线程数 = CPU 核心数 + 1 */ private final int corePoolSize = Runtime.getRuntime().availableProcessors() + 1; @@ -52,7 +51,7 @@ public class ThreadPoolConfiguration { */ @Bean @ConditionalOnProperty(prefix = "thread-pool", name = "enabled", havingValue = "true") - public ThreadPoolTaskExecutor threadPoolTaskExecutor() { + public ThreadPoolTaskExecutor threadPoolTaskExecutor(ThreadPoolProperties threadPoolProperties) { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); // 核心(最小)线程数 executor.setCorePoolSize(corePoolSize); diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolProperties.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolProperties.java index f9d522be..63d0a398 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolProperties.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/threadpool/ThreadPoolProperties.java @@ -19,7 +19,6 @@ package top.charles7c.cnadmin.common.config.threadpool; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; /** * 线程池配置属性 @@ -29,7 +28,6 @@ import org.springframework.stereotype.Component; * @since 2022/12/23 23:06 */ @Data -@Component @ConfigurationProperties(prefix = "thread-pool") public class ThreadPoolProperties { diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java index 13a1010c..506e8fb0 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java @@ -45,6 +45,11 @@ public class StringConsts implements StrPool { */ public static final String ASTERISK = "*"; + /** + * 问号 + */ + public static final String QUESTION_MARK = "?"; + /** * 中文逗号 */ diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/ExceptionUtils.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/ExceptionUtils.java index 4c0ed35d..6914051d 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/ExceptionUtils.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/ExceptionUtils.java @@ -25,6 +25,8 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; +import top.charles7c.cnadmin.common.constant.StringConsts; + /** * 异常工具类 * @@ -98,7 +100,7 @@ public class ExceptionUtils { * @return / */ public static String exToBlank(ExSupplier exSupplier) { - return exToDefault(exSupplier, ""); + return exToDefault(exSupplier, StringConsts.EMPTY); } /** diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/validate/CheckUtils.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/validate/CheckUtils.java index c4e40c64..2d015191 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/validate/CheckUtils.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/validate/CheckUtils.java @@ -24,6 +24,7 @@ import lombok.extern.slf4j.Slf4j; import cn.hutool.core.util.StrUtil; +import top.charles7c.cnadmin.common.constant.StringConsts; import top.charles7c.cnadmin.common.exception.ServiceException; /** @@ -52,8 +53,8 @@ public class CheckUtils extends Validator { * 字段值 */ public static void throwIfNotExists(Object obj, String entityName, String fieldName, Object fieldValue) { - String message = - String.format("%s 为 [%s] 的 %s 记录已不存在", fieldName, fieldValue, StrUtil.replace(entityName, "DO", "")); + String message = String.format("%s 为 [%s] 的 %s 记录已不存在", fieldName, fieldValue, + StrUtil.replace(entityName, "DO", StringConsts.EMPTY)); throwIfNull(obj, message, EXCEPTION_TYPE); } diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java index 7510dbd4..cedcb09e 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java @@ -47,6 +47,7 @@ import cn.hutool.http.HttpStatus; import cn.hutool.json.JSONUtil; import top.charles7c.cnadmin.auth.model.request.LoginRequest; +import top.charles7c.cnadmin.common.constant.StringConsts; import top.charles7c.cnadmin.common.constant.SysConsts; import top.charles7c.cnadmin.common.model.dto.LogContext; import top.charles7c.cnadmin.common.util.ExceptionUtils; @@ -170,7 +171,8 @@ public class LogInterceptor implements HandlerInterceptor { // (本框架代码规范)例如:@Tag(name = "部门管理 API") -> 部门管理 if (classTag != null) { String name = classTag.name(); - logDO.setModule(StrUtil.isNotBlank(name) ? name.replace("API", "").trim() : "请在该接口类上指定所属模块"); + logDO + .setModule(StrUtil.isNotBlank(name) ? name.replace("API", StringConsts.EMPTY).trim() : "请在该接口类上指定所属模块"); } // 例如:@Log(module = "部门管理") -> 部门管理 if (classLog != null && StrUtil.isNotBlank(classLog.module())) { @@ -213,7 +215,7 @@ public class LogInterceptor implements HandlerInterceptor { */ private void logRequest(LogDO logDO, HttpServletRequest request) { logDO.setRequestUrl(StrUtil.isBlank(request.getQueryString()) ? request.getRequestURL().toString() - : request.getRequestURL().append("?").append(request.getQueryString()).toString()); + : request.getRequestURL().append(StringConsts.QUESTION_MARK).append(request.getQueryString()).toString()); logDO.setRequestMethod(request.getMethod()); logDO.setRequestHeaders(this.desensitize(JakartaServletUtil.getHeaderMap(request))); String requestBody = this.getRequestBody(request); diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/LoginLogQuery.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/LoginLogQuery.java index 2c851558..994a0b31 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/LoginLogQuery.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/LoginLogQuery.java @@ -29,6 +29,7 @@ import org.springdoc.core.annotations.ParameterObject; import org.springframework.format.annotation.DateTimeFormat; import top.charles7c.cnadmin.common.annotation.Query; +import top.charles7c.cnadmin.common.constant.StringConsts; /** * 登录日志查询条件 @@ -56,6 +57,6 @@ public class LoginLogQuery implements Serializable { */ @Schema(description = "登录时间") @Query(type = Query.Type.BETWEEN) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) private List createTime; } diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java index bb49b8de..a4270fa7 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java @@ -29,6 +29,7 @@ import org.springdoc.core.annotations.ParameterObject; import org.springframework.format.annotation.DateTimeFormat; import top.charles7c.cnadmin.common.annotation.Query; +import top.charles7c.cnadmin.common.constant.StringConsts; /** * 操作日志查询条件 @@ -63,7 +64,7 @@ public class OperationLogQuery implements Serializable { */ @Schema(description = "操作时间") @Query(type = Query.Type.BETWEEN) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) private List createTime; /** diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/SystemLogQuery.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/SystemLogQuery.java index 0df09b68..3dac664a 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/SystemLogQuery.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/SystemLogQuery.java @@ -29,6 +29,7 @@ import org.springdoc.core.annotations.ParameterObject; import org.springframework.format.annotation.DateTimeFormat; import top.charles7c.cnadmin.common.annotation.Query; +import top.charles7c.cnadmin.common.constant.StringConsts; /** * 系统日志查询条件 @@ -49,6 +50,6 @@ public class SystemLogQuery implements Serializable { */ @Schema(description = "创建时间") @Query(type = Query.Type.BETWEEN) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) private List createTime; } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/auth/config/satoken/SaTokenRedisDaoImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/auth/config/satoken/SaTokenRedisDaoImpl.java index 06755990..fff94441 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/auth/config/satoken/SaTokenRedisDaoImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/auth/config/satoken/SaTokenRedisDaoImpl.java @@ -147,7 +147,7 @@ public class SaTokenRedisDaoImpl implements SaTokenDao { @Override public List searchData(String prefix, String keyword, int start, int size, boolean sortType) { - Collection keys = RedisUtils.keys(prefix + "*" + keyword + "*"); + Collection keys = RedisUtils.keys(String.format("%s*%s*", prefix, keyword)); List list = new ArrayList<>(keys); return SaFoxUtil.searchList(list, start, size, sortType); } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/auth/model/query/OnlineUserQuery.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/auth/model/query/OnlineUserQuery.java index 16ad29a9..9ce3a31b 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/auth/model/query/OnlineUserQuery.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/auth/model/query/OnlineUserQuery.java @@ -28,6 +28,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import org.springdoc.core.annotations.ParameterObject; import org.springframework.format.annotation.DateTimeFormat; +import top.charles7c.cnadmin.common.constant.StringConsts; + /** * 在线用户查询条件 * @@ -52,6 +54,6 @@ public class OnlineUserQuery implements Serializable { * 登录时间 */ @Schema(description = "登录时间") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) private List loginTime; } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/UserQuery.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/UserQuery.java index 8da7a1c7..896f826c 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/UserQuery.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/UserQuery.java @@ -29,6 +29,7 @@ import org.springdoc.core.annotations.ParameterObject; import org.springframework.format.annotation.DateTimeFormat; import top.charles7c.cnadmin.common.annotation.Query; +import top.charles7c.cnadmin.common.constant.StringConsts; /** * 用户查询条件 @@ -63,7 +64,7 @@ public class UserQuery implements Serializable { */ @Schema(description = "创建时间") @Query(type = Query.Type.BETWEEN) - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) private List createTime; /** diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/RoleDeptService.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/RoleDeptService.java index 97350a55..057ac41c 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/RoleDeptService.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/RoleDeptService.java @@ -38,13 +38,12 @@ public interface RoleDeptService { boolean save(List deptIds, Long roleId); /** - * 根据角色 ID 查询 + * 根据角色 ID 删除 * - * @param roleId - * 角色 ID - * @return 部门 ID 列表 + * @param roleIds + * 角色 ID 列表 */ - List listDeptIdByRoleId(Long roleId); + void deleteByRoleIds(List roleIds); /** * 根据部门 ID 删除 @@ -55,10 +54,11 @@ public interface RoleDeptService { void deleteByDeptIds(List deptIds); /** - * 根据角色 ID 删除 + * 根据角色 ID 查询 * - * @param roleIds - * 角色 ID 列表 + * @param roleId + * 角色 ID + * @return 部门 ID 列表 */ - void deleteByRoleIds(List roleIds); + List listDeptIdByRoleId(Long roleId); } \ No newline at end of file diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/RoleMenuService.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/RoleMenuService.java index 58d8a3a3..ca77b374 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/RoleMenuService.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/RoleMenuService.java @@ -37,6 +37,14 @@ public interface RoleMenuService { */ boolean save(List menuIds, Long roleId); + /** + * 根据角色 ID 删除 + * + * @param roleIds + * 角色 ID 列表 + */ + void deleteByRoleIds(List roleIds); + /** * 根据角色 ID 查询 * @@ -45,12 +53,4 @@ public interface RoleMenuService { * @return 菜单 ID 列表 */ List listMenuIdByRoleIds(List roleIds); - - /** - * 根据角色 ID 删除 - * - * @param roleIds - * 角色 ID 列表 - */ - void deleteByRoleIds(List roleIds); } \ No newline at end of file diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/UserRoleService.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/UserRoleService.java index 4b9319b9..38931239 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/UserRoleService.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/UserRoleService.java @@ -38,13 +38,12 @@ public interface UserRoleService { boolean save(List roleIds, Long userId); /** - * 根据角色 ID 列表查询 + * 根据用户 ID 删除 * - * @param roleIds - * 角色 ID 列表 - * @return 总记录数 + * @param userIds + * 用户 ID 列表 */ - Long countByRoleIds(List roleIds); + void deleteByUserIds(List userIds); /** * 根据用户 ID 查询 @@ -56,10 +55,11 @@ public interface UserRoleService { List listRoleIdByUserId(Long userId); /** - * 根据用户 ID 删除 + * 根据角色 ID 列表查询 * - * @param userIds - * 用户 ID 列表 + * @param roleIds + * 角色 ID 列表 + * @return 总记录数 */ - void deleteByUserIds(List userIds); + Long countByRoleIds(List roleIds); } \ No newline at end of file diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleDeptServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleDeptServiceImpl.java index 0e14592e..ca4ad4c9 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleDeptServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleDeptServiceImpl.java @@ -22,6 +22,7 @@ import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import cn.hutool.core.collection.CollUtil; @@ -42,6 +43,7 @@ public class RoleDeptServiceImpl implements RoleDeptService { private final RoleDeptMapper roleDeptMapper; @Override + @Transactional(rollbackFor = Exception.class) public boolean save(List deptIds, Long roleId) { // 检查是否有变更 List oldDeptIdList = roleDeptMapper.lambdaQuery().select(RoleDeptDO::getDeptId) @@ -58,17 +60,19 @@ public class RoleDeptServiceImpl implements RoleDeptService { } @Override - public List listDeptIdByRoleId(Long roleId) { - return roleDeptMapper.selectDeptIdByRoleId(roleId); + @Transactional(rollbackFor = Exception.class) + public void deleteByRoleIds(List roleIds) { + roleDeptMapper.lambdaUpdate().in(RoleDeptDO::getRoleId, roleIds).remove(); } @Override + @Transactional(rollbackFor = Exception.class) public void deleteByDeptIds(List deptIds) { roleDeptMapper.lambdaUpdate().in(RoleDeptDO::getDeptId, deptIds).remove(); } @Override - public void deleteByRoleIds(List roleIds) { - roleDeptMapper.lambdaUpdate().in(RoleDeptDO::getRoleId, roleIds).remove(); + public List listDeptIdByRoleId(Long roleId) { + return roleDeptMapper.selectDeptIdByRoleId(roleId); } } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleMenuServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleMenuServiceImpl.java index 4d6b5e63..6fabaf6c 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleMenuServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleMenuServiceImpl.java @@ -23,6 +23,7 @@ import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import cn.hutool.core.collection.CollUtil; @@ -43,6 +44,7 @@ public class RoleMenuServiceImpl implements RoleMenuService { private final RoleMenuMapper roleMenuMapper; @Override + @Transactional(rollbackFor = Exception.class) public boolean save(List menuIds, Long roleId) { // 检查是否有变更 List oldMenuIdList = roleMenuMapper.lambdaQuery().select(RoleMenuDO::getMenuId) @@ -58,6 +60,12 @@ public class RoleMenuServiceImpl implements RoleMenuService { return roleMenuMapper.insertBatch(roleMenuList); } + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteByRoleIds(List roleIds) { + roleMenuMapper.lambdaUpdate().in(RoleMenuDO::getRoleId, roleIds).remove(); + } + @Override public List listMenuIdByRoleIds(List roleIds) { if (CollUtil.isEmpty(roleIds)) { @@ -65,9 +73,4 @@ public class RoleMenuServiceImpl implements RoleMenuService { } return roleMenuMapper.selectMenuIdByRoleIds(roleIds); } - - @Override - public void deleteByRoleIds(List roleIds) { - roleMenuMapper.lambdaUpdate().in(RoleMenuDO::getRoleId, roleIds).remove(); - } } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserRoleServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserRoleServiceImpl.java index e20e4dff..7e5c6576 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserRoleServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserRoleServiceImpl.java @@ -22,6 +22,7 @@ import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import cn.hutool.core.collection.CollUtil; @@ -42,6 +43,7 @@ public class UserRoleServiceImpl implements UserRoleService { private final UserRoleMapper userRoleMapper; @Override + @Transactional(rollbackFor = Exception.class) public boolean save(List roleIds, Long userId) { // 检查是否有变更 List oldRoleIdList = userRoleMapper.lambdaQuery().select(UserRoleDO::getRoleId) @@ -58,8 +60,9 @@ public class UserRoleServiceImpl implements UserRoleService { } @Override - public Long countByRoleIds(List roleIds) { - return userRoleMapper.lambdaQuery().in(UserRoleDO::getRoleId, roleIds).count(); + @Transactional(rollbackFor = Exception.class) + public void deleteByUserIds(List userIds) { + userRoleMapper.lambdaUpdate().in(UserRoleDO::getUserId, userIds).remove(); } @Override @@ -68,7 +71,7 @@ public class UserRoleServiceImpl implements UserRoleService { } @Override - public void deleteByUserIds(List userIds) { - userRoleMapper.lambdaUpdate().in(UserRoleDO::getUserId, userIds).remove(); + public Long countByRoleIds(List roleIds) { + return userRoleMapper.lambdaQuery().in(UserRoleDO::getRoleId, roleIds).count(); } } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java index ca6c54a3..d5a180ca 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java @@ -185,6 +185,7 @@ public class UserServiceImpl extends BaseServiceImpl SecureUtils.decryptByRsaPrivateKey(updatePasswordRequest.getNewPassword())); ValidationUtils.throwIfBlank(rawNewPassword, "新密码解密失败"); - ValidationUtils.throwIf(!ReUtil.isMatch(RegexConsts.PASSWORD, rawNewPassword), "密码长度 6 到 32 位,同时包含字母和数字"); + ValidationUtils.throwIf(!ReUtil.isMatch(RegexConsts.PASSWORD, rawNewPassword), + "密码长度为 6 到 32 位,可以包含字母、数字、下划线,特殊字符,同时包含字母和数字"); // 修改密码 userService.updatePassword(rawOldPassword, rawNewPassword, LoginHelper.getUserId());