This commit is contained in:
张良(004796)
2024-01-26 11:42:11 +08:00
parent dd58ff8873
commit 01b44c98ec
10 changed files with 145 additions and 25 deletions

View File

@@ -8,6 +8,8 @@ import com.ruoyi.cai.dto.app.vo.user.MemberInfoVo;
import com.ruoyi.cai.enums.UserMemberTypeEnum;
import com.ruoyi.common.core.domain.PageQuery;
import java.util.List;
/**
* 会员管理Service接口
*
@@ -27,7 +29,9 @@ public interface UserMemberService extends IService<UserMember> {
* @param userId
* @return
*/
UserMemberTypeEnum checkUserMember(Long userId);
UserMemberTypeEnum checkUserIsMember(Long userId);
List<Long> checkUserIsMember(List<Long> userId);
void relieveMember(Long id);

View File

@@ -7,17 +7,25 @@ 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.vo.user.UserBaseVo;
import com.ruoyi.cai.dto.app.vo.user.UserStarOrVisitorList;
import com.ruoyi.cai.mapper.UserFollowMapper;
import com.ruoyi.cai.service.UserCountService;
import com.ruoyi.cai.service.UserFollowService;
import com.ruoyi.cai.service.UserMemberService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 关注表Service业务层处理
*
@@ -30,6 +38,8 @@ public class UserFollowServiceImpl extends ServiceImpl<UserFollowMapper, UserFol
@Autowired
private UserCountService userCountService;
@Autowired
private UserMemberService userMemberService;
@Override
public Long getFansNumByUserId(Long userId){
@@ -71,7 +81,68 @@ public class UserFollowServiceImpl extends ServiceImpl<UserFollowMapper, UserFol
@Override
public Page<UserStarOrVisitorList> pageApp(PageQuery pageQuery, StarQuery query) {
if(query.getType() == null){
throw new ServiceException("参数异常");
}
if(query.getType() != 1 && query.getType() != 2){
throw new ServiceException("参数异常");
}
query.setUserId(LoginHelper.getUserId());
return baseMapper.pageApp(pageQuery.build(),query);
// 类型 1=查询我的关注 2=查询我的粉丝
if(query.getType() == 1){
return this.pageMyStarApp(pageQuery,query);
}else{
return this.pageMyFansApp(pageQuery,query);
}
}
/**
* 查询我的关注
*/
private Page<UserStarOrVisitorList> pageMyStarApp(PageQuery pageQuery, StarQuery query){
Page<UserStarOrVisitorList> page = baseMapper.pageMyStarApp(pageQuery.build(), query);
List<UserStarOrVisitorList> records = page.getRecords();
if(!CollectionUtils.isEmpty(records)){
List<Long> userIds = records.stream().map(UserBaseVo::getUserId).collect(Collectors.toList());
// 我关注的人ID
if(!CollectionUtils.isEmpty(userIds)){
List<UserFollow> list = this.list(Wrappers.lambdaQuery(UserFollow.class)
.select(UserFollow::getUserId,UserFollow::getFollowUser)
.in(UserFollow::getUserId, userIds)
.eq(UserFollow::getFollowUser, query.getUserId()));
Set<Long> callBackUserIds = list.stream().map(UserFollow::getUserId).collect(Collectors.toSet());
List<Long> vipUserIds = userMemberService.checkUserIsMember(userIds);
for (UserStarOrVisitorList record : records) {
record.setCallBackStar(callBackUserIds.contains(record.getUserId())?1:0);
record.setIsVip(vipUserIds.contains(record.getUserId())?1:0);
}
}
}
return page;
}
/**
* 查询我的粉丝
*/
private Page<UserStarOrVisitorList> pageMyFansApp(PageQuery pageQuery, StarQuery query){
Page<UserStarOrVisitorList> page = baseMapper.pageMyFansApp(pageQuery.build(), query);
List<UserStarOrVisitorList> records = page.getRecords();
if(!CollectionUtils.isEmpty(records)){
// 我的粉丝ID
List<Long> userIds = records.stream().map(UserBaseVo::getUserId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(userIds)){
List<UserFollow> list = this.list(Wrappers.lambdaQuery(UserFollow.class)
.select(UserFollow::getUserId,UserFollow::getFollowUser)
.eq(UserFollow::getUserId, query.getUserId())
.in(UserFollow::getFollowUser, userIds));
Set<Long> callBackUserIds = list.stream().map(UserFollow::getFollowUser).collect(Collectors.toSet());
List<Long> vipUserIds = userMemberService.checkUserIsMember(userIds);
for (UserStarOrVisitorList record : records) {
record.setCallBackStar(callBackUserIds.contains(record.getUserId())?1:0);
record.setIsVip(vipUserIds.contains(record.getUserId())?1:0);
}
}
}
return page;
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -23,7 +24,9 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* 会员管理Service业务层处理
@@ -60,7 +63,7 @@ public class UserMemberServiceImpl extends ServiceImpl<UserMemberMapper, UserMem
}
@Override
public UserMemberTypeEnum checkUserMember(Long userId){
public UserMemberTypeEnum checkUserIsMember(Long userId){
List<UserMember> list = this.list(Wrappers.lambdaQuery(UserMember.class)
.eq(UserMember::getUserId, userId)
.eq(UserMember::getMemberStatus, MemberStatusEnum.NORMAL.getCode())
@@ -76,6 +79,19 @@ public class UserMemberServiceImpl extends ServiceImpl<UserMemberMapper, UserMem
return null;
}
@Override
public List<Long> checkUserIsMember(List<Long> userId) {
if(CollectionUtil.isEmpty(userId)){
return Collections.emptyList();
}
List<UserMember> list = this.list(Wrappers.lambdaQuery(UserMember.class)
.select(UserMember::getUserId)
.in(UserMember::getUserId, userId)
.eq(UserMember::getMemberStatus, MemberStatusEnum.NORMAL.getCode())
.le(UserMember::getExpireDate, LocalDateTime.now()));
return list.stream().map(UserMember::getUserId).collect(Collectors.toList());
}
@Override
public void relieveMember(Long id) {
this.update(Wrappers.lambdaUpdate(UserMember.class)