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 8250fb1..734948b 100644 Binary files a/spzx-common/common-util/target/classes/com/atguigu/constant/MessageConstant.class and b/spzx-common/common-util/target/classes/com/atguigu/constant/MessageConstant.class differ 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 bc8a0e8..6036b3c 100644 Binary files a/spzx-common/common-util/target/classes/com/atguigu/properties/InterceptorsProperties.class and b/spzx-common/common-util/target/classes/com/atguigu/properties/InterceptorsProperties.class differ diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/FileUploadController.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/FileUploadController.java new file mode 100644 index 0000000..77640e1 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/controller/FileUploadController.java @@ -0,0 +1,27 @@ +package com.atguigu.spzx.manger.controller; + +import com.atguigu.spzx.manger.service.FileUploadService; +import com.atguigu.spzx.model.vo.result.Result; +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.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +@Tag(name = "上传文件接口") +@RestController +@RequestMapping("/admin/system") +public class FileUploadController { + @Autowired + private FileUploadService fileUploadService; + + @Operation(summary = "上传文件", description = "上传文件内容") + @PostMapping("fileUpload") + public Result 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 f4b843b..34839dd 100644 Binary files a/spzx-manager/target/classes/com/atguigu/spzx/manger/mapper/SysUserMapper.class and b/spzx-manager/target/classes/com/atguigu/spzx/manger/mapper/SysUserMapper.class differ 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 c7e679e..c330150 100644 Binary files a/spzx-manager/target/classes/com/atguigu/spzx/manger/service/SysUserService.class and b/spzx-manager/target/classes/com/atguigu/spzx/manger/service/SysUserService.class differ diff --git a/spzx-manager/target/classes/com/atguigu/spzx/manger/service/impl/SysUserServiceImpl.class b/spzx-manager/target/classes/com/atguigu/spzx/manger/service/impl/SysUserServiceImpl.class index 41cb875..2b99114 100644 Binary files a/spzx-manager/target/classes/com/atguigu/spzx/manger/service/impl/SysUserServiceImpl.class and b/spzx-manager/target/classes/com/atguigu/spzx/manger/service/impl/SysUserServiceImpl.class differ diff --git a/spzx-manager/target/classes/mapper/SysUserMapper.xml b/spzx-manager/target/classes/mapper/SysUserMapper.xml index 0c44705..bf7041d 100644 --- a/spzx-manager/target/classes/mapper/SysUserMapper.xml +++ b/spzx-manager/target/classes/mapper/SysUserMapper.xml @@ -12,6 +12,40 @@ values (#{id}, #{userName}, #{password}, #{name}, #{phone}, #{avatar}, #{description}, #{status}); + + + 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} + +