package com.mzl.flower.service.customer; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.dto.response.customer.CustomerTjDTO; import com.mzl.flower.dto.response.customer.InviteDTO; import com.mzl.flower.dto.response.customer.InviteRewardDTO; import com.mzl.flower.entity.customer.BrowseHistory; import com.mzl.flower.entity.customer.Collect; import com.mzl.flower.entity.customer.Follow; import com.mzl.flower.mapper.customer.BrowseHistoryMapper; import com.mzl.flower.mapper.customer.CollectMapper; import com.mzl.flower.mapper.customer.CustomerMapper; import com.mzl.flower.mapper.customer.FollowMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @Service @Transactional @Slf4j public class CustomerCenterService { private final FollowMapper followMapper; private final CollectMapper collectMapper; private final BrowseHistoryMapper browseHistoryMapper; private final CustomerMapper customerMapper; public CustomerCenterService(FollowMapper followMapper, CollectMapper collectMapper, BrowseHistoryMapper browseHistoryMapper, CustomerMapper customerMapper) { this.followMapper = followMapper; this.collectMapper = collectMapper; this.browseHistoryMapper = browseHistoryMapper; this.customerMapper = customerMapper; } public CustomerTjDTO customerCenterTj(String userId) { CustomerTjDTO dto = new CustomerTjDTO(); dto.setFollowNum(followMapper.selectCount(new LambdaQueryWrapper().eq(Follow::getUserId, userId))); dto.setCollectNum(collectMapper.selectCount(new LambdaQueryWrapper().eq(Collect::getUserId, userId))); dto.setBrowseNum(browseHistoryMapper.selectCount(new LambdaQueryWrapper().eq(BrowseHistory::getUserId, userId))); return dto; } //获取所有的邀请记录和当前登陆人的邀请记录 public InviteRewardDTO customerReward() { InviteRewardDTO rewardto = new InviteRewardDTO(); List reward = customerMapper.getReward(); List myreward = customerMapper.getMyReward(SecurityUtils.getUserId()); List processedReward = reward.stream() .filter(Objects::nonNull) .peek(dto -> { dto.setUserId(maskAll(dto.getUserId())); dto.setUserName(maskMiddle(dto.getUserName(), 4)); }).collect(Collectors.toList()); rewardto.setSuccessInvite(processedReward); List processedMyReward = myreward.stream() .filter(Objects::nonNull) .peek(dto -> { dto.setUserId(maskAll(dto.getUserId())); dto.setUserName(maskMiddle(dto.getUserName(), 4)); }).collect(Collectors.toList()); rewardto.setMyInvite(processedMyReward); return rewardto; } // 全部字符替换为* private String maskAll(String input) { if (input == null || input.isEmpty()) { return input; } return input.replaceAll(".", "*"); } // 中间部分替换(最多maxStars个*) private String maskMiddle(String input, int maxStars) { if (input == null || input.length() <= 2) { return input == null ? null : "*"; // 1-2个字符直接返回* } int length = input.length(); int stars = Math.min(maxStars, length - 2); // 最多maxStars个* String starsStr = String.join("", Collections.nCopies(stars, "*")); return input.charAt(0) + starsStr + input.charAt(length - 1); } }