From 60347c7629f1686d3fcf1bace95e081aee116ef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Thu, 15 Oct 2020 18:29:52 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E5=91=BD=E5=90=8DQiniuSer?= =?UTF-8?q?vice=20->FileService?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重命名为FileService 并修改方法为获取File Manager来处理文件 --- .../blog/controller/CommonController.java | 8 +- .../cn/celess/blog/service/QiniuService.java | 31 ---- .../blog/service/interfaces/FileManager.java | 25 +++ .../blog/service/interfaces/FileService.java | 21 +++ ...iceImpl.java => QiniuFileServiceImpl.java} | 175 +++++++++--------- .../service/serviceimpl/UserServiceImpl.java | 6 +- src/main/resources/application.properties | 2 +- src/test/java/cn/celess/blog/BaseTest.java | 5 +- .../blog/controller/UserControllerTest.java | 3 +- 9 files changed, 147 insertions(+), 129 deletions(-) delete mode 100644 src/main/java/cn/celess/blog/service/QiniuService.java create mode 100644 src/main/java/cn/celess/blog/service/interfaces/FileManager.java create mode 100644 src/main/java/cn/celess/blog/service/interfaces/FileService.java rename src/main/java/cn/celess/blog/service/serviceimpl/{QiniuServiceImpl.java => QiniuFileServiceImpl.java} (93%) diff --git a/src/main/java/cn/celess/blog/controller/CommonController.java b/src/main/java/cn/celess/blog/controller/CommonController.java index 7f7ce96..4b42577 100644 --- a/src/main/java/cn/celess/blog/controller/CommonController.java +++ b/src/main/java/cn/celess/blog/controller/CommonController.java @@ -5,7 +5,7 @@ import cn.celess.blog.entity.Response; import cn.celess.blog.entity.model.QiniuResponse; import cn.celess.blog.exception.MyException; import cn.celess.blog.service.CountService; -import cn.celess.blog.service.QiniuService; +import cn.celess.blog.service.interfaces.FileService; import cn.celess.blog.util.HttpUtil; import cn.celess.blog.util.RedisUserUtil; import cn.celess.blog.util.RedisUtil; @@ -42,7 +42,7 @@ public class CommonController { @Autowired CountService countService; @Autowired - QiniuService qiniuService; + FileService fileService; @Autowired RedisUtil redisUtil; @Autowired @@ -161,7 +161,7 @@ public class CommonController { String mime = fileName.substring(fileName.lastIndexOf(".")); if (".png".equals(mime.toLowerCase()) || ".jpg".equals(mime.toLowerCase()) || ".jpeg".equals(mime.toLowerCase()) || ".bmp".equals(mime.toLowerCase())) { - QiniuResponse qiniuResponse = qiniuService.uploadFile(file.getInputStream(), "img_" + System.currentTimeMillis() + mime); + QiniuResponse qiniuResponse = fileService.getFileManager().uploadFile(file.getInputStream(), "img_" + System.currentTimeMillis() + mime); map.put("success", 1); map.put("message", "上传成功"); map.put("url", "http://cdn.celess.cn/" + qiniuResponse.key); @@ -208,7 +208,7 @@ public class CommonController { assert fileName != null; String mime = fileName.substring(fileName.lastIndexOf(".")); String name = fileName.replace(mime, "").replaceAll(" ", ""); - QiniuResponse qiniuResponse = qiniuService.uploadFile(file.getInputStream(), "file_" + name + '_' + System.currentTimeMillis() + mime); + QiniuResponse qiniuResponse = fileService.getFileManager().uploadFile(file.getInputStream(), "file_" + name + '_' + System.currentTimeMillis() + mime); resp.put("originalFilename", fileName); resp.put("success", qiniuResponse != null); if (qiniuResponse != null) { diff --git a/src/main/java/cn/celess/blog/service/QiniuService.java b/src/main/java/cn/celess/blog/service/QiniuService.java deleted file mode 100644 index 32bdc2a..0000000 --- a/src/main/java/cn/celess/blog/service/QiniuService.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.celess.blog.service; - -import cn.celess.blog.entity.model.QiniuResponse; -import com.qiniu.storage.model.FileInfo; -import org.springframework.stereotype.Service; - -import java.io.InputStream; - -/** - * @author : xiaohai - * @date : 2019/04/25 18:15 - */ -@Service -public interface QiniuService { - /** - * 上传文件 - * - * @param is InputStream流 - * @param fileName 文件名 - * @return 响应数据 - */ - QiniuResponse uploadFile(InputStream is, String fileName); - - /** - * 获取文件列表 - * - * @return 文件列表 - */ - FileInfo[] getFileList(); - -} diff --git a/src/main/java/cn/celess/blog/service/interfaces/FileManager.java b/src/main/java/cn/celess/blog/service/interfaces/FileManager.java new file mode 100644 index 0000000..9420221 --- /dev/null +++ b/src/main/java/cn/celess/blog/service/interfaces/FileManager.java @@ -0,0 +1,25 @@ +package cn.celess.blog.service.interfaces; + +import cn.celess.blog.entity.model.QiniuResponse; +import com.qiniu.storage.model.FileInfo; + +import java.io.InputStream; + +/** + * @author : xiaohai + * @date : 2020/10/15 18:19 + * @desc : 文件管理器 定义操作文件的方法 + */ +public interface FileManager { + + /** + * 解决语法错误 占位方法 + * + */ + QiniuResponse uploadFile(InputStream is, String fileName); + + /** + * 解决语法错误 占位方法 + */ + FileInfo[] getFileList(); +} diff --git a/src/main/java/cn/celess/blog/service/interfaces/FileService.java b/src/main/java/cn/celess/blog/service/interfaces/FileService.java new file mode 100644 index 0000000..449392d --- /dev/null +++ b/src/main/java/cn/celess/blog/service/interfaces/FileService.java @@ -0,0 +1,21 @@ +package cn.celess.blog.service.interfaces; + +import cn.celess.blog.entity.model.QiniuResponse; +import com.qiniu.storage.model.FileInfo; +import org.springframework.stereotype.Service; + +import java.io.InputStream; + +/** + * @author : xiaohai + * @date : 2019/04/25 18:15 + */ +@Service +public interface FileService { + /** + * 获取文件管理器 + * + * @return 文件管理器 可以操作文件 + */ + FileManager getFileManager(); +} diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/QiniuServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/QiniuFileServiceImpl.java similarity index 93% rename from src/main/java/cn/celess/blog/service/serviceimpl/QiniuServiceImpl.java rename to src/main/java/cn/celess/blog/service/serviceimpl/QiniuFileServiceImpl.java index e95d202..8a7e2ba 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/QiniuServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/QiniuFileServiceImpl.java @@ -1,87 +1,88 @@ -package cn.celess.blog.service.serviceimpl; - -import cn.celess.blog.entity.model.QiniuResponse; -import cn.celess.blog.service.QiniuService; -import com.qiniu.common.QiniuException; -import com.qiniu.common.Zone; -import com.qiniu.http.Response; -import com.qiniu.storage.BucketManager; -import com.qiniu.storage.Configuration; -import com.qiniu.storage.UploadManager; -import com.qiniu.storage.model.FileInfo; -import com.qiniu.util.Auth; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -import java.io.InputStream; - -/** - * @author : xiaohai - * @date : 2019/04/25 18:15 - */ -@Service -public class QiniuServiceImpl implements QiniuService { - private static final Configuration cfg = new Configuration(Zone.zone2()); - private static UploadManager uploadManager; - private static BucketManager bucketManager; - private static Auth auth; - - @Value("${qiniu.accessKey}") - private String accessKey; - @Value("${qiniu.secretKey}") - private String secretKey; - @Value("${qiniu.bucket}") - private String bucket; - - private void init() { - if (auth == null || uploadManager == null || bucketManager == null) { - auth = Auth.create(accessKey, secretKey); - uploadManager = new UploadManager(cfg); - bucketManager = new BucketManager(auth, cfg); - } - } - - @Override - public QiniuResponse uploadFile(InputStream is, String fileName) { - init(); - //文件存在则删除文件 - if (continueFile(fileName)) { - try { - System.out.println(bucketManager.delete(bucket, fileName).toString()); - } catch (QiniuException e) { - e.printStackTrace(); - } - } - //上传 - try { - Response response = uploadManager.put(is, fileName, auth.uploadToken(bucket), null, null); - return response.jsonToObject(QiniuResponse.class); - } catch (QiniuException e) { - Response r = e.response; - System.err.println(r.toString()); - return null; - } - } - - @Override - public FileInfo[] getFileList() { - init(); - BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, "", 1000, ""); - FileInfo[] items = null; - while (fileListIterator.hasNext()) { - //处理获取的file list结果 - items = fileListIterator.next(); - } - return items; - } - - private boolean continueFile(String key) { - FileInfo[] allFile = getFileList(); - for (FileInfo fileInfo : allFile) { - if (key.equals(fileInfo.key)) { - return true; - } - } - return false; - } -} +package cn.celess.blog.service.serviceimpl; + +import cn.celess.blog.entity.model.QiniuResponse; +import cn.celess.blog.service.interfaces.FileManager; +import cn.celess.blog.service.interfaces.FileService; +import com.qiniu.common.QiniuException; +import com.qiniu.common.Zone; +import com.qiniu.http.Response; +import com.qiniu.storage.BucketManager; +import com.qiniu.storage.Configuration; +import com.qiniu.storage.UploadManager; +import com.qiniu.storage.model.FileInfo; +import com.qiniu.util.Auth; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.io.InputStream; + +/** + * @author : xiaohai + * @date : 2019/04/25 18:15 + */ +@Service +public class QiniuFileServiceImpl implements FileManager { + private static final Configuration cfg = new Configuration(Zone.zone2()); + private static UploadManager uploadManager; + private static BucketManager bucketManager; + private static Auth auth; + + @Value("${qiniu.accessKey}") + private String accessKey; + @Value("${qiniu.secretKey}") + private String secretKey; + @Value("${qiniu.bucket}") + private String bucket; + + private void init() { + if (auth == null || uploadManager == null || bucketManager == null) { + auth = Auth.create(accessKey, secretKey); + uploadManager = new UploadManager(cfg); + bucketManager = new BucketManager(auth, cfg); + } + } + + @Override + public QiniuResponse uploadFile(InputStream is, String fileName) { + init(); + //文件存在则删除文件 + if (continueFile(fileName)) { + try { + System.out.println(bucketManager.delete(bucket, fileName).toString()); + } catch (QiniuException e) { + e.printStackTrace(); + } + } + //上传 + try { + Response response = uploadManager.put(is, fileName, auth.uploadToken(bucket), null, null); + return response.jsonToObject(QiniuResponse.class); + } catch (QiniuException e) { + Response r = e.response; + System.err.println(r.toString()); + return null; + } + } + + @Override + public FileInfo[] getFileList() { + init(); + BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucket, "", 1000, ""); + FileInfo[] items = null; + while (fileListIterator.hasNext()) { + //处理获取的file list结果 + items = fileListIterator.next(); + } + return items; + } + + private boolean continueFile(String key) { + FileInfo[] allFile = getFileList(); + for (FileInfo fileInfo : allFile) { + if (key.equals(fileInfo.key)) { + return true; + } + } + return false; + } +} diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java index 1cae19c..80666d3 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java @@ -12,8 +12,8 @@ import cn.celess.blog.entity.request.LoginReq; import cn.celess.blog.entity.request.UserReq; import cn.celess.blog.exception.MyException; import cn.celess.blog.mapper.UserMapper; +import cn.celess.blog.service.interfaces.FileService; import cn.celess.blog.service.MailService; -import cn.celess.blog.service.QiniuService; import cn.celess.blog.service.UserService; import cn.celess.blog.util.*; import com.github.pagehelper.PageHelper; @@ -46,7 +46,7 @@ public class UserServiceImpl implements UserService { @Autowired MailService mailService; @Autowired - QiniuService qiniuService; + FileService fileService; @Autowired RedisUtil redisUtil; @Autowired @@ -185,7 +185,7 @@ public class UserServiceImpl implements UserService { @Override public Object updateUserAavatarImg(InputStream is, String mime) { User user = redisUserUtil.get(); - QiniuResponse upload = qiniuService.uploadFile(is, user.getEmail() + "_" + user.getId() + mime.toLowerCase()); + QiniuResponse upload = fileService.getFileManager().uploadFile(is, user.getEmail() + "_" + user.getId() + mime.toLowerCase()); user.setAvatarImgUrl(upload.key); userMapper.updateAvatarImgUrl(upload.key, user.getId()); redisUserUtil.set(user); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 87cad63..3cd2334 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,6 +1,6 @@ spring.profiles.active=easyDeploy ####七牛的配置 -####cn.celess.blog.service.serviceimpl.QiniuServiceImpl +####cn.celess.blog.service.serviceimpl.QiniuFileServiceImpl logging.level.cn.celess.blog=debug logging.level.cn.celess.blog.mapper=info diff --git a/src/test/java/cn/celess/blog/BaseTest.java b/src/test/java/cn/celess/blog/BaseTest.java index 20a6603..9d8ed99 100644 --- a/src/test/java/cn/celess/blog/BaseTest.java +++ b/src/test/java/cn/celess/blog/BaseTest.java @@ -6,7 +6,8 @@ import cn.celess.blog.entity.model.QiniuResponse; import cn.celess.blog.entity.model.UserModel; import cn.celess.blog.entity.request.LoginReq; import cn.celess.blog.service.MailService; -import cn.celess.blog.service.QiniuService; +import cn.celess.blog.service.interfaces.FileManager; +import cn.celess.blog.service.interfaces.FileService; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -325,7 +326,7 @@ public class BaseTest { } @Slf4j - public static class TestQiNiuServiceImpl implements QiniuService { + public static class TestQiniuFileServiceImpl implements FileManager { @Override public QiniuResponse uploadFile(InputStream is, String fileName) { QiniuResponse response = new QiniuResponse(); diff --git a/src/test/java/cn/celess/blog/controller/UserControllerTest.java b/src/test/java/cn/celess/blog/controller/UserControllerTest.java index a6bc88b..521009d 100644 --- a/src/test/java/cn/celess/blog/controller/UserControllerTest.java +++ b/src/test/java/cn/celess/blog/controller/UserControllerTest.java @@ -115,7 +115,8 @@ public class UserControllerTest extends BaseTest { assertNotNull(inputStream); // mock 实现类 - mockInjectInstance(userService, "qiniuService", new TestQiNiuServiceImpl()); + // FIXME :: mock 时不应该为 qiniuService + mockInjectInstance(userService, "qiniuService", new TestQiniuFileServiceImpl()); MockMultipartFile file = new MockMultipartFile("file", "logo.png", MediaType.IMAGE_PNG_VALUE, inputStream); getMockData(multipart("/user/imgUpload").file(file), userLogin()).andDo(result -> {