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