From ca9cf08aadbe36f4a133afe04c80dbe245d27b8e Mon Sep 17 00:00:00 2001 From: YuanYh <2972788632@qq.com> Date: Fri, 19 Apr 2024 22:39:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81=20?= =?UTF-8?q?=E5=BC=BA=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SysProfileController.java | 16 ++++++- .../system/controller/SysUserController.java | 22 +++++++-- .../com/muyu/system/mapper/SysUserMapper.java | 2 + .../muyu/system/service/SysUserService.java | 3 ++ .../service/impl/SysUserServiceImpl.java | 46 ++++++++++++++++++- .../resources/mapper/system/SysUserMapper.xml | 4 ++ 6 files changed, 88 insertions(+), 5 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..fe3f258 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,6 +21,7 @@ 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; /** @@ -38,6 +41,12 @@ public class SysProfileController extends BaseController { @Autowired private RemoteFileService remoteFileService; + @Autowired + private RedisService redisService; + + @Autowired + private HttpServletRequest request; + /** * 个人信息 */ @@ -87,11 +96,16 @@ public class SysProfileController extends BaseController { @PutMapping("/updatePwd") public Result updatePwd (String oldPassword, String newPassword) { String username = SecurityUtils.getUsername(); - SysUser user = userService.selectUserByUserName(username); + // SysUser user = userService.selectUserByUserName(username); + SysUser user = userService.selectUserByEmail(username); String password = user.getPassword(); if (!SecurityUtils.matchesPassword(oldPassword, password)) { return error("修改密码失败,旧密码错误"); } + //redis强退删除用户token + String userKey = CacheConstants.LOGIN_TOKEN_KEY + request.getHeader("Admin-Token"); + redisService.deleteObject(userKey); + if (SecurityUtils.matchesPassword(newPassword, password)) { return error("新密码不能与旧密码相同"); } 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 9811a0e..b73b55f 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 @@ -99,10 +99,24 @@ public class SysUserController extends BaseController { @InnerAuth @GetMapping("/info/{username}") public Result info (@PathVariable("username") String username) { - SysUser sysUser = userService.selectUserByUserName(username); - if (StringUtils.isNull(sysUser)) { - return Result.error("用户名或密码错误"); + String regular = "^" + + "(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@" + + "((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|" + + "(([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}))" + + "$"; + SysUser sysUser=null; + if (username.matches(regular)) { + sysUser = userService.selectUserByEmail(username); + if (StringUtils.isNull(sysUser)) { + return Result.error("邮箱或密码错误"); + } + }else { + sysUser = userService.selectUserByUserName(username); + if (StringUtils.isNull(sysUser)) { + return Result.error("用户名或密码错误"); + } } + // 角色集合 Set roles = permissionService.getRolePermission(sysUser); // 权限集合 @@ -152,6 +166,8 @@ public class SysUserController extends BaseController { ); } + + /** * 根据用户编号获取详细信息 */ diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java index e037b34..5120cb3 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java @@ -139,4 +139,6 @@ public interface SysUserMapper extends BaseMapper { * @return 结果 */ public SysUser checkEmailUnique (String email); + + SysUser selectUserByEmail(String username); } diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysUserService.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysUserService.java index f4c6167..70540b6 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysUserService.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysUserService.java @@ -225,4 +225,7 @@ public interface SysUserService extends IService { * @return 结果 */ public String importUser (List userList, Boolean isUpdateSupport, String operName); + + + SysUser selectUserByEmail(String username); } 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 ab88e1c..43e8a84 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 @@ -1,19 +1,25 @@ package com.muyu.system.service.impl; 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; @@ -23,8 +29,11 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import javax.servlet.http.HttpServletRequest; import javax.validation.Validator; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -51,6 +60,18 @@ 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; + /** * 根据条件分页查询用户列表 * @@ -338,7 +359,25 @@ public class SysUserServiceImpl extends ServiceImpl impl */ @Override public int resetPwd (SysUser user) { - return userMapper.updateUser(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; } /** @@ -500,4 +539,9 @@ public class SysUserServiceImpl extends ServiceImpl impl return successMsg.toString(); } + @Override + public SysUser selectUserByEmail(String username) { + return userMapper.selectUserByEmail(username); + } + } diff --git a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysUserMapper.xml b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysUserMapper.xml index 6f633b7..3b65c6a 100644 --- a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -183,6 +183,10 @@ and del_flag = '0' limit 1 + insert into sys_user(