123
This commit is contained in:
@@ -28,17 +28,17 @@ public class UserStartAppController {
|
||||
@PostMapping("/star")
|
||||
@Operation(summary = "关注用户")
|
||||
@Log(title = "关注用户", businessType = BusinessType.OTHER, isSaveDb = true)
|
||||
public R<Boolean> star(@RequestBody StarOrVisitorReq starOrVisitorReq){
|
||||
boolean bool = userFollowService.star(starOrVisitorReq);
|
||||
return R.ok(bool);
|
||||
public R<Void> star(@RequestBody StarOrVisitorReq starOrVisitorReq){
|
||||
userFollowService.star(starOrVisitorReq);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@PostMapping("/unstar")
|
||||
@Operation(summary = "取消关注用户")
|
||||
@Log(title = "取消关注用户", businessType = BusinessType.OTHER, isSaveDb = true)
|
||||
public R<Boolean> unStar(@RequestBody StarOrVisitorReq starOrVisitorReq){
|
||||
boolean bool = userFollowService.unStar(starOrVisitorReq);
|
||||
return R.ok(bool);
|
||||
public R<Void> unStar(@RequestBody StarOrVisitorReq starOrVisitorReq){
|
||||
userFollowService.unStar(starOrVisitorReq);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
|
||||
@@ -22,16 +22,17 @@ public class UserFollow implements Serializable {
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关注人ID
|
||||
* 关注人ID (关注人 关注了 被关注人)
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 被关注人ID
|
||||
* 被关注人ID (关注人 关注了 被关注人)
|
||||
*/
|
||||
private Long followUser;
|
||||
/**
|
||||
* 状态 0 未查看 1 已查看
|
||||
*/
|
||||
@Deprecated
|
||||
private Integer isWatch;
|
||||
/**
|
||||
* 备注
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ruoyi.cai.dto.app.vo.user;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
@@ -7,7 +8,12 @@ import java.time.LocalDateTime;
|
||||
@Data
|
||||
public class UserStarOrVisitorList extends UserBaseVo {
|
||||
|
||||
@Schema(description = "发生时间")
|
||||
private LocalDateTime happenTime;
|
||||
|
||||
private Integer isWatch;
|
||||
@Schema(description = "是否回关 0-否 1-是")
|
||||
private Integer callBackStar = 0;
|
||||
@Schema(description = "是否为VIP")
|
||||
private Integer isVip = 0;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.ruoyi.cai.dto.commom.member;
|
||||
|
||||
import com.ruoyi.cai.enums.UserMemberTypeEnum;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CheckUserMemberDTO {
|
||||
private Long userId;
|
||||
private UserMemberTypeEnum memberType;
|
||||
}
|
||||
@@ -139,7 +139,7 @@ public class ImService {
|
||||
private UserBlacklistService userBlacklistService;
|
||||
|
||||
private Long getByImPrice(Long userId){
|
||||
UserMemberTypeEnum userMemberType = userMemberService.checkUserMember(userId);
|
||||
UserMemberTypeEnum userMemberType = userMemberService.checkUserIsMember(userId);
|
||||
if(userMemberType == null){
|
||||
return 10L;
|
||||
}
|
||||
|
||||
@@ -15,5 +15,14 @@ import org.apache.ibatis.annotations.Param;
|
||||
*/
|
||||
public interface UserFollowMapper extends BaseMapper<UserFollow> {
|
||||
|
||||
Page<UserStarOrVisitorList> pageApp(@Param("build") Page<Object> build, @Param("query") StarQuery query);
|
||||
/**
|
||||
* 查询我的关注 (我关注的人)
|
||||
*/
|
||||
Page<UserStarOrVisitorList> pageMyStarApp(@Param("build") Page<Object> build, @Param("query") StarQuery query);
|
||||
|
||||
|
||||
/**
|
||||
* 查询我的粉丝 (关注我的人)
|
||||
*/
|
||||
Page<UserStarOrVisitorList> pageMyFansApp(@Param("build") Page<Object> build, @Param("query") StarQuery query);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user