xiewenjie пре 3 година
родитељ
комит
b7e9ebfe6c

+ 9 - 8
src/main/java/com/fdkk/fdkkmeta/ctroller/DevController.java

@@ -161,18 +161,19 @@ public class DevController   {
         redisCache.setCacheList("setCacheRequest:rotate:"+1, Arrays.asList(1));
         redisCache.setCacheList("setCacheRequest:rotate:"+1, Arrays.asList(2));
         redisCache.setCacheList("setCacheRequest:rotate:"+1, Arrays.asList(3));
+        redisCache.setCacheList("setCacheRequest:rotate:"+1, Arrays.asList(4));
+        redisCache.setCacheList("setCacheRequest:rotate:"+1, Arrays.asList(5));
+        redisCache.setCacheList("setCacheRequest:rotate:"+1, Arrays.asList(6));
+        redisCache.setCacheList("setCacheRequest:rotate:"+1, Arrays.asList(7));
+        redisCache.setCacheList("setCacheRequest:rotate:"+1, Arrays.asList(8));
 
         List<Object> cacheList = redisCache.getCacheList("setCacheRequest:rotate:" + 1);
-        if(cacheList == null || cacheList.size()==0){
-            redisCache.setCacheList("setCacheRequest:rotate:"+userId, Arrays.asList(value));
-        }
-        else{
-            redisCache.setCacheList("setCacheRequest:rotate:"+userId, Arrays.asList(value));
-        }
-        redisCache.lRemove("setCacheRequest:rotate:"+1,0,2);
-        redisCache.delete("setCacheRequest:rotate:"+userId);
+
         List<Object> cacheList1 = redisCache.getCacheList("setCacheRequest:rotate:" + 1);
 
+        redisCache.lTrim("setCacheRequest:rotate:"+1, 1,-1);
+        List<Object> cacheList2 = redisCache.getCacheList("setCacheRequest:rotate:" + 1);
+
         System.out.println(cacheList);
     }
 

+ 29 - 11
src/main/java/com/fdkk/fdkkmeta/grpcService/sceneGrpcServer.java

@@ -153,13 +153,15 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 
 			//返回
 			NormalReply.Builder builder = NormalReply.newBuilder();
-			builder.setCode(1);
+			builder.setCode(200);
 			responseObserver.onNext(builder.build());
 			responseObserver.onCompleted();
 		}
     	catch(Exception e) {
     		e.printStackTrace();
-			//builder.setCode(0);
+			responseObserver.onNext(NormalReply.newBuilder().setCode(500).build());
+			responseObserver.onCompleted();
+			log.error("initException{}",e.getMessage());
     	}
     }
 
@@ -197,13 +199,15 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 			redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(rotateRequestPO));
 			//没有更新user表中的frame_id,因为这样太慢了,后续再处理
 			NormalReply.Builder builder = NormalReply.newBuilder();
-			builder.setCode(1);
+			builder.setCode(200);
 			responseObserver.onNext(builder.build());
 			responseObserver.onCompleted();
     	}
     	catch(Exception e) {
     		e.printStackTrace();
-			//builder.setCode(0);
+			responseObserver.onNext(NormalReply.newBuilder().setCode(500).build());
+			responseObserver.onCompleted();
+			log.error("rotateException{}",e.getMessage());
     	}
     }
 	@Override
@@ -234,6 +238,7 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 		}
 		catch(Exception e) {
 			e.printStackTrace();
+			log.error("echoException{}",e.getMessage());
 		}
 	}
 	@Override
@@ -303,7 +308,7 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 				}
 			}
 			//builder.setNewUserStates();
-			builder.setCode(0);
+			builder.setCode(200);
 			builder.setMsg("");
 
 			responseObserver.onNext(builder.build());
@@ -311,6 +316,9 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 		}
 		catch (Exception e){
 			e.printStackTrace();
+			responseObserver.onNext(GetNewUserStateReply.newBuilder().setCode(500).build());
+			responseObserver.onCompleted();
+			log.error("usersStateException{}",e.getMessage());
 		}
 	}
 	@Override
@@ -372,14 +380,17 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 			}
 
 			NormalReply.Builder builder = NormalReply.newBuilder();
