优化工作路径拼接方法

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 == "" {
conf.LogFile = filepath.Join(conf.WorkingDirectory, "logs")
conf.LogFile = conf.WorkingDir("runtime","logs")
}
if conf.ConfigurationFile == "" {
conf.ConfigurationFile = filepath.Join(conf.WorkingDirectory, "conf", "app.conf")
config := filepath.Join(conf.WorkingDirectory, "conf", "app.conf.example")
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)
}
}
gocaptcha.ReadFonts(filepath.Join(conf.WorkingDirectory, "static", "fonts"), ".ttf")
err := beego.LoadAppConfig("ini", conf.ConfigurationFile)
if err != nil {
log.Println("An error occurred:", err)
os.Exit(1)
if err := gocaptcha.ReadFonts(conf.WorkingDir( "static", "fonts"), ".ttf");err != nil {
log.Fatal("读取字体文件时出错 -> ",err)
}
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)
beego.BConfig.WebConfig.StaticDir["/static"] = filepath.Join(conf.WorkingDirectory, "static")
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) {
log.Fatal("Font path not exist.")

View File

@ -289,4 +289,11 @@ func URLForWithCdnJs(p string) string {
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")
}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,"文档正在后台转换,请稍后再下载")
}else{
c.ShowErrorPage(200,"不支持的文件格式")

View File

@ -72,6 +72,13 @@ var (
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
//根据json配置文件创建文档转化对象
func NewConverter(configFile string, debug ...bool) (converter *Converter, err error) {

View File

@ -27,7 +27,7 @@ import (
)
var(
exportLimitWorkerChannel = gopool.NewChannelPool(conf.GetExportProcessNum(),conf.GetExportQueueLimitNum())
exportLimitWorkerChannel = gopool.NewChannelPool(conf.GetExportLimitNum(),conf.GetExportQueueLimitNum())
)
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() {
bookResult.Converter(sessionId)
})
if err != nil {
beego.Error("将导出任务加入任务队列失败 -> ",err)
return err
}
exportLimitWorkerChannel.Start()
return nil
}
//导出PDF、word等格式