xiewenjie 3 лет назад
Родитель
Сommit
50843aab40

+ 2 - 7
src/main/java/com/fdkk/fdkkmeta/config/RedisConfig.java

@@ -59,11 +59,7 @@ public class RedisConfig
      */
     @Bean
     public MessageListenerAdapter rotateQueueMessageListenerAdapter( RedisSubscribeServiceImpl receiver){
-        return new MessageListenerAdapter(receiver, RedisQueueConstant.RESP_INFO.get(RedisQueueConstant.ROTATE_QUEUE));
-    }
-    @Bean
-    public MessageListenerAdapter joystickMessageListenerAdapter( RedisSubscribeServiceImpl receiver){
-        return new MessageListenerAdapter(receiver, RedisQueueConstant.RESP_INFO.get(RedisQueueConstant.JOYSTICK_QUEUE));
+        return new MessageListenerAdapter(receiver, RedisQueueConstant.RESP_INFO.get(RedisQueueConstant.SET_CACHE_REQUEST_QUEUE));
     }
     @Bean
     public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory connectionFactory,
@@ -71,8 +67,7 @@ public class RedisConfig
                                                                        MessageListenerAdapter joystickMessageListenerAdapter) {
         RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
         redisMessageListenerContainer.setConnectionFactory(connectionFactory);
-        redisMessageListenerContainer.addMessageListener(rotateQueueMessageListenerAdapter, new PatternTopic(RedisQueueConstant.ROTATE_QUEUE));
-        redisMessageListenerContainer.addMessageListener(joystickMessageListenerAdapter, new PatternTopic(RedisQueueConstant.JOYSTICK_QUEUE));
+        redisMessageListenerContainer.addMessageListener(rotateQueueMessageListenerAdapter, new PatternTopic(RedisQueueConstant.SET_CACHE_REQUEST_QUEUE));
 
         return redisMessageListenerContainer;
     }

+ 8 - 2
src/main/java/com/fdkk/fdkkmeta/grpcService/sceneGrpcServer.java

