优化工作路径拼接方法

pull/358/head
lifei6671 2018-07-11 14:18:27 +08:00
parent a5d7be92af
commit 894382dfe0
5 changed files with 39 additions and 16 deletions

View File

@ -194,32 +194,31 @@ func ResolveCommand(args []string) {
} }
} }
if conf.LogFile == "" { if conf.LogFile == "" {
conf.LogFile = filepath.Join(conf.WorkingDirectory, "logs") conf.LogFile = conf.WorkingDir("runtime","logs")
} }
if conf.ConfigurationFile == "" { if conf.ConfigurationFile == "" {
conf.ConfigurationFile = filepath.Join(conf.WorkingDirectory, "conf", "app.conf") conf.ConfigurationFile = conf.WorkingDir( "conf", "app.conf")
config := filepath.Join(conf.WorkingDirectory, "conf", "app.conf.example") config := conf.WorkingDir("conf", "app.conf.example")
if !filetil.FileExists(conf.ConfigurationFile) && filetil.FileExists(config) { if !filetil.FileExists(conf.ConfigurationFile) && filetil.FileExists(config) {
filetil.CopyFile(conf.ConfigurationFile, config) filetil.CopyFile(conf.ConfigurationFile, config)
} }
} }
gocaptcha.ReadFonts(filepath.Join(conf.WorkingDirectory, "static", "fonts"), ".ttf") if err := gocaptcha.ReadFonts(conf.WorkingDir( "static", "fonts"), ".ttf");err != nil {
log.Fatal("读取字体文件时出错 -> ",err)
err := beego.LoadAppConfig("ini", conf.ConfigurationFile)
if err != nil {
log.Println("An error occurred:", err)
os.Exit(1)
} }
uploads := filepath.Join(conf.WorkingDirectory, "uploads")
if err := beego.LoadAppConfig("ini", conf.ConfigurationFile);err != nil {
log.Fatal("An error occurred:", err)
}
uploads := conf.WorkingDir("uploads")
os.MkdirAll(uploads, 0666) os.MkdirAll(uploads, 0666)
beego.BConfig.WebConfig.StaticDir["/static"] = filepath.Join(conf.WorkingDirectory, "static") beego.BConfig.WebConfig.StaticDir["/static"] = filepath.Join(conf.WorkingDirectory, "static")
beego.BConfig.WebConfig.StaticDir["/uploads"] = uploads beego.BConfig.WebConfig.StaticDir["/uploads"] = uploads
beego.BConfig.WebConfig.ViewsPath = filepath.Join(conf.WorkingDirectory, "views") beego.BConfig.WebConfig.ViewsPath = conf.WorkingDir("views")
fonts := filepath.Join(conf.WorkingDirectory, "static", "fonts") fonts := conf.WorkingDir("static", "fonts")
if !filetil.FileExists(fonts) { if !filetil.FileExists(fonts) {
log.Fatal("Font path not exist.") log.Fatal("Font path not exist.")

View File

@ -289,4 +289,11 @@ func URLForWithCdnJs(p string) string {
return cdn + "/" + p return cdn + "/" + p
} }
return cdn + p return cdn + p
}
func WorkingDir(elem ...string) string {
elems := append([]string{ WorkingDirectory },elem...)
return filepath.Join(elems...)
} }

View File

@ -882,7 +882,10 @@ func (c *DocumentController) Export() {
c.Abort("200") c.Abort("200")
}else if output == "pdf" || output == "epub" || output == "docx" || output == "mobi"{ }else if output == "pdf" || output == "epub" || output == "docx" || output == "mobi"{
models.BackgroupConvert(c.CruSession.SessionID(),bookResult) if err := models.BackgroupConvert(c.CruSession.SessionID(),bookResult);err != nil {
c.ShowErrorPage(500,"导出失败,请查看系统日志")
}
c.ShowErrorPage(200,"文档正在后台转换,请稍后再下载") c.ShowErrorPage(200,"文档正在后台转换,请稍后再下载")
}else{ }else{
c.ShowErrorPage(200,"不支持的文件格式") c.ShowErrorPage(200,"不支持的文件格式")

View File

@ -72,6 +72,13 @@ var (
ebookConvert = "ebook-convert" ebookConvert = "ebook-convert"
) )
func CheckConvertCommand() error {
args := []string{ "--version" }
cmd := exec.Command(ebookConvert, args...)
return cmd.Run()
}
// 接口文档 https://manual.calibre-ebook.com/generated/en/ebook-convert.html#table-of-contents // 接口文档 https://manual.calibre-ebook.com/generated/en/ebook-convert.html#table-of-contents
//根据json配置文件创建文档转化对象 //根据json配置文件创建文档转化对象
func NewConverter(configFile string, debug ...bool) (converter *Converter, err error) { func NewConverter(configFile string, debug ...bool) (converter *Converter, err error) {

View File

@ -27,7 +27,7 @@ import (
) )
var( var(
exportLimitWorkerChannel = gopool.NewChannelPool(conf.GetExportProcessNum(),conf.GetExportQueueLimitNum()) exportLimitWorkerChannel = gopool.NewChannelPool(conf.GetExportLimitNum(),conf.GetExportQueueLimitNum())
) )
type BookResult struct { type BookResult struct {
@ -215,14 +215,21 @@ func (m *BookResult) ToBookResult(book Book) *BookResult {
} }
//后台转换 //后台转换
func BackgroupConvert(sessionId string,bookResult *BookResult){ func BackgroupConvert(sessionId string,bookResult *BookResult) error {
if err := converter.CheckConvertCommand(); err != nil {
beego.Error("检查转换程序失败 -> ",err)
return err
}
err := exportLimitWorkerChannel.LoadOrStore(bookResult.Identify, func() { err := exportLimitWorkerChannel.LoadOrStore(bookResult.Identify, func() {
bookResult.Converter(sessionId) bookResult.Converter(sessionId)
}) })
if err != nil { if err != nil {
beego.Error("将导出任务加入任务队列失败 -> ",err) beego.Error("将导出任务加入任务队列失败 -> ",err)
return err
} }
exportLimitWorkerChannel.Start() exportLimitWorkerChannel.Start()
return nil
} }
//导出PDF、word等格式 //导出PDF、word等格式