增加标签搜索功能,增加作品标签点击跳转

This commit is contained in:
2025-08-23 15:23:54 +08:00
parent 20b336cf31
commit 167c57d0a9
7 changed files with 382 additions and 15 deletions
+14 -2
View File
@@ -10,6 +10,7 @@ router.get('/search', async (req, res) => {
try {
const {
keyword,
tags,
type = 'all',
sort = 'date_desc',
duration = 'all',
@@ -17,16 +18,27 @@ router.get('/search', async (req, res) => {
limit = 30
} = req.query;
if (!keyword) {
// 处理标签参数
let tagsArray = [];
if (tags) {
if (Array.isArray(tags)) {
tagsArray = tags;
} else {
tagsArray = [tags];
}
}
if (!keyword && (!tagsArray || tagsArray.length === 0)) {
return res.status(400).json({
success: false,
error: 'Search keyword is required'
error: 'Search keyword or tags are required'
});
}
const artworkService = new ArtworkService(req.backend.getAuth());
const result = await artworkService.searchArtworks({
keyword,
tags: tagsArray,
type,
sort,
duration,
+13 -3
View File
@@ -151,6 +151,7 @@ class ArtworkService {
try {
const {
keyword,
tags,
type = 'all',
sort = 'date_desc',
duration = 'all',
@@ -159,10 +160,10 @@ class ArtworkService {
} = searchOptions;
// 验证搜索参数
if (!keyword || keyword.trim() === '') {
if ((!keyword || keyword.trim() === '') && (!tags || tags.length === 0)) {
return {
success: false,
error: 'Search keyword is required'
error: 'Search keyword or tags are required'
};
}
@@ -187,8 +188,17 @@ class ArtworkService {
'within_last_month': 'within_last_month'
};
// 构建搜索关键词
let searchWord = '';
if (keyword && keyword.trim()) {
searchWord = keyword.trim();
} else if (tags && tags.length > 0) {
// 将标签数组转换为搜索关键词,用空格分隔
searchWord = tags.join(' ');
}
const params = {
word: keyword.trim(),
word: searchWord,
search_target: searchTargetMap[type] || 'partial_match_for_tags',
sort: sortMap[sort] || 'date_desc',
offset: parseInt(offset) || 0,