@@ -197,7 +197,6 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
     @Override
     public void rotate(RotateRequest request, StreamObserver<NormalReply> responseObserver)   {
     	try {
-			//redisPublishService.sendProtocolMessage(RedisQueueConstant.ROTATE_QUEUE,request.toBuilder());
 			int actionType = request.getActionType();
 			String trace_id = request.getTraceId();
 			String user_id = request.getUserId();
@@ -208,6 +207,8 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 			rotateRequestPO.setTrace_id(trace_id);
 			rotateRequestPO.setUser_id(user_id);
 			rotateRequestPO.setRotationAction(rotationAction);
+			redisPublishService.sendJsonMessage(RedisQueueConstant.SET_CACHE_REQUEST_QUEUE,rotateRequestPO);
+
 
 			redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(rotateRequestPO));
 			NormalReply.Builder builder = NormalReply.newBuilder();
@@ -269,6 +270,9 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 			moveRequestPO.setUser_id(user_id);
 			moveRequestPO.setClicking_action(clicking_action);
 			moveRequestPO.setClicking_state(clicking_state);
+			redisPublishService.sendJsonMessage(RedisQueueConstant.SET_CACHE_REQUEST_QUEUE,moveRequestPO);
+
+
 			redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(moveRequestPO));
 
 			/*
@@ -393,7 +397,6 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
      	try {
             log.info("进入{}",request);
 
-			//redisPublishService.sendProtocolMessage(RedisQueueConstant.JOYSTICK_QUEUE,request.toBuilder());
 			String user_id = request.getUserId();
 			int actionType = request.getActionType();
 			String trace_id = request.getTraceId();
@@ -406,6 +409,9 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 			joystickPO.setUser_id(user_id);
 			joystickPO.setPacket_id(packet_id);
 			joystickPO.setDirAction(dirAction);
+			redisPublishService.sendJsonMessage(RedisQueueConstant.SET_CACHE_REQUEST_QUEUE,joystickPO);
+
+
 			redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(joystickPO));
 			/*
 			//速度不够,只是让人旋转

+ 2 - 0
src/main/java/com/fdkk/fdkkmeta/redis/RedisPublishService.java

@@ -20,4 +20,6 @@ public interface RedisPublishService {
 
     void sendProtocolMessage(String channel, Message.Builder builder) throws IOException;
 
+    void sendJsonMessage(String channel, Object message) throws IOException;
+
 }

+ 1 - 2
src/main/java/com/fdkk/fdkkmeta/redis/RedisSubscribeService.java

@@ -13,9 +13,8 @@ import org.springframework.stereotype.Service;
 @Service
 public interface RedisSubscribeService {
 
-    void rotateMessage(String message);
+    void setCacheRequestMessage(String message);
 
-    void joystickMessage(String message);
 
 
 }

+ 9 - 0
src/main/java/com/fdkk/fdkkmeta/redis/impl/RedisPublishServiceImpl.java

@@ -2,6 +2,7 @@ package com.fdkk.fdkkmeta.redis.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import com.fdkk.fdkkmeta.redis.RedisPublishService;
 import com.fdkk.fdkkmeta.util.ProtoJsonUtils;
 import com.google.protobuf.Message;
@@ -44,4 +45,12 @@ public class RedisPublishServiceImpl implements RedisPublishService {
       log.info("频道【{},{}】消息已发布", channel, message);
    }
 
+   @Override
+   public void sendJsonMessage(String channel, Object message) throws IOException {
+      if (ObjectUtil.isNull(message)) {
+         return;
+      }
+      stringRedisTemplate.convertAndSend(channel, JSON.toJSONString(message));
+      log.info("频道【{},{}】消息已发布", channel, message);
+   }
 }

+ 136 - 129
src/main/java/com/fdkk/fdkkmeta/redis/impl/RedisSubscribeServiceImpl.java

@@ -59,141 +59,148 @@ public class RedisSubscribeServiceImpl  implements RedisSubscribeService {
 
     @Autowired
     SceneGrpcService sceneGrpcService;
-
     @Override
-    public void rotateMessage(String message) {
+    public void setCacheRequestMessage(String message) {
         if (Objects.isNull(message)) {
             log.error("消息为空");
             return;
         }
         log.info("订阅频道:rotateMessage消息:{}", message);
-        RotateRequest.Builder builder = RotateRequest.newBuilder();
-        ProtoJsonUtils.toProtoBean(builder,message);
-
-        ActionPO rotateRequestPO = new ActionPO();
-        int action_type = builder.getActionType();
-        String trace_id = builder.getTraceId();
-        String user_id = builder.getUserId();
-        RotationAction rotationAction = builder.getRotationAction();
-
-        JSONObject myState = redisCache.getCacheObject("UserState:"+user_id);
-        //UserEntity user = userService.findUserId(user_id);
-        RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(myState.getLong("frameId"));
-
-        rotateRequestPO.setAction_type(action_type);
-        rotateRequestPO.setTrace_id(trace_id);
-        rotateRequestPO.setUser_id(user_id);
-
-        double horizontalMove = myState.getDouble("horizontalMove");
-        horizontalMove += rotationAction.getHorizontalMove();
-        double hAngle = horizontalMove * 90;
-        log.info("旋转的角度:"+hAngle+",旋转距离:"+rotationAction.getHorizontalMove()+",积累的距离:"+horizontalMove);
-        int offFrameIndex = (int)Math.ceil(hAngle);
-        if(Math.abs(offFrameIndex)<1){
-            myState.put("horizontalMove",horizontalMove);
-            //redis中写入用户状态信息
-            redisCache.setCacheObject("UserState:"+user_id,myState);
-            log.info("没有旋转,更新了redis的UserState表");
-            return;
-        }
-        else{
-            myState.put("horizontalMove",0);
-        }
-        int currentFrame = rotateFrameEntity.getFrameIndex();      //从数据库里读取
-        currentFrame +=offFrameIndex;
-        if(currentFrame<0){
-            currentFrame+=360;
-        }
-        else{
-            currentFrame = currentFrame % 359;
-        }
-
-        rotateFrameEntity = rotateFrameService.findByAppIdAndBreakPointIdAndFrameIndex(myState.getString("appId"),myState.getLong("breakPointId"),currentFrame);
-        rotateRequestPO.setFrameId(rotateFrameEntity.getId());
-        log.info("存储请求:"+rotateFrameEntity.getId());
-        //每次存一帧
-        redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(rotateRequestPO));
-        //redis中写入用户状态信息
-        myState.put("frameId",rotateFrameEntity.getId());
-        redisCache.setCacheObject("UserState:"+user_id,myState);
-        log.info("builder-userid,{}",builder.getUserId());
-    }
-
-    @Override
-    public void joystickMessage(String message) {
-        if (Objects.isNull(message)) {
-            log.error("消息为空");
-            return;
-        }
-        log.info("订阅频道:joystickMessage消息:{}", message);
-        JoystickRequest.Builder builder = JoystickRequest.newBuilder();
-        ProtoJsonUtils.toProtoBean(builder,message);
-
-        int actionType = builder.getActionType();
-        DirAction dirAction = builder.getDirAction();
-        String trace_id = builder.getTraceId();
-        String user_id = builder.getUserId();
-        String packet_id = builder.getPacketId();
-
-        ActionPO joystickPO = new ActionPO();
-        joystickPO.setAction_type(actionType);
-        joystickPO.setTrace_id(trace_id);
-        joystickPO.setUser_id(user_id);
-        joystickPO.setPacket_id(packet_id);
-        AnglePO playerAngle = joystickPO.getPlayerAngle();
-        playerAngle.setYaw(dirAction.getMoveAngle());
-        joystickPO.setPlayerAngle(playerAngle);
-        redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(joystickPO));
-
-        //速度不够,只是让人旋转
-        if(dirAction.getSpeedLevel()<7){
-            return;
-        }
-
-        //UserEntity user = userService.findUserId(user_id);
-        JSONObject myState = redisCache.getCacheObject("UserState:"+user_id);
-        //邻居点里找角度最合适的点
-        BreakpointsEntity breakpointsEntity = breakpointsService.findByAppIdAndBreakPointId(myState.getString("appId"),myState.getLong("breakPointId"));
-        BreakpointsEntity targetBreakpointsEntity = null;
-        List<Integer> neighBreakPointIds = breakpointsEntity.getContact();
-
-        double offAngle = 1000;
-        double moveAngle = dirAction.getMoveAngle();
-        int playerAngleYaw = 0;
-
-        if(neighBreakPointIds.size()>0){
-            for(int j=0;j<neighBreakPointIds.size();++j){
-                BreakpointsEntity _breakpointsEntity = breakpointsService.findByAppIdAndBreakPointId(myState.getString("appId"), (long)neighBreakPointIds.get(j));
-                playerAngleYaw = sceneGrpcService.calAngleForBreakPointId(breakpointsEntity,_breakpointsEntity);
-                if(Math.abs(playerAngleYaw - moveAngle)<offAngle){
-                    offAngle = Math.abs(playerAngleYaw - moveAngle);
-                    targetBreakpointsEntity = _breakpointsEntity;
-                }
-            }
-            RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(myState.getLong("frameId"));
-            AnglePO cameraAnglePO = rotateFrameEntity.getCameraAngle();
-            cameraAnglePO = sceneGrpcService.setRotateForMove( myState, trace_id,cameraAnglePO);
-            JSONArray path = new JSONArray();
-            path.add(rotateFrameEntity.getBreakPointId());
-            path.add(targetBreakpointsEntity.getBreakPointId());
-
-            ActionPO movePO = new ActionPO();
-            movePO.setAction_type(1);
-            movePO.setTrace_id(trace_id);
-            movePO.setUser_id(user_id);
-            movePO.setPath(path);
-
-            playerAngle.setYaw(playerAngleYaw);
-            movePO.setPlayerAngle(playerAngle);
-
-            movePO.setCameraAngle(cameraAnglePO);
-
-            int subFrameIndex = moveFrameService.getCountByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngle( myState.getString("appId"),myState.getLong("breakPointId"),targetBreakpointsEntity.getBreakPointId(), cameraAnglePO.getYaw()%45);
-            movePO.setSubFrameIndex(subFrameIndex);
-
-            redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(movePO));
-        }
+        ActionPO actionPO = JSON.toJavaObject(JSON.parseObject(message), ActionPO.class);
 
-        log.info("builder-userid,{}",builder.getUserId());
     }
+//    public void rotateMessage(String message) {
+//        if (Objects.isNull(message)) {
+//            log.error("消息为空");
+//            return;
+//        }
+//        log.info("订阅频道:rotateMessage消息:{}", message);
+//        RotateRequest.Builder builder = RotateRequest.newBuilder();
+//        ProtoJsonUtils.toProtoBean(builder,message);
+//
+//        ActionPO rotateRequestPO = new ActionPO();
+//        int action_type = builder.getActionType();
+//        String trace_id = builder.getTraceId();
+//        String user_id = builder.getUserId();
+//        RotationAction rotationAction = builder.getRotationAction();
+//
+//        JSONObject myState = redisCache.getCacheObject("UserState:"+user_id);
+//        //UserEntity user = userService.findUserId(user_id);
+//        RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(myState.getLong("frameId"));
+//
+//        rotateRequestPO.setAction_type(action_type);
+//        rotateRequestPO.setTrace_id(trace_id);
+//        rotateRequestPO.setUser_id(user_id);
+//
+//        double horizontalMove = myState.getDouble("horizontalMove");
+//        horizontalMove += rotationAction.getHorizontalMove();
+//        double hAngle = horizontalMove * 90;
+//        log.info("旋转的角度:"+hAngle+",旋转距离:"+rotationAction.getHorizontalMove()+",积累的距离:"+horizontalMove);
+//        int offFrameIndex = (int)Math.ceil(hAngle);
+//        if(Math.abs(offFrameIndex)<1){
+//            myState.put("horizontalMove",horizontalMove);
+//            //redis中写入用户状态信息
+//            redisCache.setCacheObject("UserState:"+user_id,myState);
+//            log.info("没有旋转,更新了redis的UserState表");
+//            return;
+//        }
+//        else{
+//            myState.put("horizontalMove",0);
+//        }
+//        int currentFrame = rotateFrameEntity.getFrameIndex();      //从数据库里读取
+//        currentFrame +=offFrameIndex;
+//        if(currentFrame<0){
+//            currentFrame+=360;
+//        }
+//        else{
+//            currentFrame = currentFrame % 359;
+//        }
+//
+//        rotateFrameEntity = rotateFrameService.findByAppIdAndBreakPointIdAndFrameIndex(myState.getString("appId"),myState.getLong("breakPointId"),currentFrame);
+//        rotateRequestPO.setFrameId(rotateFrameEntity.getId());
+//        log.info("存储请求:"+rotateFrameEntity.getId());
+//        //每次存一帧
+//        redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(rotateRequestPO));
+//        //redis中写入用户状态信息
+//        myState.put("frameId",rotateFrameEntity.getId());
+//        redisCache.setCacheObject("UserState:"+user_id,myState);
+//        log.info("builder-userid,{}",builder.getUserId());
+//    }
+//
+//    public void joystickMessage(String message) {
+//        if (Objects.isNull(message)) {
+//            log.error("消息为空");
+//            return;
+//        }
+//        log.info("订阅频道:joystickMessage消息:{}", message);
+//        JoystickRequest.Builder builder = JoystickRequest.newBuilder();
+//        ProtoJsonUtils.toProtoBean(builder,message);
+//
+//        int actionType = builder.getActionType();
+//        DirAction dirAction = builder.getDirAction();
+//        String trace_id = builder.getTraceId();
+//        String user_id = builder.getUserId();
+//        String packet_id = builder.getPacketId();
+//
+//        ActionPO joystickPO = new ActionPO();
+//        joystickPO.setAction_type(actionType);
+//        joystickPO.setTrace_id(trace_id);
+//        joystickPO.setUser_id(user_id);
+//        joystickPO.setPacket_id(packet_id);
+//        AnglePO playerAngle = joystickPO.getPlayerAngle();
+//        playerAngle.setYaw(dirAction.getMoveAngle());
+//        joystickPO.setPlayerAngle(playerAngle);
+//        redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(joystickPO));
+//
+//        //速度不够,只是让人旋转
+//        if(dirAction.getSpeedLevel()<7){
+//            return;
+//        }
+//
+//        //UserEntity user = userService.findUserId(user_id);
+//        JSONObject myState = redisCache.getCacheObject("UserState:"+user_id);
+//        //邻居点里找角度最合适的点
+//        BreakpointsEntity breakpointsEntity = breakpointsService.findByAppIdAndBreakPointId(myState.getString("appId"),myState.getLong("breakPointId"));
+//        BreakpointsEntity targetBreakpointsEntity = null;
+//        List<Integer> neighBreakPointIds = breakpointsEntity.getContact();
+//
+//        double offAngle = 1000;
+//        double moveAngle = dirAction.getMoveAngle();
+//        int playerAngleYaw = 0;
+//
+//        if(neighBreakPointIds.size()>0){
+//            for(int j=0;j<neighBreakPointIds.size();++j){
+//                BreakpointsEntity _breakpointsEntity = breakpointsService.findByAppIdAndBreakPointId(myState.getString("appId"), (long)neighBreakPointIds.get(j));
+//                playerAngleYaw = sceneGrpcService.calAngleForBreakPointId(breakpointsEntity,_breakpointsEntity);
+//                if(Math.abs(playerAngleYaw - moveAngle)<offAngle){
+//                    offAngle = Math.abs(playerAngleYaw - moveAngle);
+//                    targetBreakpointsEntity = _breakpointsEntity;
+//                }
+//            }
+//            RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(myState.getLong("frameId"));
+//            AnglePO cameraAnglePO = rotateFrameEntity.getCameraAngle();
+//            cameraAnglePO = sceneGrpcService.setRotateForMove( myState, trace_id,cameraAnglePO);
+//            JSONArray path = new JSONArray();
+//            path.add(rotateFrameEntity.getBreakPointId());
+//            path.add(targetBreakpointsEntity.getBreakPointId());
+//
+//            ActionPO movePO = new ActionPO();
+//            movePO.setAction_type(1);
+//            movePO.setTrace_id(trace_id);
+//            movePO.setUser_id(user_id);
+//            movePO.setPath(path);
+//
+//            playerAngle.setYaw(playerAngleYaw);
+//            movePO.setPlayerAngle(playerAngle);
+//
+//            movePO.setCameraAngle(cameraAnglePO);
+//
+//            int subFrameIndex = moveFrameService.getCountByAppIAndStartBreakPointIdAndEndBreakPointIdAndAngle( myState.getString("appId"),myState.getLong("breakPointId"),targetBreakpointsEntity.getBreakPointId(), cameraAnglePO.getYaw()%45);
+//            movePO.setSubFrameIndex(subFrameIndex);
+//
+//            redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(movePO));
+//        }
+//
+//        log.info("builder-userid,{}",builder.getUserId());
+//    }
 }

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

@@ -50,426 +50,426 @@ public class UpdateFrameMetaTask {
     SceneGrpcService sceneGrpcService;
     @Autowired
     BreakpointsService breakpointsService;
-    @Scheduled(initialDelay=200, fixedDelay=1000/30)
-   public void updateFrameMetadata(){
-       List<UserEntity> userOnline = userService.findUserOnline(true);
-       log.info("进入定时任务{}", ArrayUtil.isNotEmpty(userOnline)?userOnline.size():0);
-//        JSONObject a=new JSONObject();
-//        a.put("123123",123123);
-       //使用并行流处理数据
-       userOnline.parallelStream().forEach(
-               userEntity -> {
-                   //UserEntity user = redisCache.getCacheObject("setCacheRequest:" + userEntity.getUserId());
-//                   redisCache.set("updateFrameMetadata:"+userEntity.getUserId(),a.toJSONString());
-                   List<ActionPO> list = redisCache.getCacheList("setCacheRequest:"+userEntity.getUserId());
-                   handle( userEntity,list);
-               }
-       );
-   }
-
-    private void handle(UserEntity user,List<ActionPO> list){
-        try {
-            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);
-                            myState.put("breakPointId",endBreakPointId);
-                            myState.put("frameId",rotateFrameEntity.getId());
-                            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);
-                            myState.put("breakPointId",endBreakPointId);
-                            myState.put("frameId",rotateFrameEntity.getId());
-                            redisCache.setCacheObject("UserState:"+user.getUserId(),myState);
-                            //执行下一条记录
-                            list.remove(0);
-                        }
-
-                        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);
-                }
-                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;
-            }
-            long lastFrameId = _actionPO.getFrameId();
-            for(int i=1;i<list.size();++i){
-                ActionPO actionPO = list.get(i);
-//            if(firstActionType != actionPO.getAction_type()){
-//                break;
+//    @Scheduled(initialDelay=200, fixedDelay=1000/30)
+//   public void updateFrameMetadata(){
+//       List<UserEntity> userOnline = userService.findUserOnline(true);
+//       log.info("进入定时任务{}", ArrayUtil.isNotEmpty(userOnline)?userOnline.size():0);
+////        JSONObject a=new JSONObject();
+////        a.put("123123",123123);
+//       //使用并行流处理数据
+//       userOnline.parallelStream().forEach(
+//               userEntity -> {
+//                   //UserEntity user = redisCache.getCacheObject("setCacheRequest:" + userEntity.getUserId());
+////                   redisCache.set("updateFrameMetadata:"+userEntity.getUserId(),a.toJSONString());
+//                   List<ActionPO> list = redisCache.getCacheList("setCacheRequest:"+userEntity.getUserId());
+//                   handle( userEntity,list);
+//               }
+//       );
+//   }
+//
+//    private void handle(UserEntity user,List<ActionPO> list){
+//        try {
+//            if(list.size() == 0){
+//                //写入一个默认数据到redis里
+//                createDefaultFrameMetadata( user);
+//                return;
 //            }
-                //旋转
-                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());
-
-        }
-    }
-
-    private void createDefaultFrameMetadata(UserEntity user) throws IOException {
-        String[] traceIds = new String[1];
-        traceIds[0] = "";
-        JSONArray actionResponses = new JSONArray();
-
-        RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(user.getFrameId());
-        PointPO playerPosition = user.getPlayerPosition();
-        Point playerPt = Point.newBuilder().setX(String.valueOf(playerPosition.getX())).setY(String.valueOf(playerPosition.getY())).setZ(String.valueOf(playerPosition.getZ())).build();
-        AnglePO playerAngle = user.getPlayerAngle();
-        AngleUe4 playerAg =AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
-        Space player = sceneGrpcService.createSpace(playerPt,playerAg);
-
-        PointPO cameraPoint = rotateFrameEntity.getCameraPosition();
-        Point cameraPosition = sceneGrpcService.createPoint(String.valueOf(cameraPoint.getX()),String.valueOf(cameraPoint.getY()),String.valueOf(cameraPoint.getZ()));
-        AnglePO cameraAnglePO = rotateFrameEntity.getCameraAngle();
-        AngleUe4 cameraAngle = sceneGrpcService.createAngle(cameraAnglePO.getPitch(),cameraAnglePO.getYaw(),cameraAnglePO.getRoll());
-        Space camera = sceneGrpcService.createSpace(cameraPosition,cameraAngle);
-
-        MetaDataFrameReply.Builder builder = MetaDataFrameReply.newBuilder();
-        for(int i=0;i<traceIds.length;++i){
-            builder.addTraceIds(traceIds[i]);
-        }
-        State playerState = sceneGrpcService.createPlayerState2(player,camera,playerPt);
-
-        RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
-        UserState userState = sceneGrpcService.createUserState( user.getUserId(), playerState, renderInfo, null);
-
-        builder.addNewUserStates(userState);
-
-        builder.setGetStateType(0);
-        builder.setCode(200);
-        builder.setMsg("ok");
-        //newUserStates
-
-        String mediaSrc = metaConfig.getVideoFramePath()+"/"+"0000000001"+"/"+rotateFrameEntity.getBreakPointId()+"/"+rotateFrameEntity.getDirectory()+"/"+rotateFrameEntity.getFileName()+"?m="+new Date().getTime();
-        builder.setMediaSrc(mediaSrc);
-
-        redisCache.lLeftPush("updateFrameMetadata:"+user.getUserId(), ProtoJsonUtils.toJson(builder));
-    }
-
-    private void createMoveFrameMetadata(String user_id,AnglePO playerAngle,PointPO playerPosition,MoveFrameEntity moveFrameEntity,String traceId) throws IOException {
-        String[] traceIds = new String[1];
-        traceIds[0] = traceId;
-        JSONArray actionResponses = new JSONArray();
-
-        //RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(user.getFrameId());
-        //PointPO playerPosition = user.getPlayerPosition();
-        Point playerPt = Point.newBuilder().setX(String.valueOf(playerPosition.getX())).setY(String.valueOf(playerPosition.getY())).setZ(String.valueOf(playerPosition.getZ())).build();
-        //AnglePO playerAngle = user.getPlayerAngle();
-        AngleUe4 playerAg =AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
-        Space player = sceneGrpcService.createSpace(playerPt,playerAg);
-
-        PointPO cameraPoint = moveFrameEntity.getCameraPosition();
-        Point cameraPosition = sceneGrpcService.createPoint(String.valueOf(cameraPoint.getX()),String.valueOf(cameraPoint.getY()),String.valueOf(cameraPoint.getZ()));
-        AnglePO cameraAnglePO = moveFrameEntity.getCameraAngle();
-        AngleUe4 cameraAngle = sceneGrpcService.createAngle(cameraAnglePO.getPitch(),cameraAnglePO.getYaw(),cameraAnglePO.getRoll());
-        Space camera = sceneGrpcService.createSpace(cameraPosition,cameraAngle);
-
-
-        MetaDataFrameReply.Builder builder = MetaDataFrameReply.newBuilder();
-        for(int i=0;i<traceIds.length;++i){
-            builder.addTraceIds(traceIds[i]);
-        }
-
-        State playerState = sceneGrpcService.createPlayerState2(player,camera,playerPt);
-
-        RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
-        UserState userState = sceneGrpcService.createUserState( user_id, playerState, renderInfo, null);
-
-
-        builder.addNewUserStates(userState);
-
-        builder.setGetStateType(0);
-        builder.setCode(200);
-        builder.setMsg("ok");
-
-
-        String mediaSrc = metaConfig.getVideoFramePath()+"/"+"0000000001"+"/"+moveFrameEntity.getStartBreakPointId()+"/"+moveFrameEntity.getDirectory()+"/"+moveFrameEntity.getFileName()+"?m="+new Date().getTime();
-        builder.setMediaSrc(mediaSrc);
-        redisCache.lLeftPush("updateFrameMetadata:"+user_id,ProtoJsonUtils.toJson(builder));
-    }
-
-    private void createRotateFrameMetadata(UserEntity user,List<ActionPO> rotateJoystickList,int firstActionType) throws IOException {
-        JSONArray actionResponses = new JSONArray();
-        String[] traceIds = new String[rotateJoystickList.size()];
-        if(rotateJoystickList.size()>0){
-            for(int j=0;j<rotateJoystickList.size();++j){
-                ActionPO actionPO = rotateJoystickList.get(j);
-                JSONObject actionResponse = sceneGrpcService.createActionResponse(actionPO.getAction_type(),actionPO.getTrace_id());
-                actionResponses.add(actionResponse);
-                traceIds[j] = actionPO.getTrace_id();
-            }
-        }
-
-        ActionPO lastActionPO = rotateJoystickList.get(rotateJoystickList.size()-1);
-        RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(lastActionPO.getFrameId());
-        PointPO playerPosition = user.getPlayerPosition();
-        Point playerPt = Point.newBuilder().setX(String.valueOf(playerPosition.getX())).setY(String.valueOf(playerPosition.getY())).setZ(String.valueOf(playerPosition.getZ())).build();
-        AnglePO playerAngle = user.getPlayerAngle();
-        AngleUe4 playerAg = null;
-        if(firstActionType == 15){
-            playerAngle.setYaw(lastActionPO.getPlayerAngle().getYaw());
-        }
-        playerAg = AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
-        Space player = sceneGrpcService.createSpace(playerPt,playerAg);
-
-        PointPO cameraPoint = rotateFrameEntity.getCameraPosition();
-        log.info("旋转时:计算的frameId:"+lastActionPO.getFrameId()+",相机的坐标:"+cameraPoint.toString());
-        Point cameraPosition = sceneGrpcService.createPoint(String.valueOf(cameraPoint.getX()),String.valueOf(cameraPoint.getY()),String.valueOf(cameraPoint.getZ()));
-        AnglePO cameraAnglePO = rotateFrameEntity.getCameraAngle();
-        AngleUe4 cameraAngle = sceneGrpcService.createAngle(cameraAnglePO.getPitch(),cameraAnglePO.getYaw(),cameraAnglePO.getRoll());
-        Space camera = sceneGrpcService.createSpace(cameraPosition,cameraAngle);
-
-
-        MetaDataFrameReply.Builder builder = MetaDataFrameReply.newBuilder();
-        for(int i=0;i<traceIds.length;++i){
-            builder.addTraceIds(traceIds[i]);
-        }
-        State playerState = sceneGrpcService.createPlayerState2(player,camera,playerPt);
-
-        RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
-        UserState userState = sceneGrpcService.createUserState( user.getUserId(), playerState, renderInfo, null);
-
-
-        builder.addNewUserStates(userState);
-
-        builder.setGetStateType(0);
-        builder.setCode(200);
-        builder.setMsg("ok");
-
-        String mediaSrc = metaConfig.getVideoFramePath()+"/"+"0000000001"+"/"+rotateFrameEntity.getBreakPointId()+"/"+rotateFrameEntity.getDirectory()+"/"+rotateFrameEntity.getFileName()+"?m="+new Date().getTime();
-        builder.setMediaSrc(mediaSrc);
-        redisCache.lLeftPush("updateFrameMetadata:"+user.getUserId(),ProtoJsonUtils.toJson(builder));
-
-        //更新user表
-        user.setFrameId(lastActionPO.getFrameId());
-        user.setPlayerAngle(playerAngle);
-    }
-   /*
-   * {
-        "traceIds": ["d0864cd0-378d-4d49-b7b0-3e8e1b9494c3", "d0864cd0-378d-4d49-b7b0-3e8e1b9494c3", "939087ff-4999-4551-92e4-26ecb67f8aa2"],
-        "vehicle": null,
-        "newUserStates": [{
-            "userId": "dcff36ae4fc1d",
-            "playerState": {
-                "roomTypeId": "",
-                "person": 0,
-                "avatarId": "",
-                "skinId": "",
-                "roomId": ""
-                "isHost": false,
-                "isFollowHost": false,
-                "skinDataVersion": "",
-                "avatarComponents": "",
-                "nickName": "",
-                "movingMode": 0,
-                "attitude": "",
-                "areaName": "",
-                "pathName": "",
-                "pathId": "",
-                "avatarSize": 1,
-                "extra": "",
-                "prioritySync": false,
-                "player": {
-                    "position": {
-                        "x": -421.30057,
-                        "y": -1434.4198,
-                        "z": -34
-                    },
-                    "angle": {
-                        "pitch": 0,
-                        "yaw": 47,
-                        "roll": 0
-                    }
-                },
-                "camera": {
-                    "position": {
-                        "x": -436.2,
-                        "y": -1408.8,
-                        "z": 130.7
-                    },
-                    "angle": {
-                        "pitch": 0,
-                        "yaw": 315,
-                        "roll": 0
-                    }
-                },
-                "cameraCenter": {
-                    "x": -400,
-                    "y": -1450,
-                    "z": 10.610336
-                }
-            },
-            "renderInfo": {
-                "renderType": 0,
-                "videoFrame": null,
-                "cameraStateType": 3,
-                "isMoving": 1,
-                "needIfr": 0,
-                "isVideo": 0,
-                "stillFrame": 0,
-                "isRotating": 0,
-                "isFollowing": 0,
-                "clientPanoTitlesBitmap": [],
-                "clientPanoTreceId": "",
-                "prefetchVideoId": "",
-                "noMedia": false
-            },
-            "event": null,
-            "relation": 1
-        }],
-        "actionResponses": [{
-            "actionType": 15,
-            "pointType": 100,
-            "extra": "",
-            "traceId": "d0864cd0-378d-4d49-b7b0-3e8e1b9494c3",
-            "packetId": "d44bd2f5-f877-4dd7-868b-803c64f99082",
-            "nps": [],
-            "peopleNum": 0,
-            "zoneId": "",
-            "echoMsg": "",
-            "reserveDetail": null,
-            "userWithAvatarList": [],
-            "newUserStates": [],
-            "code": 0,
-            "msg": ""
-        }, {
-            "actionType": 1,
-            "pointType": 0,
-            "extra": "",
-            "traceId": "939087ff-4999-4551-92e4-26ecb67f8aa2",
-            "packetId": "",
-            "nps": [],
-            "peopleNum": 0,
-            "zoneId": "",
-            "echoMsg": "",
-            "reserveDetail": null,
-            "userWithAvatarList": [],
-            "newUserStates": [],
-            "code": 0,
-            "msg": ""
-        }],
-        "getStateType": 0,
-        "code": 0,
-        "msg": "OK"
-    }
-   * */
+//
+//            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);
+//                            myState.put("breakPointId",endBreakPointId);
+//                            myState.put("frameId",rotateFrameEntity.getId());
+//                            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);
+//                            myState.put("breakPointId",endBreakPointId);
+//                            myState.put("frameId",rotateFrameEntity.getId());
+//                            redisCache.setCacheObject("UserState:"+user.getUserId(),myState);
+//                            //执行下一条记录
+//                            list.remove(0);
+//                        }
+//
+//                        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);
+//                }
+//                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;
+//            }
+//            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;
+//                }
+//            }
+//            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());
+//
+//        }
+//    }
+//
+//    private void createDefaultFrameMetadata(UserEntity user) throws IOException {
+//        String[] traceIds = new String[1];
+//        traceIds[0] = "";
+//        JSONArray actionResponses = new JSONArray();
+//
+//        RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(user.getFrameId());
+//        PointPO playerPosition = user.getPlayerPosition();
+//        Point playerPt = Point.newBuilder().setX(String.valueOf(playerPosition.getX())).setY(String.valueOf(playerPosition.getY())).setZ(String.valueOf(playerPosition.getZ())).build();
+//        AnglePO playerAngle = user.getPlayerAngle();
+//        AngleUe4 playerAg =AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
+//        Space player = sceneGrpcService.createSpace(playerPt,playerAg);
+//
+//        PointPO cameraPoint = rotateFrameEntity.getCameraPosition();
+//        Point cameraPosition = sceneGrpcService.createPoint(String.valueOf(cameraPoint.getX()),String.valueOf(cameraPoint.getY()),String.valueOf(cameraPoint.getZ()));
+//        AnglePO cameraAnglePO = rotateFrameEntity.getCameraAngle();
+//        AngleUe4 cameraAngle = sceneGrpcService.createAngle(cameraAnglePO.getPitch(),cameraAnglePO.getYaw(),cameraAnglePO.getRoll());
+//        Space camera = sceneGrpcService.createSpace(cameraPosition,cameraAngle);
+//
+//        MetaDataFrameReply.Builder builder = MetaDataFrameReply.newBuilder();
+//        for(int i=0;i<traceIds.length;++i){
+//            builder.addTraceIds(traceIds[i]);
+//        }
+//        State playerState = sceneGrpcService.createPlayerState2(player,camera,playerPt);
+//
+//        RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
+//        UserState userState = sceneGrpcService.createUserState( user.getUserId(), playerState, renderInfo, null);
+//
+//        builder.addNewUserStates(userState);
+//
+//        builder.setGetStateType(0);
+//        builder.setCode(200);
+//        builder.setMsg("ok");
+//        //newUserStates
+//
+//        String mediaSrc = metaConfig.getVideoFramePath()+"/"+"0000000001"+"/"+rotateFrameEntity.getBreakPointId()+"/"+rotateFrameEntity.getDirectory()+"/"+rotateFrameEntity.getFileName()+"?m="+new Date().getTime();
+//        builder.setMediaSrc(mediaSrc);
+//
+//        redisCache.lLeftPush("updateFrameMetadata:"+user.getUserId(), ProtoJsonUtils.toJson(builder));
+//    }
+//
+//    private void createMoveFrameMetadata(String user_id,AnglePO playerAngle,PointPO playerPosition,MoveFrameEntity moveFrameEntity,String traceId) throws IOException {
+//        String[] traceIds = new String[1];
+//        traceIds[0] = traceId;
+//        JSONArray actionResponses = new JSONArray();
+//
+//        //RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(user.getFrameId());
+//        //PointPO playerPosition = user.getPlayerPosition();
+//        Point playerPt = Point.newBuilder().setX(String.valueOf(playerPosition.getX())).setY(String.valueOf(playerPosition.getY())).setZ(String.valueOf(playerPosition.getZ())).build();
+//        //AnglePO playerAngle = user.getPlayerAngle();
+//        AngleUe4 playerAg =AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
+//        Space player = sceneGrpcService.createSpace(playerPt,playerAg);
+//
+//        PointPO cameraPoint = moveFrameEntity.getCameraPosition();
+//        Point cameraPosition = sceneGrpcService.createPoint(String.valueOf(cameraPoint.getX()),String.valueOf(cameraPoint.getY()),String.valueOf(cameraPoint.getZ()));
+//        AnglePO cameraAnglePO = moveFrameEntity.getCameraAngle();
+//        AngleUe4 cameraAngle = sceneGrpcService.createAngle(cameraAnglePO.getPitch(),cameraAnglePO.getYaw(),cameraAnglePO.getRoll());
+//        Space camera = sceneGrpcService.createSpace(cameraPosition,cameraAngle);
+//
+//
+//        MetaDataFrameReply.Builder builder = MetaDataFrameReply.newBuilder();
+//        for(int i=0;i<traceIds.length;++i){
+//            builder.addTraceIds(traceIds[i]);
+//        }
+//
+//        State playerState = sceneGrpcService.createPlayerState2(player,camera,playerPt);
+//
+//        RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
+//        UserState userState = sceneGrpcService.createUserState( user_id, playerState, renderInfo, null);
+//
+//
+//        builder.addNewUserStates(userState);
+//
+//        builder.setGetStateType(0);
+//        builder.setCode(200);
+//        builder.setMsg("ok");
+//
+//
+//        String mediaSrc = metaConfig.getVideoFramePath()+"/"+"0000000001"+"/"+moveFrameEntity.getStartBreakPointId()+"/"+moveFrameEntity.getDirectory()+"/"+moveFrameEntity.getFileName()+"?m="+new Date().getTime();
+//        builder.setMediaSrc(mediaSrc);
+//        redisCache.lLeftPush("updateFrameMetadata:"+user_id,ProtoJsonUtils.toJson(builder));
+//    }
+//
+//    private void createRotateFrameMetadata(UserEntity user,List<ActionPO> rotateJoystickList,int firstActionType) throws IOException {
+//        JSONArray actionResponses = new JSONArray();
+//        String[] traceIds = new String[rotateJoystickList.size()];
+//        if(rotateJoystickList.size()>0){
+//            for(int j=0;j<rotateJoystickList.size();++j){
+//                ActionPO actionPO = rotateJoystickList.get(j);
+//                JSONObject actionResponse = sceneGrpcService.createActionResponse(actionPO.getAction_type(),actionPO.getTrace_id());
+//                actionResponses.add(actionResponse);
+//                traceIds[j] = actionPO.getTrace_id();
+//            }
+//        }
+//
+//        ActionPO lastActionPO = rotateJoystickList.get(rotateJoystickList.size()-1);
+//        RotateFrameEntity rotateFrameEntity = rotateFrameService.findById(lastActionPO.getFrameId());
+//        PointPO playerPosition = user.getPlayerPosition();
+//        Point playerPt = Point.newBuilder().setX(String.valueOf(playerPosition.getX())).setY(String.valueOf(playerPosition.getY())).setZ(String.valueOf(playerPosition.getZ())).build();
+//        AnglePO playerAngle = user.getPlayerAngle();
+//        AngleUe4 playerAg = null;
+//        if(firstActionType == 15){
+//            playerAngle.setYaw(lastActionPO.getPlayerAngle().getYaw());
+//        }
+//        playerAg = AngleUe4.newBuilder().setPitch(playerAngle.getPitch()).setYaw(playerAngle.getYaw()).setRoll(playerAngle.getRoll()).build();
+//        Space player = sceneGrpcService.createSpace(playerPt,playerAg);
+//
+//        PointPO cameraPoint = rotateFrameEntity.getCameraPosition();
+//        log.info("旋转时:计算的frameId:"+lastActionPO.getFrameId()+",相机的坐标:"+cameraPoint.toString());
+//        Point cameraPosition = sceneGrpcService.createPoint(String.valueOf(cameraPoint.getX()),String.valueOf(cameraPoint.getY()),String.valueOf(cameraPoint.getZ()));
+//        AnglePO cameraAnglePO = rotateFrameEntity.getCameraAngle();
+//        AngleUe4 cameraAngle = sceneGrpcService.createAngle(cameraAnglePO.getPitch(),cameraAnglePO.getYaw(),cameraAnglePO.getRoll());
+//        Space camera = sceneGrpcService.createSpace(cameraPosition,cameraAngle);
+//
+//
+//        MetaDataFrameReply.Builder builder = MetaDataFrameReply.newBuilder();
+//        for(int i=0;i<traceIds.length;++i){
+//            builder.addTraceIds(traceIds[i]);
+//        }
+//        State playerState = sceneGrpcService.createPlayerState2(player,camera,playerPt);
+//
+//        RenderInfo renderInfo = sceneGrpcService.createRenderInfo();
+//        UserState userState = sceneGrpcService.createUserState( user.getUserId(), playerState, renderInfo, null);
+//
+//
+//        builder.addNewUserStates(userState);
+//
+//        builder.setGetStateType(0);
+//        builder.setCode(200);
+//        builder.setMsg("ok");
+//
+//        String mediaSrc = metaConfig.getVideoFramePath()+"/"+"0000000001"+"/"+rotateFrameEntity.getBreakPointId()+"/"+rotateFrameEntity.getDirectory()+"/"+rotateFrameEntity.getFileName()+"?m="+new Date().getTime();
+//        builder.setMediaSrc(mediaSrc);
+//        redisCache.lLeftPush("updateFrameMetadata:"+user.getUserId(),ProtoJsonUtils.toJson(builder));
+//
+//        //更新user表
+//        user.setFrameId(lastActionPO.getFrameId());
+//        user.setPlayerAngle(playerAngle);
+//    }
+//   /*
+//   * {
+//        "traceIds": ["d0864cd0-378d-4d49-b7b0-3e8e1b9494c3", "d0864cd0-378d-4d49-b7b0-3e8e1b9494c3", "939087ff-4999-4551-92e4-26ecb67f8aa2"],
+//        "vehicle": null,
+//        "newUserStates": [{
+//            "userId": "dcff36ae4fc1d",
+//            "playerState": {
+//                "roomTypeId": "",
+//                "person": 0,
+//                "avatarId": "",
+//                "skinId": "",
+//                "roomId": ""
+//                "isHost": false,
+//                "isFollowHost": false,
+//                "skinDataVersion": "",
+//                "avatarComponents": "",
+//                "nickName": "",
+//                "movingMode": 0,
+//                "attitude": "",
+//                "areaName": "",
+//                "pathName": "",
+//                "pathId": "",
+//                "avatarSize": 1,
+//                "extra": "",
+//                "prioritySync": false,
+//                "player": {
+//                    "position": {
+//                        "x": -421.30057,
+//                        "y": -1434.4198,
+//                        "z": -34
+//                    },
+//                    "angle": {
+//                        "pitch": 0,
+//                        "yaw": 47,
+//                        "roll": 0
+//                    }
+//                },
+//                "camera": {
+//                    "position": {
+//                        "x": -436.2,
+//                        "y": -1408.8,
+//                        "z": 130.7
+//                    },
+//                    "angle": {
+//                        "pitch": 0,
+//                        "yaw": 315,
+//                        "roll": 0
+//                    }
+//                },
+//                "cameraCenter": {
+//                    "x": -400,
+//                    "y": -1450,
+//                    "z": 10.610336
+//                }
+//            },
+//            "renderInfo": {
+//                "renderType": 0,
+//                "videoFrame": null,
+//                "cameraStateType": 3,
+//                "isMoving": 1,
+//                "needIfr": 0,
+//                "isVideo": 0,
+//                "stillFrame": 0,
+//                "isRotating": 0,
+//                "isFollowing": 0,
+//                "clientPanoTitlesBitmap": [],
+//                "clientPanoTreceId": "",
+//                "prefetchVideoId": "",
+//                "noMedia": false
+//            },
+//            "event": null,
+//            "relation": 1
+//        }],
+//        "actionResponses": [{
+//            "actionType": 15,
+//            "pointType": 100,
+//            "extra": "",
+//            "traceId": "d0864cd0-378d-4d49-b7b0-3e8e1b9494c3",
+//            "packetId": "d44bd2f5-f877-4dd7-868b-803c64f99082",
+//            "nps": [],
+//            "peopleNum": 0,
+//            "zoneId": "",
+//            "echoMsg": "",
+//            "reserveDetail": null,
+//            "userWithAvatarList": [],
+//            "newUserStates": [],
+//            "code": 0,
+//            "msg": ""
+//        }, {
+//            "actionType": 1,
+//            "pointType": 0,
+//            "extra": "",
+//            "traceId": "939087ff-4999-4551-92e4-26ecb67f8aa2",
+//            "packetId": "",
+//            "nps": [],
+//            "peopleNum": 0,
+//            "zoneId": "",
+//            "echoMsg": "",
+//            "reserveDetail": null,
+//            "userWithAvatarList": [],
+//            "newUserStates": [],
+//            "code": 0,
+//            "msg": ""
+//        }],
+//        "getStateType": 0,
+//        "code": 0,
+//        "msg": "OK"
+//    }
+//   * */
 }

+ 2 - 4
src/main/java/constants/RedisQueueConstant.java

@@ -9,15 +9,13 @@ import java.util.Map;
  */
 public class RedisQueueConstant {
     /** 旋转队列 */
-    public static final String ROTATE_QUEUE = "rotate";
-    public static final String JOYSTICK_QUEUE = "joystick";
+    public static final String SET_CACHE_REQUEST_QUEUE = "setCacheRequest";
 
     public static final Map<String, String> RESP_INFO = new HashMap();
 
     static {
         // 队列方法名称 相关
-        RESP_INFO.put(ROTATE_QUEUE, "rotateMessage");
-        RESP_INFO.put(JOYSTICK_QUEUE, "joystickMessage");
+        RESP_INFO.put(SET_CACHE_REQUEST_QUEUE, "setCacheRequestMessage");
 
     }
 }