Browse Source

[server] addbook api

charblus 5 years ago
parent
commit
9f2c36c12f
5 changed files with 66 additions and 14 deletions
  1. 1 1
      server/.eslintrc.json
  2. 40 0
      server/controllers/addbook.js
  3. 2 0
      server/routes/index.js
  4. 1 1
      src/App.vue
  5. 22 12
      src/pages/me/Me.vue

+ 1 - 1
server/.eslintrc.json

@@ -6,7 +6,7 @@
   },
   "extends": "standard",
   "rules": {
-    "indent": [2, 4, { "SwitchCase": 1 }],
+    "indent": [2, 2, { "SwitchCase": 1 }],
     "arrow-parens": 0,
     "generator-star-spacing": 0
   },

+ 40 - 0
server/controllers/addbook.js

@@ -0,0 +1,40 @@
+
+const https = require('https')
+// 新增图书  1. 获取豆瓣信息  2 入库
+// https://api.douban.com/v2/book/isbn/9787536692930
+module.exports = async (ctx) => {
+  const { isbn, openId } = ctx.request.body
+  console.log('添加图书', isbn, openId)
+  if (isbn && openId) {
+    let url = 'https://api.douban.com/v2/book/isbn/' + isbn
+    console.log('链接', url)
+    const bookInfo = await getJSON(url)
+    const rate = bookInfo.rating.average
+    const { title, image, alt, publisher, summary, price } = bookInfo
+    const tags = bookInfo.tags.map(v => {
+      return `${v.title} ${v.count}`
+    }).join(',')
+    const author = bookInfo.author.join(',')
+    console.log({
+      rate, title, image, alt, publisher, summary, price, tags, author
+    })
+  }
+}
+
+function getJSON (url) {
+  return new Promise((resolve, reject) => {
+    https.get(url, res => {
+      let urlData = ''
+      res.on('data', data => {
+        urlData += data
+      })
+      res.on('end', data => {
+        const bookInfo = JSON.parse(data)
+        if (bookInfo.title) {
+          resolve(bookInfo)
+        }
+        reject(bookInfo)
+      })
+    })
+  })
+}

+ 2 - 0
server/routes/index.js

@@ -34,4 +34,6 @@ router.post('/message', controllers.message.post)
 
 // 测试 demo api //
 router.get('/demo', controllers.demo)
+router.post('/addbook', controllers.addbook)
+
 module.exports = router

+ 1 - 1
src/App.vue

@@ -1,6 +1,6 @@
 
 <script>
-
+import qcloud from 'wafer2-client-sdk'
 export default {
   async created () {
     // const res = await get('/weapp/demo')

+ 22 - 12
src/pages/me/Me.vue

@@ -1,12 +1,12 @@
 <template>
   <div class="container">
-    <button v-if='!userinfo.openId'  open-type="getUserInfo" @click="login">登录</button>
+    <button  v-if='!userInfo.openId'  open-type="getUserInfo" @click="login">登录</button>
     <div class="userinfo" >
       <img :src="userInfo.avatarUrl" alt="">
       <p>{{userInfo.nickName}}</p>
     </div>
     <YearProgress></YearProgress>
-    <button v-if='userinfo.openId' @click="scanBook" class='btn'>添加图书</button>
+    <button v-if='userInfo.openId' @click="scanBook" class='btn'>添加图书</button>
   </div>
 </template>
 
@@ -22,12 +22,31 @@ export default {
   data () {
     return {
       userInfo: {
-        avatarUrl: '../../../static/img/unlogin.png',
+        avatarUrl: require('../../../static/img/unlogin.png'),
         nickName: '未登录'
       }
     }
   },
   methods: {
+    async addBook(isbn) {
+      const res = await post('/weapp/addbook', {
+        isbn,
+        openid: this.userInfo.openId
+      })
+      if(res.code == 0&& res.data.title) {
+        showSuccess('添加成功', `${res.data.title}添加成功`)
+      }
+    },
+    scanBook () {
+      wx.scanCode({
+        success: (res) => {
+          if (res.result) {
+            // console.log(res.result)
+            this.addBook(res.result);
+          }
+        }
+      })
+    },
     login () {
       let user = wx.getStorageSync('userInfo')
       if (!user) {
@@ -56,15 +75,6 @@ export default {
         this.userInfo = userInfo
       }
     },
-    scanBook () {
-      wx.scanCode({
-        success: (res) => {
-          if (res.result) {
-            console.log(res.result)
-          }
-        }
-      })
-    }
   }
 }