Browse Source

login_log

lyhzzz 2 năm trước cách đây
mục cha
commit
78e5631214

+ 43 - 0
src/main/java/com/fdkankan/ucenter/entity/LoginLog.java

@@ -0,0 +1,43 @@
+package com.fdkankan.ucenter.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-28
+ */
+@Getter
+@Setter
+@TableName("t_login_log")
+public class LoginLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("user_name")
+    private String userName;
+
+    @TableField("ip")
+    private String ip;
+
+    @TableField("create_time")
+    private String createTime;
+
+    @TableField("update_time")
+    private String updateTime;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/ucenter/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"ucenter", getTables(new String[]{
-                "t_scene_plus_void",
+                "t_login_log",
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 5 - 0
src/main/java/com/fdkankan/ucenter/interceptor/UcenterInterceptor.java

@@ -1,6 +1,7 @@
 package com.fdkankan.ucenter.interceptor;
 
 
+import cn.hutool.extra.servlet.ServletUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.redis.constant.RedisKey;
@@ -8,6 +9,7 @@ import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.ucenter.common.RedisKeyUtil;
 import com.fdkankan.ucenter.common.Result;
 import com.fdkankan.ucenter.constant.LoginConstant;
+import com.fdkankan.ucenter.service.ILoginLogService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +26,8 @@ public class UcenterInterceptor implements HandlerInterceptor {
 
 	@Autowired
 	private RedisUtil redisUtil;
+	@Autowired
+	private ILoginLogService loginLogService;
 
 	@Override
 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
@@ -36,6 +40,7 @@ public class UcenterInterceptor implements HandlerInterceptor {
 		try {
 			String redisKey = String.format(RedisKey.TOKEN_V3,token);
 			if(redisUtil.hasKey(redisKey)){
+				loginLogService.addLog(ServletUtil.getClientIP(request),token);
 				redisUtil.expire(redisKey,2 * 60 * 60);
 				return true;
 			}

+ 18 - 0
src/main/java/com/fdkankan/ucenter/mapper/ILoginLogMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.ucenter.mapper;
+
+import com.fdkankan.ucenter.entity.LoginLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-28
+ */
+@Mapper
+public interface ILoginLogMapper extends BaseMapper<LoginLog> {
+
+}

+ 17 - 0
src/main/java/com/fdkankan/ucenter/service/ILoginLogService.java

@@ -0,0 +1,17 @@
+package com.fdkankan.ucenter.service;
+
+import com.fdkankan.ucenter.entity.LoginLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-28
+ */
+public interface ILoginLogService extends IService<LoginLog> {
+
+    void addLog(String clientIP, String token);
+}

+ 60 - 0
src/main/java/com/fdkankan/ucenter/service/impl/LoginLogServiceImpl.java

@@ -0,0 +1,60 @@
+package com.fdkankan.ucenter.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.ucenter.entity.LoginLog;
+import com.fdkankan.ucenter.mapper.ILoginLogMapper;
+import com.fdkankan.ucenter.service.ILoginLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.ucenter.util.DateUserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-28
+ */
+@Service
+public class LoginLogServiceImpl extends ServiceImpl<ILoginLogMapper, LoginLog> implements ILoginLogService {
+
+    @Autowired
+    RedisUtil redisUtil;
+
+    @Override
+    public void addLog(String clientIP, String token) {
+        try {
+            String tokenKey = "ucenter:active:token:"+ token;
+            if(redisUtil.hasKey(tokenKey)){
+                return;
+            }
+            String username = JwtUtil.getUsername(token);
+            String userNameKey = "ucenter:active:userName:"+ username;
+            if(redisUtil.hasKey(userNameKey)){
+                return;
+            }
+            LambdaQueryWrapper<LoginLog> wrapper = new LambdaQueryWrapper<>();
+            wrapper.between(LoginLog::getCreateTime, DateUserUtil.getZeroDate(),DateUserUtil.getLastDate());
+            LoginLog one = this.getOne(wrapper);
+            if(one == null){
+                one = new LoginLog();
+                one.setUserName(username);
+                one.setIp(clientIP);
+                this.save(one);
+                Long exTime = DateUserUtil.getLastNowTime();
+                if(exTime >10){
+                    redisUtil.set("ucenter:active:userName:"+ username,"1",exTime -10);
+                    redisUtil.set("ucenter:active:token:"+ token,"1",exTime -10);
+                }
+            }
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+}

+ 12 - 0
src/main/java/com/fdkankan/ucenter/util/DateUserUtil.java

@@ -26,6 +26,12 @@ public class DateUserUtil {
     public static String getDate(Date time){
         return new SimpleDateFormat(DEF_FMT).format(time);
     }
+    public static String getZeroDate(){
+        return new SimpleDateFormat(DAY_FMT).format(new Date()) +" 00:00:00";
+    }
+    public static String getLastDate(){
+        return new SimpleDateFormat(DAY_FMT).format(new Date()) +" 23:59:59";
+    }
 
     public static String getDayTime(String time) {
         try {
@@ -49,4 +55,10 @@ public class DateUserUtil {
             default: return dateTime;
         }
     }
+
+    public static Long getLastNowTime() {
+        Date date1 = new Date();
+        Date date2 = DateUserUtil.getDate(getLastDate());
+        return ( date2.getTime() - date1.getTime() ) /1000;
+    }
 }

+ 5 - 0
src/main/resources/mapper/ucenter/LoginLogMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.ucenter.mapper.ILoginLogMapper">
+
+</mapper>