lyhzzz 5 ngày trước cách đây
mục cha
commit
e244352ddb

+ 2 - 0
src/main/java/com/fdkankan/ucenter/mapper/IScenePlusMapper.java

@@ -36,4 +36,6 @@ public interface IScenePlusMapper extends BaseMapper<ScenePlus> {
     List<ScenePlus> getCountByUserIdAndSceneSource(@Param("userId")Long userId,@Param("sceneSourceList") List<Integer> sceneSourceList, @Param("isObj")Integer isObj);
 
     Page<RelicsSceneInitQueueDTO> pageLaserScene(Page<RelicsSceneInitQueueDTO> page, LaserSceneParam param);
+
+    Long getCountByAndIsObj(@Param("userId")Long userId, @Param("sceneSourceList")List<String> sourceList, @Param("isObj")Integer isObj,@Param("isLaser")Integer isLaser);
 }

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

@@ -64,4 +64,6 @@ public interface IScenePlusService extends IService<ScenePlus> {
     List<ScenePlus> getCountByUserIdAndSceneSource(Long userId, List<Integer> sceneSourceList, Integer isObj);
 
     Page<RelicsSceneInitQueueDTO> pageLaserScene(Page<RelicsSceneInitQueueDTO> objectPage, LaserSceneParam param);
+
+    Long getCountByAndIsObj(Long userId, List<String> sourceList, Integer isObj,Integer isLaser);
 }

+ 5 - 0
src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java

@@ -441,4 +441,9 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     public Page<RelicsSceneInitQueueDTO> pageLaserScene(Page<RelicsSceneInitQueueDTO> objectPage, LaserSceneParam param) {
         return this.getBaseMapper().pageLaserScene(objectPage,param);
     }
+
+    @Override
+    public Long getCountByAndIsObj(Long userId, List<String> sourceList, Integer isObj,Integer isLaser) {
+        return this.getBaseMapper().getCountByAndIsObj(userId,sourceList,isObj, isLaser);
+    }
 }

+ 15 - 41
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -525,9 +525,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             User user = userService.getByUserName(username);
             param.setUserId(user.getId());
         }
