package com.ycwl.basic.mapper; 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.entity.SourceWatermarkEntity; import com.ycwl.basic.model.pc.source.req.SourceReqQuery; import com.ycwl.basic.model.pc.source.resp.SourceRespVO; import org.apache.ibatis.annotations.Mapper; import java.util.Date; import java.util.List; /** * @Author:longbinbin * @Date:2024/12/2 11:21 * 视频源 */ @Mapper public interface SourceMapper { List list(SourceReqQuery sourceReqQuery); SourceRespVO getById(Long id); SourceRespVO userGetById(Long id, Long userId); List listBySampleIds(List sourceIds); int add(SourceEntity source); int deleteById(Long id); int update(SourceEntity source); /** * @param sourceReqQuery * @return */ List listGroupByType(SourceReqQuery sourceReqQuery); /** * 用户素材数量 * * @param userId * @return */ int countByMemberId(String userId); List listVideoBySampleIds(List sampleId); SourceEntity findBySampleId(Long faceSampleId); int addRelation(MemberSourceEntity source); List listUser(SourceReqQuery sourceReqQuery); Integer countUser(SourceReqQuery sourceReqQuery); SourceRespVO listUserOne(Long userId, Long sourceId); int addRelations(List list); List filterExistingRelations(List list); boolean sourceExists(Long sourceId); List filterValidSourceRelations(List list); int updateRelation(MemberSourceEntity memberSourceEntity); int freeRelations(List ids, int type); List queryByRelation(SourceReqQuery sourceReqQuery); /** * 按 faceId 和 type 分组查询源素材,每组返回最新的一条记录 * @param sourceReqQuery 查询参数 * @return 分组后的素材列表 */ List queryGroupedByFaceAndType(SourceReqQuery sourceReqQuery); SourceEntity querySameVideo(Long faceSampleId, Long deviceId); int hasRelationTo(Long memberId, Long sourceId, int type); List listVideoByScenicFaceRelation(Long scenicId, Long faceId); List listVideoByFaceRelation(Long faceId); List listImageByFaceRelation(Long faceId); List listAiCamImageByFaceRelation(Long faceId); List listByFaceRelation(Long faceId, Integer type); SourceEntity getEntity(Long id); int deleteNotRelateSource(int type, Date endDate); int deleteNotBuyRelations(Long scenicId, Date endDate); int deleteNotBuyFaceRelation(Long userId, Long faceId); List listSourceWatermark(List sourceIds, Long faceId, String watermarkType); void addSourceWatermark(Long sourceId, Long faceId, String type, String url); int deleteUselessSource(); int updateMemberIdByFaceId(Long faceId, Long memberId); /** * 根据faceId查询type=2的source列表 * @param faceId 人脸ID * @return type=2的source列表 */ List listImageSourcesByFaceId(Long faceId); /** * 从ZT-Source消息添加素材 * @param source 素材实体 * @return 影响行数 */ int addFromZTSource(SourceEntity source); SourceEntity getBySampleIdAndType(Long faceSampleId, Integer type); /** * 统计faceId关联的不同设备数量 * @param faceId 人脸ID * @return 设备数量 */ Integer countDistinctDevicesByFaceId(Long faceId); /** * 根据faceId和设备索引获取source * @param faceId 人脸ID * @param deviceIndex 设备索引(从0开始) * @param type 素材类型(1-视频,2-图片) * @param sortStrategy 排序策略 * @return source实体 */ SourceEntity getSourceByFaceAndDeviceIndex(Long faceId, Integer deviceIndex, Integer type, String sortStrategy); /** * 获取faceId关联的所有设备ID列表 * @param faceId 人脸ID * @return 设备ID列表 */ List getDeviceIdsByFaceId(Long faceId); /** * 根据faceId和设备ID获取source * @param faceId 人脸ID * @param deviceId 设备ID * @param type 素材类型(1-视频,2-图片) * @param sortStrategy 排序策略 * @return source实体 */ SourceEntity getSourceByFaceAndDeviceId(Long faceId, Long deviceId, Integer type, String sortStrategy); /** * 根据faceSampleId列表和type查询source列表 * @param faceSampleIds faceSampleId列表 * @param type 素材类型 * @return source实体列表 */ List listByFaceSampleIdsAndType(List faceSampleIds, Integer type); /** * 删除指定faceId和type的member_source关联记录 * @param faceId 人脸ID * @param type 素材类型 * @return 删除的记录数 */ int deleteRelationsByFaceIdAndType(Long faceId, Integer type); }