From cdccf0e4c5f7ec472344f4b3536bb2614b619747 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Mon, 28 Oct 2024 14:39:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=83=A8=E5=88=86=E7=BC=BA=E9=99=B7?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/GlobalExceptionHandler.java | 6 +-- .../controller/EmailUsersController.java | 2 +- .../bunny/services/factory/UserFactory.java | 29 ++++++------- .../service/impl/DeptServiceImpl.java | 6 +-- .../impl/EmailTemplateServiceImpl.java | 4 -- .../service/impl/EmailUsersServiceImpl.java | 5 --- .../service/impl/MenuIconServiceImpl.java | 4 +- .../service/impl/RoleServiceImpl.java | 43 ++++++++++++++----- .../service/impl/RouterServiceImpl.java | 8 ++-- .../service/impl/UserServiceImpl.java | 12 +----- .../resources/mapper/EmailTemplateMapper.xml | 1 - 11 files changed, 60 insertions(+), 60 deletions(-) diff --git a/common/service-utils/src/main/java/cn/bunny/common/service/exception/GlobalExceptionHandler.java b/common/service-utils/src/main/java/cn/bunny/common/service/exception/GlobalExceptionHandler.java index f0ba522..bd57e45 100644 --- a/common/service-utils/src/main/java/cn/bunny/common/service/exception/GlobalExceptionHandler.java +++ b/common/service-utils/src/main/java/cn/bunny/common/service/exception/GlobalExceptionHandler.java @@ -33,8 +33,6 @@ public class GlobalExceptionHandler { @ResponseBody public Result exceptionHandler(RuntimeException exception) { String message = exception.getMessage(); - log.error("GlobalExceptionHandler===>运行时异常信息:{}", message); - exception.printStackTrace(); // 解析异常 String jsonParseError = "JSON parse error (.*)"; @@ -54,9 +52,11 @@ public class GlobalExceptionHandler { String primaryKeyError = "Duplicate entry '(.*?)' for key .*"; Matcher primaryKeyErrorMatcher = Pattern.compile(primaryKeyError).matcher(message); if (primaryKeyErrorMatcher.find()) { - return Result.error(null, 500, "主键值" + primaryKeyErrorMatcher.group(1) + "已存在"); + return Result.error(null, 500, "【" + primaryKeyErrorMatcher.group(1) + "】已存在"); } + log.error("GlobalExceptionHandler===>运行时异常信息:{}", message); + exception.printStackTrace(); return Result.error(null, 500, "服务器异常"); } diff --git a/service/src/main/java/cn/bunny/services/controller/EmailUsersController.java b/service/src/main/java/cn/bunny/services/controller/EmailUsersController.java index dd15e01..198518c 100644 --- a/service/src/main/java/cn/bunny/services/controller/EmailUsersController.java +++ b/service/src/main/java/cn/bunny/services/controller/EmailUsersController.java @@ -79,7 +79,7 @@ public class EmailUsersController { return Result.success(ResultCodeEnum.UPDATE_SUCCESS); } - @Operation(summary = "删除邮箱用户发送配置", description = "删除邮箱用户发送配置") + @Operation(summary = "删除邮箱用户", description = "删除邮箱用户") @DeleteMapping("deleteEmailUsers") public Mono> deleteEmailUsers(@RequestBody List ids) { emailUsersService.deleteEmailUsers(ids); diff --git a/service/src/main/java/cn/bunny/services/factory/UserFactory.java b/service/src/main/java/cn/bunny/services/factory/UserFactory.java index 1f58518..a17283e 100644 --- a/service/src/main/java/cn/bunny/services/factory/UserFactory.java +++ b/service/src/main/java/cn/bunny/services/factory/UserFactory.java @@ -66,7 +66,13 @@ public class UserFactory { // 获取IP地址并更新用户登录信息 String ipAddr = IpUtil.getCurrentUserIpAddress().getIpAddr(); String ipRegion = IpUtil.getCurrentUserIpAddress().getIpRegion(); - setUpdateUser(userId, ipAddr, ipRegion); + + // 设置用户IP地址,并更新用户信息 + AdminUser updateUser = new AdminUser(); + updateUser.setId(userId); + updateUser.setIpAddress(ipAddr); + updateUser.setIpRegion(ipRegion); + userMapper.updateById(updateUser); // 将用户登录保存在用户登录日志表中 userLoginLogMapper.insert(setUserLoginLog(user, token, ipAddr, ipRegion, "login")); @@ -83,6 +89,12 @@ public class UserFactory { return loginVo; } + /** + * * 构建用户返回对象LoginVo + * + * @param user 用户对象 + * @param readMeDay 记住我时间 + */ public void buildUserVo(AdminUser user, long readMeDay) { Long userId = user.getId(); String username = user.getUsername(); @@ -144,21 +156,6 @@ public class UserFactory { return loginVo; } - /** - * * 设置更新用户设置内容 - * - * @param userId 用户ID - */ - @Transactional - public void setUpdateUser(Long userId, String ipAddr, String ipRegion) { - // 设置用户IP地址,并更新用户信息 - AdminUser updateUser = new AdminUser(); - updateUser.setId(userId); - updateUser.setIpAddress(ipAddr); - updateUser.setIpRegion(ipRegion); - userMapper.updateById(updateUser); - } - /** * 检查用户头像是否合规 * diff --git a/service/src/main/java/cn/bunny/services/service/impl/DeptServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/DeptServiceImpl.java index b2283d9..1cf0f2a 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/DeptServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/DeptServiceImpl.java @@ -112,10 +112,11 @@ public class DeptServiceImpl extends ServiceImpl implements De @Override @CacheEvict(cacheNames = "dept", key = "'allDept'", beforeInvocation = true) public void updateDept(DeptUpdateDto dto) { - // 判断所更新的部门是否存在 - String mangerList = dto.getManager().stream().map(String::trim).collect(Collectors.joining(",")); if (dto.getId().equals(dto.getParentId())) throw new BunnyException(ResultCodeEnum.ILLEGAL_DATA_REQUEST); + // 将管理员用户逗号分隔 + String mangerList = dto.getManager().stream().map(String::trim).collect(Collectors.joining(",")); + // 更新内容 Dept dept = new Dept(); BeanUtils.copyProperties(dto, dept); @@ -141,5 +142,4 @@ public class DeptServiceImpl extends ServiceImpl implements De // 删除用户部门关联 userDeptMapper.deleteBatchIdsByDeptIdWithPhysics(ids); } - } diff --git a/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java index 4ddde5c..61a143c 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java @@ -68,10 +68,6 @@ public class EmailTemplateServiceImpl extends ServiceImpl emailTemplateList = list(Wrappers.lambdaQuery().eq(EmailTemplate::getTemplateName, dto.getTemplateName())); - if (!emailTemplateList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_EXIST); - // 保存数据 EmailTemplate emailTemplate = new EmailTemplate(); BeanUtils.copyProperties(dto, emailTemplate); diff --git a/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java index 7edf7e5..26d0fad 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/EmailUsersServiceImpl.java @@ -13,7 +13,6 @@ import cn.bunny.services.factory.EmailFactory; import cn.bunny.services.mapper.EmailUsersMapper; import cn.bunny.services.service.EmailUsersService; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.validation.Valid; @@ -74,10 +73,6 @@ public class EmailUsersServiceImpl extends ServiceImpl emailUsersList = list(Wrappers.lambdaQuery().eq(EmailUsers::getEmail, dto.getEmail())); - if (!emailUsersList.isEmpty()) throw new BunnyException(ResultCodeEnum.EMAIL_EXIST); - // 更新邮箱默认状态 emailFactory.updateEmailUserDefault(dto.getIsDefault()); diff --git a/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java index 42fa961..b500c5a 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/MenuIconServiceImpl.java @@ -18,6 +18,7 @@ import jakarta.validation.Valid; import org.springframework.beans.BeanUtils; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -32,6 +33,7 @@ import java.util.stream.Collectors; * @since 2024-10-02 12:18:29 */ @Service +@Transactional public class MenuIconServiceImpl extends ServiceImpl implements MenuIconService { /** @@ -92,7 +94,6 @@ public class MenuIconServiceImpl extends ServiceImpl i @Override @CacheEvict(cacheNames = "menuIcon", key = "'menuIconList'", beforeInvocation = true) public void addMenuIcon(MenuIconAddDto dto) { - // 保存数据 MenuIcon menuIcon = new MenuIcon(); BeanUtils.copyProperties(dto, menuIcon); save(menuIcon); @@ -106,7 +107,6 @@ public class MenuIconServiceImpl extends ServiceImpl i @Override @CacheEvict(cacheNames = "menuIcon", key = "'menuIconList'", beforeInvocation = true) public void updateMenuIcon(@Valid MenuIconUpdateDto dto) { - // 更新内容 MenuIcon menuIcon = new MenuIcon(); BeanUtils.copyProperties(dto, menuIcon); updateById(menuIcon); diff --git a/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java index 690f0a3..48782eb 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/RoleServiceImpl.java @@ -4,14 +4,15 @@ import cn.bunny.common.service.exception.BunnyException; import cn.bunny.dao.dto.system.rolePower.role.RoleAddDto; import cn.bunny.dao.dto.system.rolePower.role.RoleDto; import cn.bunny.dao.dto.system.rolePower.role.RoleUpdateDto; +import cn.bunny.dao.entity.system.AdminUser; import cn.bunny.dao.entity.system.Role; +import cn.bunny.dao.entity.system.UserRole; +import cn.bunny.dao.pojo.constant.RedisUserConstant; import cn.bunny.dao.pojo.result.PageResult; import cn.bunny.dao.pojo.result.ResultCodeEnum; import cn.bunny.dao.vo.system.rolePower.RoleVo; -import cn.bunny.services.mapper.RoleMapper; -import cn.bunny.services.mapper.RolePowerMapper; -import cn.bunny.services.mapper.RouterRoleMapper; -import cn.bunny.services.mapper.UserRoleMapper; +import cn.bunny.services.factory.UserFactory; +import cn.bunny.services.mapper.*; import cn.bunny.services.service.RoleService; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -22,6 +23,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.List; @@ -46,6 +48,15 @@ public class RoleServiceImpl extends ServiceImpl implements Ro @Autowired private RouterRoleMapper routerRoleMapper; + @Autowired + private UserMapper userMapper; + + @Autowired + private RedisTemplate redisTemplate; + + @Autowired + private UserFactory userFactory; + /** * * 角色 服务实现类 @@ -96,11 +107,6 @@ public class RoleServiceImpl extends ServiceImpl implements Ro @Override @CacheEvict(cacheNames = "role", key = "'allRole'", beforeInvocation = true) public void addRole(@Valid RoleAddDto dto) { - // 判断角色码是否被添加过 - List roleList = list(Wrappers.lambdaQuery().eq(Role::getRoleCode, dto.getRoleCode())); - if (!roleList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_EXIST); - - // 保存数据 Role role = new Role(); BeanUtils.copyProperties(dto, role); save(role); @@ -122,6 +128,24 @@ public class RoleServiceImpl extends ServiceImpl implements Ro Role role = new Role(); BeanUtils.copyProperties(dto, role); updateById(role); + + // 找到所有和当前更新角色相同的用户 + List userIds = userRoleMapper.selectList(Wrappers.lambdaQuery().eq(UserRole::getRoleId, dto.getId())) + .stream().map(UserRole::getUserId).toList(); + + // 根据Id查找所有用户 + List adminUsers = userMapper.selectList(Wrappers.lambdaQuery().in(AdminUser::getId, userIds)); + + // 用户为空时不更新Redis的key + if (adminUsers.isEmpty()) return; + + // 更新Redis中用户信息 + adminUsers.stream().filter(user -> { + String adminLoginInfoPrefix = RedisUserConstant.getAdminLoginInfoPrefix(user.getUsername()); + Object object = redisTemplate.opsForValue().get(adminLoginInfoPrefix); + return object != null; + }).forEach(user -> userFactory.buildUserVo(user, RedisUserConstant.REDIS_EXPIRATION_TIME)); + } /** @@ -146,6 +170,5 @@ public class RoleServiceImpl extends ServiceImpl implements Ro // 删除角色和路由相关 routerRoleMapper.deleteBatchIdsByRoleIdsWithPhysics(ids); - } } diff --git a/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java index 15df033..1585b75 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/RouterServiceImpl.java @@ -271,11 +271,11 @@ public class RouterServiceImpl extends ServiceImpl impleme List longList = list(Wrappers.lambdaQuery().in(Router::getParentId, ids)).stream().map(Router::getId).toList(); ids.addAll(longList); - // // 逻辑删除 - // removeBatchByIds(ids); + // 逻辑删除 + removeBatchByIds(ids); - // 物理删除 - baseMapper.deleteBatchIdsWithPhysics(ids); + // // 物理删除 + // baseMapper.deleteBatchIdsWithPhysics(ids); } /** diff --git a/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java index 4329d18..5da4253 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java @@ -422,21 +422,11 @@ public class UserServiceImpl extends ServiceImpl implemen */ @Override public void addAdminUser(@Valid AdminUserAddDto dto) { - AdminUser adminUser = getOne(Wrappers.lambdaQuery() - .eq(AdminUser::getEmail, dto.getEmail()) - .or() - .eq(AdminUser::getUsername, dto.getUsername())); - - // 确保邮箱和用户名不能重复 - if (adminUser != null) { - throw new BunnyException(ResultCodeEnum.ALREADY_USER_EXCEPTION); - } - // 对密码加密 String md5Password = DigestUtils.md5DigestAsHex(dto.getPassword().getBytes()); // 保存数据 - adminUser = new AdminUser(); + AdminUser adminUser = new AdminUser(); BeanUtils.copyProperties(dto, adminUser); adminUser.setPassword(md5Password); save(adminUser); diff --git a/service/src/main/resources/mapper/EmailTemplateMapper.xml b/service/src/main/resources/mapper/EmailTemplateMapper.xml index e738e80..0f8ed64 100644 --- a/service/src/main/resources/mapper/EmailTemplateMapper.xml +++ b/service/src/main/resources/mapper/EmailTemplateMapper.xml @@ -43,7 +43,6 @@ and type like CONCAT('%',#{dto.type},'%') - order by update_time desc