动态列表新增排除黑名单用户

This commit is contained in:
tianfeng 2026-02-04 11:58:34 +08:00
parent 6110d4a934
commit 2281949767
6 changed files with 59 additions and 3 deletions

View File

@ -59,17 +59,25 @@ public class DynamicFollowQryExe {
private final DynamicTimelineService dynamicTimelineService;
private final UserProfileAppConvertor userProfileAppConvertor;
private final UserSubscriptionService userSubscriptionService;
private final com.red.circle.other.infra.database.rds.service.user.user.ShieldBlackService shieldBlackService;
public PageResult<DynamicListCO> execute(DynamicLimitCmd cmd) {
// 获取关注人列表
// 获取黑名单用户列表
List<Long> blackUserIds = shieldBlackService.listBlackUserIds(cmd.getReqUserId());
Set<Long> blackUserSet = CollectionUtils.isEmpty(blackUserIds) ? Sets.newHashSet() : Sets.newHashSet(blackUserIds);
// 获取关注人列表过滤黑名单用户
List<UserSubscription> userSubscriptions = userSubscriptionService
.listByUserId(cmd.requiredReqUserId(), null, null);
if (CollectionUtils.isEmpty(userSubscriptions)) {
return PageResult.newPageResult(0);
}
List<Long> list = userSubscriptions.stream().map(UserSubscription::getSubscribeUserId).toList();
List<Long> list = userSubscriptions.stream()
.map(UserSubscription::getSubscribeUserId)
.filter(userId -> !blackUserSet.contains(userId))
.toList();
PageResult<DynamicTimeline> timelines = dynamicTimelineService
.pageByTimeDesc(list, userRegionGateway.getRegionId(cmd.getReqUserId()),
cmd.getPageReq(), Boolean.TRUE);

View File

@ -53,11 +53,13 @@ public class DynamicLatestQryExe {
private final DynamicCommentService dynamicCommentService;
private final UserSubscriptionService userSubscriptionService;
private final UserProfileAppConvertor userProfileAppConvertor;
private final com.red.circle.other.infra.database.rds.service.user.user.ShieldBlackService shieldBlackService;
public PageResult<DynamicListCO> execute(DynamicLimitCmd cmd) {
List<Long> blackUserIds = shieldBlackService.listBlackUserIds(cmd.getReqUserId());
PageResult<DynamicContent> dynamics = dynamicContentService
.pageByTimeDesc(cmd.getPageReq(), null, cmd.requireReqSysOrigin());
.pageByTimeDesc(cmd.getPageReq(), null, cmd.requireReqSysOrigin(), blackUserIds);
if (CollectionUtils.isEmpty(dynamics.getRecords())) {
return PageResult.newPageResult(0);

View File

@ -36,6 +36,16 @@ public interface DynamicContentService extends BaseService<DynamicContent> {
*/
PageResult<DynamicContent> pageByTimeDesc(PageQuery pageQuery, String region, String sysOrigin);
/**
* 获得分页数据排除黑名单用户
*
* @param pageQuery 分页参数
* @param region 地区
* @param sysOrigin 系统来源
* @param blackUserIds 黑名单用户ID列表
*/
PageResult<DynamicContent> pageByTimeDesc(PageQuery pageQuery, String region, String sysOrigin, List<Long> blackUserIds);
/**
* 获得分页数据
*

View File

@ -67,6 +67,18 @@ public class DynamicContentServiceImpl extends
.page(pageQuery);
}
@Override
public PageResult<DynamicContent> pageByTimeDesc(PageQuery pageQuery, String region, String sysOrigin, List<Long> blackUserIds) {
return query()
.eq(DynamicContent::getDel, Boolean.FALSE)
.eq(DynamicContent::getSysOrigin, sysOrigin)
.eq(region != null, DynamicContent::getRegion, region)
.notIn(CollectionUtils.isNotEmpty(blackUserIds), DynamicContent::getCreateUser, blackUserIds)
.orderByDesc(DynamicContent::getCreateTime)
.page(pageQuery);
}
@Override
public PageResult<DynamicContent> pageByTimeDesc(Long userId, PageQuery pageQuery) {

View File

@ -70,4 +70,12 @@ public interface ShieldBlackService extends BaseService<ShieldBlack> {
*/
List<ShieldBlack> pageUserBlacklist(Long userId, Long searchUserId, Long lastId);
/**
* 获取用户所有黑名单用户ID列表.
*
* @param userId 用户id
* @return 黑名单用户ID列表
*/
List<Long> listBlackUserIds(Long userId);
}

View File

@ -110,5 +110,21 @@ public class ShieldBlackServiceImpl extends BaseServiceImpl<ShieldBlackDAO, Shie
.list()).orElse(CollectionUtils.newArrayList());
}
@Override
public List<Long> listBlackUserIds(Long userId) {
if (Objects.isNull(userId)) {
return CollectionUtils.newArrayList();
}
return Optional.ofNullable(query()
.select(ShieldBlack::getShieldUserId)
.eq(ShieldBlack::getUserId, userId)
.list())
.orElse(CollectionUtils.newArrayList())
.stream()
.map(ShieldBlack::getShieldUserId)
.filter(Objects::nonNull)
.toList();
}
}