xushiting 3 năm trước cách đây
mục cha
commit
7d17904eab

+ 3 - 0
src/main/java/com/fdkk/fdkkmeta/grpcService/SceneGrpcService.java

@@ -2,6 +2,8 @@ package com.fdkk.fdkkmeta.grpcService;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fdkk.fdkkmeta.domain.entity.mysql.BreakpointsEntity;
+import com.fdkk.fdkkmeta.domain.entity.mysql.UserEntity;
+import com.fdkk.fdkkmeta.domain.po.AnglePO;
 import com.fdkk.fdkkmeta.domain.po.PointPO;
 import com.fdkk.fdkkmeta.grpc.*;
 
@@ -23,4 +25,5 @@ public interface SceneGrpcService {
     double calAngle(PointPO o, PointPO s, PointPO e);
 
     int calAngleForBreakPointId(BreakpointsEntity breakpointsEntity1,BreakpointsEntity breakpointsEntity2);
+    AnglePO setRotateForMove(JSONObject user, String trace_id, AnglePO cameraAngle);
 }

+ 46 - 0
src/main/java/com/fdkk/fdkkmeta/grpcService/SceneGrpcServiceImpl.java

@@ -4,15 +4,31 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkk.fdkkmeta.domain.entity.mysql.BreakpointsEntity;
+import com.fdkk.fdkkmeta.domain.entity.mysql.RotateFrameEntity;
+import com.fdkk.fdkkmeta.domain.entity.mysql.UserEntity;
+import com.fdkk.fdkkmeta.domain.po.ActionPO;
+import com.fdkk.fdkkmeta.domain.po.AnglePO;
 import com.fdkk.fdkkmeta.domain.po.PointPO;
 import com.fdkk.fdkkmeta.grpc.*;
