This commit is contained in:
张良(004796)
2024-01-31 23:20:20 +08:00
parent 3c6f645b34
commit e700be5eff
4 changed files with 60 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
package com.ruoyi.cai.dto.app.query.star;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
@Schema(description = "批量关注用户入参模型")
public class BatchStarReq {
@Schema(description = "目标用户ID集合")
private List<Long> toUserIds;
}

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.UserFollow;
import com.ruoyi.cai.dto.app.query.StarQuery;
import com.ruoyi.cai.dto.app.query.StarOrVisitorReq;
import com.ruoyi.cai.dto.app.query.star.BatchStarReq;
import com.ruoyi.cai.dto.app.vo.user.UserStarOrVisitorList;
import com.ruoyi.common.core.domain.PageQuery;
@@ -20,6 +21,8 @@ public interface UserFollowService extends IService<UserFollow> {
boolean checkStar(Long userId, Long followUserId);
void batchStar(BatchStarReq batchStarReq);
boolean star(StarOrVisitorReq starOrVisitorReq);
boolean unStar(StarOrVisitorReq starOrVisitorReq);

View File

@@ -8,6 +8,7 @@ import com.ruoyi.cai.domain.UserCount;
import com.ruoyi.cai.domain.UserFollow;
import com.ruoyi.cai.dto.app.query.StarQuery;
import com.ruoyi.cai.dto.app.query.StarOrVisitorReq;
import com.ruoyi.cai.dto.app.query.star.BatchStarReq;
import com.ruoyi.cai.dto.app.vo.user.UserBaseVo;
import com.ruoyi.cai.dto.app.vo.user.UserStarOrVisitorList;
import com.ruoyi.cai.mapper.UserFollowMapper;
@@ -26,6 +27,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -62,6 +64,39 @@ public class UserFollowServiceImpl extends ServiceImpl<UserFollowMapper, UserFol
.eq(UserFollow::getUserId, userId));
}
@Override
public void batchStar(BatchStarReq batchStarReq) {
if(CollectionUtils.isEmpty(batchStarReq.getToUserIds())){
return;
}
int min = Math.min(20, batchStarReq.getToUserIds().size());
List<Long> batchStarUserIds = batchStarReq.getToUserIds().subList(0, min);
Long fromUserId = LoginHelper.getUserId();
User user = userService.getById(fromUserId);
if(user == null){
throw new ServiceException("您的账号已被注销");
}
List<User> starUserList = userService.listByIds(batchStarUserIds);
List<Long> realStarUsers = new ArrayList<>();
for (User starUser : starUserList) {
if(starUser.getId().equals(fromUserId)){
continue;
}
realStarUsers.add(starUser.getId());
}
this.remove(Wrappers.lambdaQuery(UserFollow.class)
.eq(UserFollow::getUserId,fromUserId)
.in(UserFollow::getFollowUser, realStarUsers));
for (Long realStarUser : realStarUsers) {
UserFollow userFollow = new UserFollow();
userFollow.setUserId(fromUserId);
userFollow.setFollowUser(realStarUser);
this.save(userFollow);
userCountService.star(fromUserId, realStarUser);
yunxinHttpService.followedSendMessage(realStarUser, user, LocalDateTime.now());
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean star(StarOrVisitorReq starOrVisitorReq) {