|
|
@@ -0,0 +1,71 @@
|
|
|
+const API = require("../../lib/API.js")
|
|
|
+const db = require("../../plugin/DataBase/db.js")
|
|
|
+const axios = require("axios")
|
|
|
+const { BaseStdResponse } = require("../../BaseStdResponse.js")
|
|
|
+
|
|
|
+class GetBookImg extends API {
|
|
|
+ constructor() {
|
|
|
+ super()
|
|
|
+
|
|
|
+ this.setPath("/QXS/GetBookImg")
|
|
|
+ this.setMethod("GET")
|
|
|
+
|
|
|
+ this.key = '5a01e72642f02bd0721a56a2bc1dd81a'
|
|
|
+ }
|
|
|
+
|
|
|
+ async getImg(isbn) {
|
|
|
+ const endpoint = `https://api.tanshuapi.com/api/isbn_base/v1/index?key=${this.key}&isbn=${isbn}`
|
|
|
+ const res = await axios.get(endpoint, {
|
|
|
+ proxy: false
|
|
|
+ })
|
|
|
+
|
|
|
+ const data = res.data
|
|
|
+ if (!data || data.code !== 1) {
|
|
|
+ if(data?.msg === '查无记录')
|
|
|
+ return { img: '', pubdate: '', summary: '' }
|
|
|
+ throw new Error(data?.msg ?? "请稍后再试")
|
|
|
+ }
|
|
|
+ const { img, pubdate, summary } = data.data
|
|
|
+ return { img, pubdate, summary }
|
|
|
+ }
|
|
|
+
|
|
|
+ async onRequest(req, res) {
|
|
|
+ const { isbn } = req.query
|
|
|
+
|
|
|
+ if (!isbn || isbn.length !== 13) {
|
|
|
+ return res.json({
|
|
|
+ ...BaseStdResponse.MISSING_PARAMETER,
|
|
|
+ msg: "请提供正确的ISBN号"
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ let sql = 'SELECT img, pubdate, summary FROM book_img WHERE isbn = ?'
|
|
|
+ let rows = await db.query(sql, [isbn])
|
|
|
+
|
|
|
+ let img, pubdate, summary
|
|
|
+ if (!rows || rows.length === 0) {
|
|
|
+ ({ img, pubdate, summary } = await this.getImg(isbn))
|
|
|
+
|
|
|
+ const time = Date.now()
|
|
|
+ sql = 'INSERT INTO book_img SET isbn = ?, img = ?, pubdate = ?, summary = ?, create_time = ?'
|
|
|
+ await db.query(sql, [isbn, img ?? '', pubdate ?? '', summary ?? '', time])
|
|
|
+ }
|
|
|
+ else
|
|
|
+ ({ img, pubdate, summary } = rows[0])
|
|
|
+
|
|
|
+ res.json({
|
|
|
+ ...BaseStdResponse.OK,
|
|
|
+ data: { img, pubdate, summary }
|
|
|
+ })
|
|
|
+ } catch (error) {
|
|
|
+ this.logger?.error(`${error.stack}`)
|
|
|
+ return res.json({
|
|
|
+ ...BaseStdResponse.ERR,
|
|
|
+ msg: `${error.message ?? "请稍后再试"}`
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module.exports.GetBookImg = GetBookImg
|