+import com.fdkk.fdkkmeta.redis.RedisCache;
+import com.fdkk.fdkkmeta.service.RotateFrameService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
+
 @Slf4j
 @Service
 public class SceneGrpcServiceImpl implements SceneGrpcService {
+
+    @Autowired
+    RedisCache redisCache;
+
+    @Autowired
+    RotateFrameService rotateFrameService;
+
     @Override
     public int test(int a){
         return 0;
@@ -197,4 +213,34 @@ public class SceneGrpcServiceImpl implements SceneGrpcService {
         int angle = (int)calAngle(startPosition, temp, endPosition);
         return angle;
     }
+    @Override
+    public AnglePO setRotateForMove(JSONObject user, String trace_id, AnglePO cameraAngle){
+        int angle = cameraAngle.getYaw();
+        int offAngle = 0;
+        offAngle = angle%45;
+
+        //先简单来,就累加。后续要再调试
+        //存储矫正的一组帧
+        offAngle = Math.abs(45 - offAngle);
+        RotateFrameEntity _rotateFrameEntity = null;
+        for(int j=0;j<offAngle;++j){
+            ActionPO rotateRequestPO = new ActionPO();
+            rotateRequestPO.setAction_type(1014);
+            rotateRequestPO.setTrace_id(trace_id);
+            rotateRequestPO.setUser_id(user.getString("userId"));
+            _rotateFrameEntity = rotateFrameService.findByAppIdAndBreakPointIdAndFrameIndex(user.getString("appId"),user.getLong("breakPointId"),angle+j);
+            rotateRequestPO.setFrameId(_rotateFrameEntity.getId());
+            redisCache.setCacheList("setCacheRequest:"+user.getString("userId"), Arrays.asList(rotateRequestPO));
+        }
+        if(_rotateFrameEntity == null){
+            AnglePO cameraAnglePO = new AnglePO();
+            cameraAnglePO.setPitch(0);
+            cameraAnglePO.setYaw(angle);
+            cameraAnglePO.setRoll(0);
+            return cameraAnglePO;
+        }
+        else{
+            return _rotateFrameEntity.getCameraAngle();
+        }
+    }
 }

+ 12 - 151
src/main/java/com/fdkk/fdkkmeta/grpcService/sceneGrpcServer.java

@@ -40,26 +40,21 @@ import java.util.List;
 public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBase {
     @Autowired
     MetaConfig metaConfig;
-
     @Autowired
     UserService userService;
-
     @Autowired
     BreakpointsService breakpointsService;
     @Autowired
     RotateFrameService rotateFrameService;
-
     @Autowired
     MoveFrameService moveFrameService;
-
     @Autowired
     RedisCache redisCache;
-
 	@Autowired
 	SceneGrpcService sceneGrpcService;
-
 	@Autowired
 	private RedisPublishService redisPublishService;
+
     /***
      *     回复 案例
      *    SceneReply res = SceneReply.newBuilder().setRes(id+","+name).build();
@@ -163,6 +158,7 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 			myState.put("frameId",firstFrameId);
 			myState.put("breakPointId",firstBreakPointId);
 			myState.put("appId",app_id);
+			myState.put("userId",user_id);
 			//redis中写入用户状态信息
 			redisCache.setCacheObject("UserState:"+userEntity.getUserId(),myState);
 
@@ -204,58 +200,6 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 
 			redisPublishService.sendProtocolMessage(RedisQueueConstant.ROTATE_QUEUE,request.toBuilder());
 
-
-			ActionPO rotateRequestPO = new ActionPO();
-
-    		int action_type = request.getActionType();
-    		String trace_id = request.getTraceId();
-    		String user_id = request.getUserId();
-    		RotationAction rotationAction = request.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表");
-				NormalReply.Builder builder = NormalReply.newBuilder();
-				builder.setCode(200);
-				responseObserver.onNext(builder.build());
-				responseObserver.onCompleted();
-				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);
 			NormalReply.Builder builder = NormalReply.newBuilder();
 			builder.setCode(200);
 			responseObserver.onNext(builder.build());
@@ -299,6 +243,7 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 			log.error("echoException{}",e.getMessage());
 		}
 	}
+	/*
 	@Override
 	public void usersState(GetNewUserStateRequest request, StreamObserver<GetNewUserStateReply> responseObserver){
 
@@ -378,6 +323,8 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 			log.error("usersStateException{}",e.getMessage());
 		}
 	}
+
+	 */
 	@Override
 	public void move(MoveRequest request, StreamObserver<NormalReply> responseObserver){
 		try{
@@ -415,7 +362,8 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 					if(i == 1){
 						AnglePO cameraAnglePO = rotateFrameEntity.getCameraAngle();
 						//旋转矫正:不仅存入redis,而且返回矫正后的角度
-						cameraAnglePO = setRotateForMove( user, trace_id, cameraAnglePO);
+						JSONObject myState = redisCache.getCacheObject("UserState:"+user_id);
+						cameraAnglePO = sceneGrpcService.setRotateForMove( myState, trace_id, cameraAnglePO);
 						movePO.setCameraAngle(cameraAnglePO);
 					}
 				}
@@ -450,35 +398,7 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 
 	}
 
-	private AnglePO setRotateForMove(UserEntity user,String trace_id,AnglePO cameraAngle){
-		int angle = cameraAngle.getYaw();
-		int offAngle = 0;
-		offAngle = angle%45;
-
-		//先简单来,就累加。后续要再调试
-		//存储矫正的一组帧
-		offAngle = Math.abs(45 - offAngle);
-		RotateFrameEntity _rotateFrameEntity = null;
-		for(int j=0;j<offAngle;++j){
-			ActionPO rotateRequestPO = new ActionPO();
-			rotateRequestPO.setAction_type(1014);
-			rotateRequestPO.setTrace_id(trace_id);
-			rotateRequestPO.setUser_id(user.getUserId());
-			_rotateFrameEntity = rotateFrameService.findByAppIdAndBreakPointIdAndFrameIndex(user.getAppId(),user.getBreakPointId(),angle+j);
-			rotateRequestPO.setFrameId(_rotateFrameEntity.getId());
-			redisCache.setCacheList("setCacheRequest:"+user.getUserId(), Arrays.asList(rotateRequestPO));
-		}
-		if(_rotateFrameEntity == null){
-			AnglePO cameraAnglePO = new AnglePO();
-			cameraAnglePO.setPitch(0);
-			cameraAnglePO.setYaw(angle);
-			cameraAnglePO.setRoll(0);
-			return cameraAnglePO;
-		}
-		else{
-			return _rotateFrameEntity.getCameraAngle();
-		}
-	}
+
 
     @Override
     public void getBreakPoint(BreakPointRequest request, StreamObserver<BreakPointReply> responseObserver)   {
@@ -492,8 +412,9 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
 
      		//从表breakpoints里获取所有的呼吸点,并且是数组
             //TODO 根据查询所有
-            UserEntity userEntity = userService.findUserId(user_id);
-            List<BreakpointsEntity> allList = breakpointsService.findByAppId(userEntity.getAppId());
+            //UserEntity userEntity = userService.findUserId(user_id);
+			JSONObject myState = redisCache.getCacheObject("UserState:"+user_id);
+            List<BreakpointsEntity> allList = breakpointsService.findByAppId(myState.getString("appId"));
 
             BreakPointReply.Builder res = BreakPointReply.newBuilder();
 			res.setActionType(action_type);
@@ -533,68 +454,8 @@ public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBa
     public void joystick(JoystickRequest request, StreamObserver<NormalReply> responseObserver)   {
      	try {
             log.info("进入{}",request);
-            int actionType = request.getActionType();
-            DirAction dirAction = request.getDirAction();
-     		String trace_id = request.getTraceId();
-     		String user_id = request.getUserId();
-     		String packet_id = request.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);
-			//邻居点里找角度最合适的点
-			BreakpointsEntity breakpointsEntity = breakpointsService.findByAppIdAndBreakPointId(user.getAppId(), user.getBreakPointId());
-			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(user.getAppId(), (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(user.getFrameId());
-				AnglePO cameraAnglePO = rotateFrameEntity.getCameraAngle();
-				cameraAnglePO = setRotateForMove( user, trace_id,cameraAnglePO);
-				JSONArray path = new JSONArray();
-				path.add(user.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( user.getAppId(),user.getBreakPointId(),targetBreakpointsEntity.getBreakPointId(), cameraAnglePO.getYaw()%45);
-				movePO.setSubFrameIndex(subFrameIndex);
-
-				redisCache.setCacheList("setCacheRequest:"+user_id, Arrays.asList(movePO));
-			}
+			redisPublishService.sendProtocolMessage(RedisQueueConstant.JOYSTICK_QUEUE,request.toBuilder());
 			//找到与角度move_angle最近的邻居点
      		//移动player,并且更新相机角度
 			NormalReply.Builder builder = NormalReply.newBuilder();

+ 151 - 0
src/main/java/com/fdkk/fdkkmeta/redis/impl/RedisSubscribeServiceImpl.java

@@ -1,17 +1,35 @@
 package com.fdkk.fdkkmeta.redis.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.fdkk.fdkkmeta.config.MetaConfig;
+import com.fdkk.fdkkmeta.domain.entity.mysql.BreakpointsEntity;
+import com.fdkk.fdkkmeta.domain.entity.mysql.RotateFrameEntity;
+import com.fdkk.fdkkmeta.domain.entity.mysql.UserEntity;
+import com.fdkk.fdkkmeta.domain.po.ActionPO;
+import com.fdkk.fdkkmeta.domain.po.AnglePO;
+import com.fdkk.fdkkmeta.grpc.DirAction;
 import com.fdkk.fdkkmeta.grpc.JoystickRequest;
 import com.fdkk.fdkkmeta.grpc.RotateRequest;
+import com.fdkk.fdkkmeta.grpc.RotationAction;
+import com.fdkk.fdkkmeta.grpcService.SceneGrpcService;
+import com.fdkk.fdkkmeta.redis.RedisCache;
 import com.fdkk.fdkkmeta.redis.RedisSubscribeService;
+import com.fdkk.fdkkmeta.service.BreakpointsService;
+import com.fdkk.fdkkmeta.service.MoveFrameService;
+import com.fdkk.fdkkmeta.service.RotateFrameService;
+import com.fdkk.fdkkmeta.service.UserService;
 import com.fdkk.fdkkmeta.util.ProtoJsonUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.connection.Message;
 import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Nullable;
+import java.util.Arrays;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -21,6 +39,27 @@ import java.util.Objects;
 @Slf4j
 @Component
 public class RedisSubscribeServiceImpl  implements RedisSubscribeService {
+
+    @Autowired
+    MetaConfig metaConfig;
+
+    @Autowired
+    UserService userService;
+
+    @Autowired
+    BreakpointsService breakpointsService;
+    @Autowired
+    RotateFrameService rotateFrameService;
+
+    @Autowired
+    MoveFrameService moveFrameService;
+
+    @Autowired
+    RedisCache redisCache;
+
+    @Autowired
+    SceneGrpcService sceneGrpcService;
+
     @Override
     public void rotateMessage(String message) {
         if (Objects.isNull(message)) {
@@ -30,6 +69,53 @@ public class RedisSubscribeServiceImpl  implements RedisSubscribeService {
         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());
     }
 
@@ -42,6 +128,71 @@ public class RedisSubscribeServiceImpl  implements RedisSubscribeService {
         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());
     }
 }

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

@@ -119,6 +119,8 @@ public class UpdateFrameMetaTask {
                             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);
@@ -141,6 +143,8 @@ public class UpdateFrameMetaTask {
                             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);