mirror of https://github.com/mindoc-org/mindoc.git
提交评论时,判断文章是否存在。删除时判断是否有权限删除。
parent
3d12583eba
commit
27dea7b8bd
|
@ -4,8 +4,6 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/astaxie/beego"
|
|
||||||
|
|
||||||
"github.com/mindoc-org/mindoc/conf"
|
"github.com/mindoc-org/mindoc/conf"
|
||||||
"github.com/mindoc-org/mindoc/models"
|
"github.com/mindoc-org/mindoc/models"
|
||||||
"github.com/mindoc-org/mindoc/utils/pagination"
|
"github.com/mindoc-org/mindoc/utils/pagination"
|
||||||
|
@ -19,10 +17,8 @@ func (c *CommentController) Lists() {
|
||||||
docid, _ := c.GetInt("docid", 0)
|
docid, _ := c.GetInt("docid", 0)
|
||||||
pageIndex, _ := c.GetInt("page", 1)
|
pageIndex, _ := c.GetInt("page", 1)
|
||||||
|
|
||||||
beego.Info("CommentController.Lists", docid, pageIndex)
|
|
||||||
|
|
||||||
// 获取评论、分页
|
// 获取评论、分页
|
||||||
comments, count, pageIndex := models.NewComment().QueryCommentByDocumentId(docid, pageIndex, conf.PageSize, c.Member.MemberId)
|
comments, count, pageIndex := models.NewComment().QueryCommentByDocumentId(docid, pageIndex, conf.PageSize, c.Member)
|
||||||
page := pagination.PageUtil(int(count), pageIndex, conf.PageSize, comments)
|
page := pagination.PageUtil(int(count), pageIndex, conf.PageSize, comments)
|
||||||
|
|
||||||
var data struct {
|
var data struct {
|
||||||
|
@ -40,6 +36,11 @@ func (c *CommentController) Create() {
|
||||||
content := c.GetString("content")
|
content := c.GetString("content")
|
||||||
id, _ := c.GetInt("doc_id")
|
id, _ := c.GetInt("doc_id")
|
||||||
|
|
||||||
|
_, err := models.NewDocument().Find(id)
|
||||||
|
if err != nil {
|
||||||
|
c.JsonResult(1, "文章不存在")
|
||||||
|
}
|
||||||
|
|
||||||
m := models.NewComment()
|
m := models.NewComment()
|
||||||
m.DocumentId = id
|
m.DocumentId = id
|
||||||
if len(c.Member.RealName) != 0 {
|
if len(c.Member.RealName) != 0 {
|
||||||
|
@ -52,7 +53,6 @@ func (c *CommentController) Create() {
|
||||||
m.IPAddress = strings.Split(m.IPAddress, ":")[0]
|
m.IPAddress = strings.Split(m.IPAddress, ":")[0]
|
||||||
m.CommentDate = time.Now()
|
m.CommentDate = time.Now()
|
||||||
m.Content = content
|
m.Content = content
|
||||||
beego.Info(m)
|
|
||||||
m.Insert()
|
m.Insert()
|
||||||
|
|
||||||
var data struct {
|
var data struct {
|
||||||
|
@ -71,14 +71,27 @@ func (c *CommentController) Index() {
|
||||||
func (c *CommentController) Delete() {
|
func (c *CommentController) Delete() {
|
||||||
if c.Ctx.Input.IsPost() {
|
if c.Ctx.Input.IsPost() {
|
||||||
id, _ := c.GetInt("id", 0)
|
id, _ := c.GetInt("id", 0)
|
||||||
beego.Info("delete id=", id)
|
m, err := models.NewComment().Find(id)
|
||||||
m := models.NewComment()
|
if err != nil {
|
||||||
m.CommentId = id
|
c.JsonResult(1, "评论不存在")
|
||||||
|
}
|
||||||
|
|
||||||
|
doc, err := models.NewDocument().Find(m.DocumentId)
|
||||||
|
if err != nil {
|
||||||
|
c.JsonResult(1, "文章不存在")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 判断是否有权限删除
|
||||||
|
bookRole, _ := models.NewRelationship().FindForRoleId(doc.BookId, c.Member.MemberId)
|
||||||
|
if m.CanDelete(c.Member.MemberId, bookRole) {
|
||||||
err := m.Delete()
|
err := m.Delete()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JsonResult(1, "删除错误")
|
c.JsonResult(1, "删除错误")
|
||||||
} else {
|
} else {
|
||||||
c.JsonResult(0, "ok")
|
c.JsonResult(0, "ok")
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
c.JsonResult(1, "没有权限删除")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ func (c *DocumentController) Index() {
|
||||||
c.Data["DocumentId"] = doc.DocumentId
|
c.Data["DocumentId"] = doc.DocumentId
|
||||||
|
|
||||||
// 获取评论、分页
|
// 获取评论、分页
|
||||||
comments, count, _ := models.NewComment().QueryCommentByDocumentId(doc.DocumentId, 1, conf.PageSize, c.Member.MemberId)
|
comments, count, _ := models.NewComment().QueryCommentByDocumentId(doc.DocumentId, 1, conf.PageSize, c.Member)
|
||||||
page := pagination.PageUtil(int(count), 1, conf.PageSize, comments)
|
page := pagination.PageUtil(int(count), 1, conf.PageSize, comments)
|
||||||
c.Data["Page"] = page
|
c.Data["Page"] = page
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ func (c *DocumentController) Read() {
|
||||||
c.Data["ViewCount"] = doc.ViewCount + 1
|
c.Data["ViewCount"] = doc.ViewCount + 1
|
||||||
|
|
||||||
// 获取评论、分页
|
// 获取评论、分页
|
||||||
comments, count, _ := models.NewComment().QueryCommentByDocumentId(doc.DocumentId, 1, conf.PageSize, c.Member.MemberId)
|
comments, count, _ := models.NewComment().QueryCommentByDocumentId(doc.DocumentId, 1, conf.PageSize, c.Member)
|
||||||
page := pagination.PageUtil(int(count), 1, conf.PageSize, comments)
|
page := pagination.PageUtil(int(count), 1, conf.PageSize, comments)
|
||||||
c.Data["Page"] = page
|
c.Data["Page"] = page
|
||||||
|
|
||||||
|
|
|
@ -55,18 +55,18 @@ func NewComment() *Comment {
|
||||||
return &Comment{}
|
return &Comment{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Comment) Find(id int) (*Comment, error) {
|
// 是否有权限删除
|
||||||
if id <= 0 {
|
func (m *Comment) CanDelete(user_memberid int, user_bookrole conf.BookRole) bool {
|
||||||
return m, ErrInvalidParameter
|
return user_memberid == m.MemberId || user_bookrole == conf.BookFounder || user_bookrole == conf.BookAdmin
|
||||||
}
|
|
||||||
o := orm.NewOrm()
|
|
||||||
err := o.Read(m)
|
|
||||||
|
|
||||||
return m, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据文档id查询文档评论
|
// 根据文档id查询文档评论
|
||||||
func (m *Comment) QueryCommentByDocumentId(doc_id, page, pagesize, userid int) (comments []Comment, count int64, ret_page int) {
|
func (m *Comment) QueryCommentByDocumentId(doc_id, page, pagesize int, member *Member) (comments []Comment, count int64, ret_page int) {
|
||||||
|
doc, err := NewDocument().Find(doc_id)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
o := orm.NewOrm()
|
o := orm.NewOrm()
|
||||||
count, _ = o.QueryTable(m.TableNameWithPrefix()).Filter("document_id", doc_id).Count()
|
count, _ = o.QueryTable(m.TableNameWithPrefix()).Filter("document_id", doc_id).Count()
|
||||||
if -1 == page { // 请求最后一页
|
if -1 == page { // 请求最后一页
|
||||||
|
@ -80,9 +80,11 @@ func (m *Comment) QueryCommentByDocumentId(doc_id, page, pagesize, userid int) (
|
||||||
offset := (page - 1) * pagesize
|
offset := (page - 1) * pagesize
|
||||||
ret_page = page
|
ret_page = page
|
||||||
o.QueryTable(m.TableNameWithPrefix()).Filter("document_id", doc_id).OrderBy("comment_date").Offset(offset).Limit(pagesize).All(&comments)
|
o.QueryTable(m.TableNameWithPrefix()).Filter("document_id", doc_id).OrderBy("comment_date").Offset(offset).Limit(pagesize).All(&comments)
|
||||||
|
|
||||||
|
bookRole, _ := NewRelationship().FindForRoleId(doc.BookId, member.MemberId)
|
||||||
for i := 0; i < len(comments); i++ {
|
for i := 0; i < len(comments); i++ {
|
||||||
comments[i].Index = (i + 1) + (page - 1) * pagesize
|
comments[i].Index = (i + 1) + (page - 1) * pagesize
|
||||||
if userid == comments[i].MemberId {
|
if comments[i].CanDelete(member.MemberId, bookRole) {
|
||||||
comments[i].ShowDel = 1
|
comments[i].ShowDel = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,3 +171,11 @@ func (m *Comment) Delete() error {
|
||||||
_, err := o.Delete(m)
|
_, err := o.Delete(m)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Comment) Find(id int, cols ...string) (*Comment, error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
if err := o.QueryTable(m.TableNameWithPrefix()).Filter("comment_id", id).One(m, cols...); err != nil {
|
||||||
|
return m, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
|
@ -46,22 +46,6 @@ function format($d) {
|
||||||
return $d < 10 ? "0" + $d : "" + $d;
|
return $d < 10 ? "0" + $d : "" + $d;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showError($msg, $id) {
|
|
||||||
if (!$id) {
|
|
||||||
$id = "#form-error-message"
|
|
||||||
}
|
|
||||||
$($id).addClass("text-danger").removeClass("text-success").text($msg);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function showSuccess($msg, $id) {
|
|
||||||
if (!$id) {
|
|
||||||
$id = "#form-error-message"
|
|
||||||
}
|
|
||||||
$($id).addClass("text-success").removeClass("text-danger").text($msg);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function timeFormat($time) {
|
function timeFormat($time) {
|
||||||
var span = Date.parse($time)
|
var span = Date.parse($time)
|
||||||
var date = new Date(span)
|
var date = new Date(span)
|
||||||
|
@ -391,17 +375,17 @@ $(function () {
|
||||||
},
|
},
|
||||||
success : function (res) {
|
success : function (res) {
|
||||||
if(res.errcode === 0){
|
if(res.errcode === 0){
|
||||||
showSuccess("保存成功")
|
layer.msg("保存成功");
|
||||||
}else{
|
}else{
|
||||||
showError("保存失败")
|
layer.msg("保存失败");
|
||||||
}
|
}
|
||||||
$("#btnSubmitComment").button("reset");
|
$("#btnSubmitComment").button("reset");
|
||||||
$("#commentContent").val("");
|
$("#commentContent").val("");
|
||||||
pageClicked(-1, res.data.doc_id); // -1 表示请求最后一页
|
pageClicked(-1, res.data.doc_id); // -1 表示请求最后一页
|
||||||
},
|
},
|
||||||
error : function () {
|
error : function () {
|
||||||
showError("服务错误");
|
layer.msg("服务错误");
|
||||||
$("#btnSaveBookInfo").button("reset");
|
$("#btnSubmitComment").button("reset");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
|
@ -205,7 +205,6 @@
|
||||||
<input type="hidden" name="doc_id" id="doc_id" value="{{.DocumentId}}">
|
<input type="hidden" name="doc_id" id="doc_id" value="{{.DocumentId}}">
|
||||||
</label>
|
</label>
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<span id="form-error-message" class="error-message"></span>
|
|
||||||
<button class="btn btn-success btn-sm" type="submit" id="btnSubmitComment" data-loading-text="提交中...">提交评论</button>
|
<button class="btn btn-success btn-sm" type="submit" id="btnSubmitComment" data-loading-text="提交中...">提交评论</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
Loading…
Reference in New Issue