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); } }