From 494d886d377585aff03ab572de45eedb9a3bc584 Mon Sep 17 00:00:00 2001
From: TaoHuang <ht.anglenx@gmail.com>
Date: Wed, 8 May 2019 18:08:26 +0800
Subject: [PATCH] fix upload

---
 apps/pages/single/license/components/upload.vue | 40 +++++++++++++++++++++++++++++++++++-----
 create-app.js                                   |  1 +
 doraemon/middleware/qiniu.js                    | 15 ++++++++++++++-
 package.json                                    |  1 +
 4 files changed, 51 insertions(+), 6 deletions(-)

diff --git a/apps/pages/single/license/components/upload.vue b/apps/pages/single/license/components/upload.vue
index ca137ba..725bf03 100644
--- a/apps/pages/single/license/components/upload.vue
+++ b/apps/pages/single/license/components/upload.vue
@@ -66,19 +66,31 @@ export default {
     return {
       multiple: false,
       action: {
-        target: '//upload.qiniup.com/',
+        target: '/mapp/upload',
         data(file) {
           return {
             token: vm.token,
-            key: 'license/' + Date.now() + '/' + file.name
+            key: 'license/' + Date.now() + '/' + file.name,
+            bucket: 'goodsimg',
+            userId: vm.getUid(),
+            method: 'yoho.fileupload'
           };
         }
       },
       file: this.value,
-      initialIndex: 0
+      initialIndex: 0,
+      uid: ''
     };
   },
+  async mounted() {
+    const user = await this.$sdk.getUser();
+
+    this.uid = user.uid;
+  },
   methods: {
+    getUid() {
+      return this.uid;
+    },
     filesAdded(files) {
       let hasIgnore = false;
       const maxSize = 10 * 1024 * 1024; // 10M
@@ -121,10 +133,10 @@ export default {
       this.initialIndex = this.file.findIndex(i => file.name === i.name);
 
       const imgs = this.file.map(f => {
-        return '//img01.yohoboys.com/' + f.response.key + '?imageView2/2/w/450/q/60';
+        return this.getUploadImgAbsoluteUrl(f.response.data, 'goodsimg') + '?imageView2/2/w/450/q/60';
       });
 
-      if (file && file.response && file.response.key) {
+      if (file && file.response && file.response.data) {
         this.$createImagePreview({
           $props: {
             imgs,
@@ -145,6 +157,24 @@ export default {
     },
     fileRemove(file) {
       this.$emit('file-change', file);
+    },
+    getUploadImgAbsoluteUrl(url, bucket) {
+      if (!url) {
+        return null;
+      }
+
+      let urlArr = url.split('/'),
+        stag = urlArr[urlArr.length - 1].substr(0, 2),
+        domain = `static.yhbimg.com/${bucket}`;
+
+      url = domain + url;
+      if (stag === '01') {
+        return `//img11.${url}`;
+      } else if (stag === '03') {
+        return `//flv01.${url}`;
+      } else {
+        return `//img12.${url}`;
+      }
     }
   },
   computed: {
diff --git a/create-app.js b/create-app.js
index ef513e6..724c235 100644
--- a/create-app.js
+++ b/create-app.js
@@ -88,6 +88,7 @@ exports.createApp = async(app) => {
     app.use(setYohoDataMiddleware);
     app.use(userMiddleware);
     app.get('/mapp/getToken', qiniuMiddleware.getToken);
+    app.post('/mapp/upload', qiniuMiddleware.upload);
     app.use('/mapp/alipay', alipayRouter);
     app.use('/mapp', ssrApiMiddleware);
 
diff --git a/doraemon/middleware/qiniu.js b/doraemon/middleware/qiniu.js
index da23f26..f44eab2 100644
--- a/doraemon/middleware/qiniu.js
+++ b/doraemon/middleware/qiniu.js
@@ -6,6 +6,8 @@
 const qiniu = require('qiniu');
 const qiniuConfig = global.yoho.config.qiniu;
 const qiniuYohoCdnConfig = global.yoho.config.qiniuYohoCdn;
+const request = require('request');
+const { config } = global.yoho;
 
 function getToken(req, res) {
   let conf = qiniuConfig;
@@ -28,6 +30,17 @@ function getToken(req, res) {
   });
 }
 
+function upload(req, res, next) {
+  let localReq = request(config.domains.api);
+
+  req.pipe(localReq).pipe(res);
+
+  localReq.on('error', function(err) {
+    next(err);
+  });
+}
+
 module.exports = {
-  getToken
+  getToken,
+  upload
 };
diff --git a/package.json b/package.json
index 55fa48a..54721cb 100644
--- a/package.json
+++ b/package.json
@@ -49,6 +49,7 @@
     "lottie-web": "^5.4.2",
     "mysql": "^2.16.0",
     "qiniu": "^7.2.1",
+    "request": "^2.88.0",
     "request-promise": "^4.2.2",
     "serve-favicon": "^2.5.0",
     "source-map": "^0.7.3",
--
libgit2 0.24.0