From 2e3cce4576436cdfdfb915d8b24d558995c5b84e Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Sat, 23 Mar 2024 23:49:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6,=E9=85=8D=E7=BD=AEminio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../properties/InterceptorsProperties.java | 2 +- .../atguigu/properties/MinioProperties.java | 22 +++++++ .../atguigu/constant/MessageConstant.class | Bin 1204 -> 1230 bytes .../properties/InterceptorsProperties.class | Bin 2269 -> 2264 bytes .../controller/FileUploadController.java | 27 +++++++++ .../manger/service/FileUploadService.java | 13 ++++ .../service/impl/FileUploadServiceImpl.java | 57 ++++++++++++++++++ .../src/main/resources/application-dev.yml | 15 +++-- .../src/main/resources/application.yml | 10 ++- .../target/classes/application-dev.yml | 15 +++-- spzx-manager/target/classes/application.yml | 10 ++- .../spzx/manger/mapper/SysUserMapper.class | Bin 691 -> 789 bytes .../spzx/manger/service/SysUserService.class | Bin 828 -> 926 bytes .../service/impl/SysUserServiceImpl.class | Bin 6085 -> 6581 bytes .../target/classes/mapper/SysUserMapper.xml | 34 +++++++++++ 15 files changed, 192 insertions(+), 13 deletions(-) create mode 100644 spzx-common/common-util/src/main/java/com/atguigu/properties/MinioProperties.java create mode 100644 spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/FileUploadController.java create mode 100644 spzx-manager/src/main/java/com/atguigu/spzx/manger/service/FileUploadService.java create mode 100644 spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/FileUploadServiceImpl.java diff --git a/spzx-common/common-util/src/main/java/com/atguigu/properties/InterceptorsProperties.java b/spzx-common/common-util/src/main/java/com/atguigu/properties/InterceptorsProperties.java index 08e3d82..57d8054 100644 --- a/spzx-common/common-util/src/main/java/com/atguigu/properties/InterceptorsProperties.java +++ b/spzx-common/common-util/src/main/java/com/atguigu/properties/InterceptorsProperties.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.Configuration; import java.util.List; @Configuration -@ConfigurationProperties(prefix = "bunny.spzx") +@ConfigurationProperties(prefix = "bunny") @Data public class InterceptorsProperties { private List noAuthUrls; diff --git a/spzx-common/common-util/src/main/java/com/atguigu/properties/MinioProperties.java b/spzx-common/common-util/src/main/java/com/atguigu/properties/MinioProperties.java new file mode 100644 index 0000000..77d4993 --- /dev/null +++ b/spzx-common/common-util/src/main/java/com/atguigu/properties/MinioProperties.java @@ -0,0 +1,22 @@ +package com.atguigu.properties; + +import io.minio.MinioClient; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix = "bunny.minio") +@Data +public class MinioProperties { + private String endpointUrl; + private String accessKey; + private String secretKey; + private String bucketName; + + @Bean + public MinioClient minioClient() { + return MinioClient.builder().endpoint(endpointUrl).credentials(accessKey, secretKey).build(); + } +} \ No newline at end of file diff --git a/spzx-common/common-util/target/classes/com/atguigu/constant/MessageConstant.class b/spzx-common/common-util/target/classes/com/atguigu/constant/MessageConstant.class index 8250fb1a3e18986203b1cc3d9daffc9b2201eb0c..734948b03b3a7893f48221722c78e2ac345cf294 100644 GIT binary patch delta 118 zcmdnOd5)9o)W2Q(7#J9A8SFQ5?Oi z5VA6`0Z9v>dVMgTfq_+PI|JiJpa2ttC6EM3gGehN$pdDyGFUU%0C|i+D?qC30O;@( AbN~PV delta 93 zcmX@dxrLMK)W2Q(7#J9A8EiLl?O4i1bD(Mv4@6o3NggnpmBEt13dmz*um+M$3^o9z;1PQO diff --git a/spzx-common/common-util/target/classes/com/atguigu/properties/InterceptorsProperties.class b/spzx-common/common-util/target/classes/com/atguigu/properties/InterceptorsProperties.class index bc8a0e8e7d0542dc01df5cfafa05575e4b812602..6036b3cc089c4f101b223ca1d2195cb4e0df035f 100644 GIT binary patch delta 19 acmcaBctdc51PdE$QfXdZ fileUploadService(@RequestParam(value = "file") MultipartFile file) { + String fileUrl = fileUploadService.uploadFile(file); + return Result.success(fileUrl); + } +} \ No newline at end of file diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/FileUploadService.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/FileUploadService.java new file mode 100644 index 0000000..9c393e2 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/FileUploadService.java @@ -0,0 +1,13 @@ +package com.atguigu.spzx.manger.service; + +import org.springframework.web.multipart.MultipartFile; + +public interface FileUploadService { + /** + * 上传文件 + * + * @param file 上传的文件 + * @return file的地址 + */ + String uploadFile(MultipartFile file); +} diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/FileUploadServiceImpl.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/FileUploadServiceImpl.java new file mode 100644 index 0000000..5ed1836 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/FileUploadServiceImpl.java @@ -0,0 +1,57 @@ +package com.atguigu.spzx.manger.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.atguigu.exception.BunnyException; +import com.atguigu.properties.MinioProperties; +import com.atguigu.spzx.manger.service.FileUploadService; +import io.minio.BucketExistsArgs; +import io.minio.MakeBucketArgs; +import io.minio.MinioClient; +import io.minio.PutObjectArgs; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Date; +import java.util.UUID; + +@Service +@Slf4j +public class FileUploadServiceImpl implements FileUploadService { + @Autowired + MinioClient minioClient; + @Autowired + private MinioProperties minioProperties; + + /** + * 上传文件 + * + * @param file 上传的文件 + * @return file的地址 + */ + @Override + public String uploadFile(MultipartFile file) { + String bucketName = minioProperties.getBucketName(); + String dir = DateUtil.format(new Date(), "yyyy-MM-dd"); + String uuid = UUID.randomUUID().toString(); + String filename = dir + "/" + uuid + "-" + file.getOriginalFilename(); + + try { + boolean bucketExists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); + // 判断桶是否存在 + if (!bucketExists) { + log.warn("minio桶不存在:{}", bucketName); + minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); + } + + minioClient.putObject(PutObjectArgs.builder().bucket(bucketName) + .stream(file.getInputStream(), file.getSize(), -1) + .object(filename).build()); + + return minioProperties.getEndpointUrl() + "/" + minioProperties.getBucketName() + "/" + filename; + } catch (Exception exception) { + throw new BunnyException(exception.getMessage()); + } + } +} diff --git a/spzx-manager/src/main/resources/application-dev.yml b/spzx-manager/src/main/resources/application-dev.yml index b31cc35..2948ea0 100644 --- a/spzx-manager/src/main/resources/application-dev.yml +++ b/spzx-manager/src/main/resources/application-dev.yml @@ -11,8 +11,13 @@ bunny: port: 6379 database: 2 - spzx: - noAuthUrls: - - /admin/system/index/login - - /admin/system/index/generateValidateCode - - /v3/** + minio: + endpointUrl: "http://129.211.31.58:9000" + bucket-name: spzx-bucket + accessKey: "bunny" + secretKey: "02120212" + + noAuthUrls: + - /admin/system/index/login + - /admin/system/index/generateValidateCode + - /v3/** diff --git a/spzx-manager/src/main/resources/application.yml b/spzx-manager/src/main/resources/application.yml index 85506e2..0289c69 100644 --- a/spzx-manager/src/main/resources/application.yml +++ b/spzx-manager/src/main/resources/application.yml @@ -37,4 +37,12 @@ mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true - auto-mapping-behavior: full \ No newline at end of file + auto-mapping-behavior: full + + +bunny: + minio: + endpointUrl: ${bunny.minio.endpointUrl} + accessKey: ${bunny.minio.accessKey} + secretKey: ${bunny.minio.secretKey} + bucket-name: ${bunny.minio.bucket-name} diff --git a/spzx-manager/target/classes/application-dev.yml b/spzx-manager/target/classes/application-dev.yml index b31cc35..2948ea0 100644 --- a/spzx-manager/target/classes/application-dev.yml +++ b/spzx-manager/target/classes/application-dev.yml @@ -11,8 +11,13 @@ bunny: port: 6379 database: 2 - spzx: - noAuthUrls: - - /admin/system/index/login - - /admin/system/index/generateValidateCode - - /v3/** + minio: + endpointUrl: "http://129.211.31.58:9000" + bucket-name: spzx-bucket + accessKey: "bunny" + secretKey: "02120212" + + noAuthUrls: + - /admin/system/index/login + - /admin/system/index/generateValidateCode + - /v3/** diff --git a/spzx-manager/target/classes/application.yml b/spzx-manager/target/classes/application.yml index 85506e2..0289c69 100644 --- a/spzx-manager/target/classes/application.yml +++ b/spzx-manager/target/classes/application.yml @@ -37,4 +37,12 @@ mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true - auto-mapping-behavior: full \ No newline at end of file + auto-mapping-behavior: full + + +bunny: + minio: + endpointUrl: ${bunny.minio.endpointUrl} + accessKey: ${bunny.minio.accessKey} + secretKey: ${bunny.minio.secretKey} + bucket-name: ${bunny.minio.bucket-name} diff --git a/spzx-manager/target/classes/com/atguigu/spzx/manger/mapper/SysUserMapper.class b/spzx-manager/target/classes/com/atguigu/spzx/manger/mapper/SysUserMapper.class index f4b843b83bf01c5eb12652bf40aba40c542bce3e..34839dd954886fe84ebff4acc557841b9ea5b558 100644 GIT binary patch delta 149 zcmdnYI+cy<)W2Q(7#J9A86-DyJ!G`vEiFh%EJ+QnEDkMBEn;NgN=eO0ElG8%^h{x7 z5Z3U?N-Rs%&q>Tn*Z0ZKOSjexV`N|}1*-H+nf#Kmh>>-243nb`3nPOd13v>J13S=U jRz?N^1_q#z5Q8v6NCYUu#2^YL#TdkaG#gM-f`I`5^AR0g delta 52 zcmbQrwwaad)W2Q(7#J9A8ALa7J!G7$&Q!q2Jb4C_qZk7dgCJ0Xi9v`#7)Y}*FfxcR GFaQ8>s0o$; diff --git a/spzx-manager/target/classes/com/atguigu/spzx/manger/service/SysUserService.class b/spzx-manager/target/classes/com/atguigu/spzx/manger/service/SysUserService.class index c7e679e7a3a45dd5f4172e357a10717508aefdab..c330150df69d873d6ce500e38bb97c42f6fa405c 100644 GIT binary patch delta 137 zcmdnPHjka_)W2Q(7#J9A8Dutc&1bUWEiFh%EJ+QnEDkMBEn;NgN=eO0ElG8%^h{x7 z5Z3U?N-Rs%&q>Tn*Z0ZKOSjexV`N|}1*-H+nY^4ykCAQiHKrH?7Dfg!1`!5E26mvy ctc(nz3=BXaaRv#5kR(uskwFSbGBHR40E1s0DF6Tf delta 40 vcmbQozK4zL)W2Q(7#J9A86-Ax&1ahYlu3t?WwH=+3>O00LlT1VhXxpwZi@UMl4!yY6HudgK?fUNQ0EmL=<|K;>ayh|=e*zdz3=lp z@8vu1M-H`HA6_1L55O{6xZir!&Lr@$jZg5Yz>GVon_~iBxN*&v=(cENYcvs$tQkne zmwND-;Ob2S{gG%Yp57c!M>Y*4lBsAS73p@8$!OeJSzLQ@T2OcPx!2DR?%5n0&A%}I z)REEr$k>}B6}T5)+V~151(oRsW6_keetUAm9ZBb5FU~M%^yu5?UKySp^sS9ioE2Cx zXRDKPR%}-yYr``&HuhQ=!?*|MZG4CCvv1k$^5f7MyWMQ_rb&{B_B(>I*nNtThT2m| zH8X*-A>Xr^AK+$@TF?r?1zKhN{=}~feb_i_Z!SVS`B|U;GTpx>fE8HDeJ^87jWWSi zge&3KY&s0tufu-jTaf_s@Ed}FUGTu~_=B5*Kk*kiCWbm{t0kknH==>>7Q(i|LK|ub zTaRneh(&1UvkZ%|8cVPq*U`5F51|uJVkw@-a_m4CcH;)@rM!K(5jot1V_1a~xCN(i zD<;rQ6~O&O1}+yxDC;8rhV+p1BL2Z763YBwH;8_c$xK3cF~Pi#r?iNBm-v%@krYV<|(g$~fES4|S=8Ev|q&QH~8-T)kdf zC2^LhH;K*SdJIaIpPIu6qN4(Q) z4w^X}Z#MGyAcqq=ZWtfApk~a-Kvl5~6?~`Jn{BAZBbbjzaU~w(AU)2($#77f!1WxI zRd^cf@XWO0^puLzqdTc4x?AemKNnG!NCUfT5M!a93^$R2y3eMlyHtUUTtbTnVGk0; z9*LTFQU8Qu1#TyRYH~m&&&*EwKA*~e7+)0faOpIv=n1^YdcVYb@ba{Q2$W<73Nok2 zG6gpNOp0vlifn$(=KK18s&8gf4RZc=q7JW3qw<%i{1T8Ln^_oO2~e9?=IR@*I=fg+ zQZJ1;zJ?sm?S#ku2HeIFx@O+~kS>-9m)#{WB*Yk(%$xeB$b8mo0rxBd4k9a8p!`48 Ca49kX delta 988 zcmZXTNo-AF6vuzxyZ80A&+DM&wbhiwf>tNAL?vhmL6C;fh^WL+u^>T6ill68tmH<5 z*x0bJX_aRt(r7}`ghY)s)L2Sev#RNTzYdYO$-U>?@0{~L|1*52i?0=hZ~Q)g8JK1w z_2Gk&A$PbN;$DRNJn(7~i``a3p|?Mn;dLg(H{48235Md0ii53kPlu9;=_ACCvGQVQ4 zBAQj^7aZ0fI!mC^l8f5^@F2Oc#WDjRM=VGkUq!9WI}t6lT}!oNTtgz&WU`)-Y_MR{ zMG1=DIm`7J%{J;Bw*u4)#KG^`7Ybn9>;YWDD$}nELZ + + + update sys_user + set + + username = #{userName}, + + + password = #{password}, + + + name = #{name}, + + + phone = #{phone}, + + + description = #{description}, + + + status = #{status}, + + update_time = now() + where id = #{id} + + + + + update sys_user + set is_deleted = 1, + update_time = now() + where id = #{id} + +