- 管理后台帖子与用户审核操作中添加失败错误重定向处理 - 管理后台帖子、用户、评论删除操作中添加错误检查及提示 - 用户角色更新操作失败时添加错误重定向 - 用户封禁通知失败时添加相应错误提示 - 登录登出时session保存加入错误处理 - 讨论区上传目录创建失败时显示错误提示 - 移除admin_dashboard.html多余样式及修正侧边栏当前页高亮 - admin_posts.html和admin_users.html添加状态样式动态使用的隐藏span元素 - admin_users.html为角色选择添加label以提升无障碍性 - 升级项目依赖版本,包含gin、gorm、validator等核心库版本更新
94 lines
2.2 KiB
Go
94 lines
2.2 KiB
Go
package controllers
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"lv8girl/internal/middleware"
|
|
"lv8girl/internal/repositories"
|
|
"lv8girl/internal/services"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type MessageController struct {
|
|
messageSvc *services.MessageService
|
|
userRepo *repositories.UserRepository
|
|
}
|
|
|
|
func NewMessageController() *MessageController {
|
|
return &MessageController{
|
|
messageSvc: services.NewMessageService(),
|
|
userRepo: repositories.NewUserRepository(),
|
|
}
|
|
}
|
|
|
|
func (c *MessageController) ShowMessages(ctx *gin.Context) {
|
|
currentUserID, currentUsername, currentUserRole, _ := middleware.GetCurrentUser(ctx)
|
|
|
|
conversations, _ := c.messageSvc.GetConversations(currentUserID)
|
|
|
|
ctx.HTML(http.StatusOK, "messages.html", gin.H{
|
|
"IsLoggedIn": true,
|
|
"UserID": currentUserID,
|
|
"Username": currentUsername,
|
|
"UserRole": currentUserRole,
|
|
"Conversations": conversations,
|
|
})
|
|
}
|
|
|
|
func (c *MessageController) ShowSendMessage(ctx *gin.Context) {
|
|
currentUserID, currentUsername, currentUserRole, _ := middleware.GetCurrentUser(ctx)
|
|
|
|
toUserID := parseUint(ctx.Query("to"))
|
|
if toUserID == 0 {
|
|
ctx.Redirect(http.StatusFound, "/")
|
|
return
|
|
}
|
|
|
|
receiver, err := c.userRepo.FindByID(toUserID)
|
|
if err != nil {
|
|
ctx.String(http.StatusNotFound, "用户不存在")
|
|
return
|
|
}
|
|
|
|
ctx.HTML(http.StatusOK, "send_message.html", gin.H{
|
|
"IsLoggedIn": true,
|
|
"UserID": currentUserID,
|
|
"Username": currentUsername,
|
|
"UserRole": currentUserRole,
|
|
"Receiver": receiver,
|
|
"Error": "",
|
|
"Success": "",
|
|
})
|
|
}
|
|
|
|
func (c *MessageController) SendMessage(ctx *gin.Context) {
|
|
currentUserID, _, _, _ := middleware.GetCurrentUser(ctx)
|
|
|
|
toUserID := parseUint(ctx.Query("to"))
|
|
content := strings.TrimSpace(ctx.PostForm("content"))
|
|
|
|
receiver, _ := c.userRepo.FindByID(toUserID)
|
|
|
|
if content == "" {
|
|
ctx.HTML(http.StatusOK, "send_message.html", gin.H{
|
|
"Receiver": receiver,
|
|
"Error": "消息内容不能为空",
|
|
"Success": "",
|
|
})
|
|
return
|
|
}
|
|
|
|
err := c.messageSvc.SendMessage(currentUserID, toUserID, content)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
ctx.HTML(http.StatusOK, "send_message.html", gin.H{
|
|
"Receiver": receiver,
|
|
"Error": "",
|
|
"Success": "消息已发送!",
|
|
})
|
|
}
|