From fe5d383211fffdb51b695557f27141d5416a6b33 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 14 Jan 2026 13:58:47 +0800
Subject: [PATCH] feat(ai): 添加产品亮点视频关联功能
---
src/main/java/cc/mrbird/febs/ai/controller/fileUpload/FileUploadController.java | 6 +-
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java | 4 ++
src/main/java/cc/mrbird/febs/ai/controller/productPoint/AiProductPointController.java | 41 ++++++++++++++++++++
src/main/resources/templates/febs/views/modules/ai/productPoint/info.html | 25 ++++++++++++
src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java | 5 ++
src/main/resources/templates/febs/views/modules/ai/productPoint/add.html | 22 +++++++++++
6 files changed, 100 insertions(+), 3 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/ai/controller/fileUpload/FileUploadController.java b/src/main/java/cc/mrbird/febs/ai/controller/fileUpload/FileUploadController.java
index 97171f2..d951ea6 100644
--- a/src/main/java/cc/mrbird/febs/ai/controller/fileUpload/FileUploadController.java
+++ b/src/main/java/cc/mrbird/febs/ai/controller/fileUpload/FileUploadController.java
@@ -30,10 +30,10 @@
public class FileUploadController extends BaseController {
// 基础上传目录
- private String baseUploadDir = "/home/javaweb/webresource/ai/file";
+ public static String baseUploadDir = "/home/javaweb/webresource/ai/file";
// 分片存储目录
- private String baseChunkDir = "/home/javaweb/webresource/ai/file/chunks";
+ public static String baseChunkDir = "/home/javaweb/webresource/ai/file/chunks";
/**
* 上传文件分片
@@ -84,7 +84,7 @@
}
// 生成唯一文件名
- String uniqueFileName = UUID.randomUUID().toString() + "_" + fileName;
+ String uniqueFileName = fileName+ "_" + UUID.randomUUID().toString() ;
Path targetFilePath = uploadPath.resolve(uniqueFileName);
// 构建公司专属分片目录
diff --git a/src/main/java/cc/mrbird/febs/ai/controller/productPoint/AiProductPointController.java b/src/main/java/cc/mrbird/febs/ai/controller/productPoint/AiProductPointController.java
index 12a8535..e2e8bf8 100644
--- a/src/main/java/cc/mrbird/febs/ai/controller/productPoint/AiProductPointController.java
+++ b/src/main/java/cc/mrbird/febs/ai/controller/productPoint/AiProductPointController.java
@@ -1,5 +1,7 @@
package cc.mrbird.febs.ai.controller.productPoint;
+import cc.mrbird.febs.ai.controller.fileUpload.FileUploadController;
+import cc.mrbird.febs.ai.entity.AiProductCategory;
import cc.mrbird.febs.ai.entity.AiProductPoint;
import cc.mrbird.febs.ai.service.AiProductPointService;
import cc.mrbird.febs.common.annotation.ControllerEndpoint;
@@ -13,6 +15,13 @@
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
import java.util.Map;
/**
@@ -67,4 +76,36 @@
String companyId = getCurrentUserCompanyId();
return new FebsResponse().success().data(service.pointTree(companyId));
}
+
+ @GetMapping("fileList/parent")
+ @ControllerEndpoint(exceptionMessage = "获取文件列表失败")
+ public List<FileUploadController.FileInfo> parent(){
+ List<FileUploadController.FileInfo> list = new ArrayList<>();
+ try {
+
+ String companyId = getCurrentUserCompanyId();
+ String uploadDir = FileUploadController.baseUploadDir + "/" + companyId;
+ Path uploadPath = Paths.get(uploadDir);
+ if (!Files.exists(uploadPath)) {
+ return list;
+ }
+
+ Files.list(uploadPath).forEach(path -> {
+ if (Files.isRegularFile(path)) {
+ try {
+ FileUploadController.FileInfo fileInfo = new FileUploadController.FileInfo();
+ fileInfo.setFileName(path.getFileName().toString());
+ list.add(fileInfo);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+
+ return list;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return list;
+ }
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java b/src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java
index 4abafcd..3b862ba 100644
--- a/src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java
+++ b/src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java
@@ -54,6 +54,11 @@
*/
private String description;
+ /**
+ * 视屏名称
+ */
+ private String videoName;
+
@TableField(exist = false)
private String productCategoryName;
}
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java
index 4bde82d..d611987 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java
@@ -81,11 +81,14 @@
entity.setCompanyId(dto.getCompanyId());
entity.setIsNormal(dto.getIsNormal() );
entity.setFinderUserName(dto.getFinderUserName());
+
entity.setFeedId(dto.getFeedId());
entity.setFeedImg(dto.getFeedImg());
entity.setTitle(dto.getTitle());
+ entity.setVideoName(dto.getVideoName());
entity.setDescription(dto.getDescription());
entity.setCreatedTime(new Date());
+
this.save(entity);
return new FebsResponse().success().message("操作成功");
}
@@ -104,6 +107,7 @@
.set(AiProductPoint::getTitle, dto.getTitle())
.set(AiProductPoint::getFeedImg, dto.getFeedImg())
.set(AiProductPoint::getDescription, dto.getDescription())
+ .set(AiProductPoint::getVideoName, dto.getVideoName())
.set(AiProductPoint::getUpdatedTime, new Date())
.eq(AiProductPoint::getId, id)
);
diff --git a/src/main/resources/templates/febs/views/modules/ai/productPoint/add.html b/src/main/resources/templates/febs/views/modules/ai/productPoint/add.html
index a045842..84c72f3 100644
--- a/src/main/resources/templates/febs/views/modules/ai/productPoint/add.html
+++ b/src/main/resources/templates/febs/views/modules/ai/productPoint/add.html
@@ -20,6 +20,16 @@
</div>
<div class="layui-row layui-col-space10 layui-form-item">
<div class="layui-col-lg6">
+ <label class="layui-form-label">视屏选择:</label>
+ <div class="layui-input-block">
+ <select name="videoName" class="video-add-productCategory">
+ <option value="">请选择</option>
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="layui-row layui-col-space10 layui-form-item">
+ <div class="layui-col-lg6">
<label class="layui-form-label febs-form-item-require">类型:</label>
<div class="layui-input-block">
<select name="isNormal" class="point-type" lay-filter="point-type-select">
@@ -192,6 +202,18 @@
}
});
+ //(下拉框)
+ $.get(ctx + 'admin/fileList/parent', function (data) {
+ for (var k in data)
+ {
+ $(".video-add-productCategory").append("<option value='" + data[k].fileName + "'>" + data[k].fileName + "</option>");
+ }
+ layui.use('form', function () {
+ var form = layui.form;
+ form.render();
+ });
+ });
+
form.on('submit(productPoint-add-form-submit)', function (data) {
data.field.description = editor.txt.html();
$.ajax({
diff --git a/src/main/resources/templates/febs/views/modules/ai/productPoint/info.html b/src/main/resources/templates/febs/views/modules/ai/productPoint/info.html
index bc08ba8..d87bf2b 100644
--- a/src/main/resources/templates/febs/views/modules/ai/productPoint/info.html
+++ b/src/main/resources/templates/febs/views/modules/ai/productPoint/info.html
@@ -19,6 +19,17 @@
</select>
</div>
</div>
+
+ <div class="layui-row layui-col-space10 layui-form-item">
+ <div class="layui-col-lg6">
+ <label class="layui-form-label">视屏选择:</label>
+ <div class="layui-input-block">
+ <select name="videoName" class="video-add-productCategory" id="video-add-productCategory-select">
+ <option value="">请选择</option>
+ </select>
+ </div>
+ </div>
+ </div>
<div class="layui-row layui-col-space10 layui-form-item">
<div class="layui-col-lg6">
<label class="layui-form-label febs-form-item-require">类型:</label>
@@ -200,6 +211,19 @@
}
});
+ //(下拉框)
+ $.get(ctx + 'admin/fileList/parent', function (data) {
+ for (var k in data)
+ {
+ $(".video-add-productCategory").append("<option value='" + data[k].fileName + "'>" + data[k].fileName + "</option>");
+ }
+ layui.use('form', function () {
+ var form = layui.form;
+ $("#video-add-productCategory-select").val(aiProductPoint.videoName)
+ form.render();
+ });
+ });
+
setTimeout(() => {
initProductPointInfo();
}, 500);
@@ -210,6 +234,7 @@
"isNormal": aiProductPoint.isNormal,
"finderUserName": aiProductPoint.finderUserName,
"productCategoryId": aiProductPoint.productCategoryId,
+ "videoName": aiProductPoint.videoName,
"feedId": aiProductPoint.feedId,
});
--
Gitblit v1.9.1