Browse Source

新增素材需求反馈列表接口

tsurumure 3 weeks ago
parent
commit
7013e701c9

+ 7 - 14
src/main/java/com/backendsys/modules/material/controller/MaterialFeedbackController.java

@@ -11,6 +11,7 @@ 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.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
 @Validated
@@ -21,23 +22,15 @@ public class MaterialFeedbackController {
     @Autowired
     private MaterialFeedbackService materialFeedbackService;
 
-//    @Anonymous
-//    @Operation(summary = "获取素材需求反馈列表")
-//    @GetMapping("/api/material/getMaterialFeedbackList")
-//    public Result getMaterialFeedbackList(@Validated(MaterialFeedback.FeedbackList.class) MaterialFeedback materialFeedback) {
-//        return Result.success().put("data", materialFeedbackService.selectMaterialFeedbackList(materialFeedback));
-//    }
-//
-//    @Anonymous
-//    @Operation(summary = "获取素材需求反馈列表(下拉)")
-//    @GetMapping("/api/material/getMaterialFeedbackPopover")
-//    public Result getMaterialFeedbackPopover(@Validated(MaterialFeedback.FeedbackList.class) MaterialFeedback materialFeedback) {
-//        return Result.success().put("data", materialFeedbackService.selectMaterialFeedbackPopover(materialFeedback));
-//    }
+    @Operation(summary = "获取素材需求反馈列表")
+    @GetMapping("/api/material/getMaterialFeedbackList")
+    public Result getMaterialFeedbackList(MaterialFeedback materialFeedback) {
+        return Result.success().put("data", materialFeedbackService.selectMaterialFeedbackList(materialFeedback));
+    }
 
     @Operation(summary = "发送素材需求反馈")
     @PostMapping("/api/material/sendMaterialFeedback")
-    public Result sendMaterialFeedback(@Validated(MaterialFeedback.Create.class) MaterialFeedback materialFeedback) {
+    public Result sendMaterialFeedback(@Validated(MaterialFeedback.Create.class) @RequestBody MaterialFeedback materialFeedback) {
         materialFeedback.setUser_id(SecurityUtil.getUserId());
         return Result.success().put("data", materialFeedbackService.sendMaterialFeedback(materialFeedback));
     }

+ 4 - 0
src/main/java/com/backendsys/modules/material/dao/MaterialFeedbackDao.java

@@ -4,6 +4,10 @@ import com.backendsys.modules.material.entity.MaterialFeedback;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+import java.util.Map;
+
 @Mapper
 public interface MaterialFeedbackDao extends BaseMapper<MaterialFeedback> {
+    List<Map<String, Object>> selectMaterialFeedbackList(MaterialFeedback materialFeedback);
 }

+ 4 - 0
src/main/java/com/backendsys/modules/material/service/MaterialFeedbackService.java

@@ -1,11 +1,15 @@
 package com.backendsys.modules.material.service;
 
 import com.backendsys.modules.material.entity.MaterialFeedback;
+import com.backendsys.utils.response.PageEntity;
 
 import java.util.Map;
 
 public interface MaterialFeedbackService {
 
+    // 获取素材需求反馈列表
+    PageEntity selectMaterialFeedbackList(MaterialFeedback materialFeedback);
+
     // 发送素材需求反馈
     Map<String, Object> sendMaterialFeedback(MaterialFeedback materialFeedback);
 

+ 1 - 2
src/main/java/com/backendsys/modules/material/service/impl/MaterialCategoryImpl.java → src/main/java/com/backendsys/modules/material/service/impl/MaterialCategoryServiceImpl.java

@@ -6,14 +6,13 @@ 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;
 
 import java.util.List;
 
 @Service
-public class MaterialCategoryImpl implements MaterialCategoryService {
+public class MaterialCategoryServiceImpl implements MaterialCategoryService {
 
     @Autowired
     private MaterialCategoryDao materialCategoryDao;

+ 47 - 1
src/main/java/com/backendsys/modules/material/service/impl/MaterialFeedbackServiceImpl.java

@@ -1,25 +1,71 @@
 package com.backendsys.modules.material.service.impl;
 
+import com.backendsys.exception.CustException;
+import com.backendsys.modules.material.dao.MaterialCategoryDao;
 import com.backendsys.modules.material.dao.MaterialFeedbackDao;
+import com.backendsys.modules.material.dao.MaterialLoraDao;
+import com.backendsys.modules.material.entity.MaterialCategory;
 import com.backendsys.modules.material.entity.MaterialFeedback;
+import com.backendsys.modules.material.entity.MaterialLora;
 import com.backendsys.modules.material.service.MaterialFeedbackService;
+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 org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
 import java.util.Map;
 
 @Service
 public class MaterialFeedbackServiceImpl implements MaterialFeedbackService {
 
+    @Autowired
+    private MaterialLoraDao materialLoraDao;
+    @Autowired
+    private MaterialCategoryDao materialCategoryDao;
     @Autowired
     private MaterialFeedbackDao materialFeedbackDao;
 
+
+    /**
+     * 获取素材需求反馈列表
+     */
+    @Override
+    public PageEntity selectMaterialFeedbackList(MaterialFeedback materialFeedback) {
+        PageUtils.startPage();  // 分页
+        List<Map<String, Object>> list = materialFeedbackDao.selectMaterialFeedbackList(materialFeedback);
+        return new PageInfoResult(list).toEntity();
+    }
+
+
     /**
      * 发送素材需求反馈
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Map<String, Object> sendMaterialFeedback(MaterialFeedback materialFeedback) {
-        return null;
+
+        // [DB] 判断素材风格是否存在
+        Long lora_id = materialFeedback.getLora_id();
+        LambdaQueryWrapper<MaterialLora> wrapperLora = new LambdaQueryWrapper<>();
+        wrapperLora.eq(MaterialLora::getLora_id, lora_id);
+        Boolean is_lora_exist = materialLoraDao.exists(wrapperLora);
+        if (!is_lora_exist) throw new CustException("素材风格不存在");
+
+        // [DB] 判断素材分类是否存在
+        Long category_id = materialFeedback.getCategory_id();
+        LambdaQueryWrapper<MaterialCategory> wrapperCategory = new LambdaQueryWrapper<>();
+        wrapperCategory.eq(MaterialCategory::getCategory_id, category_id);
+        Boolean is_category_exist = materialCategoryDao.exists(wrapperCategory);
+        if (!is_category_exist) throw new CustException("素材分类不存在");
+
+        // [DB] 新增 素材需求反馈
+        materialFeedbackDao.insert(materialFeedback);
+
+        return Map.of("feedback_id", materialFeedback.getId());
     }
 
 }

+ 1 - 1
src/main/java/com/backendsys/modules/material/service/impl/MaterialTagImpl.java → src/main/java/com/backendsys/modules/material/service/impl/MaterialTagServiceImpl.java

@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
 import java.util.List;
 
 @Service
-public class MaterialTagImpl implements MaterialTagService {
+public class MaterialTagServiceImpl implements MaterialTagService {
 
     @Autowired
     private MaterialDao materialDao;

+ 49 - 0
src/main/resources/mapper/ai/material/MaterialFeedbackDao.xml

@@ -0,0 +1,49 @@
+<?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.material.dao.MaterialFeedbackDao">
+
+    <sql id="includeMaterialFeedback">
+        id,
+        id feedback_id,
+        user_id,
+        lora_id,
+        category_id,
+        content,
+        COALESCE(image_url, '') image_url,
+        create_time,
+        update_time
+    </sql>
+    <!-- COALESCE(content_type, '') content_type, -->
+    <resultMap id="resultMapMaterialFeedback" type="com.backendsys.modules.material.entity.MaterialFeedback">
+        <id property="id" column="id" jdbcType="BIGINT" />
+        <result property="feedback_id" column="id" javaType="java.lang.Long" />
+        <result property="user_id" column="user_id" javaType="java.lang.Long" />
+        <result property="lora_id" column="lora_id" javaType="java.lang.Long" />
+        <result property="category_id" column="category_id" javaType="java.lang.Long" />
+        <result property="content" column="content" />
+        <result property="image_url" column="image_url" />
+        <result property="create_time" column="create_time"
+                typeHandler="com.backendsys.config.Mybatis.handler.timezone.LocalDateTimeHandler" />
+        <result property="update_time" column="update_time"
+                typeHandler="com.backendsys.config.Mybatis.handler.timezone.LocalDateTimeHandler" />
+    </resultMap>
+
+    <select id="selectMaterialFeedbackList" resultMap="resultMapMaterialFeedback">
+        SELECT
+            <include refid="includeMaterialFeedback" />
+        FROM ai_material_feedback
+        <where>
+            <if test="user_id != null and user_id != ''">
+                AND user_id = #{user_id}
+            </if>
+            <if test="lora_id != null and lora_id != ''">
+                AND lora_id = #{lora_id}
+            </if>
+            <if test="category_id != null and category_id != ''">
+                AND category_id = #{category_id}
+            </if>
+        </where>
+    </select>
+
+
+</mapper>