From ae832919f5899105794688648ab101f8d9b25496 Mon Sep 17 00:00:00 2001 From: chendt <18902722133@163.com> Date: Mon, 27 Mar 2023 17:52:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E5=88=B0=E6=9C=AC=E5=9C=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/yami_shop.sql | 98 ------------------- doc/README.md | 2 +- doc/基本框架设计/文件上传下载.md | 4 + doc/生产环境/centos jdk安装.md | 4 +- doc/生产环境/教你如何部署.md | 4 +- .../shop/admin/controller/FileController.java | 16 ++- .../com/yami/shop/common/bean/ImgUpload.java | 36 +++++++ .../shop/common/config/FileUploadConfig.java | 1 + .../common/config/ResourceConfigAdapter.java | 22 +++++ .../shop/common/config/ShopBasicConfig.java | 6 ++ .../shop/common/config/ShopBeanConfig.java | 6 ++ .../common/response/ServerResponseEntity.java | 2 +- .../serializer/json/ImgJsonSerializer.java | 12 ++- .../yami/shop/common/util/ImgUploadUtil.java | 70 +++++++++++++ .../src/main/resources/shop.properties | 5 + .../admin/adapter/ResourceServerAdapter.java | 3 +- .../yami/shop/service/AttachFileService.java | 12 +-- .../service/impl/AttachFileServiceImpl.java | 43 ++++---- 18 files changed, 213 insertions(+), 133 deletions(-) create mode 100644 yami-shop-common/src/main/java/com/yami/shop/common/bean/ImgUpload.java create mode 100644 yami-shop-common/src/main/java/com/yami/shop/common/config/ResourceConfigAdapter.java create mode 100644 yami-shop-common/src/main/java/com/yami/shop/common/util/ImgUploadUtil.java diff --git a/db/yami_shop.sql b/db/yami_shop.sql index 1ef89ab..a182863 100644 --- a/db/yami_shop.sql +++ b/db/yami_shop.sql @@ -4420,95 +4420,6 @@ insert into `tz_prod_tag_reference`(`reference_id`,`shop_id`,`tag_id`,`prod_id` (340,NULL,2,18,1,'2019-06-22 18:28:31'), (341,NULL,3,18,1,'2019-06-22 18:28:31'); -/*Table structure for table `tz_schedule_job` */ - -DROP TABLE IF EXISTS `tz_schedule_job`; - -CREATE TABLE `tz_schedule_job` ( - `job_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务id', - `bean_name` varchar(200) DEFAULT NULL COMMENT 'spring bean名称', - `method_name` varchar(100) DEFAULT NULL COMMENT '方法名', - `params` varchar(2000) DEFAULT NULL COMMENT '参数', - `cron_expression` varchar(100) DEFAULT NULL COMMENT 'cron表达式', - `status` tinyint(4) DEFAULT NULL COMMENT '任务状态 0:正常 1:暂停', - `remark` varchar(255) DEFAULT NULL COMMENT '备注', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`job_id`) -) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='定时任务'; - -/*Data for the table `tz_schedule_job` */ - -insert into `tz_schedule_job`(`job_id`,`bean_name`,`method_name`,`params`,`cron_expression`,`status`,`remark`,`create_time`) values -(14,'orderTask','cancelOrder','','0 * * * * ?',0,'取消超时未支付订单','2019-06-24 14:51:51'), -(16,'orderTask','confirmOrder','','0 0/5 * * * ?',0,'系统自动确认收货订单','2019-06-24 14:52:47'); - -/*Table structure for table `tz_schedule_job_log` */ - -DROP TABLE IF EXISTS `tz_schedule_job_log`; - -CREATE TABLE `tz_schedule_job_log` ( - `log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务日志id', - `job_id` bigint(20) NOT NULL COMMENT '任务id', - `bean_name` varchar(200) DEFAULT NULL COMMENT 'spring bean名称', - `method_name` varchar(100) DEFAULT NULL COMMENT '方法名', - `params` varchar(2000) DEFAULT NULL COMMENT '参数', - `status` tinyint(4) NOT NULL COMMENT '任务状态 0:成功 1:失败', - `error` varchar(2000) DEFAULT NULL COMMENT '失败信息', - `times` int(11) NOT NULL COMMENT '耗时(单位:毫秒)', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`log_id`), - KEY `job_id` (`job_id`) -) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8 COMMENT='定时任务日志'; - -/*Data for the table `tz_schedule_job_log` */ - -insert into `tz_schedule_job_log`(`log_id`,`job_id`,`bean_name`,`method_name`,`params`,`status`,`error`,`times`,`create_time`) values -(1,14,'orderTask','cancelOrder','',1,NULL,57,'2019-08-07 17:02:00'), -(2,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:02:06'), -(3,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:03:00'), -(4,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:04:00'), -(5,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:05:00'), -(6,16,'orderTask','confirmOrder','',1,NULL,16,'2019-08-07 17:05:00'), -(7,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:06:00'), -(8,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:07:00'), -(9,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:08:00'), -(10,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:09:00'), -(11,14,'orderTask','cancelOrder','',1,NULL,9,'2019-08-07 17:10:00'), -(12,16,'orderTask','confirmOrder','',1,NULL,2,'2019-08-07 17:10:00'), -(13,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:11:00'), -(14,14,'orderTask','cancelOrder','',1,NULL,6,'2019-08-07 17:12:00'), -(15,14,'orderTask','cancelOrder','',1,NULL,2,'2019-08-07 17:13:00'), -(16,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:14:00'), -(17,14,'orderTask','cancelOrder','',1,NULL,19,'2019-08-07 17:15:00'), -(18,16,'orderTask','confirmOrder','',1,NULL,12,'2019-08-07 17:15:00'), -(19,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:16:00'), -(20,14,'orderTask','cancelOrder','',1,NULL,0,'2019-08-07 17:17:00'), -(21,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:18:00'), -(22,14,'orderTask','cancelOrder','',1,NULL,2,'2019-08-07 17:19:00'), -(23,14,'orderTask','cancelOrder','',1,NULL,27,'2019-08-07 17:20:00'), -(24,16,'orderTask','confirmOrder','',1,NULL,15,'2019-08-07 17:20:00'), -(25,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:21:00'), -(26,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:22:00'), -(27,14,'orderTask','cancelOrder','',1,NULL,8,'2019-08-07 17:23:00'), -(28,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:24:00'), -(29,14,'orderTask','cancelOrder','',1,NULL,7,'2019-08-07 17:25:00'), -(30,16,'orderTask','confirmOrder','',1,NULL,4,'2019-08-07 17:25:00'), -(31,14,'orderTask','cancelOrder','',1,NULL,1,'2019-08-07 17:26:00'), -(32,14,'orderTask','cancelOrder','',1,NULL,2,'2019-08-07 17:27:00'), -(33,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:28:00'), -(34,14,'orderTask','cancelOrder','',1,NULL,8,'2019-08-07 17:29:00'), -(35,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:30:00'), -(36,16,'orderTask','confirmOrder','',1,NULL,2,'2019-08-07 17:30:00'), -(37,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:31:00'), -(38,14,'orderTask','cancelOrder','',1,NULL,2,'2019-08-07 17:32:00'), -(39,14,'orderTask','cancelOrder','',1,NULL,2,'2019-08-07 17:33:00'), -(40,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:34:00'), -(41,14,'orderTask','cancelOrder','',1,NULL,10,'2019-08-07 17:35:00'), -(42,16,'orderTask','confirmOrder','',1,NULL,3,'2019-08-07 17:35:00'), -(43,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:36:00'), -(44,14,'orderTask','cancelOrder','',1,NULL,6,'2019-08-07 17:37:00'), -(45,14,'orderTask','cancelOrder','',1,NULL,6,'2019-08-07 17:38:00'); - /*Table structure for table `tz_shop_detail` */ DROP TABLE IF EXISTS `tz_shop_detail`; @@ -4856,15 +4767,6 @@ insert into `tz_sys_menu`(`menu_id`,`parent_id`,`name`,`url`,`perms`,`type`,`ic (2,1,'管理员列表','sys/user','',1,'admin',1), (3,1,'角色管理','sys/role','',1,'role',2), (4,1,'菜单管理','sys/menu','',1,'menu',3), -(6,1,'定时任务','sys/schedule','',1,'job',5), -(7,6,'查看',NULL,'sys:schedule:page,sys:schedule:info',2,NULL,0), -(8,6,'新增',NULL,'sys:schedule:save',2,NULL,0), -(9,6,'修改',NULL,'sys:schedule:update',2,NULL,0), -(10,6,'删除',NULL,'sys:schedule:delete',2,NULL,0), -(11,6,'暂停',NULL,'sys:schedule:pause',2,NULL,0), -(12,6,'恢复',NULL,'sys:schedule:resume',2,NULL,0), -(13,6,'立即执行',NULL,'sys:schedule:run',2,NULL,0), -(14,6,'日志列表',NULL,'sys:schedule:log',2,NULL,0), (15,2,'查看',NULL,'sys:user:page,sys:user:info',2,NULL,0), (16,2,'新增','','sys:user:save,sys:role:list',2,'',1), (17,2,'修改','','sys:user:update,sys:role:list',2,'',2), diff --git a/doc/README.md b/doc/README.md index e7ac35d..b273217 100644 --- a/doc/README.md +++ b/doc/README.md @@ -32,7 +32,7 @@ | 工具 | 版本 | |---------|-------| -| jdk | 1.8+ | +| jdk | 17 | | mysql | 5.7+ | | redis | 4.0+ | | nodejs | 14-16 | diff --git a/doc/基本框架设计/文件上传下载.md b/doc/基本框架设计/文件上传下载.md index 7a6ea2a..6b54f37 100644 --- a/doc/基本框架设计/文件上传下载.md +++ b/doc/基本框架设计/文件上传下载.md @@ -219,3 +219,7 @@ shop.qiniu.bucket= - 在`static/config/index.js` 修改`resourcesUrl` 统一七牛云存储开发环境目录 - 在`static/config/index-prod.js` 修改`resourcesUrl` 统一七牛云存储生产环境目录 + +### 更新于2023.03.27 +- 在`shop.properties` 更新了本地上传的配置,vue中的`resourcesUrl`也配置对应的本地路径 +- 全局搜索`/mall4j/img`,替换成你想要的图片路径,若按本代码默认的则前端的资源路径为`http://ip: + admin服务的端口号/mall4j/img/` diff --git a/doc/生产环境/centos jdk安装.md b/doc/生产环境/centos jdk安装.md index 657347d..bd84f25 100644 --- a/doc/生产环境/centos jdk安装.md +++ b/doc/生产环境/centos jdk安装.md @@ -1,8 +1,8 @@ (1)安装JDK -安装JDK,如果没有java-1.8.0-openjdk-devel就没有javac命令 +安装JDK,如果没有java-17-openjdk-devel就没有javac命令 ```bash -yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel +yum install java-17-openjdk java-17-openjdk-devel ``` diff --git a/doc/生产环境/教你如何部署.md b/doc/生产环境/教你如何部署.md index 31d84a3..fca44b3 100644 --- a/doc/生产环境/教你如何部署.md +++ b/doc/生产环境/教你如何部署.md @@ -1,9 +1,9 @@ ## 安装jdk -安装JDK,如果没有java-1.8.0-openjdk-devel就没有javac命令 +安装JDK,如果没有java-17-openjdk-devel就没有javac命令 ```bash -yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel +yum install java-17-openjdk java-17-openjdk-devel ``` diff --git a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/FileController.java b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/FileController.java index 3be551c..7b9446d 100644 --- a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/FileController.java +++ b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/FileController.java @@ -12,6 +12,7 @@ package com.yami.shop.admin.controller; import com.yami.shop.common.bean.Qiniu; import com.yami.shop.common.response.ServerResponseEntity; +import com.yami.shop.common.util.ImgUploadUtil; import com.yami.shop.service.AttachFileService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.util.Objects; /** * 文件上传 controller @@ -35,20 +37,28 @@ public class FileController { private AttachFileService attachFileService; @Autowired private Qiniu qiniu; + @Autowired + private ImgUploadUtil imgUploadUtil; @PostMapping("/upload/element") public ServerResponseEntity uploadElementFile(@RequestParam("file") MultipartFile file) throws IOException{ if(file.isEmpty()){ return ServerResponseEntity.success(); } - String fileName = attachFileService.uploadFile(file.getBytes(),file.getOriginalFilename()); + String fileName = attachFileService.uploadFile(file); return ServerResponseEntity.success(fileName); } @PostMapping("/upload/tinymceEditor") public ServerResponseEntity uploadTinymceEditorImages(@RequestParam("editorFile") MultipartFile editorFile) throws IOException{ - String fileName = attachFileService.uploadFile(editorFile.getBytes(),editorFile.getOriginalFilename()); - return ServerResponseEntity.success(qiniu.getResourcesUrl() + fileName); + String fileName = attachFileService.uploadFile(editorFile); + String data = ""; + if (Objects.equals(imgUploadUtil.getUploadType(), 1)) { + data = imgUploadUtil.getUploadPath() + fileName; + } else if (Objects.equals(imgUploadUtil.getUploadType(), 2)) { + data = qiniu.getResourcesUrl() + fileName; + } + return ServerResponseEntity.success(data); } } diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/bean/ImgUpload.java b/yami-shop-common/src/main/java/com/yami/shop/common/bean/ImgUpload.java new file mode 100644 index 0000000..684874c --- /dev/null +++ b/yami-shop-common/src/main/java/com/yami/shop/common/bean/ImgUpload.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.common.bean; + +import lombok.Data; + +/** + * 本地存储配置信息 + * @author lgh + */ +@Data +public class ImgUpload { + + /** + * 本地文件上传文件夹 + */ + private String imagePath; + + /** + * 文件上传方式 1.本地文件上传 2.七牛云 + */ + private Integer uploadType; + + /** + * 网站url + */ + private String resourceUrl; +} diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/config/FileUploadConfig.java b/yami-shop-common/src/main/java/com/yami/shop/common/config/FileUploadConfig.java index 086ced7..8ffd996 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/config/FileUploadConfig.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/config/FileUploadConfig.java @@ -10,6 +10,7 @@ package com.yami.shop.common.config; +import com.yami.shop.common.bean.ImgUpload; import com.yami.shop.common.enums.QiniuZone; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/config/ResourceConfigAdapter.java b/yami-shop-common/src/main/java/com/yami/shop/common/config/ResourceConfigAdapter.java new file mode 100644 index 0000000..244e5b0 --- /dev/null +++ b/yami-shop-common/src/main/java/com/yami/shop/common/config/ResourceConfigAdapter.java @@ -0,0 +1,22 @@ +package com.yami.shop.common.config; + +import com.yami.shop.common.util.ImgUploadUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * @author TRACK + */ +@Configuration +public class ResourceConfigAdapter implements WebMvcConfigurer { + + @Autowired + private ImgUploadUtil imgUploadUtil; + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/mall4j/img/**").addResourceLocations("file:" + imgUploadUtil.getUploadPath()); + } +} diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/config/ShopBasicConfig.java b/yami-shop-common/src/main/java/com/yami/shop/common/config/ShopBasicConfig.java index a2014d2..a89a224 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/config/ShopBasicConfig.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/config/ShopBasicConfig.java @@ -11,6 +11,7 @@ package com.yami.shop.common.config; import com.yami.shop.common.bean.AliDaYu; +import com.yami.shop.common.bean.ImgUpload; import com.yami.shop.common.bean.Qiniu; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -43,4 +44,9 @@ public class ShopBasicConfig { */ private String tokenAesKey; + /** + * 本地文件上传配置 + */ + private ImgUpload imgUpload; + } diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/config/ShopBeanConfig.java b/yami-shop-common/src/main/java/com/yami/shop/common/config/ShopBeanConfig.java index 0313978..8bbd6e4 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/config/ShopBeanConfig.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/config/ShopBeanConfig.java @@ -12,6 +12,7 @@ package com.yami.shop.common.config; import cn.hutool.crypto.symmetric.AES; import com.yami.shop.common.bean.AliDaYu; +import com.yami.shop.common.bean.ImgUpload; import com.yami.shop.common.bean.Qiniu; import lombok.AllArgsConstructor; import org.springframework.context.annotation.Bean; @@ -40,4 +41,9 @@ public class ShopBeanConfig { public AliDaYu aLiDaYu () { return shopBasicConfig.getALiDaYu(); } + + @Bean + public ImgUpload imgUpload() { + return shopBasicConfig.getImgUpload(); + } } diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/response/ServerResponseEntity.java b/yami-shop-common/src/main/java/com/yami/shop/common/response/ServerResponseEntity.java index 4429143..ef603e9 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/response/ServerResponseEntity.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/response/ServerResponseEntity.java @@ -106,7 +106,7 @@ public class ServerResponseEntity implements Serializable { public ServerResponseEntity() { // 版本号 - this.version = "mall4j.v230313"; + this.version = "mall4j.v230327"; } public static ServerResponseEntity success(T data) { diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/serializer/json/ImgJsonSerializer.java b/yami-shop-common/src/main/java/com/yami/shop/common/serializer/json/ImgJsonSerializer.java index 4a70e7b..191b12b 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/serializer/json/ImgJsonSerializer.java +++ b/yami-shop-common/src/main/java/com/yami/shop/common/serializer/json/ImgJsonSerializer.java @@ -15,10 +15,12 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import com.yami.shop.common.bean.Qiniu; +import com.yami.shop.common.util.ImgUploadUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.IOException; +import java.util.Objects; /** * @author lanhai @@ -28,6 +30,8 @@ public class ImgJsonSerializer extends JsonSerializer { @Autowired private Qiniu qiniu; + @Autowired + private ImgUploadUtil imgUploadUtil; @Override public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { @@ -37,8 +41,14 @@ public class ImgJsonSerializer extends JsonSerializer { } String[] imgs = value.split(StrUtil.COMMA); StringBuilder sb = new StringBuilder(); + String resourceUrl = ""; + if (Objects.equals(imgUploadUtil.getUploadType(), 2)) { + resourceUrl = qiniu.getResourcesUrl(); + } else if (Objects.equals(imgUploadUtil.getUploadType(), 1)) { + resourceUrl = imgUploadUtil.getResourceUrl(); + } for (String img : imgs) { - sb.append(qiniu.getResourcesUrl()).append(img).append(StrUtil.COMMA); + sb.append(resourceUrl).append(img).append(StrUtil.COMMA); } sb.deleteCharAt(sb.length()-1); gen.writeString(sb.toString()); diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/util/ImgUploadUtil.java b/yami-shop-common/src/main/java/com/yami/shop/common/util/ImgUploadUtil.java new file mode 100644 index 0000000..0e63a3f --- /dev/null +++ b/yami-shop-common/src/main/java/com/yami/shop/common/util/ImgUploadUtil.java @@ -0,0 +1,70 @@ +package com.yami.shop.common.util; + +import cn.hutool.core.util.StrUtil; +import com.yami.shop.common.bean.ImgUpload; +import com.yami.shop.common.exception.YamiShopBindException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.Objects; + +/** + * 本地文件上传与删除 + * @author TRACK + */ +@Component +public class ImgUploadUtil { + + @Autowired + private ImgUpload imgUpload; + + public Integer getUploadType() { + Integer uploadType = imgUpload.getUploadType(); + if (Objects.isNull(uploadType)) { + throw new YamiShopBindException("请配置图片存储方式"); + } + return uploadType; + } + + public String getUploadPath() { + String imagePath = imgUpload.getImagePath(); + if (Objects.isNull(imagePath) || StrUtil.isBlank(imagePath)) { + throw new YamiShopBindException("请配置图片存储路径"); + } + return imagePath; + } + + public String getResourceUrl() { + String resourceUrl = imgUpload.getResourceUrl(); + if (Objects.isNull(resourceUrl) || StrUtil.isBlank(resourceUrl)) { + throw new YamiShopBindException("请配置图片路径"); + } + return resourceUrl; + } + + public String upload(MultipartFile img, String fileName) { + String filePath = imgUpload.getImagePath(); + File file = new File(filePath + fileName); + if (!file.exists()) { + boolean result = file.mkdirs(); + if (!result) { + throw new YamiShopBindException("创建目录:" + filePath + "失败"); + } + } + try { + img.transferTo(file); + } catch (IOException e) { + throw new YamiShopBindException("图片上传失败"); + } + return fileName; + } + + public void delete(String fileName) { + String filePath = imgUpload.getImagePath(); + File file = new File(filePath + fileName); + file.deleteOnExit(); + } +} diff --git a/yami-shop-common/src/main/resources/shop.properties b/yami-shop-common/src/main/resources/shop.properties index db5638f..17b162d 100644 --- a/yami-shop-common/src/main/resources/shop.properties +++ b/yami-shop-common/src/main/resources/shop.properties @@ -10,3 +10,8 @@ shop.aLiDaYu.accessKeySecret= shop.aLiDaYu.signName= shop.tokenAesKey=q5e6w6w9f4q497te + +shop.imgUpload.imagePath=D:/Mall4j/IMG/ +# 1.\u672C\u5730\u6587\u4EF6\u4E0A\u4F20 2.\u4E03\u725B\u4E91 +shop.imgUpload.uploadType=1 +shop.imgUpload.resourceUrl=http://localhost:8085/mall4j/img/ \ No newline at end of file diff --git a/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/adapter/ResourceServerAdapter.java b/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/adapter/ResourceServerAdapter.java index 6c48bfc..c98d93b 100644 --- a/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/adapter/ResourceServerAdapter.java +++ b/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/adapter/ResourceServerAdapter.java @@ -20,7 +20,8 @@ public class ResourceServerAdapter extends DefaultAuthConfigAdapter { "/swagger-ui.html", "/swagger-resources/**", "/captcha/**", - "/adminLogin"); + "/adminLogin", + "/mall4j/img/**"); @Override public List excludePathPatterns() { diff --git a/yami-shop-service/src/main/java/com/yami/shop/service/AttachFileService.java b/yami-shop-service/src/main/java/com/yami/shop/service/AttachFileService.java index 88c00ab..f63dce3 100644 --- a/yami-shop-service/src/main/java/com/yami/shop/service/AttachFileService.java +++ b/yami-shop-service/src/main/java/com/yami/shop/service/AttachFileService.java @@ -12,6 +12,7 @@ package com.yami.shop.service; import com.baomidou.mybatisplus.extension.service.IService; import com.yami.shop.bean.model.AttachFile; +import org.springframework.web.multipart.MultipartFile; import java.io.IOException; @@ -22,13 +23,12 @@ import java.io.IOException; public interface AttachFileService extends IService { /** - * 上传文件 - * @param bytes 字节 - * @param originalName 文件名称 - * @return 文件名称 - * @throws IOException 异常 + * 上传文件到本地 + * @param file + * @throws IOException e + * @return */ - String uploadFile(byte[] bytes,String originalName) throws IOException; + String uploadFile(MultipartFile file) throws IOException; /** * 删除文件 diff --git a/yami-shop-service/src/main/java/com/yami/shop/service/impl/AttachFileServiceImpl.java b/yami-shop-service/src/main/java/com/yami/shop/service/impl/AttachFileServiceImpl.java index 8624b90..0b72ba3 100644 --- a/yami-shop-service/src/main/java/com/yami/shop/service/impl/AttachFileServiceImpl.java +++ b/yami-shop-service/src/main/java/com/yami/shop/service/impl/AttachFileServiceImpl.java @@ -23,14 +23,18 @@ import com.qiniu.storage.model.DefaultPutRet; import com.qiniu.util.Auth; import com.yami.shop.bean.model.AttachFile; import com.yami.shop.common.bean.Qiniu; +import com.yami.shop.common.util.ImgUploadUtil; import com.yami.shop.common.util.Json; import com.yami.shop.dao.AttachFileMapper; import com.yami.shop.service.AttachFileService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Date; +import java.util.Objects; /** * @author lanhai @@ -40,49 +44,52 @@ public class AttachFileServiceImpl extends ServiceImpl().eq(AttachFile::getFilePath,fileName)); try { - bucketManager.delete(qiniu.getBucket(), fileName); + if (Objects.equals(imgUploadUtil.getUploadType(), 1)) { + imgUploadUtil.delete(fileName); + } else if (Objects.equals(imgUploadUtil.getUploadType(), 2)) { + bucketManager.delete(qiniu.getBucket(), fileName); + } } catch (QiniuException e) { throw new RuntimeException(e); } } - - }