(identify, ebookPath string, errConvert error)
| 376 | } |
| 377 | |
| 378 | func (m *Ebook) callback(identify, ebookPath string, errConvert error) { |
| 379 | var ebook Ebook |
| 380 | o := orm.NewOrm() |
| 381 | |
| 382 | book, err := NewBook().FindByIdentify(identify) |
| 383 | if err != nil { |
| 384 | beego.Error(err) |
| 385 | m.deleteBook(book.BookId) |
| 386 | return |
| 387 | } |
| 388 | |
| 389 | if errConvert != nil { // 电子书转换失败 |
| 390 | beego.Error(errConvert) |
| 391 | ebook.Status = EBookStatusFailure |
| 392 | o.Update(&ebook) |
| 393 | return |
| 394 | } |
| 395 | |
| 396 | ext := filepath.Ext(ebookPath) |
| 397 | if err = o.QueryTable(m).Filter("book_id", book.BookId).Filter("ext", ext).OrderBy("-id").One(&ebook); err != nil { |
| 398 | beego.Error(err) |
| 399 | return |
| 400 | } |
| 401 | if ebook.Id == 0 { |
| 402 | return |
| 403 | } |
| 404 | |
| 405 | info, err := os.Stat(ebookPath) |
| 406 | if err != nil { |
| 407 | beego.Error(err) |
| 408 | ebook.Status = EBookStatusFailure |
| 409 | o.Update(&ebook) |
| 410 | return |
| 411 | } |
| 412 | |
| 413 | newEbookPath := fmt.Sprintf("projects/%v/books/%v%v", book.Identify, time.Now().Unix(), ext) |
| 414 | switch utils.StoreType { |
| 415 | case utils.StoreOss: |
| 416 | //不要开启gzip压缩,否则会出现文件损坏的情况 |
| 417 | if err := store.ModelStoreOss.MoveToOss(ebookPath, newEbookPath, true, false); err != nil { |
| 418 | beego.Error(err) |
| 419 | } else { // 设置下载头 |
| 420 | store.ModelStoreOss.SetObjectMeta(newEbookPath, book.BookName+ext) |
| 421 | } |
| 422 | case utils.StoreLocal: //本地存储 |
| 423 | newEbookPath = "uploads/" + newEbookPath |
| 424 | if err = store.ModelStoreLocal.MoveToStore(ebookPath, newEbookPath); err != nil { |
| 425 | beego.Error(err) |
| 426 | } |
| 427 | } |
| 428 | |
| 429 | ebook.Size = info.Size() |
| 430 | ebook.Path = "/" + newEbookPath |
| 431 | ebook.Status = EBookStatusSuccess |
| 432 | o.Update(&ebook) |
| 433 | m.DeleteOldEbook(ebook.BookID, ebook.Ext, ebook.Id) |
| 434 | } |
| 435 |
no test coverage detected