From 8f2b25bdc4ec1c803704d8ca37690462bb1106ea Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 16 五月 2024 16:49:56 +0800
Subject: [PATCH] 学习文件管理端

---
 src/main/java/com/mindskip/xzs/utility/Constants.java                            |    2 
 src/main/java/com/mindskip/xzs/controller/common/UploadController.java           |   13 +++-
 src/main/java/com/mindskip/xzs/domain/vo/OnlineStudyVO.java                      |   27 +++++++-
 src/main/java/com/mindskip/xzs/repository/OnlineStudyMapper.java                 |    4 
 src/main/resources/mapper/StudyTypeMapper.xml                                    |    2 
 src/main/java/com/mindskip/xzs/configuration/spring/mvc/WebMvcConfiguration.java |   33 ++++++++--
 src/main/java/com/mindskip/xzs/domain/OnlineStudy.java                           |    2 
 src/main/resources/mapper/OnlineStudyMapper.xml                                  |   27 ++++++--
 src/main/java/com/mindskip/xzs/base/RestResponse.java                            |    6 ++
 src/main/java/com/mindskip/xzs/service/impl/OnlineStudySeerviceImpl.java         |   43 +++++++++++++-
 10 files changed, 127 insertions(+), 32 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/base/RestResponse.java b/src/main/java/com/mindskip/xzs/base/RestResponse.java
index e8b9d09..4614a5e 100644
--- a/src/main/java/com/mindskip/xzs/base/RestResponse.java
+++ b/src/main/java/com/mindskip/xzs/base/RestResponse.java
@@ -97,4 +97,10 @@
 
     public RestResponse() {
     }
+
+    @Override
+    public RestResponse put(String key, Object value) {
+        super.put(key, value);
+        return this;
+    }
 }
diff --git a/src/main/java/com/mindskip/xzs/configuration/spring/mvc/WebMvcConfiguration.java b/src/main/java/com/mindskip/xzs/configuration/spring/mvc/WebMvcConfiguration.java
index 6fa3cae..7068633 100644
--- a/src/main/java/com/mindskip/xzs/configuration/spring/mvc/WebMvcConfiguration.java
+++ b/src/main/java/com/mindskip/xzs/configuration/spring/mvc/WebMvcConfiguration.java
@@ -6,7 +6,11 @@
 import com.mindskip.xzs.utility.Constants;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
 import org.springframework.web.servlet.config.annotation.*;
 
 import java.io.File;
@@ -57,14 +61,27 @@
         super.addInterceptors(registry);
     }
 
-    @Override
-    public void addCorsMappings(CorsRegistry registry) {
-        registry.addMapping("/**")
-                .allowCredentials(true)
-                .allowedMethods("*")
-                .allowedOrigins("*")
-                .allowedHeaders("*");
-        super.addCorsMappings(registry);
+    /**
+     * 璺ㄥ煙閰嶇疆
+     */
+    @Bean
+    public CorsFilter corsFilter()
+    {
+        CorsConfiguration config = new CorsConfiguration();
+        config.setAllowCredentials(true);
+        // 璁剧疆璁块棶婧愬湴鍧�
+        config.addAllowedOrigin("*");
+        // 璁剧疆璁块棶婧愯姹傚ご
+        config.addAllowedHeader("*");
+        // 璁剧疆璁块棶婧愯姹傛柟娉�
+        config.addAllowedMethod("*");
+        // 鏈夋晥鏈� 1800绉�
+        config.setMaxAge(1800L);
+        // 娣诲姞鏄犲皠璺緞锛屾嫤鎴竴鍒囪姹�
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        source.registerCorsConfiguration("/**", config);
+        // 杩斿洖鏂扮殑CorsFilter
+        return new CorsFilter(source);
     }
 
 }
