feat:新人用户tag自动添加、删除
This commit is contained in:
1 parent
c198254f55
commit
edfabbe9dc
18 files changed
+273
-23
No files matched your search
+3
-1
@@ -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);
|
||||
|
||||
|
||||
+5
-1
@@ -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;
|
||||
|
||||
|
||||
+4
@@ -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;
|
||||
|
||||
|
||||
+6
@@ -84,6 +84,12 @@ public class MemberConfigDO extends BaseDO {
|
||||
*/
|
||||
private Integer giftCashRatio;
|
||||
|
||||
/**
|
||||
* 新人入驻天数判断
|
||||
* 入驻未满`newPersonDays`都是新人用户
|
||||
*/
|
||||
private Integer newPersonDays;
|
||||
|
||||
/**
|
||||
* 举报类型
|
||||
*/
|
||||
|
||||
+24
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
+5
-1
@@ -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);
|
||||
}
|
||||
+29
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
+9
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+18
@@ -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;
|
||||
|
||||
}
|
||||
+6
-1
@@ -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);
|
||||
}
|
||||
+9
@@ -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);
|
||||
}
|
||||
}
|
||||
+35
-15
@@ -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);
|
||||
}
|
||||
|
||||
+3
@@ -26,6 +26,9 @@ public class MemberExtBO {
|
||||
@Schema(description = "用户职业")
|
||||
private String memberOcc;
|
||||
|
||||
@Schema(description = "微信")
|
||||
private String wechatNum;
|
||||
|
||||
@Schema(description = "身高(cm)")
|
||||
private Double memberHeight;
|
||||
|
||||
|
||||
+11
-1
@@ -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();
|
||||
}
|
||||
+76
-1
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+9
-1
@@ -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>
|
||||
Reference in new issue
Block a user