Quellcode durchsuchen

完成风格LoRA列表及风格分类接口

tsurumure vor 3 Monaten
Ursprung
Commit
bca6ac4a6d

+ 7 - 4
db/crt_lora_style.sql

@@ -8,12 +8,15 @@ DROP TABLE IF EXISTS `crt_lora_style`;
 CREATE TABLE `crt_lora_style` (
     PRIMARY KEY (`id`),
     `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
+    `category_id` BIGINT NOT NULL COMMENT '风格分类ID',
     `name` VARCHAR(255) NOT NULL COMMENT '风格名称',
+    `thumb` VARCHAR(1000) COMMENT '风格缩略图',
     `lora_style_name` VARCHAR(255) NOT NULL COMMENT '风格LoRA名称',
-    `lora_style_path` VARCHAR(500) NOT NULL COMMENT '风格LoRA路径'
+    `lora_style_path` VARCHAR(500) NOT NULL COMMENT '风格LoRA路径',
+    INDEX `idx_category_id` (`category_id`)
 ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='短剧创作-风格LoRA表';
 
-INSERT INTO crt_lora_style(id, name, lora_style_name, lora_style_path) VALUES
-    (1, 'Hyatsu梦幻宝石眼睛v2', 'hyatsu_gemstone_dream_eyes_v2', '/etc/ComfyUI/custom_nodes/xxx/hyatsu_gemstone_dream_eyes_v2.safetensors'),
-    (2, '日系漫画风', 'japanese_anime_style', '/etc/ComfyUI/custom_nodes/xxx/japanese_anime_style.safetensors')
+INSERT INTO crt_lora_style(id, category_id, name, thumb, lora_style_name, lora_style_path) VALUES
+    (1, 1, 'Hyatsu梦幻宝石眼睛v2', '', 'hyatsu_gemstone_dream_eyes_v2', '/etc/ComfyUI/custom_nodes/xxx/hyatsu_gemstone_dream_eyes_v2.safetensors'),
+    (2, 1, '日系漫画风', '', 'japanese_anime_style', '/etc/ComfyUI/custom_nodes/xxx/japanese_anime_style.safetensors')
 ;

+ 17 - 0
db/crt_lora_style_category.sql

@@ -0,0 +1,17 @@
+/**
+Source Server Version: 8.0.31
+Source Database: backendsys
+Date: 2025/06/03 10:09:22
+*/
+
+DROP TABLE IF EXISTS `crt_lora_style_category`;
+CREATE TABLE `crt_lora_style_category` (
+    PRIMARY KEY (`id`),
+    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
+    `category_name` VARCHAR(255) NOT NULL COMMENT '风格分类名称'
+) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='短剧创作-风格分类表';
+
+INSERT INTO crt_lora_style_category(id, category_name) VALUES
+    (1, '动漫'),
+    (2, '写实')
+;

+ 34 - 0
src/main/java/com/backendsys/modules/crt/controller/CrtLoraStyleController.java

@@ -0,0 +1,34 @@
+package com.backendsys.modules.crt.controller;
+
+import com.backendsys.modules.common.utils.Result;
+import com.backendsys.modules.crt.entity.CrtLoraStyle;
+import com.backendsys.modules.crt.service.CrtLoraStyleService;
+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.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Validated
+@RestController
+@Tag(name = "短剧创作-风格LoRA")
+public class CrtLoraStyleController {
+
+    @Autowired
+    private CrtLoraStyleService crtLoraStyleService;
+
+    @Operation(summary = "获取短剧创作-风格LoRA列表")
+    @GetMapping("/api/crt/drama/getLoraStyleList")
+    public Result getLoraStyleList(@Validated CrtLoraStyle crtLoraStyle) {
+        return Result.success().put("data", crtLoraStyleService.selectCrtLoraStyleList(crtLoraStyle));
+    }
+
+    @Operation(summary = "获取短剧创作-风格分类列表")
+    @GetMapping("/api/crt/drama/getLoraStyleCategoryList")
+    public Result getLoraStyleCategoryList() {
+        return Result.success().put("data", crtLoraStyleService.selectCrtLoraStyleCategoryList());
+    }
+
+}

+ 9 - 0
src/main/java/com/backendsys/modules/crt/dao/CrtLoraStyleCategoryDao.java

@@ -0,0 +1,9 @@
+package com.backendsys.modules.crt.dao;
+
+import com.backendsys.modules.crt.entity.CrtLoraStyleCategory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CrtLoraStyleCategoryDao extends BaseMapper<CrtLoraStyleCategory> {
+}

+ 15 - 0
src/main/java/com/backendsys/modules/crt/dao/CrtLoraStyleDao.java

@@ -0,0 +1,15 @@
+package com.backendsys.modules.crt.dao;
+
+import com.backendsys.modules.crt.entity.CrtLoraStyle;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface CrtLoraStyleDao extends BaseMapper<CrtLoraStyle> {
+
+    List<Map<String, Object>> selectCrtLoraStyleList(CrtLoraStyle crtLoraStyle);
+
+}

+ 1 - 0
src/main/java/com/backendsys/modules/crt/entity/CrtLoraStyle.java

@@ -11,6 +11,7 @@ public class CrtLoraStyle {
 
     @TableId(type = IdType.AUTO)
     private Long id;
+    private Long category_id;
     private String name;                   // 风格名称
     private String lora_style_name;        // 风格LoRA名称
     private String lora_style_path;        // 风格LoRA路径

+ 15 - 0
src/main/java/com/backendsys/modules/crt/entity/CrtLoraStyleCategory.java

@@ -0,0 +1,15 @@
+package com.backendsys.modules.crt.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("crt_lora_style_category")
+public class CrtLoraStyleCategory {
+
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    private String category_name;                   // 风格分类名称
+}

+ 16 - 0
src/main/java/com/backendsys/modules/crt/service/CrtLoraStyleService.java

@@ -0,0 +1,16 @@
+package com.backendsys.modules.crt.service;
+
+import com.backendsys.modules.crt.entity.CrtLoraStyle;
+import com.backendsys.modules.crt.entity.CrtLoraStyleCategory;
+import com.backendsys.utils.response.PageEntity;
+
+import java.util.List;
+
+public interface CrtLoraStyleService {
+
+    // 获取短剧创作-风格LoRA列表
+    PageEntity selectCrtLoraStyleList(CrtLoraStyle crtLoraStyle);
+    // 获取短剧创作-风格分类列表
+    List<CrtLoraStyleCategory> selectCrtLoraStyleCategoryList();
+
+}

+ 46 - 0
src/main/java/com/backendsys/modules/crt/service/impl/CrtLoraStyleServiceImpl.java

@@ -0,0 +1,46 @@
+package com.backendsys.modules.crt.service.impl;
+
+import com.backendsys.modules.crt.dao.CrtLoraStyleCategoryDao;
+import com.backendsys.modules.crt.dao.CrtLoraStyleDao;
+import com.backendsys.modules.crt.entity.CrtLoraStyle;
+import com.backendsys.modules.crt.entity.CrtLoraStyleCategory;
+import com.backendsys.modules.crt.service.CrtLoraStyleService;
+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;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class CrtLoraStyleServiceImpl implements CrtLoraStyleService {
+
+    @Autowired
+    private CrtLoraStyleDao crtLoraStyleDao;
+
+    @Autowired
+    private CrtLoraStyleCategoryDao crtLoraStyleCategoryDao;
+
+    /**
+     * 获取短剧创作-风格LoRA列表
+     */
+    @Override
+    public PageEntity selectCrtLoraStyleList(CrtLoraStyle crtLoraStyle) {
+        PageUtils.startPage();  // 分页
+        List<Map<String, Object>> list = crtLoraStyleDao.selectCrtLoraStyleList(crtLoraStyle);
+        return new PageInfoResult(list).toEntity();
+    }
+
+    /**
+     * 获取短剧创作-风格分类列表
+     */
+    @Override
+    public List<CrtLoraStyleCategory> selectCrtLoraStyleCategoryList() {
+        PageUtils.startPage();  // 分页
+        return crtLoraStyleCategoryDao.selectList(null);
+    }
+
+}

+ 41 - 0
src/main/resources/mapper/crt/drama/CrtLoraStyleDao.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.backendsys.modules.crt.dao.CrtLoraStyleDao">
+
+    <sql id="includeCrtLoraStyle">
+        s.id,
+        s.category_id,
+        COALESCE(sc.category_name, '') category_name,
+        s.name,
+        COALESCE(s.thumb, '') thumb,
+        s.lora_style_name,
+        s.lora_style_path
+    </sql>
+
+    <resultMap id="resultMapCrtLoraStyle" type="java.util.LinkedHashMap">
+        <id property="id" column="id" jdbcType="BIGINT" />
+        <result property="category_id" column="category_id" javaType="java.lang.Long" />
+        <result property="category_name" column="category_name" />
+        <result property="name" column="name" />
+        <result property="thumb" column="thumb" />
+        <result property="lora_style_name" column="lora_style_name" />
+        <result property="lora_style_path" column="lora_style_path" />
+    </resultMap>
+
+    <!-- 查 列表 -->
+    <select id="selectCrtLoraStyleList" resultMap="resultMapCrtLoraStyle">
+        SELECT
+            <include refid="includeCrtLoraStyle" />
+        FROM crt_lora_style s
+        LEFT JOIN crt_lora_style_category sc ON s.category_id = sc.id
+        <where>
+            <if test="category_id != null and category_id != ''">
+                AND s.category_id = #{category_id}
+            </if>
+            <if test="name != null and name != ''">
+                AND s.name LIKE CONCAT('%', #{name}, '%')
+            </if>
+        </where>
+    </select>
+
+</mapper>