🎨 新增用户登录日志记录

This commit is contained in:
2025-09-08 01:48:36 +08:00
parent df46c7ab29
commit a65266d033
8 changed files with 140 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ import (
"errors"
"fmt"
common "git.echol.cn/loser/lckt/model/common/request"
user2 "git.echol.cn/loser/lckt/model/user"
"gorm.io/gorm"
"strconv"
"time"
@@ -67,6 +68,24 @@ func (*AppUserApi) Login(ctx *gin.Context) {
return
}
// 添加登录日志
loginLog := user2.LoginLog{
UserId: user.ID,
UserName: user.NickName,
Phone: user.Phone,
Ip: ctx.ClientIP(),
Address: utils.GetIPAdcode(ctx.ClientIP()),
Device: ctx.Request.Header.Get("sec-ch-ua-platform"),
UserAgent: ctx.Request.UserAgent(),
Mode: "微信登录",
LoginTime: time.Now().Format("2006-01-02 15:04:05"),
}
err = global.GVA_DB.Create(&loginLog).Error
if err != nil {
global.GVA_LOG.Error("添加登录日志失败!", zap.Error(err))
}
if _, err = global.GVA_REDIS.Get(ctx, strconv.Itoa(int(user.ID))).Result(); errors.Is(err, redis.Nil) {
// 此处过期时间等于jwt过期时间
dr, err := utils.ParseDuration(global.GVA_CONFIG.JWT.ExpiresTime)
@@ -132,6 +151,24 @@ func (*AppUserApi) WechatLogin(ctx *gin.Context) {
}
user_jwt.SetToken(ctx, token, int(claims.RegisteredClaims.ExpiresAt.Unix()-time.Now().Unix()))
// 添加登录日志
loginLog := user2.LoginLog{
UserId: user.ID,
UserName: user.NickName,
Phone: user.Phone,
Ip: ctx.ClientIP(),
Address: utils.GetIPAdcode(ctx.ClientIP()),
Device: ctx.Request.Header.Get("sec-ch-ua-platform"),
UserAgent: ctx.Request.UserAgent(),
Mode: "微信登录",
LoginTime: time.Now().Format("2006-01-02 15:04:05"),
}
err = global.GVA_DB.Create(&loginLog).Error
if err != nil {
global.GVA_LOG.Error("添加登录日志失败!", zap.Error(err))
}
r.OkWithDetailed(gin.H{
"User": user,
"Token": token,

View File

@@ -171,3 +171,28 @@ func (a *UserApi) UpdateTeacherApplyStatus(context *gin.Context) {
}
r.OkWithMessage("更新教师申请状态成功", context)
}
// GetLoginLog 获取用户登录日志
func (a *UserApi) GetLoginLog(context *gin.Context) {
var p request.GetUserListReq
if err := context.ShouldBind(&p); err != nil {
global.GVA_LOG.Error("参数错误,获取登录日志失败", zap.Error(err))
r.FailWithMessage("参数错误,获取登录日志失败", context)
return
}
logs, total, err := userService.GetLoginLog(p)
if err != nil {
global.GVA_LOG.Error("获取登录日志失败", zap.Error(err))
r.FailWithMessage("获取登录日志失败", context)
return
}
r.OkWithDetailed(
r.PageResult{
List: logs,
Total: total,
Page: p.Page,
PageSize: p.PageSize,
}, "获取登录日志成功", context)
}