zhujie
9 天以前 8240ad4079ecb4562451c92a4d436a91a9dcf0ca
邀请有礼
已修改4个文件
84 ■■■■■ 文件已修改
src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/customer/InviteDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java
@@ -71,4 +71,7 @@
    private Boolean isMember;
    private String contactTel;
    @ApiModelProperty("我的邀请码")
    private String intervialcode;
}
src/main/java/com/mzl/flower/dto/response/customer/InviteDTO.java
@@ -7,6 +7,6 @@
    private String userId ;
    private String userName ;
    private String reward;
    private String status;
}
src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java
@@ -49,9 +49,41 @@
    @Select("select count(1) from t_customer_info where reintervialcode = #{code}")
    Integer getInvitatCountByCode(@Param("code") String code);
    @Select("select user_id as userId,name as userName,t1.reward from t_customer_info c" +
            "inner join (select reintervialcode,count(DISTINCT id) as reward from t_customer_info where reintervialcode is not null and reintervialcode <> '' group by reintervialcode) t1 on c.intervialcode=t1.reintervialcode")
    @Select("SELECT " +
            "    c.user_id as userId," +
            "    c.name as userName," +
            "    CASE " +
            "        WHEN t1.reward < 3 THEN '获得了3天会员' " +
            "        WHEN t1.reward >= 3 AND t1.reward < 5 THEN '获得了15天会员' " +
            "        WHEN t1.reward >=5 THEN '获得了30天会员' " +
            "        ELSE '' " +
            "    END AS reward ," +
            "    '已注册' as status " +
            "FROM " +
            "    t_customer_info c " +
            "    INNER JOIN (" +
            "        SELECT " +
            "            reintervialcode, " +
            "            COUNT(DISTINCT id) AS reward" +
            "        FROM " +
            "            t_customer_info " +
            "        WHERE " +
            "            reintervialcode IS NOT NULL " +
            "            AND reintervialcode <> '' " +
            "        GROUP BY " +
            "            reintervialcode " +
            "    ) t1 ON c.intervialcode = t1.reintervialcode")
    List<InviteDTO> getReward();
    @Select("SELECT " +
            "c.user_id AS userId, " +
            "c.NAME AS userName, " +
            "'' AS reward, " +
            "'已注册' AS STATUS  " +
            "FROM " +
            "t_customer_info c " +
            "WHERE " +
            "reintervialcode IN ( SELECT intervialcode FROM t_customer_info WHERE user_id = #{userid} )")
    List<InviteDTO> getMyReward(String userid);
    void checkVipExpireTime();
}
src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java
@@ -16,7 +16,9 @@
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
@@ -49,9 +51,44 @@
    public InviteRewardDTO customerReward() {
        InviteRewardDTO rewardto = new InviteRewardDTO();
        List<InviteDTO> reward = customerMapper.getReward();
        rewardto.setSuccessInvite(reward);
        List<InviteDTO> myreward = reward.stream().filter(s->s!=null&&s.getUserId()== SecurityUtils.getUserId()).collect(Collectors.toList());;
        rewardto.setMyInvite(myreward);
        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);
    }
}