From 8240ad4079ecb4562451c92a4d436a91a9dcf0ca Mon Sep 17 00:00:00 2001 From: zhujie <leon.zhu@cloudroam.com.cn> Date: 星期五, 18 四月 2025 15:18:33 +0800 Subject: [PATCH] 邀请有礼 --- src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java | 3 + src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java | 43 ++++++++++++++++++++- src/main/java/com/mzl/flower/dto/response/customer/InviteDTO.java | 2 src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java | 36 +++++++++++++++++- 4 files changed, 78 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java b/src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java index 03d1bd8..38de9e7 100644 --- a/src/main/java/com/mzl/flower/dto/response/customer/CustomerDTO.java +++ b/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; } diff --git a/src/main/java/com/mzl/flower/dto/response/customer/InviteDTO.java b/src/main/java/com/mzl/flower/dto/response/customer/InviteDTO.java index b823e96..7bd4ff8 100644 --- a/src/main/java/com/mzl/flower/dto/response/customer/InviteDTO.java +++ b/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; } \ No newline at end of file diff --git a/src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java b/src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java index 2a1ee52..3d59c0a 100644 --- a/src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java +++ b/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(); } diff --git a/src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java b/src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java index d53a2f0..50f4126 100644 --- a/src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java +++ b/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); + } } -- Gitblit v1.9.3