zhujie
10 天以前 19428a49b4c07b14097615d48a7a72dbf941c4e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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);
    }
}