| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | package modelsimport (	"errors"	"github.com/astaxie/beego/orm"	"github.com/lifei6671/mindoc/conf"	"time")//Comment structtype Comment struct {	CommentId int `orm:"pk;auto;unique;column(comment_id)" json:"comment_id"`	Floor     int `orm:"column(floor);type(unsigned);default(0)" json:"floor"`	BookId    int `orm:"column(book_id);type(int)" json:"book_id"`	// DocumentId 评论所属的文档.	DocumentId int `orm:"column(document_id);type(int)" json:"document_id"`	// Author 评论作者.	Author string `orm:"column(author);size(100)" json:"author"`	//MemberId 评论用户ID.	MemberId int `orm:"column(member_id);type(int)" json:"member_id"`	// IPAddress 评论者的IP地址	IPAddress string `orm:"column(ip_address);size(100)" json:"ip_address"`	// 评论日期.	CommentDate time.Time `orm:"type(datetime);column(comment_date);auto_now_add" json:"comment_date"`	//Content 评论内容.	Content string `orm:"column(content);size(2000)" json:"content"`	// Approved 评论状态:0 待审核/1 已审核/2 垃圾评论/ 3 已删除	Approved int `orm:"column(approved);type(int)" json:"approved"`	// UserAgent 评论者浏览器内容	UserAgent string `orm:"column(user_agent);size(500)" json:"user_agent"`	// Parent 评论所属父级	ParentId     int `orm:"column(parent_id);type(int);default(0)" json:"parent_id"`	AgreeCount   int `orm:"column(agree_count);type(int);default(0)" json:"agree_count"`	AgainstCount int `orm:"column(against_count);type(int);default(0)" json:"against_count"`}// TableName 获取对应数据库表名.func (m *Comment) TableName() string {	return "comments"}// TableEngine 获取数据使用的引擎.func (m *Comment) TableEngine() string {	return "INNODB"}func (m *Comment) TableNameWithPrefix() string {	return conf.GetDatabasePrefix() + m.TableName()}func NewComment() *Comment {	return &Comment{}}func (m *Comment) Find(id int) (*Comment, error) {	if id <= 0 {		return m, ErrInvalidParameter	}	o := orm.NewOrm()	err := o.Read(m)	return m, err}func (m *Comment) Update(cols ...string) error {	o := orm.NewOrm()	_, err := o.Update(m, cols...)	return err}//Insert 添加一条评论.func (m *Comment) Insert() error {	if m.DocumentId <= 0 {		return errors.New("评论文档不存在")	}	if m.Content == "" {		return ErrCommentContentNotEmpty	}	o := orm.NewOrm()	if m.CommentId > 0 {		comment := NewComment()		//如果父评论不存在		if err := o.Read(comment); err != nil {			return err		}	}	document := NewDocument()	//如果评论的文档不存在	if _, err := document.Find(m.DocumentId); err != nil {		return err	}	book, err := NewBook().Find(document.BookId)	//如果评论的项目不存在	if err != nil {		return err	}	//如果已关闭评论	if book.CommentStatus == "closed" {		return ErrCommentClosed	}	if book.CommentStatus == "registered_only" && m.MemberId <= 0 {		return ErrPermissionDenied	}	//如果仅参与者评论	if book.CommentStatus == "group_only" {		if m.MemberId <= 0 {			return ErrPermissionDenied		}		rel := NewRelationship()		if _, err := rel.FindForRoleId(book.BookId, m.MemberId); err != nil {			return ErrPermissionDenied		}	}	if m.MemberId > 0 {		member := NewMember()		//如果用户不存在		if _, err := member.Find(m.MemberId); err != nil {			return ErrMemberNoExist		}		//如果用户被禁用		if member.Status == 1 {			return ErrMemberDisabled		}	} else if m.Author == "" {		m.Author = "[匿名用户]"	}	m.BookId = book.BookId	_, err = o.Insert(m)	return err}
 |