feat:预览bug

This commit is contained in:
dzc committed 2025-12-04 16:25:14 +08:00
1 parent 75be4d0f73
commit acfd9b7bc3
12 files changed
+189 -218

No files matched your search

@@ -1,12 +1,12 @@
package cn.iocoder.yudao.module.member.controller.admin.recent.vo; package cn.iocoder.yudao.module.member.controller.admin.recent.vo;
import cn.iocoder.yudao.module.member.service.user.BO.MemberExtBO;
import cn.iocoder.yudao.module.member.service.user.BO.MemberTagExtBO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*; import com.alibaba.excel.annotation.*;
@@ -75,29 +75,8 @@ public class OperationRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
private MemberVo member; private MemberExtBO member;
/** private List<MemberTagExtBO> memberTagList;
* 用户相关
*/
@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;
}
} }
@@ -1,10 +1,11 @@
package cn.iocoder.yudao.module.member.controller.admin.recent.vo; package cn.iocoder.yudao.module.member.controller.admin.recent.vo;
import cn.iocoder.yudao.module.member.dal.dataobject.recent.RecentDO; import cn.iocoder.yudao.module.member.dal.dataobject.recent.RecentDO;
import cn.iocoder.yudao.module.member.service.user.BO.MemberExtBO;
import cn.iocoder.yudao.module.member.service.user.BO.MemberTagExtBO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@Data @Data
@@ -14,10 +15,10 @@ public class RecentPageResVo extends RecentDO {
private Long id; private Long id;
@Schema(description = "用户相关") @Schema(description = "用户相关")
private MemberVo member; private MemberExtBO member;
@Schema(description = "操作统计相关") @Schema(description = "操作统计相关")
private OperationTotal operationTotal; private OperationTotalGroupRecentRespVO operationTotal;
@Schema(description = "操作相关状态") @Schema(description = "操作相关状态")
private OperationStatusVo userOperationStatus; private OperationStatusVo userOperationStatus;
@@ -26,7 +27,7 @@ public class RecentPageResVo extends RecentDO {
private OperationStatusVo recentOperationStatus; private OperationStatusVo recentOperationStatus;
@Schema(description = "用户tag") @Schema(description = "用户tag")
private List<MemberTag> memberTagList; private List<MemberTagExtBO> memberTagList;
@Schema(description = "用户相册") @Schema(description = "用户相册")
private List<RecentPageResVo.MemberPhoto> MemberPhotoList; private List<RecentPageResVo.MemberPhoto> MemberPhotoList;
@@ -34,73 +35,6 @@ public class RecentPageResVo extends RecentDO {
@Schema(description = "距离(km)") @Schema(description = "距离(km)")
private Double distance; private Double distance;
@Data
public static class MemberVo {
@Schema(description = "用户编号")
private Long memberId;
@Schema(description = "用户性别")
private Integer memberSex;
@Schema(description = "用户头像")
private String memberAvatar;
@Schema(description = "用户昵称")
private String memberNickname;
@Schema(description = "用户年龄")
private String memberAge;
@Schema(description = "用户职业")
private String memberOcc;
@Schema(description = "身高(cm)")
private Double memberHeight;
@Schema(description = "体重(kg)")
private String memberWeight;
@Schema(description = "城市")
private String memberCity;
@Schema(description = "经度")
private Double memberLat;
@Schema(description = "纬度")
private Double memberLng;
@Schema(description = "最近登录时间")
private LocalDateTime appRefreshDate;
}
@Data
public static class OperationTotal {
@Schema(description = "朋友圈点赞总数")
private Integer recentLikeTotal = 0;
@Schema(description = "朋友圈举报总数")
private Integer recentReportTotal = 0;
@Schema(description = "朋友圈屏蔽总数")
private Integer recentShieldTotal = 0;
@Schema(description = "用户点赞总数")
private Integer userLikeTotal = 0;
}
@Data
public static class MemberTag {
@Schema(description = "tag标题")
private String tagTitle;
@Schema(description = "tag业务类型")
private String tagBizType;
}
@Data @Data
public static class MemberPhoto { public static class MemberPhoto {
@@ -3,11 +3,13 @@ package cn.iocoder.yudao.module.member.controller.app.recent.vo;
import cn.iocoder.yudao.module.member.enums.MemberRecentViewRecordEnum; import cn.iocoder.yudao.module.member.enums.MemberRecentViewRecordEnum;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Data @Data
public class AppRecentViewRecordReqVo { public class AppRecentViewRecordReqVo {
@@ -10,8 +10,6 @@ import cn.iocoder.yudao.module.member.controller.admin.photo.vo.*;
/** /**
* 用户相册 Mapper * 用户相册 Mapper
*
* @author 聊天交友
*/ */
@Mapper @Mapper
public interface PhotoMapper extends BaseMapperX<PhotoDO> { public interface PhotoMapper extends BaseMapperX<PhotoDO> {
@@ -33,5 +31,4 @@ public interface PhotoMapper extends BaseMapperX<PhotoDO> {
.orderByAsc(PhotoDO::getId)); .orderByAsc(PhotoDO::getId));
} }
void getByUserId(RecentPageResVo.MemberVo member);
} }
@@ -13,7 +13,6 @@ import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentQuickPag
import cn.iocoder.yudao.module.member.dal.dataobject.location.LocationDO; import cn.iocoder.yudao.module.member.dal.dataobject.location.LocationDO;
import cn.iocoder.yudao.module.member.dal.dataobject.photo.PhotoDO; import cn.iocoder.yudao.module.member.dal.dataobject.photo.PhotoDO;
import cn.iocoder.yudao.module.member.dal.dataobject.recent.OperationDO; import cn.iocoder.yudao.module.member.dal.dataobject.recent.OperationDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.dal.mysql.recent.OperationMapper; import cn.iocoder.yudao.module.member.dal.mysql.recent.OperationMapper;
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberRecentTagMapper; import cn.iocoder.yudao.module.member.dal.mysql.user.MemberRecentTagMapper;
@@ -24,6 +23,9 @@ import cn.iocoder.yudao.module.member.enums.tag.MemberRecentTagEnum;
import cn.iocoder.yudao.module.member.service.location.LocationService; import cn.iocoder.yudao.module.member.service.location.LocationService;
import cn.iocoder.yudao.module.member.client.service.ThirdAuthService; import cn.iocoder.yudao.module.member.client.service.ThirdAuthService;
import cn.iocoder.yudao.module.member.service.photo.PhotoService; import cn.iocoder.yudao.module.member.service.photo.PhotoService;
import cn.iocoder.yudao.module.member.service.user.BO.MemberExtBO;
import cn.iocoder.yudao.module.member.service.user.BO.MemberTagExtBO;
import cn.iocoder.yudao.module.member.service.user.MemberRecentTagService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService; import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.system.enums.common.SexEnum; import cn.iocoder.yudao.module.system.enums.common.SexEnum;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -82,6 +84,8 @@ public class RecentServiceImpl implements RecentService {
private PhotoService photoService; private PhotoService photoService;
@Resource @Resource
private OperationService operationService; private OperationService operationService;
@Resource
private MemberRecentTagService memberRecentTagService;
/** /**
* 创建朋友圈 * 创建朋友圈
@@ -365,6 +369,7 @@ public class RecentServiceImpl implements RecentService {
List<OperationRespVO> resultList = BeanUtils.toBean(list, OperationRespVO.class); List<OperationRespVO> resultList = BeanUtils.toBean(list, OperationRespVO.class);
// 为OperationRespVO设置Member信息 // 为OperationRespVO设置Member信息
convertOperationRespVOSetupMember(resultList); convertOperationRespVOSetupMember(resultList);
convertOperationRespVOSetupTagList(resultList);
resultPageList.setList(resultList); resultPageList.setList(resultList);
resultPageList.setTotal(pageList.getTotal()); resultPageList.setTotal(pageList.getTotal());
return resultPageList; return resultPageList;
@@ -388,6 +393,7 @@ public class RecentServiceImpl implements RecentService {
List<OperationRespVO> resultList = BeanUtils.toBean(list, OperationRespVO.class); List<OperationRespVO> resultList = BeanUtils.toBean(list, OperationRespVO.class);
// 为OperationRespVO设置Member信息 // 为OperationRespVO设置Member信息
convertOperationRespVOSetupMember(resultList); convertOperationRespVOSetupMember(resultList);
convertOperationRespVOSetupTagList(resultList);
return new PageResult<>(resultList, pageList.getTotal()); return new PageResult<>(resultList, pageList.getTotal());
} }
@@ -426,6 +432,7 @@ public class RecentServiceImpl implements RecentService {
// 为OperationRespVO设置Member信息 // 为OperationRespVO设置Member信息
convertOperationRespVOSetupMember(resultList); convertOperationRespVOSetupMember(resultList);
convertOperationRespVOSetupTagList(resultList);
return new PageResult<>(resultList, pageList.getTotal()); return new PageResult<>(resultList, pageList.getTotal());
} }
@@ -489,28 +496,11 @@ public class RecentServiceImpl implements RecentService {
private void convertRecentPageResVoSetupMember(List<RecentPageResVo> list) { private void convertRecentPageResVoSetupMember(List<RecentPageResVo> list) {
if (ObjectUtil.isEmpty(list)) return; if (ObjectUtil.isEmpty(list)) return;
List<Long> memberIds = list.stream().map(RecentPageResVo::getMemberId).collect(Collectors.toList()); List<Long> memberIds = list.stream().map(RecentPageResVo::getMemberId).collect(Collectors.toList());
List<MemberUserDO> memberList = memberUserService.getUserList(memberIds); List<MemberExtBO> memberList = memberUserService.getUserExtList(memberIds);
Map<Long, MemberUserDO> memberMap = IterUtil.toMap(memberList, MemberUserDO::getId); Map<Long, MemberExtBO> memberMap = IterUtil.toMap(memberList, MemberExtBO::getMemberId);
for (RecentPageResVo entity : list) { for (RecentPageResVo entity : list) {
// 用户相关 MemberExtBO member = memberMap.get(entity.getMemberId());
if (ObjectUtil.isNotEmpty(memberMap)) { entity.setMember(member);
MemberUserDO member = memberMap.get(entity.getMemberId());
if (ObjectUtil.isNotEmpty(member)) {
RecentPageResVo.MemberVo memberVO = new RecentPageResVo.MemberVo();
memberVO.setMemberId(member.getId());
memberVO.setMemberAvatar(member.getAvatar());
memberVO.setMemberNickname(member.getNickname());
memberVO.setMemberAge(member.getAge());
memberVO.setMemberOcc(member.getOcc());
memberVO.setMemberHeight(member.getHeight());
memberVO.setMemberWeight(member.getWeight());
memberVO.setMemberSex(member.getSex());
memberVO.setAppRefreshDate(member.getAppRefreshDate());
memberVO.setMemberLat(member.getLat());
memberVO.setMemberLng(member.getLng());
entity.setMember(memberVO);
}
}
} }
} }
@@ -530,37 +520,14 @@ public class RecentServiceImpl implements RecentService {
for (RecentPageResVo entity : list) { for (RecentPageResVo entity : list) {
// 操作统计相关 // 操作统计相关
OperationTotalGroupRecentRespVO total = totalMap.get(entity.getId()); OperationTotalGroupRecentRespVO total = totalMap.get(entity.getId());
if (ObjectUtil.isNotEmpty(total)) { entity.setOperationTotal(total);
RecentPageResVo.OperationTotal operationTotal = new RecentPageResVo.OperationTotal();
operationTotal.setRecentLikeTotal(total.getLikeTotal());
operationTotal.setRecentReportTotal(total.getReportTotal());
operationTotal.setRecentShieldTotal(total.getShieldTotal());
operationTotal.setUserLikeTotal(total.getUserLikeTotal());
entity.setOperationTotal(operationTotal);
} else {
entity.setOperationTotal(new RecentPageResVo.OperationTotal());
}
} }
} }
private void convertRecentPageResVoSetupMember(RecentPageResVo detail) { private void convertRecentPageResVoSetupMember(RecentPageResVo detail) {
if (ObjectUtil.isEmpty(detail)) return; if (ObjectUtil.isEmpty(detail)) return;
MemberUserDO member = memberUserService.getUser(detail.getMemberId()); MemberExtBO member = memberUserService.getUserExt(detail.getMemberId());
if (ObjectUtil.isNotEmpty(member)) { detail.setMember(member);
RecentPageResVo.MemberVo memberVO = new RecentPageResVo.MemberVo();
memberVO.setMemberId(member.getId());
memberVO.setMemberAvatar(member.getAvatar());
memberVO.setMemberNickname(member.getNickname());
memberVO.setMemberAge(member.getAge());
memberVO.setMemberOcc(member.getOcc());
memberVO.setMemberHeight(member.getHeight());
memberVO.setMemberWeight(member.getWeight());
memberVO.setMemberSex(member.getSex());
memberVO.setAppRefreshDate(member.getAppRefreshDate());
memberVO.setMemberLat(member.getLat());
memberVO.setMemberLng(member.getLng());
detail.setMember(memberVO);
}
} }
// 为RecentPageResVo设置userOperationStatus信息 // 为RecentPageResVo设置userOperationStatus信息
@@ -601,71 +568,27 @@ public class RecentServiceImpl implements RecentService {
private void convertRecentPageResVoSetupTag(List<RecentPageResVo> list) { private void convertRecentPageResVoSetupTag(List<RecentPageResVo> list) {
if (ObjectUtil.isEmpty(list)) return; if (ObjectUtil.isEmpty(list)) return;
List<Long> memberIds = list.stream().map(RecentPageResVo::getMemberId).collect(Collectors.toList()); List<Long> memberIds = list.stream().map(RecentPageResVo::getMemberId).collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(memberIds)) { List<MemberTagExtBO> memberList = memberRecentTagService.getUserTagExtList(memberIds);
List<MemberRecentTagDO> memberRecentTagList = memberRecentTagMapper.selectList(new LambdaQueryWrapperX<MemberRecentTagDO>() Map<Long, List<MemberTagExtBO>> memberMap = IterUtil.toListMap(memberList, MemberTagExtBO::getMemberId);
.in(MemberRecentTagDO::getMemberId, memberIds) for (RecentPageResVo entity : list) {
); List<MemberTagExtBO> tags = memberMap.get(entity.getMemberId());
if (ObjectUtil.isNotEmpty(memberRecentTagList)) { entity.setMemberTagList(tags);
for (RecentPageResVo entity : list) {
List<MemberRecentTagDO> targetList = memberRecentTagList.stream().filter(v -> ObjectUtil.equals(v.getMemberId(), entity.getMemberId())).collect(Collectors.toList());
if (ObjectUtil.isEmpty(targetList)) {
entity.setMemberTagList(new ArrayList<>());
continue;
}
List<RecentPageResVo.MemberTag> tagList = targetList.stream().map(v -> {
RecentPageResVo.MemberTag tag = new RecentPageResVo.MemberTag();
tag.setTagTitle(v.getTagTitle());
tag.setTagBizType(v.getTagBizType());
return tag;
}).collect(Collectors.toList());
entity.setMemberTagList(tagList);
}
}
} }
} }
private void convertRecentPageResVoSetupTag(RecentPageResVo entity) { private void convertRecentPageResVoSetupTag(RecentPageResVo entity) {
if (ObjectUtil.isEmpty(entity)) return; if (ObjectUtil.isEmpty(entity)) return;
List<MemberRecentTagDO> memberRecentTagList = memberRecentTagMapper.selectList(new LambdaQueryWrapperX<MemberRecentTagDO>() List<MemberTagExtBO> memberList = memberRecentTagService.getUserTagExtList(entity.getMemberId());
.in(MemberRecentTagDO::getMemberId, entity.getMemberId()) entity.setMemberTagList(memberList);
);
if (ObjectUtil.isNotEmpty(memberRecentTagList)) {
List<MemberRecentTagDO> targetList = memberRecentTagList.stream().filter(v -> ObjectUtil.equals(v.getMemberId(), entity.getMemberId())).collect(Collectors.toList());
if (ObjectUtil.isEmpty(targetList)) {
entity.setMemberTagList(new ArrayList<>());
} else {
List<RecentPageResVo.MemberTag> tagList = targetList.stream().map(v -> {
RecentPageResVo.MemberTag tag = new RecentPageResVo.MemberTag();
tag.setTagTitle(v.getTagTitle());
tag.setTagBizType(v.getTagBizType());
return tag;
}).collect(Collectors.toList());
entity.setMemberTagList(tagList);
}
}
} }
/**
* 为RecentPageResVo设置Location信息
*/
private void convertRecentPageResVoSetupLocation(List<RecentPageResVo> list, LocationDO selfLocation) {
if (ObjectUtil.isEmpty(list)) return;
for (RecentPageResVo entity : list) {
RecentPageResVo.MemberVo targetLocation = entity.getMember();
if (ObjectUtil.isAllNotEmpty(targetLocation.getMemberLat(), targetLocation.getMemberLng())) {
continue;
}
double distance = NumberUtils.getDistance(targetLocation.getMemberLat(), targetLocation.getMemberLng(), selfLocation.getLat(), selfLocation.getLon());
entity.setDistance(distance);
}
}
/** /**
* 为RecentPageResVo设置Location信息 * 为RecentPageResVo设置Location信息
*/ */
private void convertRecentPageResVoSetupLocation(RecentPageResVo detail, LocationDO selfLocation) { private void convertRecentPageResVoSetupLocation(RecentPageResVo detail, LocationDO selfLocation) {
if (ObjectUtil.isEmpty(detail)) return; if (ObjectUtil.isEmpty(detail)) return;
RecentPageResVo.MemberVo member = detail.getMember(); MemberExtBO member = detail.getMember();
if (ObjectUtil.isAllNotEmpty(member.getMemberLng(), member.getMemberLat())) { if (ObjectUtil.isAllNotEmpty(member.getMemberLng(), member.getMemberLat())) {
double distance = NumberUtils.getDistance(member.getMemberLat(), member.getMemberLng(), selfLocation.getLat(), selfLocation.getLon()); double distance = NumberUtils.getDistance(member.getMemberLat(), member.getMemberLng(), selfLocation.getLat(), selfLocation.getLon());
detail.setDistance(distance); detail.setDistance(distance);
@@ -694,22 +617,22 @@ public class RecentServiceImpl implements RecentService {
private void convertOperationRespVOSetupMember(List<OperationRespVO> list) { private void convertOperationRespVOSetupMember(List<OperationRespVO> list) {
if (ObjectUtil.isEmpty(list)) return; if (ObjectUtil.isEmpty(list)) return;
List<Long> memberIds = list.stream().map(OperationRespVO::getMemberId).collect(Collectors.toList()); List<Long> memberIds = list.stream().map(OperationRespVO::getMemberId).collect(Collectors.toList());
List<MemberUserDO> memberList = memberUserService.getUserList(memberIds); List<MemberExtBO> memberList = memberUserService.getUserExtList(memberIds);
Map<Long, MemberUserDO> memberMap = IterUtil.toMap(memberList, MemberUserDO::getId); Map<Long, MemberExtBO> memberMap = IterUtil.toMap(memberList, MemberExtBO::getMemberId);
for (OperationRespVO entity : list) { for (OperationRespVO entity : list) {
// 用户相关 MemberExtBO member = memberMap.get(entity.getMemberId());
if (ObjectUtil.isNotEmpty(memberMap)) { entity.setMember(member);
MemberUserDO member = memberMap.get(entity.getMemberId()); }
if (ObjectUtil.isNotEmpty(member)) { }
OperationRespVO.MemberVo memberVO = new OperationRespVO.MemberVo();
memberVO.setMemberId(member.getId()); private void convertOperationRespVOSetupTagList(List<OperationRespVO> list) {
memberVO.setMemberAvatar(member.getAvatar()); if (ObjectUtil.isEmpty(list)) return;
memberVO.setMemberNickname(member.getNickname()); List<Long> memberIds = list.stream().map(OperationRespVO::getMemberId).collect(Collectors.toList());
memberVO.setMemberAge(member.getAge()); List<MemberTagExtBO> memberList = memberRecentTagService.getUserTagExtList(memberIds);
memberVO.setMemberOcc(member.getOcc()); Map<Long, List<MemberTagExtBO>> memberMap = IterUtil.toListMap(memberList, MemberTagExtBO::getMemberId);
entity.setMember(memberVO); for (OperationRespVO entity : list) {
} List<MemberTagExtBO> tags = memberMap.get(entity.getMemberId());
} entity.setMemberTagList(tags);
} }
} }
@@ -49,6 +49,7 @@ public class ViewRecordServiceImpl implements ViewRecordService {
// 插入 // 插入
ViewRecordDO viewRecord = BeanUtils.toBean(dto, ViewRecordDO.class); ViewRecordDO viewRecord = BeanUtils.toBean(dto, ViewRecordDO.class);
viewRecord.setViewSecond((dto.getViewEndTime().getSecond() - dto.getViewStartTime().getSecond())); viewRecord.setViewSecond((dto.getViewEndTime().getSecond() - dto.getViewStartTime().getSecond()));
viewRecord.setBizType(dto.getBizType().getType());
if (ObjectUtil.equals(viewRecord.getBizType(), MemberRecentViewRecordEnum.RECENT.getType())) { if (ObjectUtil.equals(viewRecord.getBizType(), MemberRecentViewRecordEnum.RECENT.getType())) {
viewRecord.setTitle("访问朋友圈"); viewRecord.setTitle("访问朋友圈");
} }
@@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.member.service.user.BO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class MemberExtBO {
@Schema(description = "用户编号")
private Long memberId;
@Schema(description = "用户性别")
private Integer memberSex;
@Schema(description = "用户头像")
private String memberAvatar;
@Schema(description = "用户昵称")
private String memberNickname;
@Schema(description = "用户年龄")
private String memberAge;
@Schema(description = "用户职业")
private String memberOcc;
@Schema(description = "身高(cm)")
private Double memberHeight;
@Schema(description = "体重(kg)")
private String memberWeight;
@Schema(description = "城市")
private String memberCity;
@Schema(description = "经度")
private Double memberLat;
@Schema(description = "纬度")
private Double memberLng;
@Schema(description = "最近登录时间")
private LocalDateTime appRefreshDate;
}
@@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.member.service.user.BO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class MemberTagExtBO {
@Schema(description = "会员id")
private Long memberId;
@Schema(description = "tag标题")
private String tagTitle;
@Schema(description = "tag业务类型")
private String tagBizType;
}
@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.member.service.user; package cn.iocoder.yudao.module.member.service.user;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO;
import cn.iocoder.yudao.module.member.service.user.BO.MemberTagExtBO;
import java.util.List; import java.util.List;
@@ -18,4 +19,11 @@ public interface MemberRecentTagService {
* 获取用户tag * 获取用户tag
*/ */
List<MemberRecentTagDO> getByMemberId(Long memberId); List<MemberRecentTagDO> getByMemberId(Long memberId);
/**
* 获取用户tag信息
*/
List<MemberTagExtBO> getUserTagExtList(List<Long> memberIds);
List<MemberTagExtBO> getUserTagExtList(Long memberId);
} }
@@ -6,13 +6,16 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO;
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberRecentTagMapper; import cn.iocoder.yudao.module.member.dal.mysql.user.MemberRecentTagMapper;
import cn.iocoder.yudao.module.member.enums.tag.MemberRecentTagEnum; import cn.iocoder.yudao.module.member.enums.tag.MemberRecentTagEnum;
import cn.iocoder.yudao.module.member.service.user.BO.MemberTagExtBO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Service @Service
@Valid @Valid
@@ -54,4 +57,28 @@ public class MemberRecentTagServiceImp implements MemberRecentTagService {
public List<MemberRecentTagDO> getByMemberId(Long memberId) { public List<MemberRecentTagDO> getByMemberId(Long memberId) {
return memberRecentTagMapper.getByMemberId(memberId); return memberRecentTagMapper.getByMemberId(memberId);
} }
/**
* 获取用户tag信息
*/
@Override
public List<MemberTagExtBO> getUserTagExtList(List<Long> memberIds) {
List<MemberRecentTagDO> list = memberRecentTagMapper.selectList(new LambdaQueryWrapperX<MemberRecentTagDO>()
.in(MemberRecentTagDO::getMemberId, memberIds)
);
if (ObjectUtil.isEmpty(list)) return Collections.emptyList();
return list.stream().map(item -> {
MemberTagExtBO entity = new MemberTagExtBO();
entity.setMemberId(item.getMemberId());
entity.setTagBizType(item.getTagBizType());
entity.setTagTitle(item.getTagTitle());
return entity;
}).collect(Collectors.toList());
}
@Override
public List<MemberTagExtBO> getUserTagExtList(Long memberId) {
return getUserTagExtList(Arrays.asList(memberId));
}
} }
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReq
import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO; import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO;
import cn.iocoder.yudao.module.member.controller.app.user.vo.*; import cn.iocoder.yudao.module.member.controller.app.user.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.service.user.BO.MemberExtBO;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Collection; import java.util.Collection;
@@ -76,12 +77,13 @@ public interface MemberUserService {
/** /**
* 通过用户 ID 查询用户们 * 通过用户 ID 查询用户们
*
* @param ids 用户 ID
* @return 用户对象信息数组
*/ */
List<MemberUserDO> getUserList(Collection<Long> ids); List<MemberUserDO> getUserList(Collection<Long> ids);
List<MemberExtBO> getUserExtList(Collection<Long> ids);
MemberExtBO getUserExt(Long userId);
/** /**
* 【会员】修改基本信息 * 【会员】修改基本信息
* *
@@ -25,6 +25,7 @@ import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
import cn.iocoder.yudao.module.member.enums.photo.PhotoBizTypeEnum; import cn.iocoder.yudao.module.member.enums.photo.PhotoBizTypeEnum;
import cn.iocoder.yudao.module.member.enums.tag.MemberRecentTagEnum; import cn.iocoder.yudao.module.member.enums.tag.MemberRecentTagEnum;
import cn.iocoder.yudao.module.member.mq.producer.user.MemberUserProducer; import cn.iocoder.yudao.module.member.mq.producer.user.MemberUserProducer;
import cn.iocoder.yudao.module.member.service.user.BO.MemberExtBO;
import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi; import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi;
import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO; import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
import cn.iocoder.yudao.module.system.api.social.SocialClientApi; import cn.iocoder.yudao.module.system.api.social.SocialClientApi;
@@ -41,7 +42,9 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -158,6 +161,36 @@ public class MemberUserServiceImpl implements MemberUserService {
return memberUserMapper.selectBatchIds(ids); return memberUserMapper.selectBatchIds(ids);
} }
@Override
public List<MemberExtBO> getUserExtList(Collection<Long> ids) {
if (CollUtil.isEmpty(ids)) {
return ListUtil.empty();
}
List<MemberUserDO> memberUserDOS = memberUserMapper.selectBatchIds(ids);
return memberUserDOS.stream().map(member -> {
MemberExtBO entity = new MemberExtBO();
entity.setMemberId(member.getId());
entity.setMemberAvatar(member.getAvatar());
entity.setMemberNickname(member.getNickname());
entity.setMemberAge(member.getAge());
entity.setMemberOcc(member.getOcc());
entity.setMemberHeight(member.getHeight());
entity.setMemberWeight(member.getWeight());
entity.setMemberSex(member.getSex());
entity.setAppRefreshDate(member.getAppRefreshDate());
entity.setMemberLat(member.getLat());
entity.setMemberLng(member.getLng());
return entity;
}).collect(Collectors.toList());
}
@Override
public MemberExtBO getUserExt(Long userId) {
List<MemberExtBO> list = getUserExtList(Arrays.asList(userId));
if (ObjectUtil.isEmpty(list)) return null;
return list.get(0);
}
@Override @Override
public void updateUser(Long userId, AppMemberUserUpdateReqVO reqVO) { public void updateUser(Long userId, AppMemberUserUpdateReqVO reqVO) {
MemberUserDO updateObj = BeanUtils.toBean(reqVO, MemberUserDO.class).setId(userId); MemberUserDO updateObj = BeanUtils.toBean(reqVO, MemberUserDO.class).setId(userId);