diff --git a/controllers/message.go b/controllers/message.go new file mode 100644 index 0000000..e7c9f22 --- /dev/null +++ b/controllers/message.go @@ -0,0 +1,67 @@ +package controllers + +import ( + "liteblog/models" + "liteblog/syserrors" + "log" +) + +type MessageController struct { + BaseController +} + +// 新增留言 +// @router /create [post] +func(c *MessageController) NewMessage() { + log.Print("开始留言了...") + + c.MustLogin() + content := c.GetMustString("content", "请输入评论内容") + k := c.UUID() + + message := &models.Message{ + Key: k, + User: c.User, + UserId: int(c.User.ID), + Content: content, + } + + if err := models.SaveMessage(message); err != nil { + log.Print(err) + log.Print("保存失败了") + + c.Abort500(syserrors.NewError("保存失败", err)) + } + + c.JSONOkH("保存成功", H{"data": message}) +} + +// @router /count [get] +func(c *MessageController) Count() { + count, err := models.QueryMessageCount(); + if err != nil { + c.Abort500(syserrors.NewError("查询失败", err)) + } + + c.JSONOkH("查询成功", H{"count": count}) +} + +// @router /query [get] +func(c *MessageController) Query() { + pageNo, err := c.GetInt("pageno", 1) + if err != nil || pageNo < 1 { + pageNo = 1 + } + + pageSize, err := c.GetInt("pagesize", 10) + if err != nil || pageSize < 0 { + pageSize = 10 + } + + messages, err := models.QueryMessageByPage(pageNo, pageSize) + if err != nil { + c.Abort500(syserrors.NewError("查询错误", err)) + } + + c.JSONOkH("查询成功", H{"data": messages}) +} \ No newline at end of file diff --git a/models/core.go b/models/core.go index 12bbbb5..a59c2ae 100644 --- a/models/core.go +++ b/models/core.go @@ -32,6 +32,7 @@ func init() { db.AutoMigrate(&User{}, &Note{}, &Comment{}, + &Message{}, ) var count int diff --git a/models/message.go b/models/message.go new file mode 100644 index 0000000..5d59dc7 --- /dev/null +++ b/models/message.go @@ -0,0 +1,23 @@ +package models + +type Message struct { + Model + Key string `gorm:"unique_index; not null" json:"key"` + Content string `json:"content"` + UserId int `json:"user_id"` + User User `json:"user"` + Praise int `gorm:"default:0" json:"praise"` +} + +func QueryMessageByPage(page int, limit int) (messages []*Message, err error) { + err = db.Offset((page - 1) * limit).Limit(limit).Find(&messages).Error + return messages, err +} + +func QueryMessageCount() (count int, err error) { + return count, db.Model(&Message{}).Count(&count).Error +} + +func SaveMessage(message *Message) (err error) { + return db.Save(&message).Error +} \ No newline at end of file diff --git a/routers/router.go b/routers/router.go index c5a8b28..02f8052 100644 --- a/routers/router.go +++ b/routers/router.go @@ -21,5 +21,9 @@ func init() { "comment", beego.NSInclude(&controllers.CommentController{}), ), + beego.NewNamespace( + "message", + beego.NSInclude(&controllers.MessageController{}), + ), ) } diff --git a/views/message.html b/views/message.html index 282c1f4..8c75736 100755 --- a/views/message.html +++ b/views/message.html @@ -13,11 +13,11 @@
- +
- +
@@ -40,24 +40,121 @@
{{template "shares/footer.html".}} - + + `}} +