From e6585fbca31f7f2997ba8558a18a769a204c9ba7 Mon Sep 17 00:00:00 2001 From: luohairen <3399054449@qq.com> Date: 星期一, 28 十月 2024 16:21:40 +0800 Subject: [PATCH] 解决时间线,时间展示问题 --- src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java | 43 ++++++++++++++++++++++++++++++++++++++----- 1 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java b/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java index a5ead92..a4f55de 100644 --- a/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java +++ b/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java @@ -1,10 +1,18 @@ package com.ycl.jxkg.config.spring.security; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ycl.jxkg.base.SystemCode; +import com.ycl.jxkg.constants.CaffeineConstant; +import com.ycl.jxkg.domain.entity.SysConfig; import com.ycl.jxkg.domain.entity.UserEventLog; +import com.ycl.jxkg.domain.vo.student.user.UserLoginVO; import com.ycl.jxkg.enums.general.YesOrNoEnum; import com.ycl.jxkg.event.UserEvent; +import com.ycl.jxkg.mapper.ClassesUserMapper; +import com.ycl.jxkg.mapper.SysConfigMapper; import com.ycl.jxkg.service.UserService; +import com.ycl.jxkg.utils.CaffeineUtil; +import com.ycl.jxkg.utils.DateTimeUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; @@ -12,12 +20,15 @@ import org.springframework.security.core.userdetails.User; import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Date; +import java.util.List; /** @@ -31,6 +42,10 @@ private final ApplicationEventPublisher eventPublisher; private final UserService userService; + private final CaffeineUtil caffeineUtil; + private final SysConfigMapper sysConfigMapper; + @Autowired + private ClassesUserMapper classesUserMapper; /** * Instantiates a new Rest authentication success handler. @@ -39,9 +54,11 @@ * @param userService the user service */ @Autowired - public RestAuthenticationSuccessHandler(ApplicationEventPublisher eventPublisher, UserService userService) { + public RestAuthenticationSuccessHandler(ApplicationEventPublisher eventPublisher, UserService userService, CaffeineUtil caffeineUtil, SysConfigMapper sysConfigMapper) { this.eventPublisher = eventPublisher; this.userService = userService; + this.caffeineUtil = caffeineUtil; + this.sysConfigMapper = sysConfigMapper; } @Override @@ -49,19 +66,35 @@ Object object = authentication.getPrincipal(); if (null != object) { User springUser = (User) object; + // 鐧诲綍涔嬪悗淇濆瓨鎴栨洿鏂� 鐢ㄦ埛鍚嶄笌session鐨勫叧绯� + String sessionId = request.getSession().getId(); + caffeineUtil.put(CaffeineConstant.AUTH, springUser.getUsername(), sessionId); com.ycl.jxkg.domain.entity.User user = userService.getUserByUserName(springUser.getUsername()); if (null != user) { + List<SysConfig> configList = new LambdaQueryChainWrapper<>(sysConfigMapper) + .list(); + Integer passwordExpireDays = 30; + if (configList.size() == 1) { + passwordExpireDays = configList.get(0).getPasswordExpireTime(); + } + Date now = new Date(); // 瀵嗙爜杩囨湡杩斿洖寮哄埗淇敼瀵嗙爜鏍囪瘑 - if (YesOrNoEnum.YES.equals(user.getNeedUpdatePassword())) { + if (DateTimeUtil.getTwoTimeDiffDay(now, user.getLastUpdatePasswordTime()) > passwordExpireDays) { RestUtil.response(response, 205, "瀵嗙爜杩囨湡锛岃淇敼瀵嗙爜", user.getId()); return; } + UserEventLog userEventLog = new UserEventLog(user.getId(), user.getUserName(), user.getRealName(), new Date()); userEventLog.setContent(user.getUserName() + " 鐧诲綍浜嗘睙瑗胯闊宠棰戝煿璁郴缁�"); eventPublisher.publishEvent(new UserEvent(userEventLog)); - com.ycl.jxkg.domain.entity.User newUser = new com.ycl.jxkg.domain.entity.User(); - BeanUtils.copyProperties(user,newUser); - RestUtil.response(response, SystemCode.OK.getCode(), SystemCode.OK.getMessage(), newUser); + // 淇敼鐢ㄦ埛鐨勬渶鍚庣櫥褰曟椂闂� + user.setLastActiveTime(new Date()); + userService.updateUser(user); + UserLoginVO userLoginVO = new UserLoginVO(); + BeanUtils.copyProperties(user,userLoginVO); + List<String> classesNames = classesUserMapper.getClassesNameByUserId(user.getId()); + userLoginVO.setClassName(classesNames); + RestUtil.response(response, SystemCode.OK.getCode(), SystemCode.OK.getMessage(), userLoginVO); } } else { RestUtil.response(response, SystemCode.UNAUTHORIZED.getCode(), SystemCode.UNAUTHORIZED.getMessage()); -- Gitblit v1.8.0