Browse Source

Merge branch 'zx_online_tenantAlbum_0331' of http://git.dayaedu.com/yonge/cooleshow into test

zouxuan 1 week ago
parent
commit
ba6aa7decb

+ 29 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserTenantAlbumRecordServiceImpl.java

@@ -920,6 +920,8 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
         UserTenantAlbumRecordWrapper.LastUserTenantAlbumRecord lastUserTenantAlbumRecord = new UserTenantAlbumRecordWrapper.LastUserTenantAlbumRecord();
         Long tenantAlbumId = null;
         Date endTime = null;
+        //忽略已删除的专辑
+        this.ignoreTenantAlbumIds(albumRecords);
         if (CollectionUtils.isNotEmpty(albumRecords)) {
             //按专辑编号分组,然后找出截止时间最大的记录
             Map<Long, UserTenantAlbumRecord> recordMap = albumRecords.stream()
@@ -932,17 +934,18 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
             endTime = record.getEndTime();
         }else {
             //获取最近一条记录已过期的记录
-            UserTenantAlbumRecord record = this.lambdaQuery()
+            List<UserTenantAlbumRecord> tenantAlbumRecords = this.lambdaQuery()
                     .eq(UserTenantAlbumRecord::getUserId, userId)
                     .eq(UserTenantAlbumRecord::getEfficientFlag, true)
                     .eq(UserTenantAlbumRecord::getTenantId, tenantId)
                     .lt(UserTenantAlbumRecord::getEndTime, new Date())
                     .eq(albumId != null, UserTenantAlbumRecord::getTenantAlbumId, albumId)
                     .orderByDesc(UserTenantAlbumRecord::getEndTime)
-                    .orderByAsc(UserTenantAlbumRecord::getId)
-                    .last("limit 1")
-                    .one();
-            if (record != null) {
+                    .orderByAsc(UserTenantAlbumRecord::getId).list();
+            //忽略已删除的专辑
+            this.ignoreTenantAlbumIds(tenantAlbumRecords);
+            if (CollectionUtils.isNotEmpty(tenantAlbumRecords)) {
+                UserTenantAlbumRecord record = tenantAlbumRecords.get(0);
                 tenantAlbumId = record.getTenantAlbumId();
                 endTime = record.getEndTime();
             }
@@ -958,6 +961,27 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
         return lastUserTenantAlbumRecord;
     }
 
+    //忽略已删除的专辑
+    private void ignoreTenantAlbumIds(List<UserTenantAlbumRecord> albumRecords) {
+        if(CollectionUtils.isNotEmpty(albumRecords)){
+            //获取所有专辑列表
+            List<Long> tenantAlbumIds = albumRecords.stream().map(UserTenantAlbumRecord::getTenantAlbumId).distinct().collect(Collectors.toList());
+            List<Long> ignoreTenantAlbumIds = new ArrayList<>();
+            List<TenantAlbum> list = tenantAlbumService.lambdaQuery().in(TenantAlbum::getId, tenantAlbumIds)
+                    .eq(TenantAlbum::getDelFlag, true).list();
+            if (CollectionUtils.isNotEmpty(list)){
+                ignoreTenantAlbumIds = list.stream().map(TenantAlbum::getId).collect(Collectors.toList());
+            }
+            List<TenantGroupAlbum> groupAlbums = tenantGroupAlbumService.lambdaQuery().in(TenantGroupAlbum::getTenantAlbumId, tenantAlbumIds)
+                    .eq(TenantGroupAlbum::getDelFlag, true).or().eq(TenantGroupAlbum::getStatus, false).list();
+            if (CollectionUtils.isNotEmpty(groupAlbums)){
+                ignoreTenantAlbumIds.addAll(groupAlbums.stream().map(TenantGroupAlbum::getTenantAlbumId).collect(Collectors.toList()));
+            }
+            List<Long> finalIgnoreTenantAlbumIds = ignoreTenantAlbumIds;
+            albumRecords = albumRecords.stream().filter(x -> !finalIgnoreTenantAlbumIds.contains(x.getTenantAlbumId())).collect(Collectors.toList());
+        }
+    }
+
 
     private void sendVipDeductionMessage(Long userId, Integer num,PeriodEnum period,String reason,String tenantAlbumName) {
         // 添加VIP时长短信