ソースを参照

feat: 图片将通过后端上传到seec-portal阿里云上

mjh 4 年 前
コミット
f745e0182c

+ 10 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/CourseServiceImpl.java

@@ -9,6 +9,8 @@ import cn.seecoder.seecoderportalserver.domain.CourseSelection;
 import cn.seecoder.seecoderportalserver.mapper.CourseMapper;
 import cn.seecoder.seecoderportalserver.repository.CourseRepository;
 import cn.seecoder.seecoderportalserver.repository.CourseSelectionRepository;
+import cn.seecoder.seecoderportalserver.security.DomainUserDetails;
+import cn.seecoder.seecoderportalserver.security.SecurityUtils;
 import cn.seecoder.seecoderportalserver.service.CourseService;
 import cn.seecoder.seecoderportalserver.service.UserService;
 import cn.seecoder.seecoderportalserver.serviceImpl.subsystem.CoderService;
@@ -243,7 +245,14 @@ public class CourseServiceImpl implements CourseService {
     @Override
     public String uploadCourseImage(String name, MultipartFile file) {
         try {
-            return ossUtil.upload(name + ".jpg", file.getInputStream());
+            Course course = courseRepository.findCourseByName(name).orElseThrow(CustomErrorException::courseNotFound);
+            if (!course.getTeacherId().equals(SecurityUtils.getCurrentUser().getId())) {
+                throw CustomErrorException.unauthorizedUser();
+            }
+            String imgUrl = ossUtil.upload(name + ".jpg", file.getInputStream());
+            course.setImageUrl(imgUrl);
+            courseRepository.save(course);
+            return imgUrl;
         } catch (IOException e) {
             throw new RuntimeException(e);
         }

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/utility/OssUtil.java

@@ -31,7 +31,7 @@ public class OssUtil {
         PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
         try {
             ossClient.putObject(putObjectRequest);
-        } catch (OSSException | ClientException e) {
+        } catch (Exception e) {
             log.error(e.getMessage());
             throw new CustomErrorException("文件上传失败");
         } finally {

+ 9 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/errors/CustomErrorException.java

@@ -61,9 +61,17 @@ public class CustomErrorException extends RuntimeException {
     /**
      * 手机号不存在触发报错
      * @param phone 手机号
-     * @return 抛出异常
+     * @return 异常
      */
     public static CustomErrorException userPhoneNotFound(String phone){
         return new CustomErrorException("手机号 \"" + phone + "\" 不存在!");
     }
+
+
+    /**
+     * @return 异常
+     */
+    public static CustomErrorException unauthorizedUser(){
+        return new CustomErrorException("未授权用户!");
+    }
 }

+ 6 - 8
seecoder-portal-server/src/main/resources/application-dev.yml

@@ -1,6 +1,9 @@
 debug: true
 
 spring:
+  servlet:
+    multipart:
+      max-file-size: 3MB
   jpa:
     show-sql: true
   datasource:
@@ -13,11 +16,6 @@ spring:
 aliyun:
   oss:
     endpoint: https://oss-cn-hangzhou.aliyuncs.com
-    accessKeyId: LTAI5t8r92pu9SjG1vz9fCKT
-    accessKeySecret: NPGHba96kBK0PdL65QwQNyMBz0PCfq
-    bucketName: mjh1
-#    endpoint: https://oss-cn-hangzhou.aliyuncs.com
-#    accessKeyId: LTAI4Fi1qmL4iuhH8t7G7r2H
-#    accessKeySecret: 7tJWyQqa0cMkQGaPMMvtH6c0VLiOO2
-#    bucketName: seec-portal
-
+    accessKeyId: LTAI4Fi1qmL4iuhH8t7G7r2H
+    accessKeySecret: 7tJWyQqa0cMkQGaPMMvtH6c0VLiOO2
+    bucketName: seec-portal