From 122d430dbbd6aec85223f439ae7d6815ced58b48 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 11 Feb 2026 16:38:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(source):=20=E6=B7=BB=E5=8A=A0=E6=A0=B9?= =?UTF-8?q?=E6=8D=AEsourceId=E6=9F=A5=E8=AF=A2faceId=E5=92=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AEfaceId=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2source?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在SourceController中新增getFaceIdsBySourceIds接口,支持根据sourceId列表查询关联的faceId - 在SourceController中新增pageByFaceId接口,支持根据faceId分页查询关联的source记录 - 在SourceMapper中新增listFaceIdsBySourceIds和pageByFaceId数据访问方法 - 在SourceService中实现getFaceIdsBySourceIds和pageByFaceId业务逻辑 - 在SourceMapper.xml中新增对应的SQL查询语句 - 添加MemberSourceEntity实体类引用和LinkedHashMap导入 - 实现空值处理和分页功能,确保查询结果准确性 --- .../basic/controller/pc/SourceController.java | 20 ++++++++++++ .../com/ycwl/basic/mapper/SourceMapper.java | 14 +++++++++ .../ycwl/basic/service/pc/SourceService.java | 15 +++++++++ .../service/pc/impl/SourceServiceImpl.java | 31 +++++++++++++++++++ src/main/resources/mapper/SourceMapper.xml | 20 ++++++++++++ 5 files changed, 100 insertions(+) diff --git a/src/main/java/com/ycwl/basic/controller/pc/SourceController.java b/src/main/java/com/ycwl/basic/controller/pc/SourceController.java index 9e5ba95d..b1063f53 100644 --- a/src/main/java/com/ycwl/basic/controller/pc/SourceController.java +++ b/src/main/java/com/ycwl/basic/controller/pc/SourceController.java @@ -12,6 +12,7 @@ import com.ycwl.basic.utils.JwtTokenUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; /** @@ -74,5 +75,24 @@ public class SourceController { } } + /** + * 根据sourceId列表查询关联的faceId + * @param sourceIds sourceId列表 + * @return sourceId -> faceId 的映射,无关联则value为null + */ + @PostMapping("/faceIds") + public ApiResponse> getFaceIdsBySourceIds(@RequestBody List sourceIds) { + return sourceService.getFaceIdsBySourceIds(sourceIds); + } + + /** + * 根据faceId分页查询关联的source记录 + * @param sourceReqQuery 查询参数(需设置faceId,可选type/scenicId/isBuy) + * @return 分页source列表 + */ + @PostMapping("/pageByFaceId") + public ApiResponse pageByFaceId(@RequestBody SourceReqQuery sourceReqQuery) { + return sourceService.pageByFaceId(sourceReqQuery); + } } diff --git a/src/main/java/com/ycwl/basic/mapper/SourceMapper.java b/src/main/java/com/ycwl/basic/mapper/SourceMapper.java index 2ffe8d12..142e8499 100644 --- a/src/main/java/com/ycwl/basic/mapper/SourceMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/SourceMapper.java @@ -181,4 +181,18 @@ public interface SourceMapper { * @return source实体列表 */ List listSourceByFaceRelation(Long faceId, Integer type); + + /** + * 根据sourceId列表查询关联的faceId + * @param sourceIds sourceId列表 + * @return member_source记录列表(包含sourceId和faceId) + */ + List listFaceIdsBySourceIds(List sourceIds); + + /** + * 根据faceId分页查询关联的source记录 + * @param sourceReqQuery 查询参数(需设置faceId) + * @return source响应列表 + */ + List pageByFaceId(SourceReqQuery sourceReqQuery); } diff --git a/src/main/java/com/ycwl/basic/service/pc/SourceService.java b/src/main/java/com/ycwl/basic/service/pc/SourceService.java index 9664d994..c3b95e71 100644 --- a/src/main/java/com/ycwl/basic/service/pc/SourceService.java +++ b/src/main/java/com/ycwl/basic/service/pc/SourceService.java @@ -8,6 +8,7 @@ import com.ycwl.basic.utils.ApiResponse; import java.io.File; import java.util.List; +import java.util.Map; /** * @Author:longbinbin @@ -23,4 +24,18 @@ public interface SourceService { ApiResponse cutVideo(Long id); String uploadAndUpdateUrl(Long id, File file); + + /** + * 根据sourceId列表查询关联的faceId + * @param sourceIds sourceId列表 + * @return sourceId -> faceId 的映射 + */ + ApiResponse> getFaceIdsBySourceIds(List sourceIds); + + /** + * 根据faceId分页查询关联的source记录 + * @param sourceReqQuery 查询参数(需设置faceId) + * @return 分页结果 + */ + ApiResponse> pageByFaceId(SourceReqQuery sourceReqQuery); } diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/SourceServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/SourceServiceImpl.java index dc6aa81f..310ebc41 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/SourceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/SourceServiceImpl.java @@ -7,6 +7,7 @@ import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO; import com.ycwl.basic.mapper.SourceMapper; import com.ycwl.basic.model.pc.device.entity.DeviceEntity; import com.ycwl.basic.model.pc.scenic.entity.ScenicEntity; +import com.ycwl.basic.model.pc.source.entity.MemberSourceEntity; import com.ycwl.basic.model.pc.source.entity.SourceEntity; import com.ycwl.basic.model.pc.source.req.SourceReqQuery; import com.ycwl.basic.model.pc.source.resp.SourceRespVO; @@ -29,6 +30,7 @@ import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.Collections; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -201,4 +203,33 @@ public class SourceServiceImpl implements SourceService { throw new BaseException("文件上传失败: " + e.getMessage()); } } + + @Override + public ApiResponse> getFaceIdsBySourceIds(List sourceIds) { + if (sourceIds == null || sourceIds.isEmpty()) { + return ApiResponse.success(Collections.emptyMap()); + } + List relations = sourceMapper.listFaceIdsBySourceIds(sourceIds); + Map faceIdMap = relations.stream() + .collect(Collectors.toMap( + MemberSourceEntity::getSourceId, + MemberSourceEntity::getFaceId, + (existing, replacement) -> existing, + LinkedHashMap::new + )); + // 对于没有关联的sourceId,填充null + Map result = new LinkedHashMap<>(); + for (Long sourceId : sourceIds) { + result.put(sourceId, faceIdMap.get(sourceId)); + } + return ApiResponse.success(result); + } + + @Override + public ApiResponse> pageByFaceId(SourceReqQuery sourceReqQuery) { + PageHelper.startPage(sourceReqQuery.getPageNum(), sourceReqQuery.getPageSize()); + List list = sourceMapper.pageByFaceId(sourceReqQuery); + PageInfo pageInfo = new PageInfo<>(list); + return ApiResponse.success(pageInfo); + } } diff --git a/src/main/resources/mapper/SourceMapper.xml b/src/main/resources/mapper/SourceMapper.xml index eba7ffd6..ecf2a2f9 100644 --- a/src/main/resources/mapper/SourceMapper.xml +++ b/src/main/resources/mapper/SourceMapper.xml @@ -523,4 +523,24 @@ ORDER BY s.create_time DESC + +