Przeglądaj źródła

完成共享素材分类的接口区分

tsurumure 1 miesiąc temu
rodzic
commit
829968579e

+ 13 - 12
db/ai_material_category.sql

@@ -8,23 +8,24 @@ DROP TABLE IF EXISTS `ai_material_category`;
 CREATE TABLE `ai_material_category` (
     PRIMARY KEY (`id`),
     `id` BIGINT AUTO_INCREMENT COMMENT 'ID',
-    `lora_id` BIGINT NOT NULL COMMENT '素材风格ID',
+    `lora_id` BIGINT COMMENT '素材风格ID',
     `category_name` VARCHAR(255) NOT NULL COMMENT '素材分类名称',
+    `is_share` TINYINT DEFAULT '-1' COMMENT '是否共享(-1:不共享, 1:共享)',
     `sort` INT DEFAULT '1' COMMENT '排序',
     INDEX `idx_category_name` (`category_name`)
 ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='素材分类表';
 
-INSERT INTO ai_material_category(lora_id, category_name, sort) VALUES
-    (1, '人物素材', 7),
-    (1, '场景素材', 6),
-    (1, '异兽素材', 5),
-    (1, '道具素材', 3),
-    (1, '特效素材', 2),
+INSERT INTO ai_material_category(lora_id, is_share, category_name, sort) VALUES
+    (null, 1, '特效素材', 1),
 
-    (2, '人物素材', 7),
-    (2, '场景素材', 6),
-    (2, '异兽素材', 5),
-    (2, '道具素材', 4),
-    (2, '特效素材', 3)
+    (1, -1, '人物素材', 7),
+    (1, -1, '场景素材', 6),
+    (1, -1, '异兽素材', 5),
+    (1, -1, '道具素材', 3),
+
+    (2, -1,  '人物素材', 7),
+    (2, -1,  '场景素材', 6),
+    (2, -1,  '异兽素材', 5),
+    (2, -1,  '道具素材', 4)
 ;
 

+ 6 - 1
src/main/java/com/backendsys/modules/material/entity/MaterialCategory.java

@@ -1,5 +1,7 @@
 package com.backendsys.modules.material.entity;
 
+import com.backendsys.entity.validator.RangeArray;
+import com.backendsys.entity.validator.RangeStringArray;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -27,9 +29,12 @@ public class MaterialCategory {
     @NotNull(message="分类ID不能为空", groups = { Detail.class, Update.class, Delete.class })
     private Long category_id;
 
-    @NotNull(message="风格ID不能为空", groups = { CategoryList.class, Detail.class, Create.class, Update.class })
+    @NotNull(message="风格ID不能为空", groups = { CategoryList.class, Detail.class })
     private Long lora_id;
 
+    @RangeArray(message="是否共享取值有误,范围应是(-1否, 1是)", value = { "-1", "1" }, groups = { Create.class, Update.class })
+    private Integer is_share;
+
     @TableField(exist = false)
     private String lora_name;
 

+ 20 - 3
src/main/java/com/backendsys/modules/material/service/impl/MaterialCategoryImpl.java

@@ -6,6 +6,7 @@ import com.backendsys.modules.material.service.MaterialCategoryService;
 import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
 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;
 
@@ -18,7 +19,7 @@ public class MaterialCategoryImpl implements MaterialCategoryService {
     private MaterialCategoryDao materialCategoryDao;
 
     /**
-     * 获取素材分类列表
+     * 获取素材分类列表 (全部/分页)
      */
     @Override
     public PageEntity selectMaterialCategoryList(MaterialCategory materialCategory) {
@@ -28,11 +29,27 @@ public class MaterialCategoryImpl implements MaterialCategoryService {
     }
 
     /**
-     * 获取素材分类列表 (下拉)
+     * 获取素材分类列表 (下拉)(将 { is_share } 的记录独立出来)
      */
     @Override
     public List<MaterialCategory> selectMaterialCategoryPopover(MaterialCategory materialCategory) {
-        return materialCategoryDao.selectMaterialCategoryList(materialCategory);
+
+        // [DB] 查询非共享的素材分类 { is_share = -1 }
+        materialCategory.setIs_share(-1);
+        List<MaterialCategory> list = materialCategoryDao.selectMaterialCategoryList(materialCategory);
+        System.out.println("list = " + list);
+        System.out.println("-----------------");
+
+        // [DB] 查询共享的素材分类 { is_share = 1, lora_id = null }
+        materialCategory.setLora_id(null);
+        materialCategory.setIs_share(1);
+        List<MaterialCategory> list_of_share = materialCategoryDao.selectMaterialCategoryList(materialCategory);
+        System.out.println("list_of_share = " + list_of_share);
+
+        // 将共享分类追加到非共享分类后面
+        list.addAll(list_of_share);
+
+        return list;
     }
 
 }

+ 5 - 0
src/main/resources/mapper/ai/material/MaterialCategoryDao.xml

@@ -8,6 +8,7 @@
         mc.lora_id,
         mcl.lora_name,
         mc.category_name,
+        mc.is_share,
         mc.sort
     </sql>
     <!-- COALESCE(content_type, '') content_type, -->
@@ -17,6 +18,7 @@
         <result property="lora_id" column="lora_id" javaType="java.lang.Long" />
         <result property="lora_name" column="lora_name" />
         <result property="category_name" column="category_name" />
+        <result property="is_share" column="is_share" javaType="java.lang.Integer"/>
         <result property="sort" column="sort" javaType="java.lang.Integer" />
     </resultMap>
 
@@ -32,6 +34,9 @@
             <if test="category_name != null and category_name != ''">
                 AND mc.category_name like concat('%', #{category_name}, '%')
             </if>
+            <if test="is_share != null and is_share != ''">
+                AND mc.is_share = #{is_share}
+            </if>
         </where>
         ORDER BY mc.sort DESC
     </select>