diff --git a/src/main/java/com/mindskip/xzs/controller/common/UploadController.java b/src/main/java/com/mindskip/xzs/controller/common/UploadController.java
index 2c2ed72..4c1f474 100644
--- a/src/main/java/com/mindskip/xzs/controller/common/UploadController.java
+++ b/src/main/java/com/mindskip/xzs/controller/common/UploadController.java
@@ -11,6 +11,8 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.UUID;
 
 /**
  * @author锛歺p
@@ -36,8 +38,8 @@
         }
         try {
             // 鑾峰彇鏂囦欢鍚�
-            String fileName = StringUtils.cleanPath(file.getOriginalFilename());
-
+            String originalFileName = StringUtils.cleanPath(file.getOriginalFilename());
+            String randomName = UUID.randomUUID().toString().replace("-", "") + originalFileName.substring(originalFileName.lastIndexOf("."));
             // 鎸囧畾鏂囦欢瀛樺偍璺緞
             String uploadDir = ruoYiConfig.getUrl(); // 淇敼涓烘偍甯屾湜瀛樺偍鐨勭洰褰�
             // 濡傛灉鐩綍涓嶅瓨鍦紝鍒欏垱寤虹洰褰�
@@ -46,11 +48,14 @@
                 dir.mkdirs();
             }
             // 鏋勫缓鐩爣鏂囦欢鐨勮矾寰�
-            String filePath = uploadDir + "/" + fileName;
+            String filePath = uploadDir + "/" + randomName;
             // 灏嗘枃浠朵繚瀛樺埌鐩爣浣嶇疆
             file.transferTo(new File(filePath));
             // 杩斿洖鎴愬姛鍝嶅簲
-            return RestResponse.ok("鏂囦欢涓婁紶鎴愬姛");
+            HashMap hashMap = new HashMap(2);
+            hashMap.put("name", originalFileName);
+            hashMap.put("url", randomName);
+            return RestResponse.ok(hashMap);
         } catch (IOException e) {
             e.printStackTrace();
             // 杩斿洖澶辫触鍝嶅簲
diff --git a/src/main/java/com/mindskip/xzs/domain/OnlineStudy.java b/src/main/java/com/mindskip/xzs/domain/OnlineStudy.java
index b29cb1a..01fc2e4 100644
--- a/src/main/java/com/mindskip/xzs/domain/OnlineStudy.java
+++ b/src/main/java/com/mindskip/xzs/domain/OnlineStudy.java
@@ -22,7 +22,7 @@
     private String contentUrl;
 
     /** 鎵�灞炲垎绫� */
-    private String belongType;
+    private Integer belongType;
 
     /** 涓婚 */
     private String subject;
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/OnlineStudyVO.java b/src/main/java/com/mindskip/xzs/domain/vo/OnlineStudyVO.java
index ebbb906..8d30e56 100644
--- a/src/main/java/com/mindskip/xzs/domain/vo/OnlineStudyVO.java
+++ b/src/main/java/com/mindskip/xzs/domain/vo/OnlineStudyVO.java
@@ -3,7 +3,9 @@
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author锛歺p
@@ -23,19 +25,36 @@
     private String contentType;
 
     /** 鏂囦欢鍦板潃 */
-    @NotBlank(message = "璇蜂笂浼犳枃浠�")
-    private String contentUrl;
+    @NotNull(message = "璇蜂笂浼犳枃浠�")
+    private UploadFile contentUrl;
+    private String contentUrlString;
 
     /** 鎵�灞炲垎绫� */
-    @NotBlank(message = "璇烽�夋嫨鍒嗙被")
-    private String belongType;
+    @NotNull(message = "璇烽�夋嫨鍒嗙被")
+    private Integer belongType;
+    private String typeName;
 
     /** 涓婚 */
     @NotBlank(message = "璇疯緭鍏ヤ富棰�")
     private String subject;
 
+    /** 闄勪欢 */
+    private List<UploadFile> attachment;
+    private String attachmentString;
+
     private Date createTime;
 
     private Date updateTime;
 
