Pārlūkot izejas kodu

新增文件分类-批量更新接口

tsurumure 3 mēneši atpakaļ
vecāks
revīzija
ab5d7a6257

+ 8 - 0
src/main/java/com/backendsys/modules/upload/controller/SysFileCategoryController.java

@@ -15,6 +15,8 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.List;
+
 @Validated
 @RestController
 @Tag(name = "文件分类管理")
@@ -51,6 +53,12 @@ public class SysFileCategoryController {
         return Result.success().put("data", sysFileCategoryService.updateFileCategory(sysFileCategory));
     }
 
+    @Operation(summary = "编辑文件分类(批量)")
+    @PutMapping("/api/upload/updateFileCategoryBatch")
+    public Result updateFileCategoryBatch(@Validated(SysFileCategory.UpdateBatch.class) @RequestBody SysFileCategory sysFileCategory) {
+        return Result.success().put("data", sysFileCategoryService.updateFileCategoryBatch(sysFileCategory.getList()));
+    }
+
     @Operation(summary = "删除文件分类")
     @DeleteMapping("/api/upload/deleteFileCategory")
     public Result deleteFileCategory(@Validated(SysFileCategory.Delete.class) @RequestBody SysFileCategory sysFileCategory) {

+ 4 - 3
src/main/java/com/backendsys/modules/upload/dao/SysFileCategoryDao.java

@@ -6,10 +6,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface SysFileCategoryDao extends BaseMapper<SysFileCategory> {
-
-    List<SysFileCategory> selectUploadFileCategoryList(SysFileCategory sysFileCategory);
-
+    List<Map<String, Object>> selectUploadFileCategoryList(SysFileCategory sysFileCategory);
+    void insertBatch(List<SysFileCategory> list);
+    void updateByIdBatch(List<SysFileCategory> list);
 }

+ 7 - 0
src/main/java/com/backendsys/modules/upload/entity/SysFileCategory.java

@@ -12,12 +12,15 @@ import jakarta.validation.constraints.Size;
 import lombok.Data;
 import org.hibernate.validator.constraints.Range;
 
+import java.util.List;
+
 @Data
 @TableName("sys_file_category")
 public class SysFileCategory {
 
     public static interface Create{}
     public static interface Update{}
+    public static interface UpdateBatch{}
     public static interface Delete{}
 
     @TableId(type = IdType.AUTO)
@@ -37,4 +40,8 @@ public class SysFileCategory {
     @RangeArray(message="状态取值有误,范围应是(-1禁用, 1启用)", value = {"-1", "1"}, groups = { Create.class, Update.class })
     private Integer status;
 
+    @TableField(exist = false)
+    @NotNull(message="list 不能为空", groups = { UpdateBatch.class })
+    private List<SysFileCategory> list;
+
 }

+ 7 - 1
src/main/java/com/backendsys/modules/upload/service/SysFileCategoryService.java

@@ -10,11 +10,17 @@ import java.util.Map;
 public interface SysFileCategoryService {
 
     // 获取文件分类列表
-    List<SysFileCategory> selectUploadFileCategoryList(SysFileCategory sysFileCategory);
+    List<Map<String, Object>> selectUploadFileCategoryList(SysFileCategory sysFileCategory);
     // 创建文件分类
     Map<String, Object> insertFileCategory(SysFileCategory sysFileCategory);
+
+//    // 创建文件分类(批量)
+//    Map<String, Object> insertFileCategoryBatch(List<SysFileCategory> sysFileCategory);
+
     // 编辑文件分类
     Map<String, Object> updateFileCategory(SysFileCategory sysFileCategory);
+    // 编辑文件分类(批量)(先删后增)
+    Map<String, Object> updateFileCategoryBatch(List<SysFileCategory> sysFileCategoryList);
     // 删除文件分类
     Map<String, Object> deleteFileCategory(SysFileCategory sysFileCategory);
 

+ 51 - 1
src/main/java/com/backendsys/modules/upload/service/impl/SysFileCategoryServiceImpl.java

@@ -1,6 +1,7 @@
 package com.backendsys.modules.upload.service.impl;
 
 import com.backendsys.exception.CustException;
+import com.backendsys.modules.common.config.security.utils.SecurityUtil;
 import com.backendsys.modules.upload.dao.SysFileCategoryDao;
 import com.backendsys.modules.upload.dao.SysFileDao;
 import com.backendsys.modules.upload.entity.SysFile;
@@ -12,9 +13,11 @@ import com.backendsys.utils.v2.PageUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class SysFileCategoryServiceImpl implements SysFileCategoryService {
@@ -28,7 +31,7 @@ public class SysFileCategoryServiceImpl implements SysFileCategoryService {
      * 获取文件分类列表
      */
     @Override
-    public List<SysFileCategory> selectUploadFileCategoryList(SysFileCategory sysFileCategory) {
+    public List<Map<String, Object>> selectUploadFileCategoryList(SysFileCategory sysFileCategory) {
         return sysFileCategoryDao.selectUploadFileCategoryList(sysFileCategory);
     }
 
@@ -50,6 +53,53 @@ public class SysFileCategoryServiceImpl implements SysFileCategoryService {
         return Map.of("id", sysFileCategory.getId());
     }
 
+//    /**
+//     * 创建文件分类(批量)
+//     */
+//    @Override
+//    @Transactional(rollbackFor = Exception.class)
+//    public Map<String, Object> insertFileCategoryBatch(List<SysFileCategory> sysFileCategoryList) {
+//
+//        // 是先删除当前用户ID下的全部记录,然后批量插入新数据
+//        sysFileCategoryDao.delete(new LambdaQueryWrapper<SysFileCategory>().eq(SysFileCategory::getUser_id, SecurityUtil.getUserId()));
+//        sysFileCategoryDao.insertBatch(sysFileCategoryList);
+//
+//        List<Long> ids = sysFileCategoryList.stream().map(item -> item.getId()).collect(Collectors.toList());
+//        return Map.of("ids", ids);
+//    }
+//
+//    /**
+//     * 编辑文件分类(批量)
+//     */
+//    @Override
+//    public Map<String, Object> updateFileCategoryBatch(List<SysFileCategory> sysFileCategoryList) {
+//        sysFileCategoryDao.updateByIdBatch(sysFileCategoryList);
+//        List<Long> ids = sysFileCategoryList.stream().map(item -> item.getId()).collect(Collectors.toList());
+//        return Map.of("ids", ids);
+//    }
+
+    /**
+     * 编辑文件分类(批量)(先删后增)
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> updateFileCategoryBatch(List<SysFileCategory> sysFileCategoryList) {
+
+        // 是先删除当前用户ID下的全部记录,然后批量插入新数据
+        Long user_id = SecurityUtil.getUserId();
+        sysFileCategoryDao.delete(new LambdaQueryWrapper<SysFileCategory>().eq(SysFileCategory::getUser_id, user_id));
+
+        sysFileCategoryList = sysFileCategoryList.stream().map(item -> {
+            item.setUser_id(user_id);
+            return item;
+        }).collect(Collectors.toList());
+
+        sysFileCategoryDao.insertBatch(sysFileCategoryList);
+
+        List<Long> ids = sysFileCategoryList.stream().map(item -> item.getId()).collect(Collectors.toList());
+        return Map.of("ids", ids);
+    }
+
     /**
      * 删除文件分类
      */

+ 29 - 1
src/main/resources/mapper/upload/SysFileCategoryDao.xml

@@ -10,7 +10,8 @@
         fc.status
     </sql>
 
-    <resultMap id="resultMapFileCategoryList" type="com.backendsys.modules.upload.entity.SysFileCategory">
+<!--    type="com.backendsys.modules.upload.entity.SysFileCategory"-->
+    <resultMap id="resultMapFileCategoryList" type="java.util.LinkedHashMap">
         <id property="id" column="id" jdbcType="BIGINT" />
         <result property="user_id" column="user_id" javaType="java.lang.Long" />
         <result property="category_name" column="category_name" />
@@ -38,4 +39,31 @@
         ORDER BY fc.sort DESC
     </select>
 
+    <!-- 批量插入 -->
+    <insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO sys_file_category (user_id, category_name, sort, status) VALUES
+        <foreach collection="list" item="item" separator=",">
+            (
+                #{item.user_id},
+                #{item.category_name},
+                #{item.sort},
+                #{item.status}
+            )
+        </foreach>
+    </insert>
+
+    <!-- 批量更新 -->
+    <update id="updateByIdBatch">
+        <foreach collection="list" item="item" separator=";">
+            UPDATE sys_file_category SET
+            <trim suffixOverrides="," suffix=" ">
+                <if test="item.category_name != null and item.category_name != ''">category_name = #{item.category_name},</if>
+                <if test="item.sort != null and item.sort != ''">sort = #{item.sort},</if>
+                <if test="item.status != null and item.status != ''">status = #{item.status},</if>
+            </trim>
+            WHERE id = #{item.id}
+        </foreach>
+    </update>
+
+
 </mapper>