mirror of
https://github.com/mindoc-org/mindoc.git
synced 2025-10-24 18:25:01 +08:00
feat:实现团队功能
This commit is contained in:
@@ -27,24 +27,30 @@ const PageSize = 10
|
||||
// 用户权限
|
||||
const (
|
||||
// 超级管理员.
|
||||
MemberSuperRole = 0
|
||||
MemberSuperRole SystemRole = iota
|
||||
//普通管理员.
|
||||
MemberAdminRole = 1
|
||||
MemberAdminRole
|
||||
//普通用户.
|
||||
MemberGeneralRole = 2
|
||||
MemberGeneralRole
|
||||
)
|
||||
|
||||
//系统角色
|
||||
type SystemRole int
|
||||
|
||||
const (
|
||||
// 创始人.
|
||||
BookFounder = 0
|
||||
BookFounder BookRole = iota
|
||||
//管理者
|
||||
BookAdmin = 1
|
||||
BookAdmin
|
||||
//编辑者.
|
||||
BookEditor = 2
|
||||
BookEditor
|
||||
//观察者
|
||||
BookObserver = 3
|
||||
BookObserver
|
||||
)
|
||||
|
||||
//项目角色
|
||||
type BookRole int
|
||||
|
||||
const (
|
||||
LoggerOperate = "operate"
|
||||
LoggerSystem = "system"
|
||||
@@ -68,8 +74,8 @@ var (
|
||||
ConfigurationFile = "./conf/app.conf"
|
||||
WorkingDirectory = "./"
|
||||
LogFile = "./runtime/logs"
|
||||
BaseUrl = ""
|
||||
AutoLoadDelay = 0
|
||||
BaseUrl = ""
|
||||
AutoLoadDelay = 0
|
||||
)
|
||||
|
||||
// app_key
|
||||
@@ -139,40 +145,45 @@ func GetUploadFileSize() int64 {
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
//是否启用导出
|
||||
func GetEnableExport() bool {
|
||||
return beego.AppConfig.DefaultBool("enable_export",true)
|
||||
return beego.AppConfig.DefaultBool("enable_export", true)
|
||||
}
|
||||
|
||||
//同一项目导出线程的并发数
|
||||
func GetExportProcessNum() int {
|
||||
exportProcessNum := beego.AppConfig.DefaultInt("export_process_num",1)
|
||||
exportProcessNum := beego.AppConfig.DefaultInt("export_process_num", 1)
|
||||
|
||||
if exportProcessNum <= 0 || exportProcessNum > 4 {
|
||||
exportProcessNum = 1
|
||||
}
|
||||
return exportProcessNum;
|
||||
}
|
||||
|
||||
//导出项目队列的并发数量
|
||||
func GetExportLimitNum() int {
|
||||
exportLimitNum := beego.AppConfig.DefaultInt("export_limit_num",1)
|
||||
exportLimitNum := beego.AppConfig.DefaultInt("export_limit_num", 1)
|
||||
|
||||
if exportLimitNum < 0 {
|
||||
exportLimitNum = 1
|
||||
}
|
||||
return exportLimitNum;
|
||||
}
|
||||
|
||||
//等待导出队列的长度
|
||||
func GetExportQueueLimitNum() int {
|
||||
exportQueueLimitNum := beego.AppConfig.DefaultInt("export_queue_limit_num",10)
|
||||
exportQueueLimitNum := beego.AppConfig.DefaultInt("export_queue_limit_num", 10)
|
||||
|
||||
if exportQueueLimitNum <= 0 {
|
||||
exportQueueLimitNum = 100
|
||||
}
|
||||
return exportQueueLimitNum
|
||||
}
|
||||
|
||||
//默认导出项目的缓存目录
|
||||
func GetExportOutputPath() string {
|
||||
exportOutputPath := filepath.Join(beego.AppConfig.DefaultString("export_output_path", filepath.Join(WorkingDirectory,"cache")),"books")
|
||||
exportOutputPath := filepath.Join(beego.AppConfig.DefaultString("export_output_path", filepath.Join(WorkingDirectory, "cache")), "books")
|
||||
|
||||
return exportOutputPath
|
||||
}
|
||||
@@ -187,7 +198,7 @@ func IsAllowUploadFileExt(ext string) bool {
|
||||
|
||||
for _, item := range exts {
|
||||
if item == "*" {
|
||||
return true
|
||||
return true
|
||||
}
|
||||
if strings.EqualFold(item, ext) {
|
||||
return true
|
||||
@@ -198,42 +209,42 @@ func IsAllowUploadFileExt(ext string) bool {
|
||||
|
||||
//重写生成URL的方法,加上完整的域名
|
||||
func URLFor(endpoint string, values ...interface{}) string {
|
||||
baseUrl := beego.AppConfig.DefaultString("baseurl","")
|
||||
baseUrl := beego.AppConfig.DefaultString("baseurl", "")
|
||||
pathUrl := beego.URLFor(endpoint, values ...)
|
||||
|
||||
if baseUrl == "" {
|
||||
baseUrl = BaseUrl
|
||||
}
|
||||
if strings.HasPrefix(pathUrl,"http://") {
|
||||
if strings.HasPrefix(pathUrl, "http://") {
|
||||
return pathUrl
|
||||
}
|
||||
if strings.HasPrefix(pathUrl,"/") && strings.HasSuffix(baseUrl,"/") {
|
||||
if strings.HasPrefix(pathUrl, "/") && strings.HasSuffix(baseUrl, "/") {
|
||||
return baseUrl + pathUrl[1:]
|
||||
}
|
||||
if !strings.HasPrefix(pathUrl,"/") && !strings.HasSuffix(baseUrl,"/") {
|
||||
if !strings.HasPrefix(pathUrl, "/") && !strings.HasSuffix(baseUrl, "/") {
|
||||
return baseUrl + "/" + pathUrl
|
||||
}
|
||||
return baseUrl + beego.URLFor(endpoint, values ...)
|
||||
return baseUrl + beego.URLFor(endpoint, values ...)
|
||||
}
|
||||
|
||||
func URLForWithCdnImage(p string) string {
|
||||
func URLForWithCdnImage(p string) string {
|
||||
if strings.HasPrefix(p, "http://") || strings.HasPrefix(p, "https://") {
|
||||
return p
|
||||
}
|
||||
cdn := beego.AppConfig.DefaultString("cdnimg", "")
|
||||
//如果没有设置cdn,则使用baseURL拼接
|
||||
if cdn == "" {
|
||||
baseUrl := beego.AppConfig.DefaultString("baseurl","")
|
||||
baseUrl := beego.AppConfig.DefaultString("baseurl", "")
|
||||
if baseUrl == "" {
|
||||
baseUrl = BaseUrl
|
||||
}
|
||||
if strings.HasPrefix(p,"/") && strings.HasSuffix(baseUrl,"/") {
|
||||
if strings.HasPrefix(p, "/") && strings.HasSuffix(baseUrl, "/") {
|
||||
return baseUrl + p[1:]
|
||||
}
|
||||
if !strings.HasPrefix(p,"/") && !strings.HasSuffix(baseUrl,"/") {
|
||||
if !strings.HasPrefix(p, "/") && !strings.HasSuffix(baseUrl, "/") {
|
||||
return baseUrl + "/" + p
|
||||
}
|
||||
return baseUrl + p
|
||||
return baseUrl + p
|
||||
}
|
||||
if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
|
||||
return cdn + string(p[1:])
|
||||
@@ -244,29 +255,29 @@ func URLForWithCdnImage(p string) string {
|
||||
return cdn + p
|
||||
}
|
||||
|
||||
func URLForWithCdnCss (p string,v ...string) string {
|
||||
func URLForWithCdnCss(p string, v ...string) string {
|
||||
cdn := beego.AppConfig.DefaultString("cdncss", "")
|
||||
if strings.HasPrefix(p, "http://") || strings.HasPrefix(p, "https://") {
|
||||
return p
|
||||
}
|
||||
filePath := WorkingDir(p)
|
||||
|
||||
if f,err := os.Stat(filePath); err == nil && !strings.Contains(p, "?") && len(v) > 0 && v[0] == "version" {
|
||||
p = p + fmt.Sprintf("?v=%s" , f.ModTime().Format("20060102150405"))
|
||||
if f, err := os.Stat(filePath); err == nil && !strings.Contains(p, "?") && len(v) > 0 && v[0] == "version" {
|
||||
p = p + fmt.Sprintf("?v=%s", f.ModTime().Format("20060102150405"))
|
||||
}
|
||||
//如果没有设置cdn,则使用baseURL拼接
|
||||
if cdn == "" {
|
||||
baseUrl := beego.AppConfig.DefaultString("baseurl","")
|
||||
baseUrl := beego.AppConfig.DefaultString("baseurl", "")
|
||||
if baseUrl == "" {
|
||||
baseUrl = BaseUrl
|
||||
}
|
||||
if strings.HasPrefix(p,"/") && strings.HasSuffix(baseUrl,"/") {
|
||||
if strings.HasPrefix(p, "/") && strings.HasSuffix(baseUrl, "/") {
|
||||
return baseUrl + p[1:]
|
||||
}
|
||||
if !strings.HasPrefix(p,"/") && !strings.HasSuffix(baseUrl,"/") {
|
||||
if !strings.HasPrefix(p, "/") && !strings.HasSuffix(baseUrl, "/") {
|
||||
return baseUrl + "/" + p
|
||||
}
|
||||
return baseUrl + p
|
||||
return baseUrl + p
|
||||
}
|
||||
if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
|
||||
return cdn + string(p[1:])
|
||||
@@ -277,7 +288,7 @@ func URLForWithCdnCss (p string,v ...string) string {
|
||||
return cdn + p
|
||||
}
|
||||
|
||||
func URLForWithCdnJs(p string,v ...string) string {
|
||||
func URLForWithCdnJs(p string, v ...string) string {
|
||||
cdn := beego.AppConfig.DefaultString("cdnjs", "")
|
||||
if strings.HasPrefix(p, "http://") || strings.HasPrefix(p, "https://") {
|
||||
return p
|
||||
@@ -285,23 +296,23 @@ func URLForWithCdnJs(p string,v ...string) string {
|
||||
|
||||
filePath := WorkingDir(p)
|
||||
|
||||
if f,err := os.Stat(filePath); err == nil && !strings.Contains(p, "?") && len(v) > 0 && v[0] == "version" {
|
||||
p = p + fmt.Sprintf("?v=%s" , f.ModTime().Format("20060102150405"))
|
||||
if f, err := os.Stat(filePath); err == nil && !strings.Contains(p, "?") && len(v) > 0 && v[0] == "version" {
|
||||
p = p + fmt.Sprintf("?v=%s", f.ModTime().Format("20060102150405"))
|
||||
}
|
||||
|
||||
//如果没有设置cdn,则使用baseURL拼接
|
||||
if cdn == "" {
|
||||
baseUrl := beego.AppConfig.DefaultString("baseurl","")
|
||||
baseUrl := beego.AppConfig.DefaultString("baseurl", "")
|
||||
if baseUrl == "" {
|
||||
baseUrl = BaseUrl
|
||||
}
|
||||
if strings.HasPrefix(p,"/") && strings.HasSuffix(baseUrl,"/") {
|
||||
if strings.HasPrefix(p, "/") && strings.HasSuffix(baseUrl, "/") {
|
||||
return baseUrl + p[1:]
|
||||
}
|
||||
if !strings.HasPrefix(p,"/") && !strings.HasSuffix(baseUrl,"/") {
|
||||
if !strings.HasPrefix(p, "/") && !strings.HasSuffix(baseUrl, "/") {
|
||||
return baseUrl + "/" + p
|
||||
}
|
||||
return baseUrl + p
|
||||
return baseUrl + p
|
||||
}
|
||||
if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
|
||||
return cdn + string(p[1:])
|
||||
@@ -314,19 +325,19 @@ func URLForWithCdnJs(p string,v ...string) string {
|
||||
|
||||
func WorkingDir(elem ...string) string {
|
||||
|
||||
elems := append([]string{ WorkingDirectory },elem...)
|
||||
elems := append([]string{WorkingDirectory}, elem...)
|
||||
|
||||
return filepath.Join(elems...)
|
||||
}
|
||||
|
||||
func init() {
|
||||
if p,err := filepath.Abs("./conf/app.conf"); err == nil {
|
||||
func init() {
|
||||
if p, err := filepath.Abs("./conf/app.conf"); err == nil {
|
||||
ConfigurationFile = p
|
||||
}
|
||||
if p,err := filepath.Abs("./"); err == nil {
|
||||
if p, err := filepath.Abs("./"); err == nil {
|
||||
WorkingDirectory = p
|
||||
}
|
||||
if p,err := filepath.Abs("./runtime/logs"); err == nil {
|
||||
if p, err := filepath.Abs("./runtime/logs"); err == nil {
|
||||
LogFile = p
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user