This commit is contained in:
dzc committed 2025-12-02 15:31:48 +08:00
1 parent 0960890308
commit 6985ee98e6
11 files changed
+151 -29

No files matched your search

@@ -16,6 +16,7 @@ import java.util.List;
public enum MemberRecentViewRecordEnum {
CLASSIFY("1", "分类查看"),
RECENT("2", "朋友圈查看"),
USER("3", "用户查看"),
;
private final String type;
private final String description;
@@ -75,7 +75,6 @@ public class OperationRespVO {
@ExcelProperty("创建时间")
private LocalDateTime createTime;
private MemberVo member;
/**
@@ -1,10 +1,11 @@
package cn.iocoder.yudao.module.member.controller.admin.viewrecord.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -42,4 +43,27 @@ public class ViewRecordPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
private ViewRecordPageReqVO.MemberVo member;
/**
* 用户相关
*/
@Data
public static class MemberVo {
@Schema(description = "用户编号")
private Long memberId;
@Schema(description = "用户头像")
private String memberAvatar;
@Schema(description = "用户昵称")
private String memberNickname;
@Schema(description = "用户年龄")
private String memberAge;
@Schema(description = "用户职业")
private String memberOcc;
}
}
@@ -14,8 +14,8 @@ public class CreateManAuthReqVo {
@Schema(description = "会员编号")
private Long memberId;
@Schema(description = "认证图片或视频")
@NotNull(message = "认证图片或视频不能为空")
@Schema(description = "认证图片")
@NotNull(message = "认证图片不能为空")
private String authPic;
@Schema(description = "metaInfoJson")
@@ -7,11 +7,13 @@ import cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationTotalGroupRecentRespVO;
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentPageResVo;
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentSaveReqVO;
import cn.iocoder.yudao.module.member.controller.admin.viewrecord.vo.ViewRecordPageReqVO;
import cn.iocoder.yudao.module.member.controller.app.recent.vo.*;
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserInfoRespVO;
import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.dal.dataobject.viewrecord.ViewRecordDO;
import cn.iocoder.yudao.module.member.enums.MemberRecentSceneEnum;
import cn.iocoder.yudao.module.member.service.recent.RecentService;
import cn.iocoder.yudao.module.member.service.recent.ViewRecordService;
@@ -35,7 +37,7 @@ public class AppRecentController {
@Resource
private RecentService recentService;
@Resource
private ViewRecordService viewRecord;
private ViewRecordService viewRecordService;
@PostMapping("/quick-page")
@Operation(summary = "快速查询朋友圈")
@@ -76,7 +78,7 @@ public class AppRecentController {
@Operation(summary = "添加用户预览记录")
public CommonResult<Long> createViewRecord(@Valid @RequestBody AppRecentViewRecordReqVo dto) {
dto.setMemberId(getLoginUserId());
return success(viewRecord.createViewRecord(dto));
return success(viewRecordService.createViewRecord(dto));
}
@PostMapping("/like/it-page")
@@ -93,6 +95,20 @@ public class AppRecentController {
return success(recentService.likeMePage(dto));
}
@PostMapping("/look/it-page")
@Operation(summary = "我看过-分页查询")
public CommonResult<PageResult<ViewRecordPageReqVO>> lookItMePage(@Valid @RequestBody AppRecentLikeReqVo dto) {
dto.setMemberId(getLoginUserId());
return success(viewRecordService.lookItMePage(dto));
}
@PostMapping("/look/me-page")
@Operation(summary = "看过我-分页查询")
public CommonResult<PageResult<ViewRecordPageReqVO>> lookMePage(@Valid @RequestBody AppRecentLikeReqVo dto) {
dto.setMemberId(getLoginUserId());
return success(viewRecordService.lookMePage(dto));
}
@PostMapping("/dynamic-page")
@Operation(summary = "我的动态")
public CommonResult<PageResult<RecentPageResVo>> dynamicPage(@Valid @RequestBody AppRecentLikeReqVo dto) {
@@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.member.controller.app.recent.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class AppRecentLookReqVo extends PageParam {
@Schema(description = "操作用户标号")
private Long memberId;
}
@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.member.dal.dataobject.viewrecord;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@@ -1,20 +1,14 @@
package cn.iocoder.yudao.module.member.service.recent;
import java.util.*;
import java.util.concurrent.ExecutionException;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.*;
import cn.iocoder.yudao.module.member.controller.app.recent.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.recent.RecentDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
/**
* 朋友圈 Service 接口
*
* @author 聊天交友
*/
public interface RecentService {
@@ -97,5 +91,4 @@ public interface RecentService {
* 朋友圈我喜欢的、喜欢我的等总数统计
*/
OperationTotalGroupRecentRespVO total(Long userId);
}
@@ -73,10 +73,8 @@ public class RecentServiceImpl implements RecentService {
private MemberUserService memberUserService;
@Resource
private LocationService locationService;
@Resource
private ThirdAuthService thirdAuthService;
private MemberUserMapper memberUserMapper;
/**
* 创建朋友圈
@@ -166,7 +164,9 @@ public class RecentServiceImpl implements RecentService {
*/
@Override
public Long operate(AppRecentOperateReqVo dto) {
validateRecentExists(dto.getMemberRecentId());
if (ObjectUtil.isNotEmpty(dto.getMemberRecentId())) {
validateRecentExists(dto.getMemberRecentId());
}
OperationDO operationDO = operationMapper.selectOne(new LambdaQueryWrapperX<OperationDO>()
.eq(OperationDO::getMemberId, dto.getMemberId())
.eq(OperationDO::getMemberRecentId, dto.getMemberRecentId())
@@ -340,17 +340,9 @@ public class RecentServiceImpl implements RecentService {
);
List<OperationDO> list = pageList.getList();
if (ObjectUtil.isEmpty(list)) return resultPageList;
List<Long> operatorMemberIds = list.stream().map(OperationDO::getOperatorMemberId).collect(Collectors.toList());
// 查询用户
List<MemberUserDO> memberList = memberUserService.getUserList(operatorMemberIds);
Map<Long, MemberUserDO> memberMap = IterUtil.toMap(memberList, MemberUserDO::getId);
List<OperationRespVO> resultList = BeanUtils.toBean(list, OperationRespVO.class);
// 为OperationRespVO设置Member信息
convertOperationRespVOSetupMember(resultList);
resultPageList.setList(resultList);
resultPageList.setTotal(pageList.getTotal());
return resultPageList;
@@ -372,10 +364,8 @@ public class RecentServiceImpl implements RecentService {
List<OperationDO> list = pageList.getList();
if (ObjectUtil.isEmpty(list)) return new PageResult<>();
List<OperationRespVO> resultList = BeanUtils.toBean(list, OperationRespVO.class);
// 为OperationRespVO设置Member信息
convertOperationRespVOSetupMember(resultList);
return new PageResult<>(resultList, pageList.getTotal());
}
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.service.recent;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO;
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentPageResVo;
import cn.iocoder.yudao.module.member.controller.admin.viewrecord.vo.*;
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentLikeReqVo;
@@ -38,4 +39,14 @@ public interface ViewRecordService {
* 获得用户查看记录分页
*/
PageResult<ViewRecordDO> getViewRecordPage(ViewRecordPageReqVO pageReqVO);
/**
* 我看过-分页查询
*/
PageResult<ViewRecordPageReqVO> lookItMePage(@Valid AppRecentLikeReqVo dto);
/**
* 看过我-分页查询
*/
PageResult<ViewRecordPageReqVO> lookMePage(@Valid AppRecentLikeReqVo dto);
}
@@ -1,11 +1,14 @@
package cn.iocoder.yudao.module.member.service.recent;
import cn.hutool.core.collection.IterUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentPageResVo;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentLikeReqVo;
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentViewRecordReqVo;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.enums.MemberErrorCode;
import cn.iocoder.yudao.module.member.enums.MemberRecentViewRecordEnum;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -20,12 +23,14 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.dal.mysql.viewrecord.ViewRecordMapper;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/**
* 用户查看记录 Service 实现类
*
* @author 聊天交友
*/
@Service
@Validated
@@ -33,6 +38,8 @@ public class ViewRecordServiceImpl implements ViewRecordService {
@Resource
private ViewRecordMapper viewRecordMapper;
@Resource
private MemberUserService memberUserService;
/**
* 创建用户查看记录
@@ -88,6 +95,73 @@ public class ViewRecordServiceImpl implements ViewRecordService {
return viewRecordMapper.selectPage(pageReqVO);
}
/**
* 我看过-分页查询
*/
@Override
public PageResult<ViewRecordPageReqVO> lookItMePage(AppRecentLikeReqVo dto) {
PageResult<ViewRecordPageReqVO> resultPageList = new PageResult<>();
PageResult<ViewRecordDO> pageList = viewRecordMapper.selectPage(dto, new LambdaQueryWrapperX<ViewRecordDO>()
.eq(ViewRecordDO::getMemberId, dto.getMemberId())
.eq(ViewRecordDO::getBizType, MemberRecentViewRecordEnum.USER.getType())
.ne(ViewRecordDO::getBizId, dto.getMemberId())
.orderByDesc(ViewRecordDO::getCreateTime)
);
List<ViewRecordDO> list = pageList.getList();
if (ObjectUtil.isEmpty(list)) return resultPageList;
List<ViewRecordPageReqVO> resultList = BeanUtils.toBean(list, ViewRecordPageReqVO.class);
// 为ViewRecordPageReqVO设置Member信息
convertViewRecordPageReqVOSetupMember(resultList);
resultPageList.setList(resultList);
resultPageList.setTotal(pageList.getTotal());
return resultPageList;
}
/**
* 看过我-分页查询
*/
@Override
public PageResult<ViewRecordPageReqVO> lookMePage(AppRecentLikeReqVo dto) {
PageResult<ViewRecordPageReqVO> resultPageList = new PageResult<>();
PageResult<ViewRecordDO> pageList = viewRecordMapper.selectPage(dto, new LambdaQueryWrapperX<ViewRecordDO>()
.ne(ViewRecordDO::getMemberId, dto.getMemberId())
.eq(ViewRecordDO::getBizType, MemberRecentViewRecordEnum.USER.getType())
.eq(ViewRecordDO::getBizId, dto.getMemberId())
.orderByDesc(ViewRecordDO::getCreateTime)
);
List<ViewRecordDO> list = pageList.getList();
if (ObjectUtil.isEmpty(list)) return resultPageList;
List<ViewRecordPageReqVO> resultList = BeanUtils.toBean(list, ViewRecordPageReqVO.class);
// 为ViewRecordPageReqVO设置Member信息
convertViewRecordPageReqVOSetupMember(resultList);
resultPageList.setList(resultList);
resultPageList.setTotal(pageList.getTotal());
return resultPageList;
}
// 为ViewRecordPageReqVO设置Member信息
private void convertViewRecordPageReqVOSetupMember(List<ViewRecordPageReqVO> list) {
if (ObjectUtil.isEmpty(list)) return;
List<Long> memberIds = list.stream().map(ViewRecordPageReqVO::getMemberId).collect(Collectors.toList());
List<MemberUserDO> memberList = memberUserService.getUserList(memberIds);
Map<Long, MemberUserDO> memberMap = IterUtil.toMap(memberList, MemberUserDO::getId);
for (ViewRecordPageReqVO entity : list) {
// 用户相关
if (ObjectUtil.isNotEmpty(memberMap)) {
MemberUserDO member = memberMap.get(entity.getMemberId());
if (ObjectUtil.isNotEmpty(member)) {
ViewRecordPageReqVO.MemberVo memberVO = new ViewRecordPageReqVO.MemberVo();
memberVO.setMemberId(member.getId());
memberVO.setMemberAvatar(member.getAvatar());
memberVO.setMemberNickname(member.getNickname());
memberVO.setMemberAge(member.getAge());
memberVO.setMemberOcc(member.getOcc());
entity.setMember(memberVO);
}
}
}
}
private void validateViewRecordExists(Long id) {
if (viewRecordMapper.selectById(id) == null) {
throw exception(MemberErrorCode.VIEW_RECORD_NOT_EXISTS);