+    @Data
+    public static class UploadFile {
+
+        /** 鍦板潃 */
+        private String url;
+
+
+        /** 鏂囦欢鍘熷鍚� */
+        private String name;
+
+    }
 }
diff --git a/src/main/java/com/mindskip/xzs/repository/OnlineStudyMapper.java b/src/main/java/com/mindskip/xzs/repository/OnlineStudyMapper.java
index a4ee989..123b02f 100644
--- a/src/main/java/com/mindskip/xzs/repository/OnlineStudyMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/OnlineStudyMapper.java
@@ -14,9 +14,9 @@
 @Mapper
 public interface OnlineStudyMapper {
 
-    void add(@Param("form") OnlineStudyVO form);
+    void add(@Param("form") OnlineStudy form);
 
-    void update(@Param("form") OnlineStudyVO form);
+    void update(@Param("form") OnlineStudy form);
 
     void remove(@Param("ids") List<Integer> ids);
 
diff --git a/src/main/java/com/mindskip/xzs/service/impl/OnlineStudySeerviceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/OnlineStudySeerviceImpl.java
index 3af5f30..b62c392 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/OnlineStudySeerviceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/OnlineStudySeerviceImpl.java
@@ -1,14 +1,25 @@
 package com.mindskip.xzs.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.mindskip.xzs.base.RestResponse;
+import com.mindskip.xzs.domain.OnlineStudy;
+import com.mindskip.xzs.domain.question.QuestionObject;
 import com.mindskip.xzs.domain.vo.OnlineStudyVO;
 import com.mindskip.xzs.repository.OnlineStudyMapper;
 import com.mindskip.xzs.service.OnlineStudyService;
+import com.mindskip.xzs.utility.JsonUtil;
+import jdk.nashorn.internal.ir.IfNode;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @author锛歺p
@@ -22,13 +33,32 @@
 
     @Override
     public RestResponse add(OnlineStudyVO form) {
-        mapper.add(form);
+        OnlineStudy onlineStudy = new OnlineStudy();
+        BeanUtils.copyProperties(form, onlineStudy);
+        onlineStudy.setContentUrl(JSON.toJSONString(form.getContentUrl()));
+        if (! CollectionUtils.isEmpty(form.getAttachment())) {
+            onlineStudy.setAttachment(JSON.toJSONString(form.getAttachment()));
+        }
+        onlineStudy.setCreateTime(new Date());
+        onlineStudy.setUpdateTime(new Date());
+        mapper.add(onlineStudy);
         return RestResponse.ok("娣诲姞鎴愬姛");
     }
 
     @Override
     public RestResponse update(OnlineStudyVO form) {
-        mapper.update(form);
+        if (Objects.isNull(form.getId())) {
+            throw new RuntimeException("璇烽�夋嫨瑕佷慨鏀圭殑鏁版嵁");
+        }
+        OnlineStudy onlineStudy = new OnlineStudy();
+        BeanUtils.copyProperties(form, onlineStudy);
+        onlineStudy.setContentUrl(JSON.toJSONString(form.getContentUrl()));
+        if (! CollectionUtils.isEmpty(form.getAttachment())) {
+            onlineStudy.setAttachment(JSON.toJSONString(form.getAttachment()));
+        } else {
+            onlineStudy.setAttachment("");
+        }
+        mapper.update(onlineStudy);
         return RestResponse.ok("淇敼鎴愬姛");
     }
 
@@ -41,7 +71,12 @@
     @Override
     public RestResponse page(OnlineStudyVO query) {
         PageHelper.startPage(query.getPageNum(), query.getPageSize());
-        List<OnlineStudyVO> data = mapper.page(query);
-        return RestResponse.ok(data);
+        PageInfo<OnlineStudyVO> page = PageHelper.startPage(query.getPageNum(), query.getPageSize()).doSelectPageInfo(() ->
+                mapper.page(query));
+        page.getList().stream().forEach(item -> {
+            item.setContentUrl(JSON.parseObject(item.getContentUrlString(), OnlineStudyVO.UploadFile.class));
+            item.setAttachment(JSON.parseArray(item.getAttachmentString(), OnlineStudyVO.UploadFile.class));
+        });
+        return RestResponse.ok(page.getList()).put("total", page.getTotal());
     }
 }
