优化页面、修复BUG
This commit is contained in:
83
server/handlers/code_type.go
Normal file
83
server/handlers/code_type.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/niangaodev/art-code/models"
|
||||
"github.com/niangaodev/art-code/repositories"
|
||||
"github.com/niangaodev/art-code/utils"
|
||||
)
|
||||
|
||||
func GetCodeTypes(c *gin.Context) {
|
||||
list, err := repositories.GetCodeTypes()
|
||||
if err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
utils.Success(c, repositories.BuildCodeTypesResponse(list))
|
||||
}
|
||||
|
||||
func AdminGetCodeTypes(c *gin.Context) {
|
||||
GetCodeTypes(c)
|
||||
}
|
||||
|
||||
func AdminCreateCodeType(c *gin.Context) {
|
||||
var ct models.CodeType
|
||||
if err := c.ShouldBindJSON(&ct); err != nil {
|
||||
utils.Error(c, 400, "Invalid request")
|
||||
return
|
||||
}
|
||||
if ct.Name == "" {
|
||||
utils.Error(c, 400, "Name is required")
|
||||
return
|
||||
}
|
||||
if err := repositories.CreateCodeType(&ct); err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
utils.SuccessWithMsg(c, "Code type created", repositories.BuildCodeTypeResponse(&ct))
|
||||
}
|
||||
|
||||
func AdminUpdateCodeType(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
var id uint
|
||||
if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil {
|
||||
utils.Error(c, 400, "Invalid ID")
|
||||
return
|
||||
}
|
||||
var ct models.CodeType
|
||||
if err := c.ShouldBindJSON(&ct); err != nil {
|
||||
utils.Error(c, 400, "Invalid request")
|
||||
return
|
||||
}
|
||||
ct.ID = id
|
||||
if err := repositories.UpdateCodeType(&ct); err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
utils.SuccessWithMsg(c, "Code type updated", nil)
|
||||
}
|
||||
|
||||
func AdminDeleteCodeType(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
var id uint
|
||||
if _, err := fmt.Sscanf(idStr, "%d", &id); err != nil {
|
||||
utils.Error(c, 400, "Invalid ID")
|
||||
return
|
||||
}
|
||||
count, err := repositories.CountSnippetsByCodeTypeID(id)
|
||||
if err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
if count > 0 {
|
||||
utils.Error(c, 400, "Cannot delete: snippets are using this code type")
|
||||
return
|
||||
}
|
||||
if err := repositories.DeleteCodeType(id); err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
}
|
||||
utils.SuccessWithMsg(c, "Code type deleted", nil)
|
||||
}
|
||||
@@ -12,7 +12,7 @@ import (
|
||||
|
||||
func AdminGetRecentActivities(c *gin.Context) {
|
||||
// 获取最近10条操作日志
|
||||
logs, _, err := repositories.GetOperationLogs(1, 10)
|
||||
logs, _, err := repositories.GetOperationLogs(1, 10, repositories.OperationLogFilter{})
|
||||
if err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
@@ -58,11 +58,9 @@ func AdminGetRecentActivities(c *gin.Context) {
|
||||
|
||||
// 获取操作日志列表
|
||||
func AdminGetOperationLogs(c *gin.Context) {
|
||||
// 获取分页参数
|
||||
page := 1
|
||||
pageSize := 10
|
||||
|
||||
// 从查询参数中获取分页信息
|
||||
if c.Query("page") != "" {
|
||||
if p, err := strconv.Atoi(c.Query("page")); err == nil {
|
||||
page = p
|
||||
@@ -75,8 +73,24 @@ func AdminGetOperationLogs(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
// 获取操作日志
|
||||
logs, total, err := repositories.GetOperationLogs(page, pageSize)
|
||||
filter := repositories.OperationLogFilter{
|
||||
Action: c.Query("action"),
|
||||
Method: c.Query("method"),
|
||||
StartDate: c.Query("startDate"),
|
||||
EndDate: c.Query("endDate"),
|
||||
}
|
||||
if statusStr := c.Query("status"); statusStr != "" {
|
||||
if s, err := strconv.Atoi(statusStr); err == nil {
|
||||
filter.Status = s
|
||||
}
|
||||
}
|
||||
if userIDStr := c.Query("userId"); userIDStr != "" {
|
||||
if uid, err := strconv.ParseUint(userIDStr, 10, 32); err == nil {
|
||||
filter.UserID = uint(uid)
|
||||
}
|
||||
}
|
||||
|
||||
logs, total, err := repositories.GetOperationLogs(page, pageSize, filter)
|
||||
if err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
@@ -145,8 +159,15 @@ func AdminGetAccessLogs(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
filter := repositories.AccessLogFilter{
|
||||
Path: c.Query("path"),
|
||||
Region: c.Query("region"),
|
||||
StartDate: c.Query("startDate"),
|
||||
EndDate: c.Query("endDate"),
|
||||
}
|
||||
|
||||
// 获取访问日志
|
||||
logs, total, err := repositories.GetAccessLogs(page, pageSize, nil)
|
||||
logs, total, err := repositories.GetAccessLogs(page, pageSize, nil, filter)
|
||||
if err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
|
||||
@@ -254,8 +254,10 @@ func AdminCreatePost(c *gin.Context) {
|
||||
|
||||
// 保存历史记录
|
||||
userID, _ := c.Get("userID")
|
||||
if err := repositories.SavePostHistory(&post, userID.(uint)); err != nil {
|
||||
log.Printf("Error saving post history: %v", err)
|
||||
if saved, err := repositories.GetPostByIDAdmin(post.ID); err == nil && saved != nil {
|
||||
if err := repositories.SavePostHistory(saved, userID.(uint)); err != nil {
|
||||
log.Printf("Error saving post history: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
utils.SuccessWithMsg(c, "Post created successfully", gin.H{"id": post.ID})
|
||||
@@ -287,8 +289,10 @@ func AdminUpdatePost(c *gin.Context) {
|
||||
|
||||
// 保存历史记录
|
||||
userID, _ := c.Get("userID")
|
||||
if err := repositories.SavePostHistory(&post, userID.(uint)); err != nil {
|
||||
log.Printf("Error saving post history: %v", err)
|
||||
if saved, err := repositories.GetPostByIDAdmin(postID); err == nil && saved != nil {
|
||||
if err := repositories.SavePostHistory(saved, userID.(uint)); err != nil {
|
||||
log.Printf("Error saving post history: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
utils.SuccessWithMsg(c, "Post updated successfully", nil)
|
||||
@@ -319,6 +323,11 @@ func AdminUpdatePostRelations(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
userID, _ := c.Get("userID")
|
||||
if saved, err := repositories.GetPostByIDAdmin(postID); err == nil && saved != nil {
|
||||
_ = repositories.SavePostHistory(saved, userID.(uint))
|
||||
}
|
||||
|
||||
utils.SuccessWithMsg(c, "Post relations updated successfully", nil)
|
||||
}
|
||||
|
||||
@@ -344,6 +353,11 @@ func AdminTogglePostStatus(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
userID, _ := c.Get("userID")
|
||||
if saved, err := repositories.GetPostByIDAdmin(postID); err == nil && saved != nil {
|
||||
_ = repositories.SavePostHistory(saved, userID.(uint))
|
||||
}
|
||||
|
||||
utils.SuccessWithMsg(c, "Post status updated successfully", nil)
|
||||
}
|
||||
|
||||
|
||||
@@ -79,6 +79,8 @@ func AdminCreateSnippet(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
syncSnippetTypeFromCodeType(&snippet)
|
||||
|
||||
if err := repositories.CreateSnippet(&snippet); err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
@@ -98,6 +100,7 @@ func AdminUpdateSnippet(c *gin.Context) {
|
||||
}
|
||||
|
||||
snippet.ID = idStr
|
||||
syncSnippetTypeFromCodeType(&snippet)
|
||||
|
||||
if err := repositories.UpdateSnippet(&snippet); err != nil {
|
||||
utils.ServerError(c, err)
|
||||
@@ -107,6 +110,16 @@ func AdminUpdateSnippet(c *gin.Context) {
|
||||
utils.SuccessWithMsg(c, "Snippet updated successfully", nil)
|
||||
}
|
||||
|
||||
func syncSnippetTypeFromCodeType(snippet *models.Snippet) {
|
||||
if snippet.CodeTypeID == 0 {
|
||||
return
|
||||
}
|
||||
ct, err := repositories.GetCodeTypeByID(snippet.CodeTypeID)
|
||||
if err == nil && ct != nil {
|
||||
snippet.Type = ct.Name
|
||||
}
|
||||
}
|
||||
|
||||
// AdminDeleteSnippet 删除代码片段
|
||||
func AdminDeleteSnippet(c *gin.Context) {
|
||||
idStr := c.Param("id")
|
||||
|
||||
@@ -15,7 +15,12 @@ func AdminGetUsers(c *gin.Context) {
|
||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
|
||||
|
||||
users, total, err := repositories.GetUsers(page, pageSize)
|
||||
keyword := c.Query("keyword")
|
||||
if keyword == "" {
|
||||
keyword = c.Query("q")
|
||||
}
|
||||
|
||||
users, total, err := repositories.GetUsers(page, pageSize, keyword)
|
||||
if err != nil {
|
||||
utils.ServerError(c, err)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user