[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{},
|
||||
&Note{},
|
||||
&Comment{},
|
||||
&Message{},
|
||||
)
|
||||
|
||||
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",
|
||||
beego.NSInclude(&controllers.CommentController{}),
|
||||
),
|
||||
beego.NewNamespace(
|
||||
"message",
|
||||
beego.NSInclude(&controllers.MessageController{}),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
|
@ -13,11 +13,11 @@
|
|||
<div class="contar-wrap" id="contar-wrap">
|
||||
<form class="layui-form" action="">
|
||||
<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>
|
||||
</form>
|
||||
<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 id="LAY-msg-box">
|
||||
|
@ -40,24 +40,121 @@
|
|||
</div>
|
||||
</div>
|
||||
{{template "shares/footer.html".}}
|
||||
<script id="LAY-msg-tpl" type="text/html">
|
||||
<div class="info-box">
|
||||
<div class="info-item">
|
||||
<img class="info-img" src="{{ .Avatar }}" alt="">
|
||||
<div class="info-text">
|
||||
<p class="title">
|
||||
<span class="name">{{ .Username }}</span>
|
||||
<span class="info-img">
|
||||
<i class="layui-icon layui-icon-praise"></i>
|
||||
{{ .Praise }}
|
||||
</span>
|
||||
</p>
|
||||
<p class="info-intr">
|
||||
{{ .Content }}
|
||||
</p>
|
||||
</div>
|
||||
{{str2html `
|
||||
<script id="LAY-msg-tpl" type="text/html">
|
||||
<div class="info-box">
|
||||
<div class="info-item">
|
||||
<img class="info-img" src="{{ d.avatar }}" alt="">
|
||||
<div class="info-text">
|
||||
<p class="title">
|
||||
<span class="name">{{ d.username }}</span>
|
||||
<span class="info-img">
|
||||
<i class="layui-icon layui-icon-praise"></i>
|
||||
{{ d.praise }}
|
||||
</span>
|
||||
</p>
|
||||
<p class="info-intr">
|
||||
{{ d.content }}
|
||||
</p>
|
||||
</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>
|
||||
|
|
Loading…
Reference in New Issue