查询时需要排除不喜欢列表用户



API




/**

* 查询列表,查询时需要排除不喜欢列表用户

*

* @param userId

* @param count

* @return

*/

List queryCardList(Long userId, Integer count);



==========================================================




API IMPL



@Override

public List queryCardList(Long userId, Integer count) {

//设置分页以及排序,按照得分倒序排序

PageRequest pageRequest = PageRequest.of(0, count, Sort.by(Sort.Order.desc("score")));

//排除已喜欢或不喜欢的用户

List userIds = new ArrayList<>();

//查询喜欢列表

userIds.addAll(this.userLikeApi.queryLikeList(userId));

//查询不喜欢列表

userIds.addAll(this.userLikeApi.queryNotLikeList(userId));

//构造查询条件

Criteria criteria = Criteria.where("toUserId").is(userId);

if(CollUtil.isNotEmpty(userIds)){

//加入到查询条件中,排除这些用户

criteria.andOperator(Criteria.where("userId").nin(userIds));

}

Query query = Query.query(criteria).with(pageRequest);

List recommendUserList = this.mongoTemplate.find(query, RecommendUser.class);

return recommendUserList;

}



==================================================



Test



@Test

public void testQueryCardList(){

this.recommendUserApi.queryCardList(2L, 20)

.forEach(recommendUser -> System.out.println(recommendUser));

}

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章