From b8901b21ba4fd77f1cacfb64d1adee5f4bb55498 Mon Sep 17 00:00:00 2001 From: Saisai Liu <1374434128@qq.com> Date: Fri, 12 Apr 2024 16:22:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=AF=E5=90=8E=E5=8F=B0=E6=94=B9=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E5=89=94=E9=99=A4=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SysProfileController.java | 12 ++++++ .../system/controller/SysUserController.java | 1 + .../service/impl/SysUserServiceImpl.java | 42 +++++++++++++++++-- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysProfileController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysProfileController.java index ae49255..bd5786e 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysProfileController.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysProfileController.java @@ -1,5 +1,6 @@ package com.muyu.system.controller; +import com.muyu.common.core.constant.CacheConstants; import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.file.FileTypeUtils; @@ -7,6 +8,7 @@ import com.muyu.common.core.utils.file.MimeTypeUtils; import com.muyu.common.core.web.controller.BaseController; import com.muyu.common.log.annotation.Log; import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.redis.service.RedisService; import com.muyu.common.security.service.TokenService; import com.muyu.common.security.utils.SecurityUtils; import com.muyu.common.system.remote.RemoteFileService; @@ -19,7 +21,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import java.util.Arrays; +import java.util.concurrent.TimeUnit; /** * 个人信息 业务处理 @@ -38,6 +42,12 @@ public class SysProfileController extends BaseController { @Autowired private RemoteFileService remoteFileService; + @Autowired + private RedisService redisService; + + @Autowired + private HttpServletRequest request; + /** * 个人信息 */ @@ -95,6 +105,8 @@ public class SysProfileController extends BaseController { if (SecurityUtils.matchesPassword(newPassword, password)) { return error("新密码不能与旧密码相同"); } + String userKey = CacheConstants.LOGIN_TOKEN_KEY+request.getHeader("Admin-Token"); + redisService.deleteObject(userKey); if (userService.resetUserPwd(username, SecurityUtils.encryptPassword(newPassword)) > 0) { // 更新缓存用户密码 LoginUser loginUser = SecurityUtils.getLoginUser(); diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java index 1e969fd..e219de6 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java @@ -238,6 +238,7 @@ public class SysUserController extends BaseController { userService.checkUserDataScope(user.getUserId()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); user.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(userService.resetPwd(user)); } diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java index bc4f448..3fe7422 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java @@ -2,19 +2,25 @@ package com.muyu.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.constant.CacheConstants; import com.muyu.common.core.constant.UserConstants; import com.muyu.common.core.exception.ServiceException; import com.muyu.common.core.utils.SpringUtils; import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.bean.BeanValidators; import com.muyu.common.datascope.annotation.DataScope; +import com.muyu.common.redis.service.RedisService; +import com.muyu.common.security.service.TokenService; import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.common.system.domain.LoginUser; import com.muyu.common.system.domain.SysRole; import com.muyu.common.system.domain.SysUser; import com.muyu.system.domain.SysPost; +import com.muyu.system.domain.SysUserOnline; import com.muyu.system.domain.SysUserPost; import com.muyu.system.domain.SysUserRole; import com.muyu.system.mapper.*; +import com.muyu.system.service.SysUserOnlineService; import com.muyu.system.service.SysUserService; import com.muyu.system.service.SysConfigService; import org.slf4j.Logger; @@ -24,9 +30,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; import javax.validation.Validator; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +59,17 @@ public class SysUserServiceImpl extends ServiceImpl impl @Autowired private SysConfigService configService; + @Autowired + private SysUserOnlineService userOnlineService; + @Autowired + private TokenService tokenService; + + @Autowired + private HttpServletRequest request; + + @Autowired + private RedisService redisService; + /** * 根据条件分页查询用户列表 * @@ -327,7 +345,25 @@ public class SysUserServiceImpl extends ServiceImpl impl */ @Override public int resetPwd(SysUser user) { - return userMapper.updateUser(user); + int i = userMapper.updateUser(user); + if (i>0){ + Collection keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); + List userOnlineList = new ArrayList(); + for (String key : keys) { + LoginUser userRedis = redisService.getCacheObject(key); + userOnlineList.add(userOnlineService.loginUserToUserOnline(userRedis)); + } + Collections.reverse(userOnlineList); + userOnlineList.removeAll(Collections.singleton(null)); + SysUser one = this.selectUserById(user.getUserId()); + userOnlineList.forEach(sysUserOnline -> { + if (sysUserOnline.getUserName().equals(one.getUserName())){ + redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + sysUserOnline.getTokenId()); + } + }); + } + + return i; } /**