✨ 新增几大中心功能
This commit is contained in:
138
server/api/v1/admin/app_login_logs.go
Normal file
138
server/api/v1/admin/app_login_logs.go
Normal file
@@ -0,0 +1,138 @@
|
||||
package admin
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.echol.cn/loser/Go-Web-Template/server/global"
|
||||
appModel "git.echol.cn/loser/Go-Web-Template/server/model/app"
|
||||
"git.echol.cn/loser/Go-Web-Template/server/model/common/response"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type AppLoginLogsApi struct{}
|
||||
|
||||
type appLoginLogListItem struct {
|
||||
ID uint `json:"id"`
|
||||
AppUserID uint `json:"appUserId"`
|
||||
Username string `json:"username"`
|
||||
IP string `json:"ip"`
|
||||
Referer string `json:"referer,omitempty"`
|
||||
UserAgent string `json:"userAgent,omitempty"`
|
||||
Status bool `json:"status"`
|
||||
ErrorMessage string `json:"errorMessage,omitempty"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
}
|
||||
|
||||
type appLoginLogListResponse struct {
|
||||
List []appLoginLogListItem `json:"list"`
|
||||
Total int64 `json:"total"`
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"pageSize"`
|
||||
}
|
||||
|
||||
// GetAppLoginLogsList
|
||||
// @Tags AppLoginLogsAdmin
|
||||
// @Summary 后台获取玩家登录日志列表
|
||||
// @Security ApiKeyAuth
|
||||
// @Produce application/json
|
||||
// @Param page query int true "页码"
|
||||
// @Param pageSize query int true "每页条数"
|
||||
// @Param username query string false "用户名"
|
||||
// @Param ip query string false "IP"
|
||||
// @Param status query bool false "状态:true成功 false失败"
|
||||
// @Param startAt query string false "开始时间(ISO8601/RFC3339)"
|
||||
// @Param endAt query string false "结束时间(ISO8601/RFC3339)"
|
||||
// @Success 200 {object} response.Response{data=appLoginLogListResponse,msg=string} "获取成功"
|
||||
// @Router /admin/app-login-logs [get]
|
||||
func (a *AppLoginLogsApi) GetAppLoginLogsList(c *gin.Context) {
|
||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
|
||||
if page <= 0 {
|
||||
page = 1
|
||||
}
|
||||
if pageSize <= 0 || pageSize > 200 {
|
||||
pageSize = 10
|
||||
}
|
||||
|
||||
username := strings.TrimSpace(c.Query("username"))
|
||||
ip := strings.TrimSpace(c.Query("ip"))
|
||||
|
||||
var status *bool
|
||||
if raw := strings.TrimSpace(c.Query("status")); raw != "" {
|
||||
v, err := strconv.ParseBool(raw)
|
||||
if err == nil {
|
||||
status = &v
|
||||
}
|
||||
}
|
||||
|
||||
var startAt *time.Time
|
||||
if raw := strings.TrimSpace(c.Query("startAt")); raw != "" {
|
||||
if t, err := time.Parse(time.RFC3339, raw); err == nil {
|
||||
startAt = &t
|
||||
}
|
||||
}
|
||||
var endAt *time.Time
|
||||
if raw := strings.TrimSpace(c.Query("endAt")); raw != "" {
|
||||
if t, err := time.Parse(time.RFC3339, raw); err == nil {
|
||||
endAt = &t
|
||||
}
|
||||
}
|
||||
|
||||
db := global.GVA_DB.Model(&appModel.AppLoginLog{})
|
||||
if username != "" {
|
||||
db = db.Where("username LIKE ?", "%"+username+"%")
|
||||
}
|
||||
if ip != "" {
|
||||
db = db.Where("ip LIKE ?", "%"+ip+"%")
|
||||
}
|
||||
if status != nil {
|
||||
db = db.Where("status = ?", *status)
|
||||
}
|
||||
if startAt != nil {
|
||||
db = db.Where("created_at >= ?", *startAt)
|
||||
}
|
||||
if endAt != nil {
|
||||
db = db.Where("created_at <= ?", *endAt)
|
||||
}
|
||||
|
||||
var total int64
|
||||
if err := db.Count(&total).Error; err != nil {
|
||||
response.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
var rows []appModel.AppLoginLog
|
||||
if err := db.Order("id DESC").Offset((page - 1) * pageSize).Limit(pageSize).Find(&rows).Error; err != nil {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
rows = []appModel.AppLoginLog{}
|
||||
} else {
|
||||
response.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
items := make([]appLoginLogListItem, 0, len(rows))
|
||||
for _, r := range rows {
|
||||
items = append(items, appLoginLogListItem{
|
||||
ID: r.ID,
|
||||
AppUserID: r.AppUserID,
|
||||
Username: r.Username,
|
||||
IP: r.IP,
|
||||
Referer: r.Referer,
|
||||
UserAgent: r.UserAgent,
|
||||
Status: r.Status,
|
||||
ErrorMessage: r.ErrorMessage,
|
||||
CreatedAt: r.CreatedAt,
|
||||
})
|
||||
}
|
||||
|
||||
response.OkWithDetailed(appLoginLogListResponse{
|
||||
List: items,
|
||||
Total: total,
|
||||
Page: page,
|
||||
PageSize: pageSize,
|
||||
}, "获取成功", c)
|
||||
}
|
||||
Reference in New Issue
Block a user