mirror of
https://github.com/mindoc-org/mindoc.git
synced 2026-02-27 17:03:57 +08:00
feat:1、实现自定义模板功能
2、实现项目附件和图片按照项目组织 3、优化自动发布功能解决大项目发布时的性能问题 4、修复删除项目没有删除附件的问题 5、增加项目封面大小 6、增加部分项目操作日志
This commit is contained in:
@@ -72,8 +72,8 @@ type Book struct {
|
||||
IsUseFirstDocument int `orm:"column(is_use_first_document);type(int);default(0)" json:"is_use_first_document"`
|
||||
}
|
||||
|
||||
func (b *Book) String() string {
|
||||
ret, err := json.Marshal(*b)
|
||||
func (book *Book) String() string {
|
||||
ret, err := json.Marshal(*book)
|
||||
|
||||
if err != nil {
|
||||
return ""
|
||||
@@ -136,13 +136,13 @@ func (book *Book) Insert() error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (book *Book) Find(id int) (*Book, error) {
|
||||
func (book *Book) Find(id int,cols ...string) (*Book, error) {
|
||||
if id <= 0 {
|
||||
return book, ErrInvalidParameter
|
||||
}
|
||||
o := orm.NewOrm()
|
||||
|
||||
err := o.QueryTable(book.TableNameWithPrefix()).Filter("book_id", id).One(book)
|
||||
err := o.QueryTable(book.TableNameWithPrefix()).Filter("book_id", id).One(book,cols...)
|
||||
|
||||
return book, err
|
||||
}
|
||||
@@ -221,7 +221,7 @@ func (book *Book) Copy(identify string) error {
|
||||
return err
|
||||
}
|
||||
if len(docs) > 0 {
|
||||
if err := recursiveInsertDocument(docs,o,book.BookId,0);err != nil {
|
||||
if err := recursiveInsertDocument(docs,o, book.BookId,0);err != nil {
|
||||
beego.Error("复制项目时出错 -> ",err)
|
||||
o.Rollback()
|
||||
return err
|
||||
@@ -371,31 +371,41 @@ func (book *Book) ThoroughDeleteBook(id int) error {
|
||||
}
|
||||
o.Begin()
|
||||
|
||||
sql2 := "DELETE FROM " + NewDocument().TableNameWithPrefix() + " WHERE book_id = ?"
|
||||
//删除附件,这里没有删除实际物理文件
|
||||
_,err = o.Raw("DELETE FROM " + NewAttachment().TableNameWithPrefix() + " WHERE book_id=?").Exec()
|
||||
if err != nil {
|
||||
o.Rollback()
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = o.Raw(sql2, book.BookId).Exec()
|
||||
//删除文档
|
||||
_, err = o.Raw( "DELETE FROM " + NewDocument().TableNameWithPrefix() + " WHERE book_id = ?", book.BookId).Exec()
|
||||
|
||||
if err != nil {
|
||||
o.Rollback()
|
||||
return err
|
||||
}
|
||||
sql3 := "DELETE FROM " + book.TableNameWithPrefix() + " WHERE book_id = ?"
|
||||
|
||||
_, err = o.Raw(sql3, book.BookId).Exec()
|
||||
//删除项目
|
||||
_, err = o.Raw("DELETE FROM " + book.TableNameWithPrefix() + " WHERE book_id = ?", book.BookId).Exec()
|
||||
|
||||
if err != nil {
|
||||
o.Rollback()
|
||||
return err
|
||||
}
|
||||
sql4 := "DELETE FROM " + NewRelationship().TableNameWithPrefix() + " WHERE book_id = ?"
|
||||
|
||||
_, err = o.Raw(sql4, book.BookId).Exec()
|
||||
|
||||
//删除关系
|
||||
_, err = o.Raw("DELETE FROM " + NewRelationship().TableNameWithPrefix() + " WHERE book_id = ?", book.BookId).Exec()
|
||||
if err != nil {
|
||||
o.Rollback()
|
||||
|
||||
return err
|
||||
}
|
||||
//删除模板
|
||||
_,err = o.Raw("DELETE FROM " + NewTemplate().TableNameWithPrefix() + " WHERE book_id = ?",book.BookId).Exec()
|
||||
if err != nil {
|
||||
o.Rollback()
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
if book.Label != "" {
|
||||
NewLabel().InsertOrUpdateMulti(book.Label)
|
||||
@@ -821,7 +831,7 @@ func (book *Book) ImportBook(zipPath string) error {
|
||||
beego.Error("导入项目异常 => ", err)
|
||||
book.Description = "【项目导入存在错误:" + err.Error() + "】"
|
||||
}
|
||||
beego.Info("项目导入完毕 => ",book.BookName)
|
||||
beego.Info("项目导入完毕 => ", book.BookName)
|
||||
book.ReleaseContent(book.BookId)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -204,11 +204,10 @@ func (m *Member) Update(cols ...string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Member) Find(id int) (*Member, error) {
|
||||
func (m *Member) Find(id int,cols ...string) (*Member, error) {
|
||||
o := orm.NewOrm()
|
||||
|
||||
m.MemberId = id
|
||||
if err := o.Read(m); err != nil {
|
||||
if err := o.QueryTable(m.TableNameWithPrefix()).Filter("member_id",id).One(m,cols...); err != nil {
|
||||
return m, err
|
||||
}
|
||||
m.ResolveRoleName()
|
||||
@@ -408,6 +407,18 @@ func (m *Member) Delete(oldId int, newId int) error {
|
||||
o.Rollback()
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = o.Raw("UPDATE md_templates SET modify_at = ? WHERE modify_at = ?", newId, oldId).Exec()
|
||||
if err != nil {
|
||||
o.Rollback()
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = o.Raw("UPDATE md_templates SET member_id = ? WHERE member_id = ?", newId, oldId).Exec()
|
||||
if err != nil {
|
||||
o.Rollback()
|
||||
return err
|
||||
}
|
||||
//_,err = o.Raw("UPDATE md_relationship SET member_id = ? WHERE member_id = ?",newId,oldId).Exec()
|
||||
//if err != nil {
|
||||
//
|
||||
|
||||
@@ -14,12 +14,15 @@ type Template struct {
|
||||
TemplateName string `orm:"column(template_name);size(500);" json:"template_name"`
|
||||
MemberId int `orm:"column(member_id);index" json:"member_id"`
|
||||
BookId int `orm:"column(book_id);index" json:"book_id"`
|
||||
BookName string `orm:"-" json:"book_name"`
|
||||
//是否是全局模板:0 否/1 是; 全局模板在所有项目中都可以使用;否则只能在创建模板的项目中使用
|
||||
IsGlobal int `orm:"column(is_global);default(0)" json:"is_global"`
|
||||
TemplateContent string `orm:"column(template_content);type(text);null" json:"template_content"`
|
||||
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
|
||||
CreateName string `orm:"-" json:"create_name"`
|
||||
ModifyTime time.Time `orm:"column(modify_time);type(datetime);auto_now" json:"modify_time"`
|
||||
ModifyAt int `orm:"column(modify_at);type(int)" json:"-"`
|
||||
ModifyName string `orm:"-" json:"modify_name"`
|
||||
Version int64 `orm:"type(bigint);column(version)" json:"version"`
|
||||
}
|
||||
|
||||
@@ -125,14 +128,15 @@ func (t *Template) Save(cols ...string) (err error) {
|
||||
}
|
||||
o := orm.NewOrm()
|
||||
|
||||
if !o.QueryTable(NewBook()).Filter("book_id",t.BookId).Exist() {
|
||||
if !o.QueryTable(NewBook().TableNameWithPrefix()).Filter("book_id",t.BookId).Exist() {
|
||||
return errors.New("项目不存在")
|
||||
}
|
||||
if !o.QueryTable(NewMember()).Filter("member_id",t.MemberId).Filter("status",0).Exist() {
|
||||
if !o.QueryTable(NewMember().TableNameWithPrefix()).Filter("member_id",t.MemberId).Filter("status",0).Exist() {
|
||||
return errors.New("用户已被禁用")
|
||||
}
|
||||
t.Version = time.Now().Unix()
|
||||
|
||||
if t.TemplateId > 0 {
|
||||
t.Version = time.Now().Unix()
|
||||
t.ModifyTime = time.Now()
|
||||
_,err = o.Update(t,cols...)
|
||||
}else{
|
||||
@@ -143,8 +147,38 @@ func (t *Template) Save(cols ...string) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
|
||||
//预加载一些数据
|
||||
func (t *Template) Preload() *Template {
|
||||
if t != nil {
|
||||
if t.MemberId > 0 {
|
||||
m,err := NewMember().Find(t.MemberId,"account","real_name");
|
||||
if err == nil {
|
||||
if m.RealName != "" {
|
||||
t.CreateName = m.RealName
|
||||
}else{
|
||||
t.CreateName = m.Account
|
||||
}
|
||||
}else{
|
||||
beego.Error("加载模板所有者失败 ->",err)
|
||||
}
|
||||
}
|
||||
if t.ModifyAt > 0 {
|
||||
if m,err := NewMember().Find(t.ModifyAt,"account","real_name"); err == nil {
|
||||
if m.RealName != "" {
|
||||
t.ModifyName = m.RealName
|
||||
}else{
|
||||
t.ModifyName = m.Account
|
||||
}
|
||||
}
|
||||
}
|
||||
if t.BookId > 0 {
|
||||
if b,err := NewBook().Find(t.BookId,"book_name");err == nil {
|
||||
t.BookName = b.BookName
|
||||
}
|
||||
}
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user