lyhzzz 2 年之前
父节点
当前提交
e4105ed50f

+ 6 - 3
src/main/java/com/fdkankan/ucenter/controller/TestController.java

@@ -10,9 +10,11 @@ import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.ucenter.common.OssPath;
 import com.fdkankan.ucenter.common.RedisKeyUtil;
 import com.fdkankan.ucenter.common.Result;
+import com.fdkankan.ucenter.service.IFolderSceneService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
@@ -22,11 +24,12 @@ import java.util.Map;
 @RestController
 public class TestController {
     @Resource
-    private FYunFileServiceInterface fYunFileService;
+    private IFolderSceneService folderSceneService;
 
     @RequestMapping("/test")
-    public Result test() throws Exception {
-        return Result.success( );
+    public Result test(@RequestParam(required = false) Long id) throws Exception {
+        Long count = folderSceneService.getCountByFolderAndSon(id);
+        return Result.success( count);
     }
 
 }

+ 2 - 0
src/main/java/com/fdkankan/ucenter/service/IFolderSceneService.java

@@ -22,4 +22,6 @@ public interface IFolderSceneService extends IService<FolderScene> {
     FolderScene getByType(Long sceneId, Integer type);
 
     HashMap<Long, Long> getGroupByFolderIds(List<Folder> folderIds);
+
+    Long getCountByFolderAndSon(Long folderId);
 }

+ 1 - 1
src/main/java/com/fdkankan/ucenter/service/ISceneProService.java

@@ -37,7 +37,7 @@ public interface ISceneProService extends IService<ScenePro> {
 
     List<ScenePro> getListByNums(List<String> numList);
 
-    Long getCountByUserId(Long id, List<Integer> resourceList);
+    Long getCountByUserId(Long id, List<?> resourceList);
 
     Long getCountByUserId(Long id, Integer cameraType);
 

+ 28 - 0
src/main/java/com/fdkankan/ucenter/service/impl/FolderSceneServiceImpl.java

@@ -13,6 +13,7 @@ import com.fdkankan.ucenter.vo.response.GroupByCount;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -74,4 +75,31 @@ public class FolderSceneServiceImpl extends ServiceImpl<IFolderSceneMapper, Fold
         }
         return folder;
     }
+
+    @Override
+    public Long getCountByFolderAndSon(Long folderId) {
+        List <Long > folderIdList = new ArrayList<>();
+        folderIdList.add(folderId);
+        this.getFolderSon(folderId,folderIdList);
+        if(folderIdList.size() >0){
+            LambdaQueryWrapper<FolderScene> wrapper = new LambdaQueryWrapper<>();
+            wrapper.in(FolderScene::getFolderId,folderIdList);
+            return this.count(wrapper);
+        }
+        return 0L;
+    }
+
+    private void getFolderSon(Long folderId, List<Long> folderIdList) {
+        LambdaQueryWrapper<Folder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Folder::getParentId,folderId);
+        List<Folder> list = folderService.list(wrapper);
+        if(list.size() <=0){
+            return;
+        }
+        List<Long> collect = list.stream().map(Folder::getId).collect(Collectors.toList());
+        folderIdList.addAll(collect);
+        for (Long aLong : collect) {
+            this.getFolderSon(aLong,folderIdList);
+        }
+    }
 }

+ 11 - 6
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -348,7 +348,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         return this.list(wrapper);
     }
     @Override
-    public Long getCountByUserId(Long userId, List<Integer> resourceList) {
+    public Long getCountByUserId(Long userId, List<?> resourceList) {
         LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(ScenePro::getUserId,userId);
         wrapper.eq(ScenePro::getIsUpgrade,0);
@@ -384,18 +384,17 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         Page<SceneVo> sceneVoPage = getBaseMapper().pageListAndFolder(new Page<>(param.getPageNum(),param.getPageSize()),param);
 
         List<SceneVo> folderList = sceneVoPage.getRecords().parallelStream().filter(entity -> entity.getIsFolder() == 1).collect(Collectors.toList());
-        Integer folderNum = 0;
+        Long totalSceneNum = 0L;
         if(folderList.size() >0){
             List<Long> folderIds = folderList.parallelStream().map(SceneVo::getId).collect(Collectors.toList());
             List<Folder> allFolderIds = folderService.getAllFolderIds(folderIds);
-            folderNum = allFolderIds.size();
             HashMap<Long,Long> map = folderSceneService.getGroupByFolderIds(allFolderIds);
             for (SceneVo vo : sceneVoPage.getRecords()) {
-                if(vo.getIsFolder() == 1 && vo.getType()!= 3){
+                if(vo.getIsFolder() == 1 && vo.getType()!= null && vo.getType()!= 3){
                     Long sceneNum = map.get(vo.getId()) == null ? 0L : map.get(vo.getId());
                     vo.setSceneNum(sceneNum);
                     vo.setCreateTimeStr(vo.getCreateTime());
-                }else if(vo.getType() == 3){
+                }else if(vo.getIsFolder() == 1 && vo.getType()!= null && vo.getType() == 3){
                     Integer count = sceneService.getCountByUserId(user.getId());
                     vo.setSceneNum(Long.valueOf(count));
                 }
@@ -421,9 +420,15 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             folderList.addAll(sceneList);
         }
         sceneVoPage.setRecords(folderList);
+        if(param.getFolderId() == null){
+            List<String> sourceList = param.getSourceList();
+            totalSceneNum = this.getCountByUserId(user.getId(),sourceList);
+        }else {
+            totalSceneNum = folderSceneService.getCountByFolderAndSon(param.getFolderId());
+        }
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("pageInfo",PageInfo.PageInfo(sceneVoPage));
-        jsonObject.put("sceneNum",sceneVoPage.getTotal() - folderNum);
+        jsonObject.put("sceneNum",totalSceneNum);
         return jsonObject;
     }