Selaa lähdekoodia

完成素材-分类及标签

tsurumure 1 kuukausi sitten
vanhempi
commit
4f278f5226

+ 17 - 1
src/main/java/com/backendsys/modules/ai/material/controller/MaterialTagController.java

@@ -1,9 +1,13 @@
 package com.backendsys.modules.ai.material.controller;
 
+import com.backendsys.modules.ai.material.entity.MaterialTag;
 import com.backendsys.modules.ai.material.service.MaterialTagService;
+import com.backendsys.modules.common.utils.Result;
+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.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 @Validated
@@ -14,6 +18,18 @@ public class MaterialTagController {
     @Autowired
     private MaterialTagService materialTagService;
 
-    
+    @Operation(summary = "获取素材分类列表")
+//    @PreAuthorize("@sr.hasPermission('31')")
+    @GetMapping("/api/ai/material/getMaterialTagList")
+    public Result getMaterialTagList(@Validated(MaterialTag.TagList.class) MaterialTag materialTag) {
+        return Result.success().put("data", materialTagService.selectMaterialTagList(materialTag));
+    }
+
+    @Operation(summary = "获取素材分类列表(下拉)")
+//    @PreAuthorize("@sr.hasPermission('31')")
+    @GetMapping("/api/ai/material/getMaterialTagPopover")
+    public Result getMaterialTagPopover(@Validated(MaterialTag.TagList.class) MaterialTag materialTag) {
+        return Result.success().put("data", materialTagService.selectMaterialTagPopover(materialTag));
+    }
 
 }

+ 5 - 0
src/main/java/com/backendsys/modules/ai/material/dao/MaterialTagDao.java

@@ -4,6 +4,11 @@ import com.backendsys.modules.ai.material.entity.MaterialTag;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 @Mapper
 public interface MaterialTagDao extends BaseMapper<MaterialTag> {
+
+    List<MaterialTag> selectMaterialTagList(MaterialTag materialTag);
+
 }

+ 3 - 2
src/main/java/com/backendsys/modules/ai/material/entity/Material.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.google.gson.annotations.JsonAdapter;
 import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Data;
 import org.hibernate.validator.constraints.Range;
@@ -28,12 +29,12 @@ public class Material {
     private Long id;
 
     @TableField("id")
-    @NotEmpty(message="素材ID不能为空", groups = { Detail.class, Update.class, Delete.class })
+    @NotNull(message="素材ID不能为空", groups = { Detail.class, Update.class, Delete.class })
     private Long material_id;
 
     private Long user_id;
 
-    @NotEmpty(message="素材分类ID不能为空", groups = { Create.class, Update.class })
+    @NotNull(message="素材分类ID不能为空", groups = { Create.class, Update.class })
     private Long category_id;
     private String tag_ids;
 

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Data;
 import org.hibernate.validator.constraints.Range;
@@ -23,7 +24,7 @@ public class MaterialCategory {
     private Long id;
 
     @TableField("id")
-    @NotEmpty(message="分类ID不能为空", groups = { Detail.class, Update.class, Delete.class })
+    @NotNull(message="分类ID不能为空", groups = { Detail.class, Update.class, Delete.class })
     private Long category_id;
 
     @Size(max = 100, message = "分类名称长度不超过 {max} 个字符", groups = { Create.class, Update.class })

+ 3 - 2
src/main/java/com/backendsys/modules/ai/material/entity/MaterialTag.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Data;
 import org.hibernate.validator.constraints.Range;
@@ -23,10 +24,10 @@ public class MaterialTag {
     private Long id;
 
     @TableField("id")
-    @NotEmpty(message="标签ID不能为空", groups = { Detail.class, Update.class, Delete.class })
+    @NotNull(message="标签ID不能为空", groups = { Detail.class, Update.class, Delete.class })
     private Long tag_id;
 
-    @NotEmpty(message="分类ID不能为空", groups = { TagList.class, Detail.class })
+    @NotNull(message="分类ID不能为空", groups = { TagList.class, Detail.class })
     private Long category_id;
 
     @Size(max = 100, message = "标签名称长度不超过 {max} 个字符", groups = { Create.class, Update.class })

+ 11 - 0
src/main/java/com/backendsys/modules/ai/material/service/MaterialTagService.java

@@ -1,4 +1,15 @@
 package com.backendsys.modules.ai.material.service;
 
+import com.backendsys.modules.ai.material.entity.MaterialTag;
+import com.backendsys.utils.response.PageEntity;
+
+import java.util.List;
+
 public interface MaterialTagService {
+
+    // 获取素材标签列表
+    PageEntity selectMaterialTagList(MaterialTag materialTag);
+    // 获取素材标签列表 (下拉)
+    List<MaterialTag> selectMaterialTagPopover(MaterialTag materialTag);
+
 }

+ 33 - 0
src/main/java/com/backendsys/modules/ai/material/service/impl/MaterialTagImpl.java

@@ -1,8 +1,41 @@
 package com.backendsys.modules.ai.material.service.impl;
 
+import com.backendsys.modules.ai.material.dao.MaterialTagDao;
+import com.backendsys.modules.ai.material.entity.MaterialTag;
 import com.backendsys.modules.ai.material.service.MaterialTagService;
+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;
+
 @Service
 public class MaterialTagImpl implements MaterialTagService {
+
+    @Autowired
+    private MaterialTagDao materialTagDao;
+
+    /**
+     * 获取素材标签列表
+     */
+    @Override
+    public PageEntity selectMaterialTagList(MaterialTag materialTag) {
+        PageUtils.startPage();  // 分页
+        List<MaterialTag> list = materialTagDao.selectMaterialTagList(materialTag);
+        return new PageInfoResult(list).toEntity();
+    }
+
+    /**
+     * 获取素材标签列表 (下拉)
+     */
+    @Override
+    public List<MaterialTag> selectMaterialTagPopover(MaterialTag materialTag) {
+        LambdaQueryWrapper<MaterialTag> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(MaterialTag::getCategory_id, materialTag.getCategory_id());
+        return materialTagDao.selectList(wrapper);
+    }
+
 }

+ 35 - 0
src/main/resources/mapper/ai/material/MaterialTagDao.xml

@@ -0,0 +1,35 @@
+<?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.ai.material.dao.MaterialTagDao">
+
+    <sql id="includeMaterialTag">
+        id,
+        id tag_id,
+        category_id,
+        tag_name,
+        sort
+    </sql>
+    <!-- COALESCE(content_type, '') content_type, -->
+    <resultMap id="resultMapMaterialTag" type="com.backendsys.modules.ai.material.entity.MaterialTag">
+        <id property="id" column="id" jdbcType="BIGINT" />
+        <result property="tag_id" column="id" javaType="java.lang.Long" />
+        <result property="category_id" column="id" javaType="java.lang.Long" />
+        <result property="tag_name" column="tag_name" />
+        <result property="sort" column="sort" javaType="java.lang.Integer" />
+    </resultMap>
+
+    <select id="selectMaterialTagList" resultMap="resultMapMaterialTag">
+        SELECT
+            <include refid="includeMaterialTag" />
+        FROM ai_material_tag
+        <where>
+            category_id = #{category_id}
+            <if test="tag_name != null and tag_name != ''">
+                AND tag_name like concat('%', #{tag_name}, '%')
+            </if>
+        </where>
+        ORDER BY sort DESC
+    </select>
+
+
+</mapper>