You've already forked FrameTour-BE
feat(source): 新增根据人脸和设备ID获取素材的功能
- 在SourceMapper接口中新增getSourceByFaceAndDeviceId方法 - 支持通过faceId、deviceId、type和排序策略查询特定素材 - 在XML映射文件中实现对应的SQL查询逻辑 - 支持多种排序策略:最新、最早、评分降序、评分升序、随机和已购买优先 - 查询结果限制为一条记录
This commit is contained in:
@@ -131,4 +131,14 @@ public interface SourceMapper {
|
|||||||
* @return 设备ID列表
|
* @return 设备ID列表
|
||||||
*/
|
*/
|
||||||
List<Long> getDeviceIdsByFaceId(Long faceId);
|
List<Long> 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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -410,4 +410,37 @@
|
|||||||
WHERE ms.face_id = #{faceId}
|
WHERE ms.face_id = #{faceId}
|
||||||
ORDER BY s.device_id ASC
|
ORDER BY s.device_id ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getSourceByFaceAndDeviceId" resultType="com.ycwl.basic.model.pc.source.entity.SourceEntity">
|
||||||
|
SELECT s.*
|
||||||
|
FROM source s
|
||||||
|
INNER JOIN member_source ms ON s.id = ms.source_id
|
||||||
|
WHERE ms.face_id = #{faceId}
|
||||||
|
AND s.device_id = #{deviceId}
|
||||||
|
AND s.type = #{type}
|
||||||
|
<choose>
|
||||||
|
<when test='sortStrategy == "LATEST"'>
|
||||||
|
ORDER BY s.create_time DESC
|
||||||
|
</when>
|
||||||
|
<when test='sortStrategy == "EARLIEST"'>
|
||||||
|
ORDER BY s.create_time ASC
|
||||||
|
</when>
|
||||||
|
<when test='sortStrategy == "SCORE_DESC"'>
|
||||||
|
ORDER BY IFNULL(s.score, 0) DESC, s.create_time DESC
|
||||||
|
</when>
|
||||||
|
<when test='sortStrategy == "SCORE_ASC"'>
|
||||||
|
ORDER BY IFNULL(s.score, 0) ASC, s.create_time ASC
|
||||||
|
</when>
|
||||||
|
<when test='sortStrategy == "RANDOM"'>
|
||||||
|
ORDER BY RAND()
|
||||||
|
</when>
|
||||||
|
<when test='sortStrategy == "PURCHASED_FIRST"'>
|
||||||
|
ORDER BY ms.is_buy DESC, s.create_time DESC
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
ORDER BY s.create_time DESC
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
LIMIT 1
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user