From dac4d3653f80e5f7f2a0bc08907382653d6b3cd6 Mon Sep 17 00:00:00 2001 From: Y1NanPing <735289578@qq.com> Date: Sat, 19 Jul 2025 08:34:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=AC=A1=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/common-util/pom.xml | 5 ++ .../common/util/AuthContextHolder.java | 8 +- .../common/util/AuthContextHolder.class | Bin 973 -> 1017 bytes .../album/api/AlbumInfoApiController.java | 21 +++++ .../album/api/FileUploadApiController.java | 21 ++++- .../album/config/MinioConstantProperties.java | 11 +++ .../service/AlbumAttributeValueService.java | 9 +++ .../album/service/AlbumInfoService.java | 5 ++ .../album/service/FileUploadService.java | 11 +++ .../impl/AlbumAttributeValueServiceImpl.java | 11 +++ .../service/impl/AlbumInfoServiceImpl.java | 72 +++++++++++++++++- .../service/impl/FileUploadServiceImpl.java | 68 +++++++++++++++++ .../album/api/AlbumInfoApiController.class | Bin 768 -> 1792 bytes .../album/api/FileUploadApiController.class | Bin 624 -> 1839 bytes .../config/MinioConstantProperties.class | Bin 3420 -> 3938 bytes .../album/service/AlbumInfoService.class | Bin 345 -> 609 bytes .../service/impl/AlbumInfoServiceImpl.class | Bin 1122 -> 5541 bytes 17 files changed, 237 insertions(+), 5 deletions(-) create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumAttributeValueService.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/FileUploadService.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumAttributeValueServiceImpl.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/FileUploadServiceImpl.java diff --git a/common/common-util/pom.xml b/common/common-util/pom.xml index 28e9ce9..a3ad4ce 100644 --- a/common/common-util/pom.xml +++ b/common/common-util/pom.xml @@ -43,5 +43,10 @@ hutool-all 5.7.22 + + com.alibaba + transmittable-thread-local + 2.14.4 + diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java index 8cc00f4..87530fe 100644 --- a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java @@ -1,18 +1,22 @@ package com.atguigu.tingshu.common.util; +import com.alibaba.ttl.TransmittableThreadLocal; + /** * 获取当前用户信息帮助类 */ public class AuthContextHolder { - private static ThreadLocal userId = new ThreadLocal(); + private static ThreadLocal userId = new TransmittableThreadLocal(); public static void setUserId(Long _userId) { userId.set(_userId); } public static Long getUserId() { - return userId.get(); + //return userId.get(); + //TODO 暂时硬编码为1,后续做完登录验证后再修改 + return 1L; } public static void removeUserId() { diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/util/AuthContextHolder.class b/common/common-util/target/classes/com/atguigu/tingshu/common/util/AuthContextHolder.class index 00fa9ac66b1193abd87ea544f3140604a1667cd2..d1817e41094aab48a7563b79954b0d3732723cd8 100644 GIT binary patch delta 418 zcmY*VJ5Iwu6r8nWZ?c#)hI}9aLI`pAnbe4m3PqwxL%9wn1pJYVaho%s9E49KKp=4d zBzg|P1!xe@j)bAux9`oH(ai2U|Kj59`}q~XK04RpV>E|(j-rkd$_#~b8B5ER{=n)6 z{(ynU(!FwyP8kgIu-*N?-V-QbLB}FA1}${FAa*!v3}!#@Ea?tyX-g}LT&ovK|I!;q zk+fZ>cNRMGq#N|5E5NFg4!dB+G9^;50u_voMzub^QHrfq!jlQep+QwodlhSF(v-(K zTBNIwKb6WT;R>37S#XM$@pCZICVYdAO8Mx@V-s764fVBDL@V(Gl>h($ delta 373 zcmYjL%Syvg6r7Wi+!#Y#Bvz}|##U|XD<2?!fKce#Whx<1wFN2N_8X)>q81bs#I@kw zrN7}uoSR#yi#zwsFmvYos88j6{Jy*aI74#heRTswK2}i{l=5sOh+6GVKOLvZbvnqC zZm*wRj!qTU1;Ik@3}EL5D9w6uC1I8OEo{Sv@HxcV^xG;oW9ph| z+#&kKY@?0_*%EfK$6Re%EmbBl6^{&9hN5%fcd?Hq^%kEkBs$v0fv(|PFP1X=2=#>U z9c%Yg1u@Z-uh4&J&Z5?s`&HquJQ(viKT{vl8NtQTzl1)EhrJ@Wc*fQYYM!EKDqJo- ICbMwz2W5~eHvj+t diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/api/AlbumInfoApiController.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/AlbumInfoApiController.java index d1a2406..90b6bdf 100644 --- a/service/service-album/src/main/java/com/atguigu/tingshu/album/api/AlbumInfoApiController.java +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/AlbumInfoApiController.java @@ -1,8 +1,15 @@ package com.atguigu.tingshu.album.api; import com.atguigu.tingshu.album.service.AlbumInfoService; +import com.atguigu.tingshu.common.result.Result; +import com.atguigu.tingshu.common.util.AuthContextHolder; +import com.atguigu.tingshu.vo.album.AlbumInfoVo; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -16,5 +23,19 @@ public class AlbumInfoApiController { private AlbumInfoService albumInfoService; + @Operation(summary = "新建专辑信息") + @PostMapping("/albumInfo/saveAlbumInfo") + public Result saveAlbumInfo(@Validated @RequestBody AlbumInfoVo albumInfoVo) { + Long userId = AuthContextHolder.getUserId(); + albumInfoService.saveAlbumInfo(albumInfoVo, userId); + return Result.ok(); + + } + + + } + + + diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/api/FileUploadApiController.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/FileUploadApiController.java index 3599943..453de31 100644 --- a/service/service-album/src/main/java/com/atguigu/tingshu/album/api/FileUploadApiController.java +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/FileUploadApiController.java @@ -1,14 +1,31 @@ package com.atguigu.tingshu.album.api; + +import com.atguigu.tingshu.album.service.FileUploadService; +import com.atguigu.tingshu.common.result.Result; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; @Tag(name = "上传管理接口") @RestController @RequestMapping("api/album") public class FileUploadApiController { + @Autowired + private FileUploadService fileUploadService; + @Operation(summary = "上传文件") + @PostMapping("/fileUpload") + public Result fileUpload(@RequestParam("file") MultipartFile file) throws IOException { + String url = fileUploadService.fileUpload(file); + + return Result.ok(url); + } + } diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/config/MinioConstantProperties.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/config/MinioConstantProperties.java index 005c472..aa25641 100644 --- a/service/service-album/src/main/java/com/atguigu/tingshu/album/config/MinioConstantProperties.java +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/config/MinioConstantProperties.java @@ -1,7 +1,9 @@ package com.atguigu.tingshu.album.config; +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 @@ -13,4 +15,13 @@ public class MinioConstantProperties { private String accessKey; private String secreKey; private String bucketName; + @Bean + public MinioClient minioClient() { + return + MinioClient.builder() + .endpoint(endpointUrl) + .credentials(accessKey, secreKey) + .build(); + } + } diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumAttributeValueService.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumAttributeValueService.java new file mode 100644 index 0000000..66c6128 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumAttributeValueService.java @@ -0,0 +1,9 @@ +package com.atguigu.tingshu.album.service; + +import com.atguigu.tingshu.model.album.AlbumAttributeValue; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.stereotype.Service; + + +public interface AlbumAttributeValueService extends IService { +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumInfoService.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumInfoService.java index af0d58f..ec87626 100644 --- a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumInfoService.java +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumInfoService.java @@ -1,9 +1,14 @@ package com.atguigu.tingshu.album.service; import com.atguigu.tingshu.model.album.AlbumInfo; +import com.atguigu.tingshu.vo.album.AlbumInfoVo; import com.baomidou.mybatisplus.extension.service.IService; public interface AlbumInfoService extends IService { + //新建专辑信息 + void saveAlbumInfo(AlbumInfoVo albumInfoVo, Long userId); + //保存专辑的状态 + void saveAlbumInfoStat(Long albumId, String statType, int statNum); } diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/FileUploadService.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/FileUploadService.java new file mode 100644 index 0000000..d89b885 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/FileUploadService.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.album.service; + + +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +public interface FileUploadService { + String fileUpload(MultipartFile file) throws IOException; + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumAttributeValueServiceImpl.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumAttributeValueServiceImpl.java new file mode 100644 index 0000000..41be6a3 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumAttributeValueServiceImpl.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.album.service.impl; + +import com.atguigu.tingshu.album.mapper.AlbumAttributeValueMapper; +import com.atguigu.tingshu.album.service.AlbumAttributeValueService; +import com.atguigu.tingshu.model.album.AlbumAttributeValue; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class AlbumAttributeValueServiceImpl extends ServiceImpl implements AlbumAttributeValueService { +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java index 6d4de53..30e3e6d 100644 --- a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java @@ -1,18 +1,88 @@ package com.atguigu.tingshu.album.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.atguigu.tingshu.album.mapper.AlbumInfoMapper; +import com.atguigu.tingshu.album.mapper.AlbumStatMapper; +import com.atguigu.tingshu.album.service.AlbumAttributeValueService; import com.atguigu.tingshu.album.service.AlbumInfoService; +import com.atguigu.tingshu.common.constant.SystemConstant; +import com.atguigu.tingshu.model.album.AlbumAttributeValue; import com.atguigu.tingshu.model.album.AlbumInfo; +import com.atguigu.tingshu.model.album.AlbumStat; +import com.atguigu.tingshu.vo.album.AlbumAttributeValueVo; +import com.atguigu.tingshu.vo.album.AlbumInfoVo; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; @Slf4j @Service -@SuppressWarnings({"all"}) + public class AlbumInfoServiceImpl extends ServiceImpl implements AlbumInfoService { @Autowired private AlbumInfoMapper albumInfoMapper; + @Autowired + private AlbumAttributeValueService albumAttributeValueService; + + @Autowired + private AlbumStatMapper albumStatMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveAlbumInfo(AlbumInfoVo albumInfoVo, Long userId) { + //1.保存专辑信息 + //1.1 将专辑VO(视图对象)对象转为专辑PO(持久化对象)对象 + //将我们上传专辑的那个表中的数据转换成为albumInfo这个持久化对象数据里 + //相当于把传上来的表变成一个你存大数据的表 albumInfo这表中有大量的数据 比如说专辑的状态 属性等 + //不是这一个albumInfoVo表能装下的 + + //用这个工具要保证两个字段是相同的 + AlbumInfo albumInfo= BeanUtil.copyProperties(albumInfoVo, AlbumInfo.class); + //1.2 封装PO对象中用户ID、免费试听集数、专辑状态 + //这两张表只有这三个状态是不一样的 + albumInfo.setUserId(userId); + albumInfo.setTracksForFree(5); + albumInfo.setStatus(SystemConstant.ALBUM_STATUS_NO_PASS); + //1.3 保存专辑,得到专辑ID + albumInfoMapper.insert(albumInfo); + Long albumId = albumInfo.getId(); + //2.保存专辑标签信息 + List albumAttributeValueVoList = albumInfoVo.getAlbumAttributeValueVoList(); + + if (CollUtil.isNotEmpty(albumAttributeValueVoList)) { + //2.1 将集合泛型从AlbumAttributeValueVo转为AlbumAttributeValue + //最一开始是vo类型 你通过stream将泛型 + List attributeValueList = albumAttributeValueVoList + .stream() + .map(vo -> { + AlbumAttributeValue albumAttributeValue = BeanUtil.copyProperties(vo, AlbumAttributeValue.class); + //2.2 为每个专辑标签关系 关联 专辑ID + albumAttributeValue.setAlbumId(albumId); + return albumAttributeValue; + }).collect(Collectors.toList()); + //2.3 批量保存 + albumAttributeValueService.saveBatch(attributeValueList); + } + this.saveAlbumInfoStat(albumId, SystemConstant.ALBUM_STAT_PLAY, 0); + this.saveAlbumInfoStat(albumId, SystemConstant.ALBUM_STAT_SUBSCRIBE, 0); + this.saveAlbumInfoStat(albumId, SystemConstant.ALBUM_STAT_BUY, 0); + this.saveAlbumInfoStat(albumId, SystemConstant.ALBUM_STAT_COMMENT, 0); + + } + + @Override + public void saveAlbumInfoStat(Long albumId, String statType, int statNum) { + AlbumStat albumStat = new AlbumStat(); + albumStat.setAlbumId(albumId); + albumStat.setStatType(statType); + albumStat.setStatNum(statNum); + albumStatMapper.insert(albumStat); + } } diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/FileUploadServiceImpl.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/FileUploadServiceImpl.java new file mode 100644 index 0000000..a0858c4 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/FileUploadServiceImpl.java @@ -0,0 +1,68 @@ +package com.atguigu.tingshu.album.service.impl; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; +import com.atguigu.tingshu.album.config.MinioConstantProperties; +import com.atguigu.tingshu.album.service.FileUploadService; +import com.atguigu.tingshu.common.execption.GuiguException; +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 javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.UUID; +@Slf4j +@Service +public class FileUploadServiceImpl implements FileUploadService { + @Autowired + private MinioClient minioClient; + + @Autowired + private MinioConstantProperties minioConstantProperties; + @Override + public String fileUpload(MultipartFile file) throws IOException { + + + //1.业务校验 检验图片是否合法 + BufferedImage bufferedImage = ImageIO.read(file.getInputStream()); + if (bufferedImage == null){ + throw new GuiguException(500,"上传文件类型错误"); + } + //2.检查图片上传的大小是否合理 + int width = bufferedImage.getWidth(); + int height = bufferedImage.getHeight(); + if(width>900||height>900){ + throw new GuiguException(500,"上传图片过大"); + } + //3.将图片文件上传MINIO 规范:日期/文件唯一命名.后缀 + //3.1 生成日期作为文件夹名称 + String folderName = DateUtil.today(); + //3.2 生成文件唯一名称 + String extName = FileUtil.extName(file.getOriginalFilename()); + String objectName = "/" + folderName + "/" + UUID.randomUUID().toString() + "." + extName; + //3.上传文件 + try { + minioClient.putObject( + PutObjectArgs.builder().bucket(minioConstantProperties.getBucketName()).object(objectName).stream( + file.getInputStream(), file.getSize(), -1) + .contentType(file.getContentType()) + .build()); + } catch (Exception e) { + log.error("上传文件到MINIO失败:{}", e.getMessage()); + throw new GuiguException(500, "上传文件到MINIO失败"); + } + + + //4.拼接MINIO文件在线地址 + return minioConstantProperties.getEndpointUrl() + "/" + minioConstantProperties.getBucketName() + objectName; + } + + + } + diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/api/AlbumInfoApiController.class b/service/service-album/target/classes/com/atguigu/tingshu/album/api/AlbumInfoApiController.class index e0da8979ac9046ea87100d78f034f9e1db180abf..5087ba41a7b94af75406a3287fb922f60d3d8ddf 100644 GIT binary patch literal 1792 zcmb7ES#J|D5dNH|4Q&H0_fhUMEd_I5p-2S@fs{g3AQIxqN!+brvkta5rH{Pu3_{|a zKfoa&Q9y!seg{x~1!BCZ(nDK86~(h2&wO*w_dlP%0vN$a4>IV;A)7}hx)}N&il*S9 zhys4Q@=#VCL)T>$DR+gTqcB+R!5Vbu(33|m@(d@dy3U0QVim;PsVJ~hF(+PKM?7{a z^2l1^=#BIzBL3lyG)+~Ngj8A?irn!+3vlyV#a?W}<{Y-;p+q>$=KQ}b3_ZPBtWF3*myzzz)LurrTc*v(K#^N4u90!G?6bbKNq z3>p21VVE-hzbZwB?Gth2R9%*pRh3YVMv->HDIHmc3ngs=ZX1T`K50ZXvKS{Yd**z7f3qmuNMR3vZ3^@=oi1;JB8lyp^uWnq-R&oi@bN|C*D zsgAdDwsJ3!wel(wzN+l>CdPf2l{Ldqs(-0vrKyVNN1%UsiK%(Vq?^*Uap9Bdq@mac zOG;sVP+_szh1rj`Q`JE*_Xe+zWDL&^{=OI z8P2AbZCX}%MMbqmsC-;oHzpblsxQHIHbodyiMF-c)JM&ib@u+H-O>(VN!z5`Cva6u zB3SG}xy4O-CS5Ph?+N)hmeyU>wHfle=Z=m|RbE%VzXsaFwPax&_e+R|=^t5kBC!0f z@Y%>lR2znTE4OoRUe7&$w$ezX`)J+5!Xm)*X-Zd3!ds|Jx9|R>6|s-DXNERAO}pQp zMEB6Gi|AgW8KSi2>D)&*PLvVt9Qp|MK6&0xr+)^my#sXSTLL(ULv&-b1P>#dDBnj1 z{eX?L$c+tsz}ln3pRln5v)KNQ*co`Jb&1F>QrV3@^29^#ZK=&e5&({%K+su|7{m~1 z9wn(xMr0bT|6Pp*n delta 196 zcmZqRYhdF#^>5cc1_lOO2I+}h`fThB9E=PmlRq+vOx&L}S)J+lRHPYb4pVg z88{OQGW8R4l1g(K6dBkVn1K2ifg~pb7m(%#^4Neh4_K6uffdZ-1@iQPqKrVARcku~ z<3=EZiGdGDf)q0_@G|fNNgjv-1_1^^u)GkM6b2hAEzQ8pAOch%TFfBEAP$s~0CFUw J85oNhqyTKn7$*P# diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/api/FileUploadApiController.class b/service/service-album/target/classes/com/atguigu/tingshu/album/api/FileUploadApiController.class index 716f19f1c9f372a7479dc670e63822a648aa4336..d974a505d582a26b3d497361f974ebd2e01ec781 100644 GIT binary patch literal 1839 zcmcIlU2jxH7=C8ic4@mx0hLb`5p`RT5i1{BY|;=+OtzM^*c-#e?C$h*;Ov>h%$!#K z03=?hS6*w3w?-3!_z{1AzoWvxFg|lyw~K7$Bk|&#cV^!Aedhh1KmPjVcL48WdK4Ax zsG(ZN5QYWDuc}ogQ9NU$PY}aKh9IDIM^d*;rSX~sAC`Y3p57V#j~!>q|=^ga-k#w6?;u!rqKtvkqO@NxFFL4 z2NsGfn66$j-n3FZn`JhrU~J|E&JA?1rB&wTvT6tGZb;Qrkh4XwYsTpgVXGHxhq>C- zG@1UW=(e=GtOzf#r)k?NT~f}({pMjctQg*RcA(*pEE8UL6X>|Lc%(I*>e%jV~8SEO~5ZGJF7%M-V?{U~_b2_Zp&LtH~ENI6-jVziZQ=xFQ z>H7ca`uT^=o?*Brnl#d{sU*=(u1-m-d|x4WIiG7+77=A@zUX$9yCG0tzx&zxZ(ra0 z>el+NcVZuJ*FG(ib^7q+CF{eS%JbMS0z<1RE$H}|?C-{-57u!nS`QTTna93zL0>Pl z45uBhBFE6X;N;P9jSsWXIx&Qq)_rJV(@AL2e z{Nmf~nlIMczr(|U5VnRUVF&l^VAayit>BKtaa?vBUf~F@aQJi5#34?4fV*MRgQOKw zz6AUq;!ctZ(xJ(pAbu>_hxw0eaNxeke*~ZaUc$?y9PKzlepFtFPYdbz9esja4<5MPA*_FoovojIGKZ0XYwOP8AgrC5-jqQ zLs;k5vz8_1l%_H=a3&UH>L=zTmF6-iGO#l+0gYf_U<5)|1~wqc3FPU6`3wxKTH6^I zHv$Ei7`T8WNSXo2;s%mDU^Xj|<^{|1fk}P_0U#~Sz|0^Blou*y5M~eo3Wx$Z>|)Uj IjKvJ%0JJg~V*mgE diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/config/MinioConstantProperties.class b/service/service-album/target/classes/com/atguigu/tingshu/album/config/MinioConstantProperties.class index 0f099c071dc494b9c8b741c6f1b64e079768089e..6ecd94b4c1f385388aa06e554591ba9fec1c1965 100644 GIT binary patch literal 3938 zcmbVOTT>iW5dIF#?9491HG!~-8p)b)30aLM;%{w8nVnVG!+lN4GoJAL|e_jLEy-RJ!A_uZcXOyI)| zTF|ONF`yzPaL{)1o3_K>Ir%$Pwk;;|Hb_%zJLd@&eoP1==iUrQ+I7 zaK$SN^vqs2Z<_hC>8#}!0*{u88FZjiLzjVW^au>x&o2SJW=`Pb&|YKv2DB`V9>f4+AZvvww9PUjdOqR1|Jf61{$T@;;IM!i z;v&$04^)_LW3UoDccxm~%RU)*hGXy#~E6_SLyd>ipGB7OT$t+h(8&+`9 z+_W-ej~Y0RF@{+(o#`7@laTZ_hZET=4!6Vh0q83X-T@Z4NVbd2bN=;UvV)D8hcL zb(#`+*EwrD*2U`PvgIwB%Vql8GwYVj@{;M83N*TfACE+uS?vpfS=yL0D=~8F{NU%fjW4$4noaA08)cR~yWm#6l6Bse6*CZx@I90Dgls^8 z)BDAit-v{5^}?bc$kU06%dQ*LE2B~$V*a1x2ByISCXI7%> z@HPxFfw|*nw5laZ_OK9>@$e)$4>fez*?5T-4x~ zbOZhgG0eJ|aU9E=Dx1D94^AyUi#5C}@YtS&CFMcG`vMQ&UzCVNNyDQY!h@Wh3NH^l z>3lQDerEDYZ~L-_81z!GzDOd@n9QccUtpekDu*_@xOh3))=l<@CKr-T9^0=;S>Sb(!=XvuV4_@#_xWyPPQDu*`3kCXXY^O-UqEfWGx`hk zx#J_-7zvjoPFy_BpMo;>JKD0!Z|J@aV=Sv|<77?ZR6(W4sX{8NN}1Ge=(&ydteQD&D4aHJM_ABPp4F(XzI9shecdr z_`UcNOKigy3fj1YFs2JioCT(px_xgEDKzf zXvjGCPK2nwYZHN@j84WG*Y{EgGp~|lamI*`XhNf*N>}lWG7*9~&{bR~lzP|bZD?cL zID1X>0!jTh8#i`a%rdRDD%6$`0wD^=ej;?x>Q2I)fNOAJygHgOFm zJyi+AGN~4(brmHB)QTg7WQCN1vp7j`BuKAu&aRS5g~|UK`afhS8gwC;a0u}a6&vdo z$>@bz6R623J6W+S`!BZR BOE3Tc literal 3420 zcmbVOU31h_7=E%%HrZ|3Erk|Vic($dH|r6#~^`dXt8{THUXjE70+r^4wuUi|%GL@Yf$M$@~_Lp3zX1cy*dJ;NKd#&bJwtva3 zO6Xl^9lY$jv@|J>>ei7H=VXjZ#q_*$=4~O}qoY?yHP5WLW+dFFqfZF4tM$s3=`R}F zW|r9fIu0ODY{jr=Kdl=)t8X}VSQzEx$cF-aP{#lcN$B1%{n@yC`-VqiI+24SbuZ{R zEX=1(VcQc%UexiDFrw4Q>4w{4-q$LFYFO zZ*#_3GlL?`_p)?F9k1Y33H!H=EtC1J82)9;Cn(G`6MQWmX5{jdLF`775W569^e4Aq z+2&$>d)0I=8mm=$*t_6VjOvQvT4EguWq;G6Po;(bOPEPk#oJMpwn9b`j;xTxWz*ku z)|L#HB=Aj_2kX>r7K0_=vQYvio~u^kB}h&?AtR1RP#k~Lba{Y?rqD*>HJ>vQdk&tt?%bFV8ZNc{0;Ay?T}R zSZ{YOTZp-lDYQ=PEW}M~z7uAaH*49cyA^ZJ5>*~}%Edk^?y-dYg}Uuq+vbYpS!BU! z+je}zx5!Qj#}*uSqv+MdEngQU`pj{+M8ELOTYk}KLW?9bTS(mv6iI;DM8#Fd@tfMU zW`}9lZgn2oN!MI+-MYnkZj0{3l%Amt&v%Vl$Q&=11{=avTvPFpxM&|sD6|@sW#4qR z%wm|A@b1kS72k1hOZYZ^>mp!i^sHg8RZXw3;5b|L+T=4YUYp{@+ch%*el=#H(Zyn- z$i$3Mtu9->IjP~ggz{6WHXP&flr(<0Ne!`RP(#dH)R>Y+$f6P4Na6O_AlDt9F+^VN`` z+_O`;J5ibMj|AntJC$>Z%5UK~gA*~AIEqB4N5_7Jnw+uz5D{feWK)zx!rRnS*jdrT zMJd^2*KSRU>NZX00+W-;CVO^kQV^wSvNte!BH85L-I^4fYnto}O!8wO%%$`>$4=(t z-q`35P~^K~e?t2XO2^%?KcJPzNAIIQSaR~*;y52AdEzg0=H-Xja|ilFUcQg#8;HS@ zLdak#omT`V{Sdu((3My6=@_U`QVA-Qw7e=nS_D$_S`0K)$`CYE%H}fyl#M`{e6|6S z@6zjz7}>*{QVXML*8Lv89;X?8AHK&)-kuZ+_zI^e>%b_!#A(iCyo)WI;Y>jpCT2KG zql!7a!bB5J;H%-nt95! z!Nw^TMHU}`VNocSI3rO-HAI~8OC81;@>^-fsW3VbXT zbBh(H)Km#MUiy~M$25TXAN+Yn^4sPKSHmJfFmzq8B z6k`%CzF(9>q@KS5e?t#&6xi7m<1d2#D04F256E!=%N%nI{UXOpw7TNqGCtr!#)Sb5 zWGgLBE%HoZWDrELDYzuDgpol_1KmsrUk_|aa7j@n&>ByWJ?s!ef#z@&1GR=!7Ni0N zK}^5W+=&ynx-zi<`3xKkj0~JW-*GZAZ~-Z91_q!o4+Ae$n3tJ>4=BtJ!~#If#2^SJ Kg&2gvv55{WKH39JgeCY#A-$m~oyGaE>4 zi?uDacWsNU_OA54yc!a$*50kPt-bI2{40F=`@WgoolUk73#I=XLqGgi*j zt-`dekA^QJTq|fCupBGcsi3~SBdelGL5GlM1o@(sFY1Bi#wXy9>s5*k*jXwk3=tqQKpIr?NVa9vx^xt^(ynTDh9;^S~& zQGZL$ot{15xznZ>Sf;Pww)RX#;{LH?W-ds_C_}d4`{|=GN~ks65hF!xNvLSka49ZR z(CnMRVTNI3T*0Mr6&csbr#rGqtik0fuF#OeS_PL>Y#4C@GjDnd)EUDrn)@ddtZ5&K ztBZD|g}y5_T!r-v3-ulHjNFtz?0UnVX$r2Gi6tHp^s5#0)(Sdl1tu@&I(}d{fj&Cx z2WDX?dTqi+1&N+*J-tHjCJonMbLi)2U<5^ma&=r`DNNaBw4*~sr-m+UiQuz1-C?4u zP*cu&6?|67odOJdjcMkPo@8pd5(+HHJrw|jJn0p<7P^Wa4O`Kxpyy%*5XF{5V}nI5 zM=8!(2zF+0fM&ncnT#7lGu(LRrG5}V?aTBEjwo1#Z{1X333XR0U8Wg z17pR&%nGbz-HheasIYa{0kdct z1tRSh>{cBu(WfP$^v7yD1BIwHJ8%b8^&&8DAvyad8h4+ARsCyGuOrQv8n zD83S}Qt@gH2F4UzUNNLf7qdewE7%?n<5Fo6!fM!>#5hb96B_cEq+3h$L^*Li)^TGH z;b?s=@5?)-@y9ewfqhlYg-K;O#chndsPM##AgUM9ARG-Y=-^sexYekR8i0bG=PC74 z@2F7~5kJlK;HwBU6a|O}YL#2qH!dtpG(Ka-++_s0$tD~Zjj^w1Ym%PKYIrT~W=9v_ zr8S~ki596~^AdE#Iy6zm(=0tA;QjhgU~dynhO2E&cw@NgQ}L$d9-2aH68EBBJWgqN zt2mjGJSjrE#s&Fp8s07%`3jQ7{zJ3Vrl7x5!@I=6BDM?qzG6Wn>OC6Xi~ALXjaYoR z*hXC8VMg9B8u15~-GeKTpU=Q@@g&V zoit>4S(2&~QY|LyNg3R@x*0;g zuO{;aG;%hp0Zs+i)f9GNOPU69c61kP9<}lg?+_jv&ht{-i@aafM!qy#=K#eE!;;Iu z@~oGIx-(sKb11%QW{99@N8Z2FBqq#)fi?08YW$PTCo+8~OWbN#i)agvQBl z5v_sm{HqY3pCOmdUxmL7ooAsuD#d)3Pw^R8htKh;g&XjBe1UHYzKAcOUN9@CXp&0W znXWdq{wXxiW5qL2_jPZX!zJBK^H@EHb=_?n=J1lvC-Bnl1$5Wpj_x^Z>rZse;fDT( z$FL*SFpr@*jBweue-1B`?+-#xH7sD1wU;=DyMP6}q7L)OEx@Y7GdR@WNQs41;{sko zk)5eT+f4l&PKd?pN{cs?7WasS@GSx1+d*8$r;Zl%@((}T=w%;+d_4nt11UH1hTo4N z-tTY607h{W4&!EC^#(D4VffgClf0AO$FKJzgNJxEeHi;?oc1slKBM(ze1-92RHBH9 z)mQO|jN%zQipQ9~7CeB*@dV@8%PY>;NJ~(!jXCl*;4Hba~+j{;)Oc71y57uH;zKdF=C3i;!q^hM#JkU2 zm-J4csSDr4x2RgIzK!qD_hxLwckw;?E<9LS&#mAl@H1MIqN-`Pu=pr9*YkIESKH|_ z&`$5&(m96@Zh3?s>SShHz!e^#!-pY#0}{4WaTmsI-){0V=> P-$_Z5@(=tA|3T`1f!lP% delta 274 zcmX|)Jx&5q6otR{h`gC$X3!B)@E0{S6lg+1fs}LCnJoF>LCs zFB^2%vPD(BZRJJ9o!m35<*Fv