From 6d959f5e3eabfe5221abbd42933c69d8755eb43d Mon Sep 17 00:00:00 2001 From: Charles7c <charles7c@126.com> Date: Sat, 3 Feb 2024 11:43:05 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复 Sonar、Codacy 扫描问题:补充部分泛型、调整部分 Boolean 类型判断、将部分不必要的(无集合长度变动) collect(Collectors.toList()); 转换为 toList() --- .../monitor/service/impl/LogServiceImpl.java | 7 +++-- .../auth/service/impl/LoginServiceImpl.java | 7 ++--- .../admin/system/mapper/DictItemMapper.java | 3 ++- .../admin/system/service/DictItemService.java | 3 ++- .../service/impl/DictItemServiceImpl.java | 3 ++- .../service/impl/MessageUserServiceImpl.java | 18 +++++-------- .../service/impl/RoleDeptServiceImpl.java | 7 ++--- .../service/impl/RoleMenuServiceImpl.java | 17 +++++------- .../system/service/impl/RoleServiceImpl.java | 4 +-- .../service/impl/StorageServiceImpl.java | 5 +--- .../service/impl/UserRoleServiceImpl.java | 7 ++--- .../system/service/impl/UserServiceImpl.java | 21 ++++++++------- .../service/impl/GeneratorServiceImpl.java | 17 ++++++------ .../admin/webapi/auth/AuthController.java | 14 +++++----- .../webapi/common/CaptchaController.java | 27 ++++++++++--------- .../admin/webapi/common/CommonController.java | 22 +++++++-------- .../webapi/system/UserCenterController.java | 15 ++++++----- 17 files changed, 93 insertions(+), 104 deletions(-) diff --git a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/impl/LogServiceImpl.java b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/impl/LogServiceImpl.java index e8d5d22b..efe0422f 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/impl/LogServiceImpl.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/impl/LogServiceImpl.java @@ -40,7 +40,6 @@ import top.charles7c.continew.starter.extension.crud.model.resp.PageResp; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * 系统日志业务实现 @@ -64,7 +63,7 @@ public class LogServiceImpl implements LogService { List<String> columnNameList = fieldNameList.stream() .filter(n -> !n.endsWith(SysConstants.DESCRIPTION_FIELD_SUFFIX)) .map(StrUtil::toUnderlineCase) - .collect(Collectors.toList()); + .toList(); queryWrapper.select(columnNameList); // 分页查询 IPage<LogDO> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); @@ -81,7 +80,7 @@ public class LogServiceImpl implements LogService { List<String> columnNameList = fieldNameList.stream() .filter(n -> !n.endsWith(SysConstants.DESCRIPTION_FIELD_SUFFIX)) .map(StrUtil::toUnderlineCase) - .collect(Collectors.toList()); + .toList(); queryWrapper.select(columnNameList); // 分页查询 IPage<LogDO> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); @@ -97,7 +96,7 @@ public class LogServiceImpl implements LogService { List<String> columnNameList = fieldNameList.stream() .filter(n -> !n.endsWith(SysConstants.DESCRIPTION_FIELD_SUFFIX)) .map(StrUtil::toUnderlineCase) - .collect(Collectors.toList()); + .toList(); queryWrapper.select(columnNameList); // 分页查询 IPage<LogDO> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/auth/service/impl/LoginServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/auth/service/impl/LoginServiceImpl.java index be7674b0..8d92fbee 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/auth/service/impl/LoginServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/auth/service/impl/LoginServiceImpl.java @@ -56,7 +56,6 @@ import top.charles7c.continew.starter.extension.crud.util.TreeUtils; import java.time.LocalDateTime; import java.util.*; -import java.util.stream.Collectors; /** * 登录业务实现 @@ -158,9 +157,7 @@ public class LoginServiceImpl implements LoginService { } else { roleCodeSet.forEach(roleCode -> menuSet.addAll(menuService.listByRoleCode(roleCode))); } - List<MenuResp> menuList = menuSet.stream() - .filter(m -> !MenuTypeEnum.BUTTON.equals(m.getType())) - .collect(Collectors.toList()); + List<MenuResp> menuList = menuSet.stream().filter(m -> !MenuTypeEnum.BUTTON.equals(m.getType())).toList(); // 构建路由树 TreeField treeField = MenuResp.class.getDeclaredAnnotation(TreeField.class); TreeNodeConfig treeNodeConfig = TreeUtils.genTreeNodeConfig(treeField); @@ -175,7 +172,7 @@ public class LoginServiceImpl implements LoginService { MetaResp metaResp = new MetaResp(); metaResp.setLocale(m.getTitle()); metaResp.setIcon(m.getIcon()); - metaResp.setIgnoreCache(!m.getIsCache()); + metaResp.setIgnoreCache(Boolean.FALSE.equals(m.getIsCache())); metaResp.setHideInMenu(m.getIsHidden()); metaResp.setOrder(m.getSort()); tree.putExtra("meta", metaResp); diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/DictItemMapper.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/DictItemMapper.java index d35fec4f..75769882 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/DictItemMapper.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/DictItemMapper.java @@ -21,6 +21,7 @@ import top.charles7c.continew.admin.common.model.resp.LabelValueResp; import top.charles7c.continew.admin.system.model.entity.DictItemDO; import top.charles7c.continew.starter.data.mybatis.plus.base.BaseMapper; +import java.io.Serializable; import java.util.List; /** @@ -37,5 +38,5 @@ public interface DictItemMapper extends BaseMapper<DictItemDO> { * @param dictCode 字典编码 * @return 字典项列表 */ - List<LabelValueResp> listByDictCode(@Param("dictCode") String dictCode); + List<LabelValueResp<Serializable>> listByDictCode(@Param("dictCode") String dictCode); } \ No newline at end of file diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictItemService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictItemService.java index fb612104..536a3a98 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictItemService.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/DictItemService.java @@ -25,6 +25,7 @@ import top.charles7c.continew.admin.system.model.resp.DictItemResp; import top.charles7c.continew.starter.extension.crud.service.BaseService; import top.charles7c.continew.starter.extension.crud.service.IService; +import java.io.Serializable; import java.util.List; /** @@ -49,7 +50,7 @@ public interface DictItemService extends BaseService<DictItemResp, DictItemDetai * @param dictCode 字典编码 * @return 字典项列表 */ - List<LabelValueResp> listByDictCode(String dictCode); + List<LabelValueResp<Serializable>> listByDictCode(String dictCode); /** * 根据字典 ID 列表删除 diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java index a02207cd..9e834088 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java @@ -30,6 +30,7 @@ import top.charles7c.continew.starter.core.util.validate.CheckUtils; import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl; import top.charles7c.continew.starter.extension.crud.model.query.SortQuery; +import java.io.Serializable; import java.util.List; /** @@ -66,7 +67,7 @@ public class DictItemServiceImpl extends BaseServiceImpl<DictItemMapper, DictIte } @Override - public List<LabelValueResp> listByDictCode(String dictCode) { + public List<LabelValueResp<Serializable>> listByDictCode(String dictCode) { return baseMapper.listByDictCode(dictCode); } diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageUserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageUserServiceImpl.java index 0e7d8346..5888b26d 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageUserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageUserServiceImpl.java @@ -16,17 +16,9 @@ package top.charles7c.continew.admin.system.service.impl; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import lombok.RequiredArgsConstructor; - -import org.springframework.stereotype.Service; - import cn.hutool.core.collection.CollUtil; - +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; import top.charles7c.continew.admin.common.enums.MessageTypeEnum; import top.charles7c.continew.admin.system.mapper.MessageUserMapper; import top.charles7c.continew.admin.system.model.entity.MessageUserDO; @@ -35,6 +27,10 @@ import top.charles7c.continew.admin.system.model.resp.MessageUnreadResp; import top.charles7c.continew.admin.system.service.MessageUserService; import top.charles7c.continew.starter.core.util.validate.CheckUtils; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + /** * 消息和用户关联业务实现 * @@ -78,7 +74,7 @@ public class MessageUserServiceImpl implements MessageUserService { messageUser.setMessageId(messageId); messageUser.setIsRead(false); return messageUser; - }).collect(Collectors.toList()); + }).toList(); baseMapper.insertBatch(messageUserList); } diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleDeptServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleDeptServiceImpl.java index acf619ad..30526654 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleDeptServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleDeptServiceImpl.java @@ -28,7 +28,6 @@ import top.charles7c.continew.admin.system.model.entity.RoleDeptDO; import top.charles7c.continew.admin.system.service.RoleDeptService; import java.util.List; -import java.util.stream.Collectors; /** * 角色和部门业务实现 @@ -52,16 +51,14 @@ public class RoleDeptServiceImpl implements RoleDeptService { .list() .stream() .map(RoleDeptDO::getDeptId) - .collect(Collectors.toList()); + .toList(); if (CollUtil.isEmpty(CollUtil.disjunction(deptIds, oldDeptIdList))) { return false; } // 删除原有关联 roleDeptMapper.lambdaUpdate().eq(RoleDeptDO::getRoleId, roleId).remove(); // 保存最新关联 - List<RoleDeptDO> roleDeptList = deptIds.stream() - .map(deptId -> new RoleDeptDO(roleId, deptId)) - .collect(Collectors.toList()); + List<RoleDeptDO> roleDeptList = deptIds.stream().map(deptId -> new RoleDeptDO(roleId, deptId)).toList(); return roleDeptMapper.insertBatch(roleDeptList); } diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleMenuServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleMenuServiceImpl.java index 7a01353a..3955b56d 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleMenuServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleMenuServiceImpl.java @@ -16,21 +16,18 @@ package top.charles7c.continew.admin.system.service.impl; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - +import cn.hutool.core.collection.CollUtil; import lombok.RequiredArgsConstructor; - import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - -import cn.hutool.core.collection.CollUtil; - import top.charles7c.continew.admin.system.mapper.RoleMenuMapper; import top.charles7c.continew.admin.system.model.entity.RoleMenuDO; import top.charles7c.continew.admin.system.service.RoleMenuService; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** * 角色和菜单业务实现 * @@ -60,9 +57,7 @@ public class RoleMenuServiceImpl implements RoleMenuService { // 删除原有关联 roleMenuMapper.lambdaUpdate().eq(RoleMenuDO::getRoleId, roleId).remove(); // 保存最新关联 - List<RoleMenuDO> roleMenuList = menuIds.stream() - .map(menuId -> new RoleMenuDO(roleId, menuId)) - .collect(Collectors.toList()); + List<RoleMenuDO> roleMenuList = menuIds.stream().map(menuId -> new RoleMenuDO(roleId, menuId)).toList(); return roleMenuMapper.insertBatch(roleMenuList); } diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java index 0b9bb72e..65dbadb7 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java @@ -133,7 +133,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleRes Long roleId = detail.getId(); if (SysConstants.ADMIN_ROLE_CODE.equals(detail.getCode())) { List<MenuResp> list = menuService.list(null, null); - List<Long> menuIds = list.stream().map(MenuResp::getId).collect(Collectors.toList()); + List<Long> menuIds = list.stream().map(MenuResp::getId).toList(); detail.setMenuIds(menuIds); } else { detail.setMenuIds(roleMenuService.listMenuIdByRoleIds(CollUtil.newArrayList(roleId))); @@ -152,7 +152,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleRes @Override public List<String> listNameByIds(List<Long> ids) { List<RoleDO> roleList = baseMapper.lambdaQuery().select(RoleDO::getName).in(RoleDO::getId, ids).list(); - return roleList.stream().map(RoleDO::getName).collect(Collectors.toList()); + return roleList.stream().map(RoleDO::getName).toList(); } @Override diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/StorageServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/StorageServiceImpl.java index 7804b5ec..d75d2a2a 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/StorageServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/StorageServiceImpl.java @@ -167,10 +167,7 @@ public class StorageServiceImpl extends BaseServiceImpl<StorageMapper, StorageDO * @return 是否存在 */ private boolean isDefaultExists(Long id) { - return baseMapper.lambdaQuery() - .eq(StorageDO::getIsDefault, Boolean.TRUE) - .ne(null != id, StorageDO::getId, id) - .exists(); + return baseMapper.lambdaQuery().eq(StorageDO::getIsDefault, true).ne(null != id, StorageDO::getId, id).exists(); } /** diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserRoleServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserRoleServiceImpl.java index 9da2fbcc..e92a1885 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserRoleServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserRoleServiceImpl.java @@ -28,7 +28,6 @@ import top.charles7c.continew.admin.system.model.entity.UserRoleDO; import top.charles7c.continew.admin.system.service.UserRoleService; import java.util.List; -import java.util.stream.Collectors; /** * 用户和角色业务实现 @@ -52,16 +51,14 @@ public class UserRoleServiceImpl implements UserRoleService { .list() .stream() .map(UserRoleDO::getRoleId) - .collect(Collectors.toList()); + .toList(); if (CollUtil.isEmpty(CollUtil.disjunction(roleIds, oldRoleIdList))) { return false; } // 删除原有关联 userRoleMapper.lambdaUpdate().eq(UserRoleDO::getUserId, userId).remove(); // 保存最新关联 - List<UserRoleDO> userRoleList = roleIds.stream() - .map(roleId -> new UserRoleDO(userId, roleId)) - .collect(Collectors.toList()); + List<UserRoleDO> userRoleList = roleIds.stream().map(roleId -> new UserRoleDO(userId, roleId)).toList(); return userRoleMapper.insertBatch(userRoleList); } diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java index 70d6c0ec..28b01acb 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java @@ -75,6 +75,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes private final PasswordEncoder passwordEncoder; @Value("${avatar.support-suffix}") private String[] avatarSupportSuffix; + private static final String CURRENT_PASSWORD_ERROR = "当前密码错误"; @Override public Long add(UserDO user) { @@ -85,12 +86,13 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes @Override protected void beforeAdd(UserReq req) { + final String errorMsgTemplate = "新增失败,[{}] 已存在"; String username = req.getUsername(); - CheckUtils.throwIf(this.isNameExists(username, null), "新增失败,[{}] 已存在", username); + CheckUtils.throwIf(this.isNameExists(username, null), errorMsgTemplate, username); String email = req.getEmail(); - CheckUtils.throwIf(StrUtil.isNotBlank(email) && this.isEmailExists(email, null), "新增失败,[{}] 已存在", email); + CheckUtils.throwIf(StrUtil.isNotBlank(email) && this.isEmailExists(email, null), errorMsgTemplate, email); String phone = req.getPhone(); - CheckUtils.throwIf(StrUtil.isNotBlank(phone) && this.isPhoneExists(phone, null), "新增失败,[{}] 已存在", phone); + CheckUtils.throwIf(StrUtil.isNotBlank(phone) && this.isPhoneExists(phone, null), errorMsgTemplate, phone); req.setStatus(DisEnableStatusEnum.ENABLE); req.setPassword(passwordEncoder.encode(req.getPassword())); } @@ -107,12 +109,13 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes @Transactional(rollbackFor = Exception.class) @CacheUpdate(key = "#id", value = "#req.nickname", name = CacheConstants.USER_KEY_PREFIX) public void update(UserReq req, Long id) { + final String errorMsgTemplate = "修改失败,[{}] 已存在"; String username = req.getUsername(); - CheckUtils.throwIf(this.isNameExists(username, id), "修改失败,[{}] 已存在", username); + CheckUtils.throwIf(this.isNameExists(username, id), errorMsgTemplate, username); String email = req.getEmail(); - CheckUtils.throwIf(StrUtil.isNotBlank(email) && this.isEmailExists(email, id), "修改失败,[{}] 已存在", email); + CheckUtils.throwIf(StrUtil.isNotBlank(email) && this.isEmailExists(email, id), errorMsgTemplate, email); String phone = req.getPhone(); - CheckUtils.throwIf(StrUtil.isNotBlank(phone) && this.isPhoneExists(phone, id), "修改失败,[{}] 已存在", phone); + CheckUtils.throwIf(StrUtil.isNotBlank(phone) && this.isPhoneExists(phone, id), errorMsgTemplate, phone); DisEnableStatusEnum newStatus = req.getStatus(); CheckUtils.throwIf(DisEnableStatusEnum.DISABLE.equals(newStatus) && ObjectUtil.equal(id, LoginHelper .getUserId()), "不允许禁用当前用户"); @@ -196,7 +199,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes UserDO user = super.getById(id); String password = user.getPassword(); if (StrUtil.isNotBlank(password)) { - CheckUtils.throwIf(!passwordEncoder.matches(oldPassword, password), "当前密码错误"); + CheckUtils.throwIf(!passwordEncoder.matches(oldPassword, password), CURRENT_PASSWORD_ERROR); } // 更新密码和密码重置时间 LocalDateTime now = LocalDateTime.now(); @@ -210,7 +213,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes @Override public void updatePhone(String newPhone, String currentPassword, Long id) { UserDO user = super.getById(id); - CheckUtils.throwIf(!passwordEncoder.matches(currentPassword, user.getPassword()), "当前密码错误"); + CheckUtils.throwIf(!passwordEncoder.matches(currentPassword, user.getPassword()), CURRENT_PASSWORD_ERROR); Long count = baseMapper.lambdaQuery().eq(UserDO::getPhone, newPhone).count(); CheckUtils.throwIf(count > 0, "手机号已绑定其他账号,请更换其他手机号"); CheckUtils.throwIfEqual(newPhone, user.getPhone(), "新手机号不能与当前手机号相同"); @@ -221,7 +224,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes @Override public void updateEmail(String newEmail, String currentPassword, Long id) { UserDO user = super.getById(id); - CheckUtils.throwIf(!passwordEncoder.matches(currentPassword, user.getPassword()), "当前密码错误"); + CheckUtils.throwIf(!passwordEncoder.matches(currentPassword, user.getPassword()), CURRENT_PASSWORD_ERROR); Long count = baseMapper.lambdaQuery().eq(UserDO::getEmail, newEmail).count(); CheckUtils.throwIf(count > 0, "邮箱已绑定其他账号,请更换其他邮箱"); CheckUtils.throwIfEqual(newEmail, user.getEmail(), "新邮箱不能与当前邮箱相同"); diff --git a/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/impl/GeneratorServiceImpl.java b/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/impl/GeneratorServiceImpl.java index 883ecc7d..ea997a0b 100644 --- a/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/impl/GeneratorServiceImpl.java +++ b/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/impl/GeneratorServiceImpl.java @@ -131,13 +131,13 @@ public class GeneratorServiceImpl implements GeneratorService { List<FieldConfigDO> fieldConfigList = fieldConfigMapper.selectListByTableName(tableName); if (CollUtil.isEmpty(fieldConfigList)) { Collection<Column> columnList = MetaUtils.getColumns(dataSource, tableName); - return columnList.stream().map(FieldConfigDO::new).collect(Collectors.toList()); + return columnList.stream().map(FieldConfigDO::new).toList(); } // 同步最新数据表列信息 if (Boolean.TRUE.equals(requireSync)) { Collection<Column> columnList = MetaUtils.getColumns(dataSource, tableName); // 移除已不存在的字段配置 - List<String> columnNameList = columnList.stream().map(Column::getName).collect(Collectors.toList()); + List<String> columnNameList = columnList.stream().map(Column::getName).toList(); fieldConfigList.removeIf(column -> !columnNameList.contains(column.getColumnName())); // 新增或更新字段配置 Map<String, FieldConfigDO> fieldConfigMap = fieldConfigList.stream() @@ -168,13 +168,13 @@ public class GeneratorServiceImpl implements GeneratorService { fieldConfigMapper.delete(Wrappers.lambdaQuery(FieldConfigDO.class).eq(FieldConfigDO::getTableName, tableName)); List<FieldConfigDO> fieldConfigList = req.getFieldConfigs(); for (FieldConfigDO fieldConfig : fieldConfigList) { - if (fieldConfig.getShowInForm()) { + if (Boolean.TRUE.equals(fieldConfig.getShowInForm())) { CheckUtils.throwIfNull(fieldConfig.getFormType(), "字段 [{}] 的表单类型不能为空", fieldConfig.getFieldName()); } else { // 在表单中不显示,不需要设置必填 fieldConfig.setIsRequired(false); } - if (fieldConfig.getShowInQuery()) { + if (Boolean.TRUE.equals(fieldConfig.getShowInQuery())) { CheckUtils.throwIfNull(fieldConfig.getFormType(), "字段 [{}] 的表单类型不能为空", fieldConfig.getFieldName()); CheckUtils.throwIfNull(fieldConfig.getQueryType(), "字段 [{}] 的查询方式不能为空", fieldConfig.getFieldName()); } else { @@ -182,7 +182,8 @@ public class GeneratorServiceImpl implements GeneratorService { fieldConfig.setQueryType(null); } // 既不在表单也不在查询中显示,不需要设置表单类型 - if (!fieldConfig.getShowInForm() && !fieldConfig.getShowInQuery()) { + if (Boolean.FALSE.equals(fieldConfig.getShowInForm()) && Boolean.FALSE.equals(fieldConfig + .getShowInQuery())) { fieldConfig.setFormType(null); } fieldConfig.setTableName(tableName); @@ -275,7 +276,7 @@ public class GeneratorServiceImpl implements GeneratorService { // 2.生成代码 List<GeneratePreviewResp> backendCodePreviewList = generatePreviewList.stream() .filter(GeneratePreviewResp::isBackend) - .collect(Collectors.toList()); + .toList(); Map<String, TemplateConfig> templateConfigMap = generatorProperties.getTemplateConfigs(); for (GeneratePreviewResp codePreview : backendCodePreviewList) { // 例如:D:/continew-admin/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/impl/XxxServiceImpl.java @@ -298,7 +299,7 @@ public class GeneratorServiceImpl implements GeneratorService { } List<GeneratePreviewResp> frontendCodePreviewList = generatePreviewList.stream() .filter(p -> !p.isBackend()) - .collect(Collectors.toList()); + .toList(); // 1.生成 api 代码 String apiModuleName = StrUtil.subSuf(packageName, StrUtil .lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1); @@ -342,7 +343,7 @@ public class GeneratorServiceImpl implements GeneratorService { // 移除需要忽略的字段 List<FieldConfigDO> fieldConfigList = originFieldConfigList.stream() .filter(fieldConfig -> !StrUtil.equalsAny(fieldConfig.getFieldName(), templateConfig.getExcludeFields())) - .collect(Collectors.toList()); + .toList(); genConfigMap.put("fieldConfigs", fieldConfigList); // 统计部分特殊字段特征 genConfigMap.put("hasLocalDateTime", false); diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/auth/AuthController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/auth/AuthController.java index 3c4ef80e..d6614c88 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/auth/AuthController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/auth/AuthController.java @@ -62,6 +62,8 @@ public class AuthController { private final LoginService loginService; private final UserService userService; + private static final String CAPTCHA_EXPIRED = "验证码已失效"; + private static final String CAPTCHA_ERROR = "验证码错误"; @SaIgnore @Operation(summary = "账号登录", description = "根据账号和密码进行登录认证") @@ -69,9 +71,9 @@ public class AuthController { public R<LoginResp> accountLogin(@Validated @RequestBody AccountLoginReq loginReq) { String captchaKey = CacheConstants.CAPTCHA_KEY_PREFIX + loginReq.getUuid(); String captcha = RedisUtils.get(captchaKey); - ValidationUtils.throwIfBlank(captcha, "验证码已失效"); + ValidationUtils.throwIfBlank(captcha, CAPTCHA_EXPIRED); RedisUtils.delete(captchaKey); - ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, "验证码错误"); + ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, CAPTCHA_ERROR); // 用户登录 String rawPassword = ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(loginReq.getPassword())); ValidationUtils.throwIfBlank(rawPassword, "密码解密失败"); @@ -86,8 +88,8 @@ public class AuthController { String email = loginReq.getEmail(); String captchaKey = CacheConstants.CAPTCHA_KEY_PREFIX + email; String captcha = RedisUtils.get(captchaKey); - ValidationUtils.throwIfBlank(captcha, "验证码已失效"); - ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, "验证码错误"); + ValidationUtils.throwIfBlank(captcha, CAPTCHA_EXPIRED); + ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, CAPTCHA_ERROR); RedisUtils.delete(captchaKey); String token = loginService.emailLogin(email); return R.ok(LoginResp.builder().token(token).build()); @@ -100,8 +102,8 @@ public class AuthController { String phone = loginReq.getPhone(); String captchaKey = CacheConstants.CAPTCHA_KEY_PREFIX + phone; String captcha = RedisUtils.get(captchaKey); - ValidationUtils.throwIfBlank(captcha, "验证码已失效"); - ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, "验证码错误"); + ValidationUtils.throwIfBlank(captcha, CAPTCHA_EXPIRED); + ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, CAPTCHA_ERROR); RedisUtils.delete(captchaKey); String token = loginService.phoneLogin(phone); return R.ok(LoginResp.builder().token(token).build()); diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/common/CaptchaController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/common/CaptchaController.java index b5c3aac7..bd0e9210 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/common/CaptchaController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/common/CaptchaController.java @@ -73,8 +73,8 @@ import java.util.Map; @RequestMapping("/captcha") public class CaptchaController { - private final CaptchaService captchaService; - private final Captcha captcha; + private final CaptchaService behaviorCaptchaService; + private final Captcha graphicCaptchaService; private final ProjectProperties projectProperties; private final CaptchaProperties captchaProperties; @@ -83,14 +83,14 @@ public class CaptchaController { @GetMapping("/behavior") public R<Object> getBehaviorCaptcha(CaptchaVO captchaReq, HttpServletRequest request) { captchaReq.setBrowserInfo(JakartaServletUtil.getClientIP(request) + request.getHeader(HttpHeaders.USER_AGENT)); - return R.ok(captchaService.get(captchaReq).getRepData()); + return R.ok(behaviorCaptchaService.get(captchaReq).getRepData()); } @Log(ignore = true) @Operation(summary = "校验行为验证码", description = "校验行为验证码") @PostMapping("/behavior") public R<Object> checkBehaviorCaptcha(@RequestBody CaptchaVO captchaReq) { - return R.ok(captchaService.check(captchaReq)); + return R.ok(behaviorCaptchaService.check(captchaReq)); } @Log(ignore = true) @@ -99,8 +99,9 @@ public class CaptchaController { public R<CaptchaResp> getImageCaptcha() { String uuid = IdUtil.fastUUID(); String captchaKey = CacheConstants.CAPTCHA_KEY_PREFIX + uuid; - RedisUtils.set(captchaKey, captcha.text(), Duration.ofMinutes(captchaProperties.getExpirationInMinutes())); - return R.ok(CaptchaResp.builder().uuid(uuid).img(captcha.toBase64()).build()); + RedisUtils.set(captchaKey, graphicCaptchaService.text(), Duration.ofMinutes(captchaProperties + .getExpirationInMinutes())); + return R.ok(CaptchaResp.builder().uuid(uuid).img(graphicCaptchaService.toBase64()).build()); } @Operation(summary = "获取邮箱验证码", description = "发送验证码到指定邮箱") @@ -133,7 +134,7 @@ public class CaptchaController { CaptchaVO captchaReq, HttpServletRequest request) { // 行为验证码校验 - ResponseModel verificationRes = captchaService.verification(captchaReq); + ResponseModel verificationRes = behaviorCaptchaService.verification(captchaReq); ValidationUtils.throwIfNotEqual(verificationRes.getRepCode(), RepCodeEnum.SUCCESS.getCode(), verificationRes .getRepMsg()); CaptchaProperties.CaptchaSms captchaSms = captchaProperties.getSms(); @@ -143,20 +144,20 @@ public class CaptchaController { String limitTemplateKeyPrefix = limitKeyPrefix + captchaKeyPrefix; // 限制短信发送频率 // 1.同一号码同一短信模板,1分钟2条,1小时8条,24小时20条,e.g. LIMIT:CAPTCHA:XXX:188xxxxx:1 + final String errorMsg = "获取验证码操作太频繁,请稍后再试"; CheckUtils.throwIf(!RedisUtils.rateLimit(RedisUtils - .formatKey(limitTemplateKeyPrefix + "MIN", phone, templateId), RateType.OVERALL, 2, 60), "验证码发送过于频繁,请稍后后再试"); + .formatKey(limitTemplateKeyPrefix + "MIN", phone, templateId), RateType.OVERALL, 2, 60), errorMsg); CheckUtils.throwIf(!RedisUtils.rateLimit(RedisUtils - .formatKey(limitTemplateKeyPrefix + "HOUR", phone, templateId), RateType.OVERALL, 8, 60 * 60), "验证码发送过于频繁,请稍后后再试"); + .formatKey(limitTemplateKeyPrefix + "HOUR", phone, templateId), RateType.OVERALL, 8, 60 * 60), errorMsg); CheckUtils.throwIf(!RedisUtils.rateLimit(RedisUtils - .formatKey(limitTemplateKeyPrefix + "DAY", phone, templateId), RateType.OVERALL, 20, 60 * 60 * 24), "验证码发送过于频繁,请稍后后再试"); + .formatKey(limitTemplateKeyPrefix + "DAY", phone, templateId), RateType.OVERALL, 20, 60 * 60 * 24), errorMsg); // 2.同一号码所有短信模板 24 小时 100 条,e.g. LIMIT:CAPTCHA:188xxxxx String limitPhoneKey = limitKeyPrefix + captchaKeyPrefix + phone; - CheckUtils.throwIf(!RedisUtils - .rateLimit(limitPhoneKey, RateType.OVERALL, 100, 60 * 60 * 24), "验证码发送过于频繁,请稍后后再试"); + CheckUtils.throwIf(!RedisUtils.rateLimit(limitPhoneKey, RateType.OVERALL, 100, 60 * 60 * 24), errorMsg); // 3.同一 IP 每分钟限制发送 30 条,e.g. LIMIT:CAPTCHA:PHONE:1xx.1xx.1xx.1xx String limitIpKey = RedisUtils.formatKey(limitKeyPrefix + captchaKeyPrefix + "PHONE", JakartaServletUtil .getClientIP(request)); - CheckUtils.throwIf(!RedisUtils.rateLimit(limitIpKey, RateType.OVERALL, 30, 60), "验证码发送过于频繁,请稍后后再试"); + CheckUtils.throwIf(!RedisUtils.rateLimit(limitIpKey, RateType.OVERALL, 30, 60), errorMsg); // 生成验证码 String captcha = RandomUtil.randomNumbers(captchaSms.getLength()); // 发送验证码 diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/common/CommonController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/common/CommonController.java index 5d6593a5..8b22d431 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/common/CommonController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/common/CommonController.java @@ -44,14 +44,14 @@ import top.charles7c.continew.starter.core.autoconfigure.project.ProjectProperti import top.charles7c.continew.starter.core.util.validate.ValidationUtils; import top.charles7c.continew.starter.data.mybatis.plus.base.IBaseEnum; import top.charles7c.continew.starter.extension.crud.model.query.SortQuery; -import top.charles7c.continew.starter.web.model.R; import top.charles7c.continew.starter.log.common.annotation.Log; +import top.charles7c.continew.starter.web.model.R; +import java.io.Serializable; import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.Set; -import java.util.stream.Collectors; /** * 公共 API @@ -108,21 +108,21 @@ public class CommonController { @CachePenetrationProtect @CacheRefresh(refresh = 3600, stopRefreshAfterLastAccess = 7200) @Cached(key = "#code", name = CacheConstants.DICT_KEY_PREFIX) - public R<List<LabelValueResp>> listDict(@PathVariable String code) { - Optional<Class<?>> enumClass = this.getEnumClassByName(code); - return R.ok(enumClass.map(this::listEnumDict).orElseGet(() -> dictItemService.listByDictCode(code))); + public R<List<LabelValueResp<Serializable>>> listDict(@PathVariable String code) { + Optional<Class<?>> enumClassOptional = this.getEnumClassByName(code); + return R.ok(enumClassOptional.map(this::listEnumDict).orElseGet(() -> dictItemService.listByDictCode(code))); } @SaIgnore @Operation(summary = "查询参数", description = "查询参数") @GetMapping("/option") @Cached(name = CacheConstants.OPTION_KEY_PREFIX) - public R<List<LabelValueResp>> listOption(@Validated OptionQuery query) { + public R<List<LabelValueResp<String>>> listOption(@Validated OptionQuery query) { return R.ok(optionService.list(query) .stream() - .map(option -> new LabelValueResp(option.getCode(), StrUtil.nullToDefault(option.getValue(), option + .map(option -> new LabelValueResp<>(option.getCode(), StrUtil.nullToDefault(option.getValue(), option .getDefaultValue()))) - .collect(Collectors.toList())); + .toList()); } /** @@ -145,11 +145,11 @@ public class CommonController { * @param enumClass 枚举类型 * @return 枚举字典 */ - private List<LabelValueResp> listEnumDict(Class<?> enumClass) { + private List<LabelValueResp<Serializable>> listEnumDict(Class<?> enumClass) { Object[] enumConstants = enumClass.getEnumConstants(); return Arrays.stream(enumConstants).map(e -> { - IBaseEnum<Integer> baseEnum = (IBaseEnum<Integer>)e; + IBaseEnum baseEnum = (IBaseEnum)e; return new LabelValueResp<>(baseEnum.getDescription(), baseEnum.getValue(), baseEnum.getColor()); - }).collect(Collectors.toList()); + }).toList(); } } diff --git a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/UserCenterController.java b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/UserCenterController.java index f44b20bc..7dff0eee 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/UserCenterController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/continew/admin/webapi/system/UserCenterController.java @@ -51,7 +51,6 @@ import top.charles7c.continew.starter.core.util.validate.ValidationUtils; import top.charles7c.continew.starter.web.model.R; import java.util.List; -import java.util.stream.Collectors; /** * 个人中心 API @@ -69,6 +68,8 @@ public class UserCenterController { private final UserService userService; private final UserSocialService userSocialService; private final AuthRequestFactory authRequestFactory; + private static final String PASSWORD_DECRYPT_FAILED = "当前密码解密失败"; + private static final String CAPTCHA_EXPIRED = "验证码已失效"; @Operation(summary = "上传头像", description = "用户上传个人头像") @PostMapping("/avatar") @@ -90,7 +91,7 @@ public class UserCenterController { public R<Void> updatePassword(@Validated @RequestBody UserPasswordUpdateReq updateReq) { String rawOldPassword = ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq .getOldPassword())); - ValidationUtils.throwIfNull(rawOldPassword, "当前密码解密失败"); + ValidationUtils.throwIfNull(rawOldPassword, PASSWORD_DECRYPT_FAILED); String rawNewPassword = ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq .getNewPassword())); ValidationUtils.throwIfNull(rawNewPassword, "新密码解密失败"); @@ -105,10 +106,10 @@ public class UserCenterController { public R<Void> updatePhone(@Validated @RequestBody UserPhoneUpdateReq updateReq) { String rawCurrentPassword = ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq .getCurrentPassword())); - ValidationUtils.throwIfBlank(rawCurrentPassword, "当前密码解密失败"); + ValidationUtils.throwIfBlank(rawCurrentPassword, PASSWORD_DECRYPT_FAILED); String captchaKey = CacheConstants.CAPTCHA_KEY_PREFIX + updateReq.getNewPhone(); String captcha = RedisUtils.get(captchaKey); - ValidationUtils.throwIfBlank(captcha, "验证码已失效"); + ValidationUtils.throwIfBlank(captcha, CAPTCHA_EXPIRED); ValidationUtils.throwIfNotEqualIgnoreCase(updateReq.getCaptcha(), captcha, "验证码错误"); RedisUtils.delete(captchaKey); userService.updatePhone(updateReq.getNewPhone(), rawCurrentPassword, LoginHelper.getUserId()); @@ -120,10 +121,10 @@ public class UserCenterController { public R<Void> updateEmail(@Validated @RequestBody UserEmailUpdateRequest updateReq) { String rawCurrentPassword = ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq .getCurrentPassword())); - ValidationUtils.throwIfBlank(rawCurrentPassword, "当前密码解密失败"); + ValidationUtils.throwIfBlank(rawCurrentPassword, PASSWORD_DECRYPT_FAILED); String captchaKey = CacheConstants.CAPTCHA_KEY_PREFIX + updateReq.getNewEmail(); String captcha = RedisUtils.get(captchaKey); - ValidationUtils.throwIfBlank(captcha, "验证码已失效"); + ValidationUtils.throwIfBlank(captcha, CAPTCHA_EXPIRED); ValidationUtils.throwIfNotEqualIgnoreCase(updateReq.getCaptcha(), captcha, "验证码错误"); RedisUtils.delete(captchaKey); userService.updateEmail(updateReq.getNewEmail(), rawCurrentPassword, LoginHelper.getUserId()); @@ -140,7 +141,7 @@ public class UserCenterController { userSocialBind.setSource(source); userSocialBind.setDescription(SocialSourceEnum.valueOf(source).getDescription()); return userSocialBind; - }).collect(Collectors.toList()); + }).toList(); return R.ok(userSocialBindList); }