Forráskód Böngészése

普通会员的过期状态调整

liuchengsen 1 hónapja
szülő
commit
b93cb19b71

+ 19 - 3
zhijiayun-invite/src/main/java/com/xuekairui/invite/service/InviteService.java

@@ -947,14 +947,25 @@ public class InviteService {
     }
 
     public List<InviteRewardResponse> getInviteRewards(Long userId) {
-        return getInviteRewards(userId, null, 1, Integer.MAX_VALUE).getRecords();
+        return getInviteRewards(userId, null, 1, Integer.MAX_VALUE, false).getRecords();
     }
 
     /**
      * 分页查询邀请记录(批量查询被邀请人,避免 N+1)
+     * 运营端调用:分辨是否已注册
      */
     public Page<InviteRewardResponse> getInviteRewards(Long userId, Integer rewardGranted,
                                                         int pageNum, int pageSize) {
+        return getInviteRewards(userId, rewardGranted, pageNum, pageSize, true);
+    }
+
+    /**
+     * 分页查询邀请记录(批量查询被邀请人,避免 N+1)
+     *
+     * @param forAdmin true=运营端(分辨是否已注册);false=用户端(返回入驻信息)
+     */
+    public Page<InviteRewardResponse> getInviteRewards(Long userId, Integer rewardGranted,
+                                                        int pageNum, int pageSize, boolean forAdmin) {
         Page<InviteRelation> page = new Page<>(pageNum, pageSize);
         LambdaQueryWrapper<InviteRelation> wrapper = new LambdaQueryWrapper<>();
         if (userId != null) {
@@ -1012,6 +1023,12 @@ public class InviteService {
             String inviteeLevel = invitee != null && invitee.getMembershipLevel() != null
                     ? invitee.getMembershipLevel().getCode() : "PLUS";
 
+            // 运营端:分辨是否已注册(账户注册);用户端:返回入驻信息(LicenseStatus)
+            String registeredText = forAdmin
+                    ? (isRegistered ? "已注册" : "未注册")
+                    : LicenseStatus.fromDb(
+                            licenseStatusMap.get(r.getInviteeId())).getDisplayText();
+
             return InviteRewardResponse.builder()
                     .inviterId(r.getInviterId())
                     .inviterNickname(inviterNicknameMap.getOrDefault(r.getInviterId(), "一位药店用户"))
@@ -1020,8 +1037,7 @@ public class InviteService {
                     .inviteePhone(inviteePhone)
                     .inviteeMembershipLevel(inviteeLevel)
                     .registered(r.getRegistered() != null ? r.getRegistered() : 0)
-                    .registeredText(LicenseStatus.fromDb(
-                            licenseStatusMap.get(r.getInviteeId())).getDisplayText())
+                    .registeredText(registeredText)
                     .rewardCount(r.getRewardGranted())
                     .inviteCode(r.getInviteCodeId() != null ? codeMap.get(r.getInviteCodeId()) : null)
                     .licenseStatus(licenseStatusMap.getOrDefault(r.getInviteeId(), LicenseStatus.NOT_SUBMITTED.name()))

+ 3 - 2
zhijiayun-user/src/main/java/com/xuekairui/user/controller/AdminMembershipController.java

@@ -47,8 +47,9 @@ public class AdminMembershipController {
             @RequestParam(required = false) String level,
             @RequestParam(required = false) String source,
             @RequestParam(required = false) String phone,
-            @RequestParam(required = false) String nickname) {
-        return Result.success(membershipService.listMemberships(page, size, userId, level, source, phone, nickname));
+            @RequestParam(required = false) String nickname,
+            @RequestParam(required = false) Integer status) {
+        return Result.success(membershipService.listMemberships(page, size, userId, level, source, phone, nickname, status));
     }
 
     /**

+ 8 - 3
zhijiayun-user/src/main/java/com/xuekairui/user/service/MembershipService.java

@@ -310,7 +310,8 @@ public class MembershipService {
      */
     public Page<MembershipResponse> listMemberships(Integer pageNum, Integer pageSize,
                                                      Long userId, String level,
-                                                     String source, String phone, String nickname) {
+                                                     String source, String phone, String nickname,
+                                                     Integer status) {
         Page<UserMembership> page = new Page<>(pageNum, pageSize);
         LambdaQueryWrapper<UserMembership> wrapper = new LambdaQueryWrapper<>();
         if (userId != null) {
@@ -325,6 +326,9 @@ public class MembershipService {
         if (source != null && !source.isBlank()) {
             wrapper.eq(UserMembership::getSource, source);
         }
+        if (status != null) {
+            wrapper.eq(UserMembership::getStatus, status);
+        }
         // 昵称筛选:先按昵称模糊查用户ID列表,再过滤会员记录
         if (nickname != null && !nickname.isBlank()) {
             List<Long> matchedUserIds = userMapper.selectList(
@@ -558,13 +562,14 @@ public class MembershipService {
     }
 
     /**
-     * 停用用户所有活跃会员记录
+     * 停用用户所有活跃的高级会员记录(PLUS 永久有效,不参与停用)
      */
     private void deactivateAllActive(Long userId) {
         List<UserMembership> activeList = userMembershipMapper.selectList(
                 new LambdaQueryWrapper<UserMembership>()
                         .eq(UserMembership::getUserId, userId)
-                        .eq(UserMembership::getStatus, 1));
+                        .eq(UserMembership::getStatus, 1)
+                        .ne(UserMembership::getLevel, MembershipLevel.PLUS));
         for (UserMembership active : activeList) {
             active.setStatus(0);
             userMembershipMapper.updateById(active);