| | |
| | | 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 |
| | |
| | | private final FollowMapper followMapper; |
| | | private final CollectMapper collectMapper; |
| | | private final BrowseHistoryMapper browseHistoryMapper; |
| | | private final CustomerMapper customerMapper; |
| | | |
| | | public CustomerCenterService(FollowMapper followMapper, CollectMapper collectMapper, BrowseHistoryMapper browseHistoryMapper) { |
| | | public CustomerCenterService(FollowMapper followMapper, CollectMapper collectMapper, BrowseHistoryMapper browseHistoryMapper, CustomerMapper customerMapper) { |
| | | this.followMapper = followMapper; |
| | | this.collectMapper = collectMapper; |
| | | this.browseHistoryMapper = browseHistoryMapper; |
| | | this.customerMapper = customerMapper; |
| | | } |
| | | |
| | | |
| | |
| | | dto.setBrowseNum(browseHistoryMapper.selectCount(new LambdaQueryWrapper<BrowseHistory>().eq(BrowseHistory::getUserId, userId))); |
| | | return dto; |
| | | } |
| | | |
| | | //获取所有的邀请记录和当前登陆人的邀请记录 |
| | | public InviteRewardDTO customerReward() { |
| | | InviteRewardDTO rewardto = new InviteRewardDTO(); |
| | | List<InviteDTO> reward = customerMapper.getReward(); |
| | | List<InviteDTO> myreward = customerMapper.getMyReward(SecurityUtils.getUserId()); |
| | | List<InviteDTO> 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<InviteDTO> 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); |
| | | } |
| | | } |