feat:实现团队功能

This commit is contained in:
lifei6671
2018-11-05 18:50:01 +08:00
parent 1d8d74afb1
commit b897c87476
20 changed files with 1411 additions and 208 deletions

View File

@@ -63,17 +63,16 @@ func RegisterDataBase() {
if strings.HasPrefix(database, "./") {
database = filepath.Join(conf.WorkingDirectory, string(database[1:]))
}
if p,err := filepath.Abs(database); err == nil {
if p, err := filepath.Abs(database); err == nil {
database = p
}
dbPath := filepath.Dir(database)
if _,err := os.Stat(dbPath); err != nil && os.IsNotExist(err) {
if _, err := os.Stat(dbPath); err != nil && os.IsNotExist(err) {
os.MkdirAll(dbPath, 0777)
}
err := orm.RegisterDataBase("default", "sqlite3", database)
if err != nil {
@@ -102,6 +101,9 @@ func RegisterModel() {
new(models.Label),
new(models.Blog),
new(models.Template),
new(models.Team),
new(models.TeamMember),
new(models.TeamRelationship),
)
gob.Register(models.Blog{})
gob.Register(models.Document{})
@@ -120,11 +122,11 @@ func RegisterLogger(log string) {
logs.Async(1e3)
}
if log == "" {
logPath,err := filepath.Abs(beego.AppConfig.DefaultString("log_path",conf.WorkingDir("runtime","logs")))
logPath, err := filepath.Abs(beego.AppConfig.DefaultString("log_path", conf.WorkingDir("runtime", "logs")))
if err == nil {
log = logPath
}else{
log = conf.WorkingDir("runtime","logs")
} else {
log = conf.WorkingDir("runtime", "logs")
}
}
@@ -155,33 +157,39 @@ func RegisterLogger(log string) {
if level := beego.AppConfig.DefaultString("log_level", "Trace"); level != "" {
switch level {
case "Emergency":
config["level"] = beego.LevelEmergency;break
config["level"] = beego.LevelEmergency;
break
case "Alert":
config["level"] = beego.LevelAlert;break
config["level"] = beego.LevelAlert;
break
case "Critical":
config["level"] = beego.LevelCritical;break
config["level"] = beego.LevelCritical;
break
case "Error":
config["level"] = beego.LevelError; break
config["level"] = beego.LevelError;
break
case "Warning":
config["level"] = beego.LevelWarning; break
config["level"] = beego.LevelWarning;
break
case "Notice":
config["level"] = beego.LevelNotice; break
config["level"] = beego.LevelNotice;
break
case "Informational":
config["level"] = beego.LevelInformational;break
config["level"] = beego.LevelInformational;
break
case "Debug":
config["level"] = beego.LevelDebug;break
config["level"] = beego.LevelDebug;
break
}
}
b, err := json.Marshal(config);
if err != nil {
beego.Error("初始化文件日志时出错 ->",err)
beego.SetLogger("file", `{"filename":"`+ logPath + `"}`)
}else{
if err != nil {
beego.Error("初始化文件日志时出错 ->", err)
beego.SetLogger("file", `{"filename":"`+logPath+`"}`)
} else {
beego.SetLogger(logs.AdapterFile, string(b))
}
beego.SetLogFuncCall(true)
}
@@ -254,29 +262,29 @@ func ResolveCommand(args []string) {
}
if conf.ConfigurationFile == "" {
conf.ConfigurationFile = conf.WorkingDir( "conf", "app.conf")
conf.ConfigurationFile = conf.WorkingDir("conf", "app.conf")
config := conf.WorkingDir("conf", "app.conf.example")
if !filetil.FileExists(conf.ConfigurationFile) && filetil.FileExists(config) {
filetil.CopyFile(conf.ConfigurationFile, config)
}
}
if err := gocaptcha.ReadFonts(conf.WorkingDir( "static", "fonts"), ".ttf");err != nil {
log.Fatal("读取字体文件时出错 -> ",err)
if err := gocaptcha.ReadFonts(conf.WorkingDir("static", "fonts"), ".ttf"); err != nil {
log.Fatal("读取字体文件时出错 -> ", err)
}
if err := beego.LoadAppConfig("ini", conf.ConfigurationFile);err != nil {
if err := beego.LoadAppConfig("ini", conf.ConfigurationFile); err != nil {
log.Fatal("An error occurred:", err)
}
if conf.LogFile == "" {
logPath,err := filepath.Abs(beego.AppConfig.DefaultString("log_path",conf.WorkingDir("runtime","logs")))
logPath, err := filepath.Abs(beego.AppConfig.DefaultString("log_path", conf.WorkingDir("runtime", "logs")))
if err == nil {
conf.LogFile = logPath
}else{
conf.LogFile = conf.WorkingDir("runtime","logs")
} else {
conf.LogFile = conf.WorkingDir("runtime", "logs")
}
}
conf.AutoLoadDelay = beego.AppConfig.DefaultInt("config_auto_delay",0)
conf.AutoLoadDelay = beego.AppConfig.DefaultInt("config_auto_delay", 0)
uploads := conf.WorkingDir("uploads")
os.MkdirAll(uploads, 0666)
@@ -341,7 +349,7 @@ func RegisterCache() {
cache.Init(memory)
} else if cacheProvider == "redis" {
//设置Redis前缀
if key := beego.AppConfig.DefaultString("cache_redis_prefix",""); key != "" {
if key := beego.AppConfig.DefaultString("cache_redis_prefix", ""); key != "" {
redis.DefaultKey = key
}
var redisConfig struct {
@@ -394,20 +402,20 @@ func RegisterCache() {
} else {
cache.Init(&cache.NullCache{})
beego.Warn("不支持的缓存管道,缓存将禁用 ->" ,cacheProvider)
beego.Warn("不支持的缓存管道,缓存将禁用 ->", cacheProvider)
return
}
beego.Info("缓存初始化完成.")
}
//自动加载配置文件.修改了监听端口号和数据库配置无法自动生效.
func RegisterAutoLoadConfig() {
func RegisterAutoLoadConfig() {
if conf.AutoLoadDelay > 0 {
watcher, err := fsnotify.NewWatcher()
if err != nil {
beego.Error("创建配置文件监控器失败 ->",err)
beego.Error("创建配置文件监控器失败 ->", err)
}
go func() {
for {
@@ -436,7 +444,7 @@ func RegisterAutoLoadConfig() {
err = watcher.WatchFlags(conf.ConfigurationFile, fsnotify.FSN_MODIFY|fsnotify.FSN_RENAME)
if err != nil {
beego.Error("监控配置文件失败 ->",err)
beego.Error("监控配置文件失败 ->", err)
}
}
}
@@ -446,7 +454,7 @@ func init() {
if configPath, err := filepath.Abs(conf.ConfigurationFile); err == nil {
conf.ConfigurationFile = configPath
}
gocaptcha.ReadFonts(conf.WorkingDir("static","fonts"), ".ttf")
gocaptcha.ReadFonts(conf.WorkingDir("static", "fonts"), ".ttf")
gob.Register(models.Member{})
if p, err := filepath.Abs(os.Args[0]); err == nil {