feat:新人用户tag自动添加、删除

This commit is contained in:
dzc committed 2025-12-08 16:28:27 +08:00
1 parent c198254f55
commit edfabbe9dc
18 files changed
+273 -23

No files matched your search

@@ -19,7 +19,9 @@ public enum BannerPositionEnum implements ArrayValuable<Integer> {
SECKILL_POSITION(2, "秒杀活动页"),
COMBINATION_POSITION(3, "砍价活动页"),
DISCOUNT_POSITION(4, "限时折扣页"),
REWARD_POSITION(5, "满减送页");
REWARD_POSITION(5, "满减送页"),
DYNAMIC(6, "动态页面"),
;
public static final Integer[] ARRAYS = Arrays.stream(values()).map(BannerPositionEnum::getPosition).toArray(Integer[]::new);
@@ -48,11 +48,15 @@ public class MemberConfigBaseVO {
@NotNull(message = "vip查看微信次数不能为空")
@Schema(description = "vip查看微信次数")
private Integer vipLookWechtCout;
@NotNull(message = "礼物提现比例不能为空")
@Schema(description = "礼物提现比例")
private Integer giftCashRatio;
@NotNull(message = "新人入驻天数判断不能为空")
@Schema(description = "新人入驻天数判断")
private Integer newPersonDays;
@Schema(description = "举报类型")
private List<String> reportTypeList;
@@ -1,6 +1,7 @@
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.service.photo.BO.MemberPhotoTotalExtBO;
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;
@@ -29,6 +30,9 @@ public class RecentPageResVo extends RecentDO {
@Schema(description = "用户tag")
private List<MemberTagExtBO> memberTagList;
@Schema(description = "用户相册")
private MemberPhotoTotalExtBO memberPhotoTotal;
@Schema(description = "用户相册")
private List<RecentPageResVo.MemberPhoto> MemberPhotoList;
@@ -84,6 +84,12 @@ public class MemberConfigDO extends BaseDO {
*/
private Integer giftCashRatio;
/**
* 新人入驻天数判断
* 入驻未满`newPersonDays`都是新人用户
*/
private Integer newPersonDays;
/**
* 举报类型
*/
@@ -228,4 +228,28 @@ public class MemberUserDO extends TenantBaseDO {
return String.valueOf(LocalDateTime.now().getYear() - birthday.getYear());
}
public String getwechatMaskString() {
String str = this.wechatNum;
if (str == null || str.length() <= 2) {
return "**";
}
char first = str.charAt(0);
char last = str.charAt(str.length() - 1);
int middleLength = str.length() - 2;
StringBuilder masked = new StringBuilder();
masked.append(first);
for (int i = 0; i < middleLength; i++) {
masked.append('*');
}
masked.append(last);
return masked.toString();
}
/**
* 是否是新用户
*/
public boolean isNewPerson(int newPersonDays) {
return this.getCreateTime().plusDays(newPersonDays).isAfter(LocalDateTime.now());
}
}
@@ -3,10 +3,13 @@ package cn.iocoder.yudao.module.member.dal.mysql.photo;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentPageResVo;
import cn.iocoder.yudao.module.member.dal.dataobject.photo.PhotoDO;
import cn.iocoder.yudao.module.member.service.photo.BO.MemberPhotoTotalExtBO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.member.controller.admin.photo.vo.*;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 用户相册 Mapper
@@ -31,4 +34,5 @@ public interface PhotoMapper extends BaseMapperX<PhotoDO> {
.orderByAsc(PhotoDO::getId));
}
List<MemberPhotoTotalExtBO> getMemberPhotoExtList(@Param("memberIdList") List<Long> memberIdList);
}
@@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.member.job.member;
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
import cn.iocoder.yudao.module.member.service.user.MemberRecentTagService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 清理过期过期的新用户
*/
@Component
@Slf4j
public class CheckNewPersonTagJob implements JobHandler {
@Resource
private MemberRecentTagService memberRecentTagService;
@Override
@TenantJob
public String execute(String param) throws Exception {
// 清理过期的新用户tag
int newPersonCount = memberRecentTagService.checkNewPersonTagJob();
return String.format("清理了过期的 新用户tag记录 %s 个", newPersonCount);
}
}
@@ -27,7 +27,7 @@ public class CheckVipJob implements JobHandler {
// 清理了过期的vip
int vipCount = openTypeService.checkVip();
// 清理了过期的vip tag
int vipTagCount = memberRecentTagService.checkVipTag();
int vipTagCount = memberRecentTagService.checkVipTagJob();
return String.format("清理了过期的 vip记录 %s 个\n清理过期的 vip tag记录 %s 个\n", vipCount, vipTagCount);
}
@@ -15,6 +15,7 @@ import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateR
import cn.iocoder.yudao.module.member.controller.app.auth.vo.*;
import cn.iocoder.yudao.module.member.convert.auth.AuthConvert;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.service.user.MemberRecentTagService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.system.api.logger.LoginLogApi;
import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO;
@@ -56,6 +57,9 @@ public class MemberAuthServiceImpl implements MemberAuthService {
@Resource
private MemberUserService userService;
@Resource
private MemberRecentTagService memberRecentTagService;
@Resource
private SmsCodeApi smsCodeApi;
@Resource
@@ -252,6 +256,8 @@ public class MemberAuthServiceImpl implements MemberAuthService {
serviceToken.setChatToken(BeanUtils.toBean(login, AppAuthLoginRespVO.ChatToken.class));
}
}
// 更新朋友圈用户新人tag
memberRecentTagService.createOrUpdateNewPersonTag(user.getId());
return serviceToken;
}
@@ -274,6 +280,9 @@ public class MemberAuthServiceImpl implements MemberAuthService {
}
}
// 更新朋友圈用户新人tag
memberRecentTagService.createOrUpdateNewPersonTag(user.getId());
return serviceToken;
}
@@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.member.service.photo.BO;
import lombok.Data;
@Data
public class MemberPhotoTotalExtBO {
/**
* 用户ID
*/
private Long memberId;
/**
* 图片视频总数
*/
private Long total = 0L;
}
@@ -3,11 +3,11 @@ package cn.iocoder.yudao.module.member.service.photo;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.photo.vo.*;
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentPageResVo;
import cn.iocoder.yudao.module.member.controller.app.photo.vo.AppCountResVo;
import cn.iocoder.yudao.module.member.controller.app.photo.vo.AppUploadReqVo;
import cn.iocoder.yudao.module.member.dal.dataobject.photo.PhotoDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.service.photo.BO.MemberPhotoTotalExtBO;
import java.util.List;
@@ -60,4 +60,9 @@ public interface PhotoService {
* 获得用户相册分页
*/
PageResult<PhotoDO> getPhotoPage(PhotoPageReqVO pageReqVO);
/**
* 获得用户相册列表
*/
List<MemberPhotoTotalExtBO> getMemberPhotoTotalExtList(List<Long> memberId);
}
@@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.member.enums.MemberErrorCode;
import cn.iocoder.yudao.module.member.enums.photo.PhotoBizTypeEnum;
import cn.iocoder.yudao.module.member.enums.photo.PhotoResourceTypeEnum;
import cn.iocoder.yudao.module.member.client.service.ThirdAuthService;
import cn.iocoder.yudao.module.member.service.photo.BO.MemberPhotoTotalExtBO;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import org.springframework.stereotype.Service;
@@ -155,4 +156,12 @@ public class PhotoServiceImpl implements PhotoService {
countResVo.setTotal(imageCount + videoCount);
return countResVo;
}
/**
* 获得用户相册列表
*/
@Override
public List<MemberPhotoTotalExtBO> getMemberPhotoTotalExtList(List<Long> memberId) {
return photoMapper.getMemberPhotoExtList(memberId);
}
}
@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.api.thirdauth.ThirdAuthVo;
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.*;
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppEvaluateDetailResVo;
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentLikeReqVo;
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentOperateReqVo;
@@ -26,6 +27,7 @@ import cn.iocoder.yudao.module.member.service.config.MemberConfigService;
import cn.iocoder.yudao.module.member.service.location.LocationService;
import cn.iocoder.yudao.module.member.client.service.ThirdAuthService;
import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
import cn.iocoder.yudao.module.member.service.photo.BO.MemberPhotoTotalExtBO;
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;
@@ -46,7 +48,6 @@ import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import cn.iocoder.yudao.module.member.controller.admin.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.util.object.BeanUtils;
@@ -404,6 +405,8 @@ public class RecentServiceImpl implements RecentService {
}
// 查询用户tag
convertRecentPageResVoSetupTag(resultList);
// 设置用户图片/视频数量
convertRecentPageResVoSetupPhotoExt(resultList);
return new PageResult<>(resultList, recentPageList.getTotal());
}
@@ -411,8 +414,8 @@ public class RecentServiceImpl implements RecentService {
* 我喜欢-分页查询
*/
@Override
public PageResult<cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO> likeItPage(AppRecentLikeReqVo dto) {
PageResult<cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO> resultPageList = new PageResult<>();
public PageResult<OperationRespVO> likeItPage(AppRecentLikeReqVo dto) {
PageResult<OperationRespVO> resultPageList = new PageResult<>();
// 查询我喜欢
PageResult<OperationDO> pageList = operationMapper.selectPage(dto, new LambdaQueryWrapperX<OperationDO>()
.eq(OperationDO::getOperatorMemberId, dto.getOperationMemberId())
@@ -423,7 +426,7 @@ public class RecentServiceImpl implements RecentService {
);
List<OperationDO> list = pageList.getList();
if (ObjectUtil.isEmpty(list)) return resultPageList;
List<cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO> resultList = BeanUtils.toBean(list, cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO.class);
List<OperationRespVO> resultList = BeanUtils.toBean(list, OperationRespVO.class);
// 为OperationRespVO设置Member信息
convertOperationRespVOSetupMember(resultList);
convertOperationRespVOSetupTagList(resultList);
@@ -436,7 +439,7 @@ public class RecentServiceImpl implements RecentService {
* 喜欢我-分页查询
*/
@Override
public PageResult<cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO> likeMePage(AppRecentLikeReqVo dto) {
public PageResult<OperationRespVO> likeMePage(AppRecentLikeReqVo dto) {
// 查询我喜欢
PageResult<OperationDO> pageList = operationMapper.selectPage(dto, new LambdaQueryWrapperX<OperationDO>()
.eq(OperationDO::getMemberId, dto.getOperationMemberId())
@@ -447,7 +450,7 @@ public class RecentServiceImpl implements RecentService {
);
List<OperationDO> list = pageList.getList();
if (ObjectUtil.isEmpty(list)) return new PageResult<>();
List<cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO> resultList = BeanUtils.toBean(list, cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO.class);
List<OperationRespVO> resultList = BeanUtils.toBean(list, OperationRespVO.class);
// 为OperationRespVO设置Member信息
convertOperationRespVOSetupMember(resultList);
convertOperationRespVOSetupTagList(resultList);
@@ -469,7 +472,7 @@ public class RecentServiceImpl implements RecentService {
);
List<OperationDO> list = pageList.getList();
if (ObjectUtil.isEmpty(list)) return new PageResult<>();
List<OperationRespVO> resultList = BeanUtils.toBean(list, cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO.class);
List<OperationRespVO> resultList = BeanUtils.toBean(list, OperationRespVO.class);
// 为OperationRespVO设置Member信息
convertOperationRespVOSetupMember(resultList);
convertOperationRespVOSetupTagList(resultList);
@@ -507,7 +510,7 @@ public class RecentServiceImpl implements RecentService {
* 我的评价
*/
@Override
public PageResult<cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO> evaluatePage(AppRecentLikeReqVo dto) {
public PageResult<OperationRespVO> evaluatePage(AppRecentLikeReqVo dto) {
// 我的评价
PageResult<OperationDO> pageList = operationMapper.selectPage(dto, new LambdaQueryWrapperX<OperationDO>()
.eq(OperationDO::getOperatorMemberId, dto.getOperationMemberId())
@@ -518,7 +521,7 @@ public class RecentServiceImpl implements RecentService {
);
List<OperationDO> list = pageList.getList();
if (ObjectUtil.isEmpty(list)) return new PageResult<>();
List<cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO> resultList = BeanUtils.toBean(list, cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO.class);
List<OperationRespVO> resultList = BeanUtils.toBean(list, OperationRespVO.class);
// 为OperationRespVO设置Member信息
convertOperationRespVOSetupMember(resultList);
@@ -701,26 +704,43 @@ public class RecentServiceImpl implements RecentService {
resVo.setMemberPhotoList(memberPhotoList);
}
private void convertRecentPageResVoSetupPhotoExt(List<RecentPageResVo> list) {
if (ObjectUtil.isEmpty(list)) return;
List<Long> memberIds = list.stream().map(RecentPageResVo::getMemberId).collect(Collectors.toList());
List<MemberPhotoTotalExtBO> photoList = photoService.getMemberPhotoTotalExtList(memberIds);
Map<Long, MemberPhotoTotalExtBO> memberMap = IterUtil.toMap(photoList, MemberPhotoTotalExtBO::getMemberId);
if (ObjectUtil.isNotEmpty(memberMap)) {
for (RecentPageResVo entity : list) {
MemberPhotoTotalExtBO member = memberMap.get(entity.getMemberId());
if (ObjectUtil.isEmpty(member)) {
entity.setMemberPhotoTotal(new MemberPhotoTotalExtBO());
continue;
}
entity.setMemberPhotoTotal(member);
}
}
}
/**
* 为OperationRespVO设置Member信息
*/
private void convertOperationRespVOSetupMember(List<cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO> list) {
private void convertOperationRespVOSetupMember(List<OperationRespVO> list) {
if (ObjectUtil.isEmpty(list)) return;
List<Long> memberIds = list.stream().map(cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO::getMemberId).collect(Collectors.toList());
List<Long> memberIds = list.stream().map(OperationRespVO::getMemberId).collect(Collectors.toList());
List<MemberExtBO> memberList = memberUserService.getUserExtList(memberIds);
Map<Long, MemberExtBO> memberMap = IterUtil.toMap(memberList, MemberExtBO::getMemberId);
for (cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO entity : list) {
for (OperationRespVO entity : list) {
MemberExtBO member = memberMap.get(entity.getMemberId());
entity.setMember(member);
}
}
private void convertOperationRespVOSetupTagList(List<cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO> list) {
private void convertOperationRespVOSetupTagList(List<OperationRespVO> list) {
if (ObjectUtil.isEmpty(list)) return;
List<Long> memberIds = list.stream().map(cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO::getMemberId).collect(Collectors.toList());
List<Long> memberIds = list.stream().map(OperationRespVO::getMemberId).collect(Collectors.toList());
List<MemberTagExtBO> memberList = memberRecentTagService.getUserTagExtList(memberIds);
Map<Long, List<MemberTagExtBO>> memberMap = IterUtil.toListMap(memberList, MemberTagExtBO::getMemberId);
for (cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO entity : list) {
for (OperationRespVO entity : list) {
List<MemberTagExtBO> tags = memberMap.get(entity.getMemberId());
entity.setMemberTagList(tags);
}
@@ -26,6 +26,9 @@ public class MemberExtBO {
@Schema(description = "用户职业")
private String memberOcc;
@Schema(description = "微信")
private String wechatNum;
@Schema(description = "身高(cm)")
private Double memberHeight;
@@ -27,8 +27,18 @@ public interface MemberRecentTagService {
List<MemberTagExtBO> getUserTagExtList(Long memberId);
/**
* 创建或者更新新人tag
*/
boolean createOrUpdateNewPersonTag(Long memberId);
/**
* 清理了过期的vip tag
*/
int checkVipTag();
int checkVipTagJob();
/**
* 清理过期的新用户tag
*/
int checkNewPersonTagJob();
}
@@ -3,15 +3,20 @@ package cn.iocoder.yudao.module.member.service.user;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.dal.dataobject.config.MemberConfigDO;
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.mysql.opentype.OpenTypeMapper;
import cn.iocoder.yudao.module.member.dal.mysql.opentype.OpenTypeUserMapper;
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberRecentTagMapper;
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
import cn.iocoder.yudao.module.member.enums.tag.MemberRecentTagEnum;
import cn.iocoder.yudao.module.member.service.config.MemberConfigService;
import cn.iocoder.yudao.module.member.service.opentype.BO.OpenTypeExtBO;
import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
import cn.iocoder.yudao.module.member.service.user.BO.MemberTagExtBO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -27,11 +32,15 @@ import java.util.stream.Collectors;
@Slf4j
public class MemberRecentTagServiceImp implements MemberRecentTagService {
@Resource
private MemberUserMapper memberUserMapper;
@Resource
private MemberRecentTagMapper memberRecentTagMapper;
@Resource
private OpenTypeService openTypeService;
@Resource
private MemberConfigService memberConfigService;
/**
* 设置用户真人认证tag
@@ -89,11 +98,54 @@ public class MemberRecentTagServiceImp implements MemberRecentTagService {
return getUserTagExtList(Arrays.asList(memberId));
}
/**
* 创建或者更新新人tag
*/
@Override
public boolean createOrUpdateNewPersonTag(Long memberId) {
// 查询用户
MemberUserDO memberUser = memberUserMapper.selectById(memberId);
if (ObjectUtil.isEmpty(memberUser)) return false;
// 查询配置
MemberConfigDO config = memberConfigService.getConfig();
Integer newPersonDays = config.getNewPersonDays();
if (ObjectUtil.isEmpty(newPersonDays)) newPersonDays = 15;
// 是否是新人
boolean newPerson = memberUser.isNewPerson(newPersonDays);
MemberRecentTagDO tag = memberRecentTagMapper.selectOne(new LambdaQueryWrapperX<MemberRecentTagDO>()
.eq(MemberRecentTagDO::getMemberId, memberId)
.eq(MemberRecentTagDO::getTagBizType, MemberRecentTagEnum.NEW_PERSON.getType())
);
// 是新人
if (newPerson) {
if (ObjectUtil.isEmpty(tag)) {
MemberRecentTagDO obj = new MemberRecentTagDO();
obj.setTagBizId(null);
obj.setMemberId(memberId);
obj.setTagBizType(MemberRecentTagEnum.NEW_PERSON.getType());
obj.setTagTitle(MemberRecentTagEnum.NEW_PERSON.getDescription());
memberRecentTagMapper.insert(obj);
return true;
}
return false;
}
// 不是新人
else {
if (ObjectUtil.isNotEmpty(tag)) {
memberRecentTagMapper.deleteById(tag.getId());
return true;
}
return false;
}
}
/**
* 清理了过期的vip tag
*/
@Override
public int checkVipTag() {
public int checkVipTagJob() {
List<MemberRecentTagDO> vipTagList = memberRecentTagMapper.selectList(new LambdaQueryWrapperX<MemberRecentTagDO>()
.eq(MemberRecentTagDO::getTagBizType, MemberRecentTagEnum.VIP.getType())
);
@@ -113,4 +165,27 @@ public class MemberRecentTagServiceImp implements MemberRecentTagService {
);
return deleteCount;
}
/**
* 清理过期的新用户tag
*/
@Override
public int checkNewPersonTagJob() {
List<MemberRecentTagDO> newPersonTagList = memberRecentTagMapper.selectList(new LambdaQueryWrapperX<MemberRecentTagDO>()
.eq(MemberRecentTagDO::getTagBizType, MemberRecentTagEnum.NEW_PERSON.getType())
);
if (ObjectUtil.isEmpty(newPersonTagList)) return 0;
int delCount = 0;
for (MemberRecentTagDO item : newPersonTagList) {
boolean isDelete = createOrUpdateNewPersonTag(item.getMemberId());
if(isDelete){
delCount++;
}
}
return delCount;
}
}
@@ -46,7 +46,6 @@ import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -81,6 +80,9 @@ public class MemberUserServiceImpl implements MemberUserService {
@Resource
private MemberUserProducer memberUserProducer;
@Resource
private MemberRecentTagService memberRecentTagService;
@Resource
private ChatApi chatApi;
@Resource
@@ -184,6 +186,9 @@ public class MemberUserServiceImpl implements MemberUserService {
entity.setAppRefreshDate(member.getAppRefreshDate());
entity.setMemberLat(member.getLat());
entity.setMemberLng(member.getLng());
if (ObjectUtil.isNotEmpty(member.getWeight())) {
entity.setWechatNum(member.getwechatMaskString());
}
return entity;
}).collect(Collectors.toList());
}
@@ -341,6 +346,9 @@ public class MemberUserServiceImpl implements MemberUserService {
}).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
memberRecentTagMapper.insert(tags);
}
// 更新用户新人tag
memberRecentTagService.createOrUpdateNewPersonTag(updateReqVO.getId());
memberUserMapper.updateById(updateObj);
}
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.member.dal.mysql.photo.PhotoMapper">
<select id="getMemberPhotoExtList" resultType="cn.iocoder.yudao.module.member.service.photo.BO.MemberPhotoTotalExtBO">
select a.member_id, count(0) as total
from member_photo a
<where>
a.deleted = '0'
<if test="memberIdList != null and memberIdList.size() != 0">
and a.member_id in
<foreach collection="memberIdList" item="v" open="(" close=")" separator=",">
#{v}
</foreach>
</if>
</where>
group by a.member_id
</select>
</mapper>