-        if(!SceneSourceUtil.isLaser(param.getSourceList())){
-            param.setIsObj(0);
-        }
+//        if(!SceneSourceUtil.isLaser(param.getSourceList())){
+//            param.setIsObj(0);
+//        }
         Page<SceneVo> sceneVoPage = getBaseMapper().pageListAndFolder(new Page<>(param.getPageNum(),param.getPageSize()),param);
         for (SceneVo record : sceneVoPage.getRecords()) {
             if(param.getIsObj()== 0 && SceneSourceUtil.isLaser(record.getSceneSource())){
@@ -600,18 +600,17 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             folderList.addAll(sceneList);
         }
         sceneVoPage.setRecords(folderList);
-        if(param.getFolderId() == null && param.getIsObj() == 0 ){
-            List<String> sourceList = param.getSourceList();
-            if(param.getUserId()!= null){
-                totalSceneNum = this.getCountByUserId(param.getUserId(),sourceList);
-                totalSceneNum += scenePlusService.getCountByUserId(param.getUserId(),sourceList);
-                totalSceneNum += sceneService.getCountByUserId(param.getUserId());
-            }
-        }else if(param.getFolderId() != null ){
-            totalSceneNum = folderSceneService.getCountByFolderAndSon(param.getFolderId());
-        }else if(param.getIsObj() == 1){
-            if(param.getUserId()!= null){
-                totalSceneNum = this.getCountByLaserAndIsObj(param.getUserId(),Integer.valueOf(param.getSceneSource()));
+        if(param.getHasFolder() == 1){
+            if(param.getFolderId() == null ){
+                List<String> sourceList = param.getSourceList();
+                if(param.getUserId()!= null){
+                    totalSceneNum = scenePlusService.getCountByAndIsObj(param.getUserId(),sourceList,param.getIsObj(), SceneSourceUtil.isLaser(sourceList) ?1:0);
+                    if(sourceList.isEmpty() || sourceList.contains("1")){
+                        totalSceneNum += sceneService.getCountByUserId(param.getUserId());
+                    }
+                }
+            }else {
+                totalSceneNum = folderSceneService.getCountByFolderAndSon(param.getFolderId());
             }
         }
         JSONObject jsonObject = new JSONObject();
@@ -620,31 +619,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         return jsonObject;
     }
 
-    private Long getCountByLaserAndIsObj(Long userId,Integer sceneSource) {
-        Long proCount = 0L;
-        Long plusCount = 0L;
-        LambdaQueryWrapper<ScenePro> proWr = new LambdaQueryWrapper<>();
-        proWr.eq(ScenePro::getUserId,userId);
-        proWr.eq(ScenePro::getSceneSource,sceneSource);
-        proWr.eq(ScenePro::getIsObj,1);
-        proWr.eq(ScenePro::getIsUpgrade,0);
-        proCount = this.count(proWr);
-
-        LambdaQueryWrapper<ScenePlus> plusWr = new LambdaQueryWrapper<>();
-        plusWr.eq(ScenePlus::getUserId,userId);
-        plusWr.eq(ScenePlus::getSceneSource,sceneSource);
-        List<ScenePlus> list = scenePlusService.list(plusWr);
-        if(list.size() >0){
-            List<Long> plusIds = list.stream().map(ScenePlus::getId).collect(Collectors.toList());
-
-            LambdaQueryWrapper<ScenePlusExt> extWr = new LambdaQueryWrapper<>();
-            extWr.in(ScenePlusExt::getPlusId,plusIds);
-            extWr.eq(ScenePlusExt::getIsObj,1);
-            plusCount = scenePlusExtService.count(extWr);
-        }
-
-        return proCount +plusCount;
-    }
 
     public List<String> getSceneSource(String sceneSource){
         List<String> sceneSourceList ;
@@ -663,7 +637,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             }
             return sceneSourceList;
         }
-        return Arrays.asList("0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15");
+        return new ArrayList<>();
     }
     @Override
     public void copyScene(String sceneNum,String userName) throws Exception {

+ 37 - 4
src/main/resources/mapper/ucenter/ScenePlusMapper.xml

@@ -112,18 +112,51 @@
         WHERE s.rec_status = 'A' and s.user_id = #{userId}
         GROUP BY scene_source,is_obj
     </select>
+
     <select id="getCountByUserIdAndSceneSource" resultType="com.fdkankan.ucenter.entity.ScenePlus">
         select s.* from t_scene_plus s LEFT JOIN t_scene_plus_ext e on s.id = e.plus_id
         WHERE s.rec_status = 'A' and s.user_id = #{userId}
-        and s.scene_source in
-        <foreach collection="sceneSourceList" item="sceneSource" open="(" separator="," close=")">
-            #{sceneSource}
-        </foreach>
+        <if test="sceneSourceList !=null and sceneSourceList.size >0">
+            and s.scene_source in
+            <foreach collection="sceneSourceList" item="sceneSource" open="(" separator="," close=")">
+                #{sceneSource}
+            </foreach>
+        </if>
         <if test="isObj != null and isObj==1 ">
             and e.is_obj = 1
         </if>
     </select>
 
+
+    <select id="getCountByAndIsObj" resultType="com.fdkankan.ucenter.entity.ScenePlus">
+        SELECT
+        (select count(s.id) from t_scene_plus s LEFT JOIN t_scene_plus_ext e on s.id = e.plus_id
+        WHERE s.rec_status = 'A' and s.user_id = #{userId}
+        <if test="sceneSourceList !=null and sceneSourceList.size >0">
+            and s.scene_source in
+            <foreach collection="sceneSourceList" item="sceneSource" open="(" separator="," close=")">
+                #{sceneSource}
+            </foreach>
+        </if>
+        <if test="isObj != null and isObj==1 and isLaser ==1">
+            and e.is_obj = 1
+        </if>
+        )
+        +
+        (select count(s.id) from t_scene_pro s
+        WHERE s.rec_status = 'A' and s.user_id = #{userId}
+        <if test="sceneSourceList !=null and sceneSourceList.size >0">
+            and s.scene_source in
+            <foreach collection="sceneSourceList" item="sceneSource" open="(" separator="," close=")">
+                #{sceneSource}
+            </foreach>
+        </if>
+        <if test="isObj != null and isObj==1 and isLaser ==1 ">
+            and s.is_obj = 1
+        </if>
+        )
+    </select>
+
     <select id="pageLaserScene" resultType="com.fdkankan.ucenter.vo.RelicsSceneInitQueueDTO">
         select * from t_scene_plus s LEFT JOIN t_scene_plus_ext e on s.id = e.plus_id
         WHERE s.rec_status = 'A' and s.user_id = #{param.userId}

+ 6 - 4
src/main/resources/mapper/ucenter/SceneProMapper.xml

@@ -110,10 +110,12 @@
     </sql>
 
     <sql id="commonSceneWhere">
-        scene_source in
-        <foreach item="sourceId" collection="param.sourceList" open="(" separator="," close=")">
-            #{sourceId}
-        </foreach>
+        <if test="param.sourceList !=null and param.sourceList.size >0">
+            scene_source in
+            <foreach item="sourceId" collection="param.sourceList" open="(" separator="," close=")">
+                #{sourceId}
+            </foreach>
+        </if>
         <if test="param.folderId == null and param.hasFolder == 1 ">
             AND p.id not in(SELECT scene_id FROM t_folder_scene where rec_status = 'A')
         </if>