[ADD]增加留言功能
This commit is contained in:
parent
3f720e9776
commit
3c11ef2903
|
@ -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})
|
||||||
|
}
|
|
@ -32,6 +32,7 @@ func init() {
|
||||||
db.AutoMigrate(&User{},
|
db.AutoMigrate(&User{},
|
||||||
&Note{},
|
&Note{},
|
||||||
&Comment{},
|
&Comment{},
|
||||||
|
&Message{},
|
||||||
)
|
)
|
||||||
|
|
||||||
var count int
|
var count int
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
|
@ -21,5 +21,9 @@ func init() {
|
||||||
"comment",
|
"comment",
|
||||||
beego.NSInclude(&controllers.CommentController{}),
|
beego.NSInclude(&controllers.CommentController{}),
|
||||||
),
|
),
|
||||||
|
beego.NewNamespace(
|
||||||
|
"message",
|
||||||
|
beego.NSInclude(&controllers.MessageController{}),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,11 +13,11 @@
|
||||||
<div class="contar-wrap" id="contar-wrap">
|
<div class="contar-wrap" id="contar-wrap">
|
||||||
<form class="layui-form" action="">
|
<form class="layui-form" action="">
|
||||||
<div class="layui-form-item layui-form-text">
|
<div class="layui-form-item layui-form-text">
|
||||||
<textarea class="layui-textarea" id="LAY-msg-content" style="resize:none"></textarea>
|
<textarea name="content" class="layui-textarea" id="LAY-msg-content" style="resize:none"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="item-btn">
|
<div class="item-btn">
|
||||||
<button class="layui-btn layui-btn-normal" id="item-btn">提交</button>
|
<button type="button" class="layui-btn layui-btn-normal" id="message-item-btn">提交</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="LAY-msg-box">
|
<div id="LAY-msg-box">
|
||||||
|
@ -40,24 +40,121 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{template "shares/footer.html".}}
|
{{template "shares/footer.html".}}
|
||||||
<script id="LAY-msg-tpl" type="text/html">
|
{{str2html `
|
||||||
<div class="info-box">
|
<script id="LAY-msg-tpl" type="text/html">
|
||||||
<div class="info-item">
|
<div class="info-box">
|
||||||
<img class="info-img" src="{{ .Avatar }}" alt="">
|
<div class="info-item">
|
||||||
<div class="info-text">
|
<img class="info-img" src="{{ d.avatar }}" alt="">
|
||||||
<p class="title">
|
<div class="info-text">
|
||||||
<span class="name">{{ .Username }}</span>
|
<p class="title">
|
||||||
<span class="info-img">
|
<span class="name">{{ d.username }}</span>
|
||||||
<i class="layui-icon layui-icon-praise"></i>
|
<span class="info-img">
|
||||||
{{ .Praise }}
|
<i class="layui-icon layui-icon-praise"></i>
|
||||||
</span>
|
{{ d.praise }}
|
||||||
</p>
|
</span>
|
||||||
<p class="info-intr">
|
</p>
|
||||||
{{ .Content }}
|
<p class="info-intr">
|
||||||
</p>
|
{{ d.content }}
|
||||||
</div>
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</script>
|
||||||
</script>
|
`}}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['form',"jquery","layer"],function () {
|
||||||
|
var element = layui.element
|
||||||
|
, form = layui.form
|
||||||
|
, laypage = layui.laypage
|
||||||
|
, $ = layui.jquery
|
||||||
|
, laytpl = layui.laytpl;
|
||||||
|
function drawMessage(message) {
|
||||||
|
var view = $('#LAY-msg-tpl').html()
|
||||||
|
//模拟数据
|
||||||
|
,data = {
|
||||||
|
username: message.user.name
|
||||||
|
,avatar: message.user.avatar||'/static/images/info-img.png'
|
||||||
|
,praise: message.praise
|
||||||
|
,content: message.content
|
||||||
|
,key :message.key
|
||||||
|
};
|
||||||
|
//模板渲染
|
||||||
|
return layui.laytpl(view).render(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$('#message-item-btn').on('click', function(){
|
||||||
|
var elemCont = $('#LAY-msg-content')
|
||||||
|
,content = elemCont.val();
|
||||||
|
if(content.replace(/\s/g, '') == ""){
|
||||||
|
layer.msg('请先输入留言');
|
||||||
|
return elemCont.focus();
|
||||||
|
}
|
||||||
|
// 发送post请求
|
||||||
|
$.post("/message/create",{content: content},function (ret) {
|
||||||
|
if(ret.code==0){
|
||||||
|
|
||||||
|
var html = drawMessage(ret.data);
|
||||||
|
$('#LAY-msg-box').prepend(html);
|
||||||
|
elemCont.val('');
|
||||||
|
layer.msg('留言成功', {
|
||||||
|
icon: 1
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
layer.msg(ret.msg);
|
||||||
|
}
|
||||||
|
}).error(function () {
|
||||||
|
layer.msg("网络异常");
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
if($("#test1").size()>0) {
|
||||||
|
var count = 0;
|
||||||
|
$.ajax({
|
||||||
|
url: "message/count",
|
||||||
|
type: "GET",
|
||||||
|
async: false,//不是异步,是同步请求,等执行这段代码才能必须下面的代码
|
||||||
|
success: function (ret) {
|
||||||
|
count = ret.count;
|
||||||
|
},
|
||||||
|
error: function () {
|
||||||
|
layer.msg("网络异常")
|
||||||
|
}
|
||||||
|
});
|
||||||
|
console.log(count)
|
||||||
|
laypage.render({
|
||||||
|
elem: 'test1' //注意,这里的 test1 是 ID,不用加 # 号
|
||||||
|
, count: count //数据总数,从服务端得到
|
||||||
|
, theme: '#1e9fff'
|
||||||
|
, limit: 5
|
||||||
|
, jump: function (obj, first) {
|
||||||
|
//obj包含了当前分页的所有参数,比如:
|
||||||
|
console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
|
||||||
|
console.log(obj.limit); //得到每页显示的条数
|
||||||
|
//查询留言的路径为:/message/query
|
||||||
|
$.get("/message/query", {pageno: obj.curr, pagesize: obj.limit}, function (ret) {
|
||||||
|
if (ret.code == 0) {
|
||||||
|
// 循环后台返回的留言列表,拼出html页面
|
||||||
|
var datas = ret.data;
|
||||||
|
var html = "";
|
||||||
|
for (var i = 0; i < datas.length; i++) {
|
||||||
|
//拼页面
|
||||||
|
html += drawMessage(datas[i]);
|
||||||
|
}
|
||||||
|
var $html = $(html);
|
||||||
|
$("#LAY-msg-box").html($html);
|
||||||
|
} else {
|
||||||
|
layer.msg(ret.msg);
|
||||||
|
}
|
||||||
|
}).error(function () {
|
||||||
|
layer.msg("网络异常!")
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
Loading…
Reference in New Issue