dengsixing 10 tháng trước cách đây
mục cha
commit
7295411ba0

+ 19 - 12
src/main/java/com/fdkankan/jp/xspace/service/impl/SceneXspaceServiceImpl.java

@@ -121,21 +121,28 @@ public class SceneXspaceServiceImpl extends ServiceImpl<ISceneXspaceMapper, Scen
     @Override
     public Result sync(List<String> nums, User user) {
 
+//        List<String> canSyncList = nums;//实际需要同步的场景集合
+//        if(CollUtil.isNotEmpty(syncList)){
+//            List<String> doneNumsList = syncList.stream().map(v -> v.getNum()).collect(Collectors.toList());
+//            canSyncList = nums.stream().filter(v->!doneNumsList.contains(v)).collect(Collectors.toList());
+//        }
+//        if(CollUtil.isEmpty(canSyncList)){
+//            return  Result.success();
+//        }
+
+        List<ScenePlus> scenePlusList = scenePlusService.list(new LambdaQueryWrapper<ScenePlus>().in(ScenePlus::getNum, nums));//.eq(ScenePlus::getUserId, user.getId());
+        if(CollUtil.isEmpty(scenePlusList)){
+            return Result.success();
+        }
 
         //过滤掉已同步的场景,防止前端传参错误
-        List<SceneXspace> syncList = this.list(new LambdaQueryWrapper<SceneXspace>().in(SceneXspace::getNum, nums));//.eq(SceneXspace::getUserId, user.getId()));
-        List<String> canSyncList = nums;//实际需要同步的场景集合
+        List<SceneXspace> syncList = this.list(new LambdaQueryWrapper<SceneXspace>().in(SceneXspace::getNum, nums));
         if(CollUtil.isNotEmpty(syncList)){
-            List<String> doneNumsList = syncList.stream().map(v -> v.getNum()).collect(Collectors.toList());
-            canSyncList = nums.stream().filter(v->!doneNumsList.contains(v)).collect(Collectors.toList());
-        }
-        if(CollUtil.isEmpty(canSyncList)){
-            return  Result.success();
-        }
-
-        List<ScenePlus> scenePlusList = scenePlusService.list(new LambdaQueryWrapper<ScenePlus>().in(ScenePlus::getNum, canSyncList));//.eq(ScenePlus::getUserId, user.getId());
-        if(CollUtil.isEmpty(scenePlusList)){
-            return Result.success();
+            Set<String> doneSet = syncList.stream().map(v -> v.getNum() + "-" + v.getUserId()).collect(Collectors.toSet());
+            scenePlusList = scenePlusList.stream().filter(v -> {
+                String userId = v.getUserId() == null ? "" : String.valueOf(v.getUserId());
+                return doneSet.contains(v.getNum() + "-" + userId);
+            }).collect(Collectors.toList());
         }
 
         //平台管理员:能查看全部场景数据并且支持同步全部得数据 (平台管理员同步后的场景还是归属于之前这个场景的归属者)