package api import ( "net/http" jwt "github.com/appleboy/gin-jwt/v2" "github.com/gin-gonic/gin" "go.uber.org/zap" "joylink.club/bj-rtsts-server/ats/verify/simulation" "joylink.club/bj-rtsts-server/dto" apiproto "joylink.club/bj-rtsts-server/grpcproto" ) func InitSimulationRouter(api *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { authed := api.Group("/v1/simulation").Use(authMiddleware.MiddlewareFunc()) authed.POST("/create", create) authed.POST("/destroy/:id", destroy) authed.GET("/list", findAllSimulations) authed.POST("/train/add", addTrain) authed.POST("/check/data", checkSimMapData) authed.POST("/train/remove", removeTrain) authed.POST("/switch/operation", switchOperation) apiproto.RegisterMsgServer(&apiproto.SimulationServer{}) } // 创建ATS测试仿真 // // @Summary 创建ATS测试仿真 // // @Security JwtAuth // // @Description 创建ATS测试仿真 // @Tags ATS测试仿真Api // @Accept json // @Produce json // @Param Authorization header string true "JWT Token" // @Param SimulationCreateReqDto body dto.SimulationCreateReqDto true "创建仿真请求" // @Success 200 {object} dto.SimulationCreateRspDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/simulation/create [post] func create(c *gin.Context) { //user,_:=c.Get(middleware.IdentityKey) req := dto.SimulationCreateReqDto{} if err := c.ShouldBind(&req); nil != err { panic(err) } zap.S().Debug("创建仿真请求:", req) rsp := dto.SimulationCreateRspDto{} rsp.MapId = req.MapId //rsp.SimulationId = fmt.Sprintf("sim-%d", req.MapId) rsp.SimulationId = simulation.CreateSimulation(1, nil) c.JSON(http.StatusOK, &rsp) } // ATS测试仿真-添加列车 // // @Summary ATS测试仿真-添加列车 // // @Security JwtAuth // // @Description ATS测试仿真-添加列车 // @Tags ATS测试仿真Api // @Accept json // @Produce json // @Param Authorization header string true "JWT Token" // @Param AddTrainReqDto body dto.AddTrainReqDto true "ATS测试仿真-添加列车" // @Success 200 {object} dto.AddTrainRspDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/simulation/train/add [post] func addTrain(c *gin.Context) { //user,_:=c.Get(middleware.IdentityKey) req := dto.AddTrainReqDto{} if err := c.ShouldBind(&req); nil != err { panic(err) } zap.S().Debug("ATS测试仿真-添加列车,请求:", req) rsp := dto.AddTrainRspDto{} rsp.SimulationId = req.SimulationId rsp.TrainId = "666" c.JSON(http.StatusOK, &rsp) } // ATS仿真销毁 // // @Summary ATS仿真销毁 // // @Security JwtAuth // // @Description ATS测试仿真-添加列车 // @Tags ATS测试仿真Api // @Accept json // @Produce json // @Param Authorization header string true "JWT Token" // @Param id path int true "仿真id" // @Success 200 {object} string // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/simulation/train/destroy/{id} [get] func destroy(c *gin.Context) { simId := c.Param("id") zap.S().Debug("ATS测试仿真-ATS仿真销毁 请求:", simId) c.JSON(http.StatusOK, "ok") } // 获取ATS测试系统所有仿真实例的基本信息 // // @Summary 获取ATS测试系统所有仿真实例的基本信息 // // @Security JwtAuth // // @Description ATS测试仿真-添加列车 // @Tags ATS测试仿真Api // @Accept json // @Produce json // @Param Authorization header string true "JWT Token" // // @Success 200 {object} dto.SimulationInfoRepDtoArr // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/simulation/list [get] func findAllSimulations(c *gin.Context) { zap.S().Debug("ATS测试仿真-获取ATS测试系统所有仿真实例的基本信息,请求") //TODO 后续调用 c.JSON(http.StatusOK, dto.SimulationInfoRepDtoArr{dto.SimulationInfoRepDto{"1", "123"}, dto.SimulationInfoRepDto{"2", "333"}}) } // ATS测试仿真地图数据校验 // // @Summary ATS测试仿真地图数据校验 // // @Security JwtAuth // // @Description ATS测试仿真-添加列车 // @Tags ATS测试仿真Api // @Accept json // @Produce json // @Param Authorization header string true "JWT Token" // @Param RemoveTrainDto body dto.CheckMapDataReqDto true "ATS测试仿真-地图数据" // // @Success 200 {object} dto.CheckMapDataRspDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/simulation/check/data [post] func checkSimMapData(c *gin.Context) { rt := &dto.CheckMapDataRspDto{} err := c.Bind(rt) if err != nil { c.JSON(http.StatusInternalServerError, "参数错误") } else { //TODO 后续调用 c.JSON(http.StatusOK, dto.CheckMapDataRspDto{true, []string{"error"}}) } } // ATS测试仿真-移除列车 // // @Summary ATS测试仿真-移除列车 // // @Security JwtAuth // // @Description ATS测试仿真-移除列车 // @Tags ATS测试仿真Api // @Accept json // @Produce json // @Param Authorization header string true "JWT Token" // @Param RemoveTrainDto body dto.RemoveTrainDto true "ATS测试仿真-移除列车" // // @Success 200 {object} string // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/simulation/train/remove [post] func removeTrain(c *gin.Context) { rt := &dto.RemoveTrainDto{} err := c.Bind(rt) if err != nil { c.JSON(http.StatusInternalServerError, "参数错误") } else { //TODO 后续调用列车删除操作 c.JSON(http.StatusOK, "ok") } } // 获取ATS测试-操作道岔 // // @Summary 获取ATS测试-操作道岔 // // @Security JwtAuth // // @Description ATS测试仿真-添加列车 // @Tags ATS测试仿真Api // @Accept json // @Produce json // @Param Authorization header string true "JWT Token" // @Param RemoveTrainDto body dto.SwitchOperationReqDto true "ATS测试仿真-操作道岔" // // @Success 200 {object} string // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/simulation/switch/operation [post] func switchOperation(c *gin.Context) { switchOper := &dto.SwitchOperationReqDto{} err := c.Bind(switchOper) if err != nil { c.JSON(http.StatusInternalServerError, "参数错误") } else { //TODO 后续调用道岔操作 c.JSON(http.StatusOK, "ok") } }