From acfa1f567339c5b1f2795cb302446eadab2d56cd Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期五, 18 四月 2025 15:30:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 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 1898f91..dc46231 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
@@ -72,6 +72,9 @@
 
     private String contactTel;
 
+    @ApiModelProperty("我的邀请码")
+    private String intervialcode;
+    
     @ApiModelProperty("注销/非注销")
     private Boolean isClosed;
 }
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