lv8girl!
This commit is contained in:
89
internal/controllers/message.go
Normal file
89
internal/controllers/message.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"lv8girl/internal/middleware"
|
||||
"lv8girl/internal/repositories"
|
||||
"lv8girl/internal/services"
|
||||
)
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
c.messageSvc.SendMessage(currentUserID, toUserID, content)
|
||||
|
||||
ctx.HTML(http.StatusOK, "send_message.html", gin.H{
|
||||
"Receiver": receiver,
|
||||
"Error": "",
|
||||
"Success": "消息已发送!",
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user