diff --git a/src/main/java/com/mindskip/xzs/utility/Constants.java b/src/main/java/com/mindskip/xzs/utility/Constants.java
index fd4fec5..4c7a67c 100644
--- a/src/main/java/com/mindskip/xzs/utility/Constants.java
+++ b/src/main/java/com/mindskip/xzs/utility/Constants.java
@@ -132,7 +132,7 @@
     /**
      * 璧勬簮鏄犲皠璺緞 鍓嶇紑
      */
-    public static final String RESOURCE_PREFIX = "/files";
+    public static final String RESOURCE_PREFIX = "/api/files";
 
     /**
      * RMI 杩滅▼鏂规硶璋冪敤
diff --git a/src/main/resources/mapper/OnlineStudyMapper.xml b/src/main/resources/mapper/OnlineStudyMapper.xml
index 4fdadf3..1be4954 100644
--- a/src/main/resources/mapper/OnlineStudyMapper.xml
+++ b/src/main/resources/mapper/OnlineStudyMapper.xml
@@ -6,13 +6,25 @@
 
     <select id="page" resultType="com.mindskip.xzs.domain.vo.OnlineStudyVO">
         SELECT
-        id,content_type, content_url, belong_type, subject, create_time, update_time, attachment
+            tos.id,
+            tos.content_type,
+            tos.content_url as contentUrlString,
+            tos.belong_type,
+            tos.subject,
+            tos.create_time,
+            tos.update_time,
+            tos.attachment as attachmentString,
+            tst.type_name
         FROM
-        t_online_study
+            t_online_study tos
+                INNER JOIN t_study_type tst ON tst.id = tos.belong_type
         <where>
-            AND deleted = 0
+            AND tos.deleted = 0
             <if test="query.subject != null and query.subject != ''">
-                AND subject like concat('%', #{query.subject}, '%')
+                AND tos.subject like concat('%', #{query.subject}, '%')
+            </if>
+            <if test="query.belongType != null">
+                AND tst.id = #{query.belongType}
             </if>
         </where>
         ORDER BY
@@ -31,14 +43,13 @@
         <set>
             <if test="form.contentType != null and form.contentType != ''">content_type = #{form.contentType},</if>
             <if test="form.contentUrl != null and form.contentUrl != ''">content_url = #{form.contentUrl},</if>
-            <if test="form.belong_type != null and form.belong_type != ''">belong_type = #{form.belongType},</if>
-            <if test="form.belongType != null and form.belongType != ''">belong_type = #{form.belongType},</if>
+            <if test="form.belongType != null">belong_type = #{form.belongType},</if>
             <if test="form.subject != null and form.subject != ''">subject = #{form.subject},</if>
             <if test="form.updateTime != null">update_time = #{form.updateTime},</if>
-            <if test="form.attachment != null and form.attachment != ''">attachment = #{form.attachment},</if>
+            attachment = #{form.attachment}
         </set>
         WHERE
-        id = #{vo.id}
+        id = #{form.id}
     </update>
 
     <update id="remove">
diff --git a/src/main/resources/mapper/StudyTypeMapper.xml b/src/main/resources/mapper/StudyTypeMapper.xml
index d0d4856..ba56423 100644
--- a/src/main/resources/mapper/StudyTypeMapper.xml
+++ b/src/main/resources/mapper/StudyTypeMapper.xml
@@ -39,6 +39,8 @@
             t_study_type
         WHERE
             deleted = 0
+        ORDER BY
+            order_num ASC
     </select>
 
 </mapper>

--
Gitblit v1.8.0