sunkean 2 лет назад
Родитель
Сommit
d319cbbade

+ 2 - 25
src/main/java/com/izouma/nineth/service/MetaAwardDropService.java

@@ -1,9 +1,5 @@
 package com.izouma.nineth.service;
 
-import com.aliyun.oss.OSSClient;
-import com.aliyun.oss.model.OSSObject;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.izouma.nineth.config.AliyunProperties;
 import com.izouma.nineth.config.Constants;
 import com.izouma.nineth.domain.MetaAwardDrop;
@@ -15,6 +11,7 @@ import com.izouma.nineth.enums.MetaPropOperationType;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.MetaAwardDropRepo;
 import com.izouma.nineth.utils.JpaUtils;
+import com.izouma.nineth.utils.OSSClientUtil;
 import com.izouma.nineth.utils.SecurityUtils;
 import lombok.AllArgsConstructor;
 import org.apache.commons.collections.CollectionUtils;
@@ -23,7 +20,6 @@ import org.springframework.stereotype.Service;
 
 import javax.transaction.Transactional;
 import java.io.IOException;
-import java.io.InputStream;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.function.BiFunction;
@@ -58,7 +54,7 @@ public class MetaAwardDropService {
         }
         List<MetaAwardDropJsonDTO> metaAwardDropJsonDTOS;
         try {
-            metaAwardDropJsonDTOS = getDataModel(s.concat(objectKeys[1]));
+            metaAwardDropJsonDTOS = OSSClientUtil.getDataModel(aliyunProperties, s.concat(objectKeys[1]), MetaAwardDropJsonDTO.class);
         } catch (IOException e) {
             throw new BusinessException(e.getMessage());
         }
@@ -78,25 +74,6 @@ public class MetaAwardDropService {
         return save;
     }
 
-    private List<MetaAwardDropJsonDTO> getDataModel(String objectKey) throws IOException {
-        String endpoint = aliyunProperties.getOssEndPoint();
-        String accessKeyId = aliyunProperties.getAccessKeyId();
-        String accessKeySecret = aliyunProperties.getAccessKeySecret();
-        String bucketName = aliyunProperties.getOssBucketName();
-        OSSClient client = new OSSClient(endpoint, accessKeyId,
-                accessKeySecret);
-        List<MetaAwardDropJsonDTO> metaAwardDropJsonDTOS;
-        OSSObject ossObject = client.getObject(bucketName, objectKey);
-        ObjectMapper objectMapper = new ObjectMapper();
-        try (InputStream inputStream = ossObject.getObjectContent()) {
-            metaAwardDropJsonDTOS = objectMapper.convertValue(objectMapper.readValue(inputStream, List.class), new TypeReference<>() {
-            });
-        } finally {
-            client.shutdown();
-        }
-        return metaAwardDropJsonDTOS;
-    }
-
     private void processDrop(List<MetaAwardDropJsonDTO> metaAwardDropJsonDTOS, Long dropId, BiFunction<MetaAwardDropJsonDTO, Long, MetaRestResult<?>> operation) {
         metaAwardDropJsonDTOS.forEach(metaAwardDropJsonDTO -> {
             MetaRestResult<?> restResult = operation.apply(metaAwardDropJsonDTO, dropId);

+ 34 - 0
src/main/java/com/izouma/nineth/utils/OSSClientUtil.java

@@ -0,0 +1,34 @@
+package com.izouma.nineth.utils;
+
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.model.OSSObject;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+import com.izouma.nineth.config.AliyunProperties;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+
+public class OSSClientUtil {
+
+    public static <T> List<T> getDataModel(AliyunProperties aliyunProperties, String objectKey, Class<T> clazz) throws IOException {
+        String endpoint = aliyunProperties.getOssEndPoint();
+        String accessKeyId = aliyunProperties.getAccessKeyId();
+        String accessKeySecret = aliyunProperties.getAccessKeySecret();
+        String bucketName = aliyunProperties.getOssBucketName();
+
+        OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
+        List<T> list;
+        OSSObject ossObject = client.getObject(bucketName, objectKey);
+        ObjectMapper objectMapper = new ObjectMapper();
+        try (InputStream inputStream = ossObject.getObjectContent()) {
+            list = objectMapper.readValue(inputStream, TypeFactory.defaultInstance().constructCollectionType(List.class, clazz));
+        } finally {
+            client.shutdown();
+        }
+        return list;
+    }
+
+}