ソースを参照

Merge remote-tracking branch 'origin/master'

Menethil 7 年 前
コミット
d3dfb7ac90

+ 0 - 3
.gitlab-ci.yml

@@ -8,13 +8,10 @@ deploy:
       - rm -rf /root/spring_boot/*.jar
       - rm -rf /etc/init.d/litemall-*
       - cp -rf litemall-admin-api/target/litemall-admin-api-*-exec.jar /root/spring_boot/litemall-admin-api.jar
-      - cp -rf litemall-os-api/target/litemall-os-api-*-exec.jar /root/spring_boot/litemall-os-api.jar
       - cp -rf litemall-wx-api/target/litemall-wx-api-*-exec.jar /root/spring_boot/litemall-wx-api.jar
       - sudo chmod 777 /root/spring_boot/*.jar
       - sudo ln -f -s /root/spring_boot/litemall-admin-api.jar /etc/init.d/litemall-admin-api
-      - sudo ln -f -s /root/spring_boot/litemall-os-api.jar /etc/init.d/litemall-os-api
       - sudo ln -f -s /root/spring_boot/litemall-wx-api.jar /etc/init.d/litemall-wx-api
-      - sudo /etc/init.d/litemall-os-api restart
       - sudo /etc/init.d/litemall-wx-api restart
       - sudo /etc/init.d/litemall-admin-api restart
       - systemctl stop nginx

+ 1 - 2
deploy/.gitignore

@@ -3,5 +3,4 @@
 /litemall-db/litemall_table.sql
 /litemall-db/litemall_data.sql
 /litemall-api/litemall-admin-api.jar
-/litemall-api/litemall-wx-api.jar
-/litemall-api/litemall-os-api.jar
+/litemall-api/litemall-wx-api.jar

+ 0 - 2
deploy/bin/deploy.sh

@@ -18,12 +18,10 @@ sudo service litemall-wx-api stop
 sudo service litemall-admin-api stop
 
 #部署Spring Boot应用成服务
-sudo ln -f -s /home/ubuntu/deploy/litemall-api/litemall-os-api.jar /etc/init.d/litemall-os-api
 sudo ln -f -s /home/ubuntu/deploy/litemall-api/litemall-wx-api.jar /etc/init.d/litemall-wx-api
 sudo ln -f -s /home/ubuntu/deploy/litemall-api/litemall-admin-api.jar /etc/init.d/litemall-admin-api
 
 #启动服务
-sudo service litemall-os-api restart
 sudo service litemall-wx-api restart
 sudo service litemall-admin-api restart
 

+ 1 - 1
deploy/litemall-api/README.md

@@ -1,6 +1,6 @@
 开发者需要注意的是
 
-litemall-os-api.jar、litemall-wx-api.jar和litemall-admin-api.jar三个模块内部
+litemall-wx-api.jar和litemall-admin-api.jar两个模块内部
 已经有默认的开发配置文件,但是这些配置文件可能仅仅适用于开发阶段。
 
 为了应用部署阶段时期的配置文件,开发者可以在config文件夹里面的同名配置文件中

+ 0 - 0
deploy/litemall-api/config/application-os.yml


+ 0 - 1
deploy/util/package.sh

@@ -31,6 +31,5 @@ tar -zcvf ./deploy/litemall-admin/dist.tar -C ./litemall-admin/dist .
 # 这里我们需要的是可执行jar
 mvn clean
 mvn package
-cp  -f ./litemall-os-api/target/litemall-os-api-*-exec.jar ./deploy/litemall-api/litemall-os-api.jar
 cp  -f ./litemall-wx-api/target/litemall-wx-api-*-exec.jar ./deploy/litemall-api/litemall-wx-api.jar
 cp  -f ./litemall-admin-api/target/litemall-admin-api-*-exec.jar ./deploy/litemall-api/litemall-admin-api.jar

+ 3 - 37
litemall-os-api/src/main/java/org/linlinjava/litemall/os/web/OsStorageController.java

@@ -1,4 +1,4 @@
-package org.linlinjava.litemall.os.web;
+package org.linlinjava.litemall.admin.web;
 
 import org.linlinjava.litemall.core.storage.StorageService;
 import org.linlinjava.litemall.core.util.CharUtil;
@@ -21,8 +21,8 @@ import java.util.List;
 import java.util.Map;
 
 @RestController
-@RequestMapping("/os/storage")
-public class OsStorageController {
+@RequestMapping("/admin/storage")
+public class AdminStorageController {
 
     @Autowired
     private StorageService storageService;
@@ -110,38 +110,4 @@ public class OsStorageController {
         storageService.delete(litemallStorage.getKey());
         return ResponseUtil.ok();
     }
-
-    @GetMapping("/fetch/{key:.+}")
-    public ResponseEntity<Resource> fetch(@PathVariable String key) {
-        LitemallStorage litemallStorage = litemallStorageService.findByKey(key);
-        if(key == null){
-            ResponseEntity.notFound();
-        }
-        String type = litemallStorage.getType();
-        MediaType mediaType = MediaType.parseMediaType(type);
-
-        Resource file = storageService.loadAsResource(key);
-        if(file == null) {
-            ResponseEntity.notFound();
-        }
-        return ResponseEntity.ok().contentType(mediaType).body(file);
-    }
-
-    @GetMapping("/download/{key:.+}")
-    public ResponseEntity<Resource> download(@PathVariable String key) {
-        LitemallStorage litemallStorage = litemallStorageService.findByKey(key);
-        if(key == null){
-            ResponseEntity.notFound();
-        }
-        String type = litemallStorage.getType();
-        MediaType mediaType = MediaType.parseMediaType(type);
-
-        Resource file = storageService.loadAsResource(key);
-        if(file == null) {
-            ResponseEntity.notFound();
-        }
-        return ResponseEntity.ok().contentType(mediaType).header(HttpHeaders.CONTENT_DISPOSITION,
-                "attachment; filename=\"" + file.getFilename() + "\"").body(file);
-    }
-
 }

+ 1 - 2
litemall-admin/config/dep.env.js

@@ -1,6 +1,5 @@
 module.exports = {
 	NODE_ENV: '"production"',
 	ENV_CONFIG: '"dep"',
-    BASE_API: '"http://122.152.206.172:8083/admin"',
-    OS_API: '"http://122.152.206.172:8081/os"'
+    BASE_API: '"http://122.152.206.172:8083/admin"'
 }

+ 1 - 2
litemall-admin/config/dev.env.js

@@ -1,6 +1,5 @@
 module.exports = {
 	NODE_ENV: '"development"',
 	ENV_CONFIG: '"dev"',
-    BASE_API: '"http://localhost:8083/admin"',
-    OS_API: '"http://localhost:8081/os"'
+    BASE_API: '"http://localhost:8083/admin"'
 }

+ 1 - 2
litemall-admin/config/prod.env.js

@@ -1,6 +1,5 @@
 module.exports = {
 	NODE_ENV: '"production"',
 	ENV_CONFIG: '"prod"',
-    BASE_API: '"https://www.example.com/admin"',
-    OS_API: '"https://www.example.com/os"'
+    BASE_API: '"https://www.example.com/admin"'
 }

+ 7 - 28
litemall-admin/src/api/storage.js

@@ -1,28 +1,7 @@
-import axios from 'axios'
-import { Message } from 'element-ui'
-
-// create an axios instance
-const service = axios.create({
-  baseURL: process.env.OS_API, // api的base_url
-  timeout: 5000 // request timeout
-})
-
-// respone interceptor
-service.interceptors.response.use(
-  response => {
-    return response
-  }, error => {
-    console.log('err' + error)// for debug
-    Message({
-      message: '对象存储服务访问超时,请检查链接是否能够访问。',
-      type: 'error',
-      duration: 5 * 1000
-    })
-    return Promise.reject(error)
-  })
+import request from '@/utils/request'
 
 export function listStorage(query) {
-  return service({
+  return request({
     url: '/storage/list',
     method: 'get',
     params: query
@@ -30,7 +9,7 @@ export function listStorage(query) {
 }
 
 export function createStorage(data) {
-  return service({
+  return request({
     url: '/storage/create',
     method: 'post',
     data
@@ -38,7 +17,7 @@ export function createStorage(data) {
 }
 
 export function readStorage(data) {
-  return service({
+  return request({
     url: '/storage/read',
     method: 'get',
     data
@@ -46,7 +25,7 @@ export function readStorage(data) {
 }
 
 export function updateStorage(data) {
-  return service({
+  return request({
     url: '/storage/update',
     method: 'post',
     data
@@ -54,12 +33,12 @@ export function updateStorage(data) {
 }
 
 export function deleteStorage(data) {
-  return service({
+  return request({
     url: '/storage/delete',
     method: 'post',
     data
   })
 }
 
-const uploadPath = process.env.OS_API + '/storage/create'
+const uploadPath = process.env.BASE_API + '/storage/create'
 export { uploadPath }

+ 0 - 48
litemall-all/pom.xml

@@ -13,12 +13,6 @@
     <dependencies>
 
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-tomcat</artifactId>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
             <groupId>org.linlinjava</groupId>
             <artifactId>litemall-core</artifactId>
         </dependency>
@@ -30,11 +24,6 @@
 
         <dependency>
             <groupId>org.linlinjava</groupId>
-            <artifactId>litemall-os-api</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.linlinjava</groupId>
             <artifactId>litemall-wx-api</artifactId>
         </dependency>
 
@@ -46,45 +35,8 @@
     </dependencies>
 
     <build>
-
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-            </resource>
-
-            <resource>
-                <directory>src/main/java</directory>
-                <includes>
-                    <include>**/*.properties</include>
-                    <include>**/*.xml</include>
-                </includes>
-                <filtering>false</filtering>
-            </resource>
-        </resources>
-
         <plugins>
             <plugin>
-                <artifactId>maven-resources-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>copy-resources</id>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>copy-resources</goal>
-                        </goals>
-                        <configuration>
-                            <outputDirectory>${basedir}/target/classes/static</outputDirectory>
-                            <resources>
-                                <resource>
-                                    <directory>../litemall-admin/dist</directory>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>

+ 0 - 1
litemall-all/src/main/java/org/linlinjava/litemall/Application.java

@@ -10,7 +10,6 @@ import org.springframework.boot.web.support.SpringBootServletInitializer;
         "org.linlinjava.litemall",
         "org.linlinjava.litemall.core",
         "org.linlinjava.litemall.db",
-        "org.linlinjava.litemall.os",
         "org.linlinjava.litemall.wx",
         "org.linlinjava.litemall.admin"})
 @MapperScan("org.linlinjava.litemall.db.dao")

+ 0 - 3
litemall-all/src/test/java/org/linlinjava/litemall/allinone/AllinoneConfigTest.java

@@ -25,10 +25,7 @@ public class AllinoneConfigTest {
         System.out.println(environment.getProperty("litemall.wx.app-id"));
         // 测试获取application-admin.yml配置信息
 //        System.out.println(environment.getProperty(""));
-        // 测试获取application-os.yml配置信息
-//        System.out.println(environment.getProperty(""));
         // 测试获取application.yml配置信息
-        System.out.println(environment.getProperty("logging.level.org.linlinjava.litemall.os"));
         System.out.println(environment.getProperty("logging.level.org.linlinjava.litemall.wx"));
         System.out.println(environment.getProperty("logging.level.org.linlinjava.litemall.admin"));
         System.out.println(environment.getProperty("logging.level.org.linlinjava.litemall"));

+ 1 - 4
litemall-core/src/main/java/org/linlinjava/litemall/core/storage/LocalStorage.java

@@ -110,10 +110,7 @@ public class LocalStorage implements Storage {
 
     @Override
     public String generateUrl(String keyName) {
-        String url = address + ":" + port + "/os/storage/fetch/" + keyName;
-        if (!url.startsWith("http")) {
-            url = "http://" + url;
-        }
+        String url = address + keyName;
         return url;
     }
 }

+ 1 - 1
litemall-core/src/main/resources/application-core.yml

@@ -88,7 +88,7 @@ litemall:
     # 本地对象存储配置信息
     local:
       storagePath: storage
-      address: http://127.0.0.1
+      address: http://localhost:8082/wx/storage/fetch/
       port: 8081
     # 阿里云对象存储配置信息
     aliyun:

+ 0 - 4
litemall-os-api/.gitignore

@@ -1,4 +0,0 @@
-
-/target/
-/litemall-os-api.iml
-/storage/

+ 0 - 83
litemall-os-api/pom.xml

@@ -1,83 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>litemall-os-api</artifactId>
-    <packaging>jar</packaging>
-
-    <parent>
-        <groupId>org.linlinjava</groupId>
-        <artifactId>litemall</artifactId>
-        <version>0.1.0</version>
-    </parent>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.linlinjava</groupId>
-            <artifactId>litemall-core</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.linlinjava</groupId>
-            <artifactId>litemall-db</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.qcloud</groupId>
-            <artifactId>cos_api</artifactId>
-            <version>5.4.4</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>slf4j-log4j12</artifactId>
-                    <groupId>org.slf4j</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>com.aliyun.oss</groupId>
-            <artifactId>aliyun-sdk-oss</artifactId>
-            <version>2.5.0</version>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-            </resource>
-
-            <resource>
-                <directory>src/main/java</directory>
-                <includes>
-                    <include>**/*.properties</include>
-                    <include>**/*.xml</include>
-                </includes>
-                <filtering>false</filtering>
-            </resource>
-        </resources>
-
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <configuration>
-                    <executable>true</executable>
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                        <configuration>
-                            <classifier>exec</classifier>
-                        </configuration>
-                    </execution>
-                </executions>
-        </plugin>
-        </plugins>
-    </build>
-
-</project>

+ 0 - 15
litemall-os-api/src/main/java/org/linlinjava/litemall/os/Application.java

@@ -1,15 +0,0 @@
-package org.linlinjava.litemall.os;
-
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication(scanBasePackages={"org.linlinjava.litemall.core", "org.linlinjava.litemall.os","org.linlinjava.litemall.db"})
-@MapperScan("org.linlinjava.litemall.db.dao")
-public class Application {
-
-    public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
-    }
-
-}

+ 0 - 19
litemall-os-api/src/main/java/org/linlinjava/litemall/os/web/OsIndexController.java

@@ -1,19 +0,0 @@
-package org.linlinjava.litemall.os.web;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.linlinjava.litemall.core.util.ResponseUtil;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-@RequestMapping("/os/index")
-public class OsIndexController {
-    private final Log logger = LogFactory.getLog(OsIndexController.class);
-
-    @RequestMapping("/index")
-    public Object index(){
-        return ResponseUtil.ok("hello world, this is os service");
-    }
-
-}

+ 0 - 0
litemall-os-api/src/main/resources/application-os.yml


+ 0 - 16
litemall-os-api/src/main/resources/application.yml

@@ -1,16 +0,0 @@
-spring:
-  profiles:
-    active: db, core, os
-  message:
-    encoding: UTF-8
-
-server:
-  port: 8081
-
-logging:
-  level:
-    root:  ERROR
-    org.springframework:  ERROR
-    org.mybatis:  ERROR
-    org.linlinjava.litemall.os:  DEBUG
-    org.linlinjava.litemall:  ERROR

+ 107 - 0
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxStorageController.java

@@ -0,0 +1,107 @@
+package org.linlinjava.litemall.wx.web;
+
+import org.linlinjava.litemall.core.storage.StorageService;
+import org.linlinjava.litemall.core.util.CharUtil;
+import org.linlinjava.litemall.core.util.ResponseUtil;
+import org.linlinjava.litemall.db.domain.LitemallStorage;
+import org.linlinjava.litemall.db.service.LitemallStorageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/wx/storage")
+public class WxStorageController {
+
+    @Autowired
+    private StorageService storageService;
+    @Autowired
+    private LitemallStorageService litemallStorageService;
+
+    private String generateKey(String originalFilename){
+        int index = originalFilename.lastIndexOf('.');
+        String suffix = originalFilename.substring(index);
+
+        String key = null;
+        LitemallStorage storageInfo = null;
+
+        do{
+            key = CharUtil.getRandomString(20) + suffix;
+            storageInfo = litemallStorageService.findByKey(key);
+        }
+        while(storageInfo != null);
+
+        return key;
+    }
+
+    @PostMapping("/upload")
+    public Object upload(@RequestParam("file") MultipartFile file) {
+        String originalFilename = file.getOriginalFilename();
+        InputStream inputStream = null;
+        try {
+            inputStream = file.getInputStream();
+        } catch (IOException e) {
+            e.printStackTrace();
+            return ResponseUtil.badArgumentValue();
+        }
+        String key = generateKey(originalFilename);
+        storageService.store(file, key);
+
+        String url = storageService.generateUrl(key);
+        LitemallStorage storageInfo = new LitemallStorage();
+        storageInfo.setName(originalFilename);
+        storageInfo.setSize((int)file.getSize());
+        storageInfo.setType(file.getContentType());
+        storageInfo.setAddTime(LocalDateTime.now());
+        storageInfo.setModified(LocalDateTime.now());
+        storageInfo.setKey(key);
+        storageInfo.setUrl(url);
+        litemallStorageService.add(storageInfo);
+        return ResponseUtil.ok(storageInfo);
+    }
+
+    @GetMapping("/fetch/{key:.+}")
+    public ResponseEntity<Resource> fetch(@PathVariable String key) {
+        LitemallStorage litemallStorage = litemallStorageService.findByKey(key);
+        if(key == null){
+            ResponseEntity.notFound();
+        }
+        String type = litemallStorage.getType();
+        MediaType mediaType = MediaType.parseMediaType(type);
+
+        Resource file = storageService.loadAsResource(key);
+        if(file == null) {
+            ResponseEntity.notFound();
+        }
+        return ResponseEntity.ok().contentType(mediaType).body(file);
+    }
+
+    @GetMapping("/download/{key:.+}")
+    public ResponseEntity<Resource> download(@PathVariable String key) {
+        LitemallStorage litemallStorage = litemallStorageService.findByKey(key);
+        if(key == null){
+            ResponseEntity.notFound();
+        }
+        String type = litemallStorage.getType();
+        MediaType mediaType = MediaType.parseMediaType(type);
+
+        Resource file = storageService.loadAsResource(key);
+        if(file == null) {
+            ResponseEntity.notFound();
+        }
+        return ResponseEntity.ok().contentType(mediaType).header(HttpHeaders.CONTENT_DISPOSITION,
+                "attachment; filename=\"" + file.getFilename() + "\"").body(file);
+    }
+
+}

+ 3 - 13
litemall-wx/config/api.js

@@ -1,23 +1,13 @@
 // 以下是业务服务器API地址
 // 本机开发时使用
-//  var WxApiRoot = 'http://localhost:8082/wx/';
+ var WxApiRoot = 'http://localhost:8082/wx/';
 // 局域网测试使用
 // var WxApiRoot = 'http://192.168.0.101:8082/wx/';
 // 云平台部署时使用
-var WxApiRoot = 'http://122.152.206.172:8082/wx/';
+// var WxApiRoot = 'http://122.152.206.172:8082/wx/';
 // 云平台上线时使用
 // var WxApiRoot = 'https://www.menethil.com.cn/wx/';
 
-// 以下是图片存储服务器API地址
-// 本机开发时使用
-// var StorageApi = 'http://localhost:8081/os/storage/create';
-// 局域网测试时使用
-// var StorageApi = 'http://192.168.0.101:8081/os/storage/create';
-// 云平台部署时使用
-var StorageApi = 'http://122.152.206.172:8081/os/storage/create';
-// 云平台上线时使用
-// var StorageApi = 'https://www.menethil.com.cn/os/storage/create';
-
 module.exports = {
  IndexUrl: WxApiRoot + 'home/index', //首页数据接口
  CatalogList: WxApiRoot + 'catalog/index', //分类目录全部分类数据接口
@@ -89,5 +79,5 @@ module.exports = {
 
  UserFormIdCreate: WxApiRoot + 'formid/create', //用户FromId,用于发送模版消息
 
- StorageUpload: StorageApi, //图片上传
+  StorageUpload: WxApiRoot + 'storage/upload' //图片上传
 };

+ 0 - 6
pom.xml

@@ -22,7 +22,6 @@
     <modules>
         <module>litemall-core</module>
         <module>litemall-db</module>
-        <module>litemall-os-api</module>
         <module>litemall-wx-api</module>
         <module>litemall-admin-api</module>
         <module>litemall-all</module>
@@ -42,11 +41,6 @@
             </dependency>
             <dependency>
                 <groupId>org.linlinjava</groupId>
-                <artifactId>litemall-os-api</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.linlinjava</groupId>
                 <artifactId>litemall-wx-api</artifactId>
                 <version>${project.version}</version>
             </dependency>