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<Follow>().eq(Follow::getUserId, userId)));
|
dto.setCollectNum(collectMapper.selectCount(new LambdaQueryWrapper<Collect>().eq(Collect::getUserId, userId)));
|
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);
|
}
|
}
|