Selaa lähdekoodia

深时,深光添加会员限制

lyhzzz 1 vuosi sitten
vanhempi
commit
8971bfbf93

+ 1 - 3
src/main/java/com/fdkankan/ucenter/mq/consumer/ScenePayStatusConsumer.java

@@ -45,9 +45,7 @@ public class ScenePayStatusConsumer {
             if(vo == null){
                 return;
             }
-            if(vo.getSceneId() != null && vo.getPayStatus() != null){
-                sceneProService.lockOrUnLockScenes(Arrays.asList(vo.getSceneId()),vo.getPayStatus());
-            }else if(vo.getCameraId() != null){
+            if(vo.getCameraId() != null){
                 sceneProService.lockOrUnLockBySpace(vo.getCameraId());
             }
 

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

@@ -32,10 +32,10 @@ public interface ISceneProService extends IService<ScenePro> {
 
 
     void lockOrUnLockBySpace(CameraDetail cameraDetail, Long cameraId);
+    public void lockOrUnLockScenes( List<String> v3NumList,List<String> v4NumList,Integer payStatus,Integer isLaser);
 
-    void lockOrUnLockBySpace(Long cameraId);
+        void lockOrUnLockBySpace(Long cameraId);
 
-    void lockOrUnLockScenes(List<Long> lockedIds,Integer payStatus);
 
     List<ScenePro> getListByCameraId(Long cameraId);
 

+ 3 - 0
src/main/java/com/fdkankan/ucenter/service/impl/CameraDetailServiceImpl.java

@@ -302,6 +302,9 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
 
     @Override
     public Boolean checkSpace(CameraDetail detailEntity, Long space,CameraType cameraType) {
+        if(detailEntity == null){
+            return false;
+        }
         if (!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 1) {
             return true;
         }

+ 14 - 6
src/main/java/com/fdkankan/ucenter/service/impl/DownService.java

@@ -206,16 +206,17 @@ public class DownService implements IDownService {
             throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
         }
         ScenePro scenePro = sceneProService.getByNum(sceneNum);
-        ScenePlus scenePlus = scenePlusService.getByNum(sceneNum);
-        if(scenePro == null && scenePlus == null){
+        ScenePlus plus = scenePlusService.getByNum(sceneNum);
+        if(scenePro == null && plus == null){
             throw new BusinessException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
         }
-        Integer sceneType = scenePro !=null ? scenePro.getSceneSource() : scenePlus.getSceneSource();
+        Long cameraId = scenePro !=null ? scenePro.getCameraId() : plus.getCameraId();
+        CameraType cameraType = cameraTypeService.getByCameraId(cameraId);
 
         isObj = isObj == null ?0 :isObj;
 
-        log.info("downloadProcess--sceneType:{},isObj:{}",sceneType,isObj);
-        if((sceneType == 4 || sceneType == 5 )&& isObj !=1){ //深时场景
+        log.info("downloadProcess--cameraType:{},isObj:{}",cameraType.getCameraType(),isObj);
+        if(cameraType.getIsLaser() == 1 && isObj !=1){ //深时场景
             return SSDownloadProcess(sceneNum);
         }
         String redisKey = RedisKey.PREFIX_DOWNLOAD_PROGRESS;
@@ -245,7 +246,14 @@ public class DownService implements IDownService {
                     }
                 case DownloadStatusEnum.DOWNLOAD_FAILED_CODE:
                     sceneDownloadLog.setStatus(-1);
-                    userService.updateDownloadNum(userId, -1);
+                    LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
+                    wrapper.eq(User::getId,userId);
+                    if(!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 1 ){    //深时场景
+                        wrapper.setSql("ss_download_num = ss_download_num - " + 1);
+                    }else {
+                        wrapper.setSql("download_num = download_num - " + 1);
+                    }
+                    userService.update(wrapper);
                     break;
             }
             sceneDownloadLogService.updateById(sceneDownloadLog);

+ 6 - 3
src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java

@@ -93,6 +93,8 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     ISceneCopyLogService sceneCopyLogService;
     @Autowired
     private IUserService userService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
 
     @Override
@@ -176,6 +178,7 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         String oldNum = scenePlus.getNum();
 
         Long plusId = scenePlus.getId();
+        CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
 
         ScenePlusExt plusExt = scenePlusExtService.getByPlusId(plusId);
         if(plusExt == null){
@@ -260,7 +263,7 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
 
                 sceneCommonService.updateNasSceneJson(targetData,oldNum,newNum,scenePlus.getTitle(),"v4","scene.json");
 
-                if(scenePlus.getSceneSource() == 4 || scenePlus.getSceneSource() == 5){  //深时复制
+                if(cameraType.getIsLaser() == 1){  //深时复制
                     String laserPath = laserService.copyDataSource(oldDataSource,plusExt.getDataSource());
                     laserService.copy(oldNum,scenePlus.getCameraId(),scenePlus.getCreateTime(),newNum,2,laserPath,
                             sceneEditInfo.getScenePassword(),plusExt.getLocation(),scenePlus.getUserId(),"V4",plusExt.getIsObj(),scenePlus.getSceneSource(),plusExt.getAlgorithmTime(),plusExt.getShootCount());
@@ -269,9 +272,9 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                 this.updateById(scenePlus);
                 sceneCopyLogService.saveByNum(oldNum,newNum,scenePlus.getUserId());
 
-                Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail.getCameraId(), plusExt.getSpace());
+                Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail, plusExt.getSpace(),cameraType);
                 if(!checkSpace){
-                    sceneProService.lockOrUnLockScenes(Arrays.asList(scenePlus.getId()),-2);
+                    sceneProService.lockOrUnLockScenes(new ArrayList<>(),Arrays.asList(scenePlus.getNum()),-2,cameraType.getIsLaser());
                 }
                 cameraDetailService.addUsedSpace(cameraDetail,plusExt.getSpace());
 

+ 27 - 18
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -32,6 +32,7 @@ import com.fdkankan.ucenter.constant.CameraConstant;
 import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.httpClient.service.LaserService;
+import com.fdkankan.ucenter.httpClient.service.PayService;
 import com.fdkankan.ucenter.mapper.ISceneProMapper;
 import com.fdkankan.ucenter.mapper.ISceneUpgradeMapper;
 import com.fdkankan.ucenter.service.*;
@@ -264,8 +265,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         List<SimpleSceneVo> sceneVos = voList.stream().sorted(Comparator.comparing(SimpleSceneVo::getCreateTime).reversed()).collect(Collectors.toList());
 
         if(totalSpace == -1){  //  无限容量 全部解封
-            List<Long> sceneIds = sceneVos.stream().filter(entity -> entity.getPayStatus() !=1).map(SimpleSceneVo::getId).collect(Collectors.toList());
-            lockOrUnLockScenes(sceneIds,1);
+            lockOrUnLockScenes(sceneVos,1,cameraType);
             return;
         }
 
@@ -277,7 +277,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             sceneVos = sceneVos.stream().filter(entity -> entity.getPayStatus() ==1).collect(Collectors.toList());
             Long space = getSceneLockedIds(lockedIds, sceneVos, usedSpace - totalSpace,cameraDetail.getUnit());
             log.info("lockOrUnLockBySpace---cameraId:{},totalSpace:{},useSpace{},space:{},payStatus:{}", cameraId,totalSpace,usedSpace,space,-2);
-            lockOrUnLockScenes(lockedIds,-2,cameraType.getIsLaser());
+            lockOrUnLockScenes(lockedIds,-2,cameraType);
             return;
         }
 
@@ -286,10 +286,16 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             CollectionUtil.reverse(sceneVos);
             Long space = getSceneUnLockedIds(lockedIds, sceneVos, totalSpace - usedSpace,cameraDetail.getUnit());
             log.info("lockOrUnLockBySpace---cameraId:{},totalSpace:{},useSpace{},space:{},payStatus:{}", cameraId,totalSpace,usedSpace,space,1);
-            lockOrUnLockScenes(lockedIds,1,cameraType.getIsLaser());
+            lockOrUnLockScenes(lockedIds,1,cameraType);
         }
     }
 
+    private void lockOrUnLockScenes(List<SimpleSceneVo> sceneVos, Integer payStatus,CameraType cameraType){
+        List<String> v3NumList = sceneVos.stream().filter(e ->"v3".equals(e.getVersion())).map(SimpleSceneVo::getNum).collect(Collectors.toList());
+        List<String> v4NumList = sceneVos.stream().filter(e ->"v4".equals(e.getVersion())).map(SimpleSceneVo::getNum).collect(Collectors.toList());
+        lockOrUnLockScenes(v3NumList,v4NumList,payStatus,cameraType.getIsLaser());
+    }
+
     private Long getSceneUnLockedIds(List<SimpleSceneVo> lockedIds ,List<SimpleSceneVo> list,Long beyondSpace,String unit){
         Long space = 0L;
         if (list != null && list.size() > 0){
@@ -328,23 +334,20 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
 
     // payStatus 为 -2 封存,为 1 解封
-    public void lockOrUnLockScenes(List<SimpleSceneVo> lockedIds,Integer payStatus,Integer isLaser) {
-        if (lockedIds == null || lockedIds.size() == 0){
-            return;
-        }
-        List<String> v3NumList = lockedIds.stream().filter(e ->"v3".equals(e.getVersion())).map(SimpleSceneVo::getNum).collect(Collectors.toList());
-        List<String> v4NumList = lockedIds.stream().filter(e ->"v4".equals(e.getVersion())).map(SimpleSceneVo::getNum).collect(Collectors.toList());
+    @Override
+    public void lockOrUnLockScenes( List<String> v3NumList,List<String> v4NumList,Integer payStatus,Integer isLaser) {
+
         if(!v3NumList.isEmpty()){
             LambdaUpdateWrapper<ScenePro> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.set(ScenePro::getPayStatus,payStatus)
                     .eq(ScenePro::getIsUpgrade,0)
-                    .in(ScenePro::getNum,lockedIds);
+                    .in(ScenePro::getNum,v3NumList);
             this.update(updateWrapper);
         }
         if(!v4NumList.isEmpty()){
             LambdaUpdateWrapper<ScenePlus> updatePlusWrapper = new LambdaUpdateWrapper<>();
             updatePlusWrapper.set(ScenePlus::getPayStatus,payStatus)
-                    .in(ScenePlus::getNum,lockedIds);
+                    .in(ScenePlus::getNum,v4NumList);
             scenePlusService.update(updatePlusWrapper);
         }
 
@@ -352,9 +355,13 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
         if(isLaser == 1){
             //激光系统相机
-            //1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4重算中
-            v3NumList.addAll(v4NumList);
-            laserService.updateStatus(v3NumList,payStatus== 1 ?2:3);
+            //1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4重算中'
+            List<String> numList = new ArrayList<>();
+            numList.addAll(v3NumList);
+            numList.addAll(v4NumList);
+            if(!numList.isEmpty()){
+                laserService.updateStatus(numList,payStatus== 1 ?2:3);
+            }
         }
     }
 
@@ -751,6 +758,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         scenePro.setStatus(0);
         this.save(scenePro);
 
+        CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+
         ExecutorService executor = ThreadUtil.newSingleExecutor();
         try {
 
@@ -809,7 +818,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 String targetVoice = String.format(SceneResourcePath.voicePath, scenePro.getNum());
                 this.copyOssAndNas(oldNum,scenePro.getNum(),sourceVoice,targetVoice);
 
-                if(scenePro.getSceneSource() == 4 || scenePro.getSceneSource() == 5){  //深时复制
+                if(cameraType.getIsLaser() == 1){  //深时复制
                     String laserPath = laserService.copyDataSource(oldDataSource,scenePro.getDataSource());
                     laserService.copy(oldNum,scenePro.getCameraId(),scenePro.getCreateTime(),newNum,2,laserPath,
                             oldEditScene.getSceneKey(),null,scenePro.getUserId(),"V3",scenePro.getIsObj(),scenePro.getSceneSource(),scenePro.getCreateTime(),scenePro.getShootCount());
@@ -819,9 +828,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
                 sceneCopyLogService.saveByNum(oldNum,newNum,scenePro.getUserId());
 
-                Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail.getCameraId(), scenePro.getSpace());
+                Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail, scenePro.getSpace(),cameraType);
                 if(!checkSpace){
-                    this.lockOrUnLockScenes(Arrays.asList(scenePro.getId()),-2);
+                    this.lockOrUnLockScenes(Arrays.asList(scenePro.getNum()),new ArrayList<>(),-2,cameraType.getIsLaser());
                 }
                 cameraDetailService.addUsedSpace(cameraDetail,scenePro.getSpace());