电子书数据迁移
()
| 159 | |
| 160 | // 电子书数据迁移 |
| 161 | func migrateEbook() { |
| 162 | // 1. 查找 md_ebook 表中不存在的书籍的电子书 |
| 163 | var ( |
| 164 | books []models.Book |
| 165 | sqlQuery = "SELECT book_id,generate_time,book_name,identify,label,description FROM `md_books` WHERE `generate_time`>'2010' and book_id not in (select book_id from md_ebook where book_id>0 group by book_id)" |
| 166 | ) |
| 167 | o := orm.NewOrm() |
| 168 | o.Raw(sqlQuery).QueryRows(&books) |
| 169 | if len(books) == 0 { |
| 170 | beego.Info("不存在需要同步的电子书数据") |
| 171 | return |
| 172 | } |
| 173 | exts := []string{".pdf", ".epub", ".mobi"} |
| 174 | for _, book := range books { |
| 175 | beego.Info("迁移书籍电子书:", book.BookName) |
| 176 | var ebooks []models.Ebook |
| 177 | bookPrefix := fmt.Sprintf("/projects/%v/books/%v", book.Identify, book.GenerateTime.Unix()) |
| 178 | if utils.StoreType == utils.StoreLocal { |
| 179 | bookPrefix = "/uploads" + bookPrefix |
| 180 | } |
| 181 | ebook := models.Ebook{ |
| 182 | Title: book.BookName, |
| 183 | Keywords: book.Label, |
| 184 | Description: beego.Substr(book.Description, 0, 255), |
| 185 | BookID: book.BookId, |
| 186 | Status: models.EBookStatusSuccess, |
| 187 | } |
| 188 | for _, ext := range exts { |
| 189 | ebook.Ext = ext |
| 190 | ebook.Path = bookPrefix + ext |
| 191 | ebooks = append(ebooks, ebook) |
| 192 | } |
| 193 | if _, err := o.InsertMulti(len(ebooks), &ebooks); err != nil { |
| 194 | beego.Error(err) |
| 195 | } |
| 196 | } |
| 197 | beego.Info("电子书数据同步中...") |
| 198 | } |
no test coverage detected