From f5e0805bb5e4792cb8ed70ad163bbd4651c91766 Mon Sep 17 00:00:00 2001 From: whb <17803890193@163.com> Date: Tue, 24 Dec 2024 14:14:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=EF=BC=8C=E6=AF=8F=E4=BA=8C=E5=8D=81=E5=88=86=E9=92=9F?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E4=B8=80=E6=AC=A1=20=20=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=98=AF=E5=90=A6=E7=A6=BB=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trade/controller/task/TaskController.java | 4 +-- .../tch/TchLoginLogAndStuListController.java | 10 +++++-- .../TchLoginLogAndStuListServiceImpl.java | 30 ++++++++++++++----- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/sztzjy/trade/controller/task/TaskController.java b/src/main/java/com/sztzjy/trade/controller/task/TaskController.java index 0b4bc15..40068d0 100644 --- a/src/main/java/com/sztzjy/trade/controller/task/TaskController.java +++ b/src/main/java/com/sztzjy/trade/controller/task/TaskController.java @@ -33,7 +33,8 @@ public class TaskController { @Autowired private TchLoginLogMapper tchLoginLogMapper; - @Scheduled(fixedDelay = 10000) + //每二十分钟执行一次 查询用户是否离线 + @Scheduled(fixedDelay = 1200000) public void updateUserRank(){ Set keys = redisUtil.keys("userId:*"); for (String key : keys) { @@ -70,7 +71,6 @@ public class TaskController { } - redisUtil.del(key); } diff --git a/src/main/java/com/sztzjy/trade/controller/tch/TchLoginLogAndStuListController.java b/src/main/java/com/sztzjy/trade/controller/tch/TchLoginLogAndStuListController.java index 626600c..8320764 100644 --- a/src/main/java/com/sztzjy/trade/controller/tch/TchLoginLogAndStuListController.java +++ b/src/main/java/com/sztzjy/trade/controller/tch/TchLoginLogAndStuListController.java @@ -53,10 +53,14 @@ public class TchLoginLogAndStuListController { if (redisUtil.get("userId:"+loginLogDTO.getUserId())== null) { return new ResultEntity(HttpStatus.OK); } - //在线的登陆时间 - Long loginTime = redisUtil.get("userId:" + loginLogDTO.getUserId()); - loginLogDTO.setLoginTimeLast(Convert.toDate(loginTime)); + if (loginLogDTO.getLoginTimeLast() != null) { + //在线的登陆时间 + Long loginTime = redisUtil.get("userId:" + loginLogDTO.getUserId()); + + loginLogDTO.setLoginTimeLast(Convert.toDate(loginTime)); + } + return tchLoginLogAndStuListService.loginLog(loginLogDTO, request); diff --git a/src/main/java/com/sztzjy/trade/service/impl/TchLoginLogAndStuListServiceImpl.java b/src/main/java/com/sztzjy/trade/service/impl/TchLoginLogAndStuListServiceImpl.java index 9397842..fc49704 100644 --- a/src/main/java/com/sztzjy/trade/service/impl/TchLoginLogAndStuListServiceImpl.java +++ b/src/main/java/com/sztzjy/trade/service/impl/TchLoginLogAndStuListServiceImpl.java @@ -14,11 +14,13 @@ import com.sztzjy.trade.mapper.StuPublicNoticeReadInfoMapper; import com.sztzjy.trade.mapper.StuUserMapper; import com.sztzjy.trade.mapper.TchLoginLogMapper; import com.sztzjy.trade.service.TchLoginLogAndStuListService; +import com.sztzjy.trade.util.RedisUtil; import com.sztzjy.trade.util.ResultEntity; import com.sztzjy.trade.util.excel.FilePortUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.geolatte.geom.V; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.http.HttpStatus; @@ -47,6 +49,9 @@ public class TchLoginLogAndStuListServiceImpl implements TchLoginLogAndStuListSe @Autowired private StuUserMapper stuUserMapper; + @Autowired + private RedisUtil redisUtil; + /** * 登录/退出统计 * @@ -74,11 +79,11 @@ public class TchLoginLogAndStuListServiceImpl implements TchLoginLogAndStuListSe //登录时间不为空 - if (loginLogDTO.getLoginTimeLast() != null) { + if (loginLogDTO.getLoginTimeLast() != null ) { //loginTimeLast 都不为 null 的情况 TchLoginLogExample example = new TchLoginLogExample(); - example.setOrderByClause("exit_time_last desc"); + example.setOrderByClause("login_time_last desc"); example.createCriteria().andUserIdEqualTo(loginLogDTO.getUserId()).andSchoolIdEqualTo(loginLogDTO.getSchoolId()); List tchLoginLogList = tchLoginLogMapper.selectByExample(example); @@ -135,19 +140,30 @@ public class TchLoginLogAndStuListServiceImpl implements TchLoginLogAndStuListSe tchLoginLogMapper.insertSelective(tchLoginLogOld); return new ResultEntity<>(HttpStatus.OK, "success"); } + }else if (loginLogDTO.getExitTimeLast() != null) { + + exitLogin(loginLogDTO,ip,ipAddress); + return new ResultEntity(HttpStatus.BAD_REQUEST, "请重新登录!"); } + + return new ResultEntity(HttpStatus.BAD_REQUEST, "请重新登录!"); + + + } + + + public void exitLogin(LoginLogDTO loginLogDTO,String ip,String ipAddress){ //退出时间不为空 if (loginLogDTO.getExitTimeLast() != null) { TchLoginLogExample example = new TchLoginLogExample(); - example.setOrderByClause("exit_time_last desc"); - example.createCriteria().andUserIdEqualTo(loginLogDTO.getUserId()).andSchoolIdEqualTo(loginLogDTO.getSchoolId()); + example.createCriteria().andUserIdEqualTo(loginLogDTO.getUserId()).andSchoolIdEqualTo(loginLogDTO.getSchoolId()).andExitTimeLastIsNull(); List tchLoginLogList = tchLoginLogMapper.selectByExample(example); if (tchLoginLogList.isEmpty()) { //首次登录 - return new ResultEntity(HttpStatus.BAD_REQUEST, "请重新登录!"); + return; } else { @@ -176,15 +192,13 @@ public class TchLoginLogAndStuListServiceImpl implements TchLoginLogAndStuListSe tchLoginLog.setOnline((byte) 0); tchLoginLogMapper.updateByPrimaryKeySelective(tchLoginLog); + redisUtil.del("userId:"+loginLogDTO.getUserId()); - return new ResultEntity<>(HttpStatus.OK, "success"); } } - - return new ResultEntity(HttpStatus.BAD_REQUEST, "请重新登录!"); } //分页查询登录日志