| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 | 
							- package models
 
- import (
 
- 	"github.com/beego/beego/v2/adapter/orm"
 
- 	"github.com/mindoc-org/mindoc/conf"
 
- )
 
- // Option struct .
 
- type Option struct {
 
- 	OptionId    int    `orm:"column(option_id);pk;auto;unique;" json:"option_id"`
 
- 	OptionTitle string `orm:"column(option_title);size(500)" json:"option_title"`
 
- 	OptionName  string `orm:"column(option_name);unique;size(80)" json:"option_name"`
 
- 	OptionValue string `orm:"column(option_value);type(text);null" json:"option_value"`
 
- 	Remark      string `orm:"column(remark);type(text);null" json:"remark"`
 
- }
 
- // TableName 获取对应数据库表名.
 
- func (m *Option) TableName() string {
 
- 	return "options"
 
- }
 
- // TableEngine 获取数据使用的引擎.
 
- func (m *Option) TableEngine() string {
 
- 	return "INNODB"
 
- }
 
- func (m *Option) TableNameWithPrefix() string {
 
- 	return conf.GetDatabasePrefix() + m.TableName()
 
- }
 
- func NewOption() *Option {
 
- 	return &Option{}
 
- }
 
- func (p *Option) Find(id int) (*Option, error) {
 
- 	o := orm.NewOrm()
 
- 	p.OptionId = id
 
- 	if err := o.Read(p); err != nil {
 
- 		return p, err
 
- 	}
 
- 	return p, nil
 
- }
 
- func (p *Option) FindByKey(key string) (*Option, error) {
 
- 	o := orm.NewOrm()
 
- 	p.OptionName = key
 
- 	if err := o.Read(p); err != nil {
 
- 		return p, err
 
- 	}
 
- 	return p, nil
 
- }
 
- func GetOptionValue(key, def string) string {
 
- 	if option, err := NewOption().FindByKey(key); err == nil {
 
- 		return option.OptionValue
 
- 	}
 
- 	return def
 
- }
 
- func (p *Option) InsertOrUpdate() error {
 
- 	o := orm.NewOrm()
 
- 	var err error
 
- 	if p.OptionId > 0 || o.QueryTable(p.TableNameWithPrefix()).Filter("option_name", p.OptionName).Exist() {
 
- 		_, err = o.Update(p)
 
- 	} else {
 
- 		_, err = o.Insert(p)
 
- 	}
 
- 	return err
 
- }
 
- func (p *Option) InsertMulti(option ...Option) error {
 
- 	o := orm.NewOrm()
 
- 	_, err := o.InsertMulti(len(option), option)
 
- 	return err
 
- }
 
- func (p *Option) All() ([]*Option, error) {
 
- 	o := orm.NewOrm()
 
- 	var options []*Option
 
- 	_, err := o.QueryTable(p.TableNameWithPrefix()).All(&options)
 
- 	if err != nil {
 
- 		return options, err
 
- 	}
 
- 	return options, nil
 
- }
 
- func (m *Option) Init() error {
 
- 	o := orm.NewOrm()
 
- 	if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name", "ENABLED_REGISTER").Exist() {
 
- 		option := NewOption()
 
- 		option.OptionValue = "false"
 
- 		option.OptionName = "ENABLED_REGISTER"
 
- 		option.OptionTitle = "是否启用注册"
 
- 		if _, err := o.Insert(option); err != nil {
 
- 			return err
 
- 		}
 
- 	}
 
- 	if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name", "ENABLE_DOCUMENT_HISTORY").Exist() {
 
- 		option := NewOption()
 
- 		option.OptionValue = "true"
 
- 		option.OptionName = "ENABLE_DOCUMENT_HISTORY"
 
- 		option.OptionTitle = "是否启用文档历史"
 
- 		if _, err := o.Insert(option); err != nil {
 
- 			return err
 
- 		}
 
- 	}
 
- 	if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name", "ENABLED_CAPTCHA").Exist() {
 
- 		option := NewOption()
 
- 		option.OptionValue = "true"
 
- 		option.OptionName = "ENABLED_CAPTCHA"
 
- 		option.OptionTitle = "是否启用验证码"
 
- 		if _, err := o.Insert(option); err != nil {
 
- 			return err
 
- 		}
 
- 	}
 
- 	if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name", "ENABLE_ANONYMOUS").Exist() {
 
- 		option := NewOption()
 
- 		option.OptionValue = "false"
 
- 		option.OptionName = "ENABLE_ANONYMOUS"
 
- 		option.OptionTitle = "启用匿名访问"
 
- 		if _, err := o.Insert(option); err != nil {
 
- 			return err
 
- 		}
 
- 	}
 
- 	if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name", "SITE_NAME").Exist() {
 
- 		option := NewOption()
 
- 		option.OptionValue = "MinDoc文档管理系统"
 
- 		option.OptionName = "SITE_NAME"
 
- 		option.OptionTitle = "站点名称"
 
- 		if _, err := o.Insert(option); err != nil {
 
- 			return err
 
- 		}
 
- 	}
 
- 	if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name", "site_description").Exist() {
 
- 		option := NewOption()
 
- 		option.OptionValue = "MinDoc 是一款针对IT团队开发的简单好用的文档管理系统,可以用来储存日常接口文档,数据库字典,手册说明等文档。内置项目管理,用户管理,权限管理等功能,支持Markdown和富文本两种编辑器,能够满足大部分中小团队的文档管理需求。"
 
- 		option.OptionName = "site_description"
 
- 		option.OptionTitle = "站点描述"
 
- 		if _, err := o.Insert(option); err != nil {
 
- 			return err
 
- 		}
 
- 	}
 
- 	if !o.QueryTable(m.TableNameWithPrefix()).Filter("option_name", "site_beian").Exist() {
 
- 		option := NewOption()
 
- 		option.OptionValue = ""
 
- 		option.OptionName = "site_beian"
 
- 		option.OptionTitle = "域名备案"
 
- 		if _, err := o.Insert(option); err != nil {
 
- 			return err
 
- 		}
 
- 	}
 
- 	return nil
 
- }
 
 
  |