-			builder.setCode(1);
-			responseObserver.onNext(builder.build());
-			responseObserver.onCompleted();
+			builder.setCode(200);
+
 		}
 		catch (Exception e){
 			e.printStackTrace();
 			//builder.setCode(0);
+			responseObserver.onNext(NormalReply.newBuilder().setCode(500).build());
+			responseObserver.onCompleted();
+			log.error("moveException{}",e.getMessage());
 		}
+
 	}
 
 	private AnglePO setRotateForMove(UserEntity user,String trace_id,AnglePO cameraAngle){
@@ -441,7 +452,7 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
      				.setReserveDetail(null)
      				//.setUserWithAvatarList()
      				//.setNewUserStates()
-     				.setCode(0)
+     				.setCode(200)
      				.setMsg("")
      				.build();
             responseObserver.onNext(res);
@@ -450,7 +461,11 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
     	}
     	catch(Exception e) {
     		e.printStackTrace();
-    	}
+			responseObserver.onNext(BreakPointReply.newBuilder().setCode(500).build());
+			responseObserver.onCompleted();
+			log.error("BreakPointException{}",e.getMessage());
+
+		}
     }
 
     //操作杆
@@ -523,12 +538,15 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 			//找到与角度move_angle最近的邻居点
      		//移动player,并且更新相机角度
 			NormalReply.Builder builder = NormalReply.newBuilder();
-			builder.setCode(1);
+			builder.setCode(200);
 			responseObserver.onNext(builder.build());
 			responseObserver.onCompleted();
     	}
     	catch(Exception e) {
     		e.printStackTrace();
+			responseObserver.onNext(NormalReply.newBuilder().setCode(500).build());
+			responseObserver.onCompleted();
+			log.info("joystickException{}",e.getMessage());
     	}
     }
 

+ 136 - 131
src/main/java/com/fdkk/fdkkmeta/task/UpdateFrameMetaTask.java

