Template.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package models
  2. import (
  3. "time"
  4. "github.com/lifei6671/mindoc/conf"
  5. "github.com/astaxie/beego/orm"
  6. "github.com/astaxie/beego/logs"
  7. "github.com/astaxie/beego"
  8. "errors"
  9. )
  10. type Template struct {
  11. TemplateId int `orm:"column(template_id);pk;auto;unique;" json:"template_id"`
  12. TemplateName string `orm:"column(template_name);size(500);" json:"template_name"`
  13. MemberId int `orm:"column(member_id);index" json:"member_id"`
  14. BookId int `orm:"column(book_id);index" json:"book_id"`
  15. //是否是全局模板:0 否/1 是; 全局模板在所有项目中都可以使用;否则只能在创建模板的项目中使用
  16. IsGlobal int `orm:"column(is_global);default(0)" json:"is_global"`
  17. TemplateContent string `orm:"column(template_content);type(text);null" json:"template_content"`
  18. CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
  19. ModifyTime time.Time `orm:"column(modify_time);type(datetime);auto_now" json:"modify_time"`
  20. ModifyAt int `orm:"column(modify_at);type(int)" json:"-"`
  21. Version int64 `orm:"type(bigint);column(version)" json:"version"`
  22. }
  23. // TableName 获取对应数据库表名.
  24. func (m *Template) TableName() string {
  25. return "templates"
  26. }
  27. // TableEngine 获取数据使用的引擎.
  28. func (m *Template) TableEngine() string {
  29. return "INNODB"
  30. }
  31. func (m *Template) TableNameWithPrefix() string {
  32. return conf.GetDatabasePrefix() + m.TableName()
  33. }
  34. func NewTemplate() *Template {
  35. return &Template{}
  36. }
  37. //查询指定ID的模板
  38. func (t *Template) Find(templateId int) (*Template,error) {
  39. if templateId <= 0 {
  40. return t, ErrInvalidParameter
  41. }
  42. o := orm.NewOrm()
  43. err := o.QueryTable(t.TableNameWithPrefix()).Filter("template_id",templateId).One(t)
  44. if err != nil {
  45. logs.Error("查询模板时失败 ->%s",err)
  46. }
  47. return t,err
  48. }
  49. //查询属于指定项目的模板.
  50. func (t *Template) FindByBookId(bookId int) ([]*Template,error) {
  51. if bookId <= 0 {
  52. return nil,ErrInvalidParameter
  53. }
  54. o := orm.NewOrm()
  55. var templateList []*Template
  56. _,err := o.QueryTable(t.TableNameWithPrefix()).Filter("book_id",bookId).OrderBy("-template_id").All(&templateList)
  57. if err != nil {
  58. beego.Error("查询模板列表失败 ->",err)
  59. }
  60. return templateList,err
  61. }
  62. //查询指定项目所有可用模板列表.
  63. func (t *Template) FindAllByBookId(bookId int) ([]*Template,error) {
  64. if bookId <= 0 {
  65. return nil,ErrInvalidParameter
  66. }
  67. o := orm.NewOrm()
  68. cond := orm.NewCondition()
  69. cond1 := cond.And("book_id",bookId).Or("is_global",1)
  70. qs := o.QueryTable(t.TableNameWithPrefix())
  71. var templateList []*Template
  72. _,err := qs.SetCond(cond1).OrderBy("-template_id").All(&templateList)
  73. if err != nil {
  74. beego.Error("查询模板列表失败 ->",err)
  75. }
  76. return templateList,err
  77. }
  78. //删除一个模板
  79. func (t *Template) Delete(templateId int,memberId int) error {
  80. if templateId <= 0 {
  81. return ErrInvalidParameter
  82. }
  83. o := orm.NewOrm()
  84. qs := o.QueryTable(t.TableNameWithPrefix()).Filter("template_id",templateId)
  85. if memberId > 0 {
  86. qs = qs.Filter("member_id",memberId)
  87. }
  88. _,err := qs.Delete()
  89. if err != nil {
  90. beego.Error("删除模板失败 ->",err)
  91. }
  92. return err
  93. }
  94. //添加或更新模板
  95. func (t *Template) Save(cols ...string) (err error) {
  96. if t.BookId <= 0 {
  97. return ErrInvalidParameter
  98. }
  99. o := orm.NewOrm()
  100. if !o.QueryTable(NewBook()).Filter("book_id",t.BookId).Exist() {
  101. return errors.New("项目不存在")
  102. }
  103. if !o.QueryTable(NewMember()).Filter("member_id",t.MemberId).Filter("status",0).Exist() {
  104. return errors.New("用户已被禁用")
  105. }
  106. if t.TemplateId > 0 {
  107. t.Version = time.Now().Unix()
  108. t.ModifyTime = time.Now()
  109. _,err = o.Update(t,cols...)
  110. }else{
  111. t.CreateTime = time.Now()
  112. _,err = o.Insert(t)
  113. }
  114. return
  115. }