@@ -63,152 +63,157 @@ public class UpdateFrameMetaTask {
    }
 
     private void handle(UserEntity user,List<ActionPO> list){
+        try {
+            if(list.size() == 0){
+                //写入一个默认数据到redis里
+                createDefaultFrameMetadata( user);
+                return;
+            }
 
-        if(list.size() == 0){
-            //写入一个默认数据到redis里
-            createDefaultFrameMetadata( user);
-            return;
-        }
-
-        List<ActionPO> rotateJoystickList = new ArrayList<ActionPO>();
-        JSONObject myState = redisCache.getCacheObject("UserState"+user.getUserId());
-
-        ActionPO _actionPO = list.get(0);
-        int firstActionType = _actionPO.getAction_type();
-        JSONArray path = _actionPO.getPath();
-        if(firstActionType == 1014||firstActionType == 15){
-            rotateJoystickList.add(_actionPO);
-        }
-        else if(firstActionType == 1){
-            long startBreakPointId = path.getLongValue(0);
-            long endBreakPointId = path.getLongValue(1);
-            BreakpointsEntity startBreakpointsEntity = breakpointsService.findById(startBreakPointId);
-            BreakpointsEntity endBreakpointsEntity = breakpointsService.findById(endBreakPointId);
-
-            //过渡
-            if(myState.getIntValue("isMoving") == 1){
-                MoveFrameEntity moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex()+1);
-                //准备过渡下一段
-                if(moveFrameEntity==null){
-                    RotateFrameEntity rotateFrameEntity = rotateFrameService.findByAppIdAndBreakPointIdAndFrameIndex(user.getAppId(),endBreakPointId,_actionPO.getCameraAngle().getYaw());
-                    path.remove(0);
-                    if(path.size()>1){
-                        startBreakPointId = endBreakPointId;
-                        endBreakPointId = path.getLongValue(1);
-                        _actionPO.setPath(path);
-                        _actionPO.setFrameIndex(0);
-                        _actionPO.setStartPostion(null);
-                        _actionPO.setEndPosition(null);
-
-                        int subFrameIndex = moveFrameService.getCountByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngle( user.getAppId(),startBreakPointId,endBreakPointId, _actionPO.getCameraAngle().getYaw()%45);
-                        _actionPO.setSubFrameIndex(subFrameIndex);
-                        _actionPO.setPlayerPosition(endBreakpointsEntity.getPosition());
-
-                        startBreakpointsEntity = breakpointsService.findById(startBreakPointId);
-                        endBreakpointsEntity = breakpointsService.findById(endBreakPointId);
-                        int _angle = sceneGrpcService.calAngleForBreakPointId(startBreakpointsEntity,endBreakpointsEntity);
-                        AnglePO playerAngle = user.getPlayerAngle();
-                        playerAngle.setYaw(_angle);
-                        _actionPO.setPlayerAngle(playerAngle);
-                        //更新redis记录
-                        redisCache.setCacheListByIndex("setCacheRequest"+user.getUserId(),0,_actionPO);
-
-                        myState.put("isMoving",0);
-                        redisCache.setCacheObject("UserState"+user.getUserId(),myState);
-
-                        //moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),0);
-                        user.setFrameId(rotateFrameEntity.getId());
-                        user.setPlayerAngle(playerAngle);
-                        user.setBreakPointId(startBreakPointId);
-                        user.setPlayerPosition(startBreakpointsEntity.getPosition());
-                        userService.updateById(user);
-                    }
-                    //过渡全部结束
-                    else{
-                        //删除redis里的数据
-                        redisCache.lTrim("setCacheRequest"+user.getUserId(),1,-1);
-                        //更新user表
-                        //moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex());
-                        user.setPlayerPosition(endBreakpointsEntity.getPosition());
-                        user.setFrameId(rotateFrameEntity.getId());
-                        user.setPlayerAngle(_actionPO.getPlayerAngle());
-                        user.setBreakPointId(endBreakPointId);
-                        userService.updateById(user);
-
-                        myState.put("isMoving",0);
-                        redisCache.setCacheObject("UserState"+user.getUserId(),myState);
-                        //执行下一条记录
-                        list.remove(0);
-                    }
+            List<ActionPO> rotateJoystickList = new ArrayList<ActionPO>();
+            JSONObject myState = redisCache.getCacheObject("UserState"+user.getUserId());
 
-                    handle( user,list);
-                    return ;
-                }
-                //更新
-                if(_actionPO.getStartPostion() == null){
-                    _actionPO.setStartPostion(startBreakpointsEntity.getPosition());
-                    _actionPO.setEndPosition(endBreakpointsEntity.getPosition());
-                }
-                _actionPO.setFrameIndex(_actionPO.getFrameIndex()+1);
-                PointPO playerPosition = new PointPO();
-                playerPosition.setX((_actionPO.getEndPosition().getX() - _actionPO.getStartPostion().getX())/_actionPO.getSubFrameIndex()*_actionPO.getFrameIndex());
-                playerPosition.setY((_actionPO.getEndPosition().getY() - _actionPO.getStartPostion().getY())/_actionPO.getSubFrameIndex()*_actionPO.getFrameIndex());
-                playerPosition.setZ((_actionPO.getEndPosition().getZ() - _actionPO.getStartPostion().getZ())/_actionPO.getSubFrameIndex()*_actionPO.getFrameIndex());
-                createMoveFrameMetadata(user.getUserId(),_actionPO.getPlayerAngle(), playerPosition, moveFrameEntity,_actionPO.getTrace_id());
-                //更新redis里的数据
-                redisCache.setCacheListByIndex("setCacheRequest"+user.getUserId(),0,_actionPO);
+            ActionPO _actionPO = list.get(0);
+            int firstActionType = _actionPO.getAction_type();
+            JSONArray path = _actionPO.getPath();
+            if(firstActionType == 1014||firstActionType == 15){
+                rotateJoystickList.add(_actionPO);
             }
-            else if(myState.getIntValue("isMoving") == 0){
-                if(list.size()>0){
-                    //中断,执行下一条记录
-                    list.remove(0);
-                    redisCache.lTrim("setCacheRequest"+user.getUserId(),1,-1);
-                    handle( user,list);
-                    return ;
-                }
-                else{
-                    //过渡
-                    myState.put("isMoving",1);
-                    redisCache.setCacheObject("UserState"+user.getUserId(),myState);
-
+            else if(firstActionType == 1){
+                long startBreakPointId = path.getLongValue(0);
+                long endBreakPointId = path.getLongValue(1);
+                BreakpointsEntity startBreakpointsEntity = breakpointsService.findById(startBreakPointId);
+                BreakpointsEntity endBreakpointsEntity = breakpointsService.findById(endBreakPointId);
+
+                //过渡
+                if(myState.getIntValue("isMoving") == 1){
                     MoveFrameEntity moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex()+1);
+                    //准备过渡下一段
+                    if(moveFrameEntity==null){
+                        RotateFrameEntity rotateFrameEntity = rotateFrameService.findByAppIdAndBreakPointIdAndFrameIndex(user.getAppId(),endBreakPointId,_actionPO.getCameraAngle().getYaw());
+                        path.remove(0);
+                        if(path.size()>1){
+                            startBreakPointId = endBreakPointId;
+                            endBreakPointId = path.getLongValue(1);
+                            _actionPO.setPath(path);
+                            _actionPO.setFrameIndex(0);
+                            _actionPO.setStartPostion(null);
+                            _actionPO.setEndPosition(null);
+
+                            int subFrameIndex = moveFrameService.getCountByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngle( user.getAppId(),startBreakPointId,endBreakPointId, _actionPO.getCameraAngle().getYaw()%45);
+                            _actionPO.setSubFrameIndex(subFrameIndex);
+                            _actionPO.setPlayerPosition(endBreakpointsEntity.getPosition());
+
+                            startBreakpointsEntity = breakpointsService.findById(startBreakPointId);
+                            endBreakpointsEntity = breakpointsService.findById(endBreakPointId);
+                            int _angle = sceneGrpcService.calAngleForBreakPointId(startBreakpointsEntity,endBreakpointsEntity);
+                            AnglePO playerAngle = user.getPlayerAngle();
+                            playerAngle.setYaw(_angle);
+                            _actionPO.setPlayerAngle(playerAngle);
+                            //更新redis记录
+                            redisCache.setCacheListByIndex("setCacheRequest"+user.getUserId(),0,_actionPO);
+
+                            myState.put("isMoving",0);
+                            redisCache.setCacheObject("UserState"+user.getUserId(),myState);
+
+                            //moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),0);
+                            user.setFrameId(rotateFrameEntity.getId());
+                            user.setPlayerAngle(playerAngle);
+                            user.setBreakPointId(startBreakPointId);
+                            user.setPlayerPosition(startBreakpointsEntity.getPosition());
+                            userService.updateById(user);
+                        }
+                        //过渡全部结束
+                        else{
+                            //删除redis里的数据
+                            redisCache.lTrim("setCacheRequest"+user.getUserId(),1,-1);
+                            //更新user表
+                            //moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex());
+                            user.setPlayerPosition(endBreakpointsEntity.getPosition());
+                            user.setFrameId(rotateFrameEntity.getId());
+                            user.setPlayerAngle(_actionPO.getPlayerAngle());
+                            user.setBreakPointId(endBreakPointId);
+                            userService.updateById(user);
+
+                            myState.put("isMoving",0);
+                            redisCache.setCacheObject("UserState"+user.getUserId(),myState);
+                            //执行下一条记录
+                            list.remove(0);
+                        }
+
+                        handle( user,list);
+                        return ;
+                    }
                     //更新
-                    int _angle = sceneGrpcService.calAngleForBreakPointId(startBreakpointsEntity,endBreakpointsEntity);
-                    AnglePO playerAngle = user.getPlayerAngle();
-                    playerAngle.setYaw(_angle);
-                    createMoveFrameMetadata( user.getUserId(),playerAngle,startBreakpointsEntity.getPosition(), moveFrameEntity,_actionPO.getTrace_id());
+                    if(_actionPO.getStartPostion() == null){
+                        _actionPO.setStartPostion(startBreakpointsEntity.getPosition());
+                        _actionPO.setEndPosition(endBreakpointsEntity.getPosition());
+                    }
                     _actionPO.setFrameIndex(_actionPO.getFrameIndex()+1);
-                    _actionPO.setStartPostion(startBreakpointsEntity.getPosition());
-                    _actionPO.setEndPosition(endBreakpointsEntity.getPosition());
+                    PointPO playerPosition = new PointPO();
+                    playerPosition.setX((_actionPO.getEndPosition().getX() - _actionPO.getStartPostion().getX())/_actionPO.getSubFrameIndex()*_actionPO.getFrameIndex());
+                    playerPosition.setY((_actionPO.getEndPosition().getY() - _actionPO.getStartPostion().getY())/_actionPO.getSubFrameIndex()*_actionPO.getFrameIndex());
+                    playerPosition.setZ((_actionPO.getEndPosition().getZ() - _actionPO.getStartPostion().getZ())/_actionPO.getSubFrameIndex()*_actionPO.getFrameIndex());
+                    createMoveFrameMetadata(user.getUserId(),_actionPO.getPlayerAngle(), playerPosition, moveFrameEntity,_actionPO.getTrace_id());
                     //更新redis里的数据
                     redisCache.setCacheListByIndex("setCacheRequest"+user.getUserId(),0,_actionPO);
                 }
+                else if(myState.getIntValue("isMoving") == 0){
+                    if(list.size()>0){
+                        //中断,执行下一条记录
+                        list.remove(0);
+                        redisCache.lTrim("setCacheRequest"+user.getUserId(),1,-1);
+                        handle( user,list);
+                        return ;
+                    }
+                    else{
+                        //过渡
+                        myState.put("isMoving",1);
+                        redisCache.setCacheObject("UserState"+user.getUserId(),myState);
+
+                        MoveFrameEntity moveFrameEntity = moveFrameService.findByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngleAndFrameIndex(user.getAppId(), startBreakPointId, endBreakPointId,_actionPO.getCameraAngle().getYaw(),_actionPO.getFrameIndex()+1);
+                        //更新
+                        int _angle = sceneGrpcService.calAngleForBreakPointId(startBreakpointsEntity,endBreakpointsEntity);
+                        AnglePO playerAngle = user.getPlayerAngle();
+                        playerAngle.setYaw(_angle);
+                        createMoveFrameMetadata( user.getUserId(),playerAngle,startBreakpointsEntity.getPosition(), moveFrameEntity,_actionPO.getTrace_id());
+                        _actionPO.setFrameIndex(_actionPO.getFrameIndex()+1);
+                        _actionPO.setStartPostion(startBreakpointsEntity.getPosition());
+                        _actionPO.setEndPosition(endBreakpointsEntity.getPosition());
+                        //更新redis里的数据
+                        redisCache.setCacheListByIndex("setCacheRequest"+user.getUserId(),0,_actionPO);
+                    }
+                }
+                /****************************************************************************************/
+                return;
             }
-            /****************************************************************************************/
-            return;
-        }
-        long lastFrameId = _actionPO.getFrameId();
-        for(int i=1;i<list.size();++i){
-            ActionPO actionPO = list.get(i);
+            long lastFrameId = _actionPO.getFrameId();
+            for(int i=1;i<list.size();++i){
+                ActionPO actionPO = list.get(i);
 //            if(firstActionType != actionPO.getAction_type()){
 //                break;
 //            }
-            //旋转
-            if(actionPO.getAction_type() == 1014||actionPO.getAction_type() == 15){
-                rotateJoystickList.add(actionPO);
-                lastFrameId = actionPO.getFrameId();
-                continue;
-            }
-            else{
-                break;
+                //旋转
+                if(actionPO.getAction_type() == 1014||actionPO.getAction_type() == 15){
+                    rotateJoystickList.add(actionPO);
+                    lastFrameId = actionPO.getFrameId();
+                    continue;
+                }
+                else{
+                    break;
+                }
             }
+            createRotateFrameMetadata( user, rotateJoystickList, firstActionType);
+            //删除redis里的数据
+            redisCache.lTrim("setCacheRequest"+user.getUserId(),rotateJoystickList.size(),-1);
+            //更新user表
+            user.setFrameId(lastFrameId);
+            userService.updateById(user);
+        }catch (Exception e){
+            e.printStackTrace();
+            log.info("handleException{}",e.getMessage());
+
         }
-        createRotateFrameMetadata( user, rotateJoystickList, firstActionType);
-        //删除redis里的数据
-        redisCache.lTrim("setCacheRequest"+user.getUserId(),rotateJoystickList.size(),-1);
-        //更新user表
-        user.setFrameId(lastFrameId);
-        userService.updateById(user);
     }
 
     private void createDefaultFrameMetadata(UserEntity user){