diff --git a/api/auth.go b/api/auth.go index 709c0ff..815a12c 100644 --- a/api/auth.go +++ b/api/auth.go @@ -163,7 +163,12 @@ func updateRoleInfo(c *gin.Context) { return } int64Id, _ := strconv.ParseInt(id, 10, 64) - c.JSON(http.StatusOK, service.UpdateAuthRole(int32(int64Id), &req)) + rid := int32(int64Id) + result := service.UpdateAuthRole(rid, &req) + if result { + middleware.ClearUserPermissionByRid(rid) + } + c.JSON(http.StatusOK, result) } // 删除角色信息 @@ -190,7 +195,12 @@ func deleteRoleInfo(c *gin.Context) { } zap.S().Debug("传入参数id为" + id) int64Id, _ := strconv.ParseInt(id, 10, 64) - c.JSON(http.StatusOK, service.DeleteAuthRole(int32(int64Id))) + rid := int32(int64Id) + result := service.DeleteAuthRole(rid) + if result { + middleware.ClearUserPermissionByRid(rid) + } + c.JSON(http.StatusOK, result) } // 分页查询接口路径信息 @@ -377,5 +387,9 @@ func assignRoleToUser(c *gin.Context) { c.JSON(http.StatusBadRequest, "保存参数出错") return } - c.JSON(http.StatusOK, service.UserLinkRole(&req)) + result := service.UserLinkRole(&req) + if result { + middleware.ClearUserPermission(req.Uid) + } + c.JSON(http.StatusOK, result) } diff --git a/api/project.go b/api/project.go index 838c59b..8737fb7 100644 --- a/api/project.go +++ b/api/project.go @@ -64,7 +64,7 @@ func pageQueryProject(c *gin.Context) { // @Accept json // @Produce json // @Param ProjectReqDto query dto.ProjectReqDto true "项目查询条件" -// @Success 200 {object} dto.PageDto +// @Success 200 {object} model.Project // @Failure 401 {object} dto.ErrorDto // @Failure 404 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto diff --git a/api/simulation.go b/api/simulation.go index 49ba307..71f5f33 100644 --- a/api/simulation.go +++ b/api/simulation.go @@ -22,6 +22,7 @@ import ( func InitSimulationRouter(api *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { authed := api.Group("/v1/simulation").Use(authMiddleware.MiddlewareFunc(), middleware.PermissMiddleware) authed.POST("/create", create) + authed.POST("/createByProject", createByProjectId) authed.GET("/state/:id", findSimulationState) authed.POST("/destroy/:id", destroy) authed.GET("/list", findAllSimulations) @@ -33,6 +34,7 @@ func InitSimulationRouter(api *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle // 初始化地图信息 initPublishMapInfo() apiproto.RegisterMsgServer(&apiproto.SimulationServer{}) + apiproto.RegisterMsgServer(&apiproto.MemoryChangeServer{}) } func initPublishMapInfo() { @@ -61,7 +63,6 @@ func initPublishMapInfo() { // @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) @@ -70,7 +71,40 @@ func create(c *gin.Context) { rsp := dto.SimulationCreateRspDto{ MapId: req.MapId, } - rsp.SimulationId = simulation.CreateSimulation(req.MapId) + rsp.SimulationId = simulation.CreateSimulation(req.MapId, req.ProjectId) + c.JSON(http.StatusOK, &rsp) +} + +// 创建ATS测试仿真通过项目ID +// +// @Summary 创建ATS测试仿真 +// +// @Security JwtAuth +// +// @Description 创建ATS测试仿真通过项目ID +// @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/createByProject [post] +func createByProjectId(c *gin.Context) { + req := dto.SimulationCreateReqDto{} + if err := c.ShouldBind(&req); nil != err { + panic(err) + } + zap.S().Debug("创建仿真请求:", req) + rsp := dto.SimulationCreateRspDto{ + ProjectId: req.ProjectId, + } + mapInfos := service.QueryPublishedGi(req.ProjectId) + if len(mapInfos) == 0 { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: "项目未关联地图"}) + } + mapInfo := mapInfos[0] + rsp.SimulationId = simulation.CreateSimulation(mapInfo.ID, req.ProjectId) c.JSON(http.StatusOK, &rsp) } @@ -85,10 +119,10 @@ func create(c *gin.Context) { // @Accept json // @Produce json // @Param Authorization header string true "JWT Token" -// @Param SimulationCreateReqDto body dto.SimulationCreateReqDto true "创建仿真请求" +// @Param id path int true "仿真id" // @Success 200 {object} dto.SimulationCreateRspDto // @Failure 500 {object} dto.ErrorDto -// @Router /api/v1/simulation/create [post] +// @Router /api/v1/simulation/state/:id [get] func findSimulationState(c *gin.Context) { simId := c.Param("id") simulation := checkDeviceDataAndReturn(simId) @@ -120,19 +154,18 @@ func destroy(c *gin.Context) { // 获取ATS测试系统所有仿真实例的基本信息 // -// @Summary 获取ATS测试系统所有仿真实例的基本信息 +// @Summary 获取ATS测试系统所有仿真实例的基本信息 // -// @Security JwtAuth +// @Security JwtAuth // -// @Description ATS测试仿真-添加列车 -// @Tags ATS测试仿真Api -// @Accept json -// @Produce json -// @Param Authorization header string true "JWT Token" -// -// @Success 200 {object} dto.SimulationInfoRepDtoArr +// @Description 获取ATS测试系统所有仿真实例的基本信息 +// @Tags ATS测试仿真Api +// @Accept json +// @Produce json +// @Param Authorization header string true "JWT Token" +// @Success 200 {object} dto.SimulationInfoRspDtoArr // @Failure 500 {object} dto.ErrorDto -// @Router /api/v1/simulation/list [get] +// @Router /api/v1/simulation/list [get] func findAllSimulations(c *gin.Context) { zap.S().Debug("ATS测试仿真-获取ATS测试系统所有仿真实例的基本信息,请求") //TODO 后续调用 @@ -145,7 +178,7 @@ func findAllSimulations(c *gin.Context) { // // @Security JwtAuth // -// @Description ATS测试仿真-添加列车 +// @Description 地图数据校验 // @Tags ATS测试仿真Api // @Accept json // @Produce json @@ -241,7 +274,7 @@ func removeTrain(c *gin.Context) { // // @Security JwtAuth // -// @Description ATS测试仿真-添加列车 +// @Description ATS测试-操作道岔 // @Tags ATS测试仿真Api // @Accept json // @Produce json diff --git a/ats/verify/protos/graphicData/picture.pb.go b/ats/verify/protos/graphicData/picture.pb.go index 83ec618..2fe8d05 100644 --- a/ats/verify/protos/graphicData/picture.pb.go +++ b/ats/verify/protos/graphicData/picture.pb.go @@ -27,6 +27,8 @@ const ( PictureType_StationLayout PictureType = 0 // * Psl界面 PictureType_Psl PictureType = 1 + // * 继电器柜界面 + PictureType_RelayCabinetLayout PictureType = 2 ) // Enum value maps for PictureType. @@ -34,10 +36,12 @@ var ( PictureType_name = map[int32]string{ 0: "StationLayout", 1: "Psl", + 2: "RelayCabinetLayout", } PictureType_value = map[string]int32{ - "StationLayout": 0, - "Psl": 1, + "StationLayout": 0, + "Psl": 1, + "RelayCabinetLayout": 2, } ) @@ -72,12 +76,13 @@ var File_picture_proto protoreflect.FileDescriptor var file_picture_proto_rawDesc = []byte{ 0x0a, 0x0d, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, - 0x29, 0x0a, 0x0b, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, + 0x41, 0x0a, 0x0b, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x10, - 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x73, 0x6c, 0x10, 0x01, 0x42, 0x21, 0x5a, 0x1f, 0x2e, 0x2f, - 0x61, 0x74, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x73, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x73, 0x6c, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x65, + 0x6c, 0x61, 0x79, 0x43, 0x61, 0x62, 0x69, 0x6e, 0x65, 0x74, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, + 0x10, 0x02, 0x42, 0x21, 0x5a, 0x1f, 0x2e, 0x2f, 0x61, 0x74, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, + 0x63, 0x44, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/ats/verify/protos/graphicData/pslGraphics.pb.go b/ats/verify/protos/graphicData/pslGraphics.pb.go index 6991dce..a92c07d 100644 --- a/ats/verify/protos/graphicData/pslGraphics.pb.go +++ b/ats/verify/protos/graphicData/pslGraphics.pb.go @@ -20,12 +20,64 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type PslElementColor int32 + +const ( + PslElementColor_red PslElementColor = 0 + PslElementColor_green PslElementColor = 1 + PslElementColor_blue PslElementColor = 2 +) + +// Enum value maps for PslElementColor. +var ( + PslElementColor_name = map[int32]string{ + 0: "red", + 1: "green", + 2: "blue", + } + PslElementColor_value = map[string]int32{ + "red": 0, + "green": 1, + "blue": 2, + } +) + +func (x PslElementColor) Enum() *PslElementColor { + p := new(PslElementColor) + *p = x + return p +} + +func (x PslElementColor) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PslElementColor) Descriptor() protoreflect.EnumDescriptor { + return file_pslGraphics_proto_enumTypes[0].Descriptor() +} + +func (PslElementColor) Type() protoreflect.EnumType { + return &file_pslGraphics_proto_enumTypes[0] +} + +func (x PslElementColor) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PslElementColor.Descriptor instead. +func (PslElementColor) EnumDescriptor() ([]byte, []int) { + return file_pslGraphics_proto_rawDescGZIP(), []int{0} +} + type PslGraphicStorage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Psllights []*PslLight `protobuf:"bytes,1,rep,name=psllights,proto3" json:"psllights,omitempty"` // psl圆形灯 + Canvas *Canvas `protobuf:"bytes,1,opt,name=canvas,proto3" json:"canvas,omitempty"` + PslLights []*PslLight `protobuf:"bytes,2,rep,name=pslLights,proto3" json:"pslLights,omitempty"` // psl圆形灯 + PslButtons []*PslButton `protobuf:"bytes,3,rep,name=pslButtons,proto3" json:"pslButtons,omitempty"` + PslKeys []*PslKey `protobuf:"bytes,4,rep,name=pslKeys,proto3" json:"pslKeys,omitempty"` } func (x *PslGraphicStorage) Reset() { @@ -60,9 +112,30 @@ func (*PslGraphicStorage) Descriptor() ([]byte, []int) { return file_pslGraphics_proto_rawDescGZIP(), []int{0} } -func (x *PslGraphicStorage) GetPsllights() []*PslLight { +func (x *PslGraphicStorage) GetCanvas() *Canvas { if x != nil { - return x.Psllights + return x.Canvas + } + return nil +} + +func (x *PslGraphicStorage) GetPslLights() []*PslLight { + if x != nil { + return x.PslLights + } + return nil +} + +func (x *PslGraphicStorage) GetPslButtons() []*PslButton { + if x != nil { + return x.PslButtons + } + return nil +} + +func (x *PslGraphicStorage) GetPslKeys() []*PslKey { + if x != nil { + return x.PslKeys } return nil } @@ -73,8 +146,10 @@ type PslLight struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Common *CommonInfo `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` - Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + Common *CommonInfo `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + TopAnnotation string `protobuf:"bytes,3,opt,name=topAnnotation,proto3" json:"topAnnotation,omitempty"` + LightColor PslElementColor `protobuf:"varint,4,opt,name=lightColor,proto3,enum=pslGraphicData.PslElementColor" json:"lightColor,omitempty"` } func (x *PslLight) Reset() { @@ -123,6 +198,164 @@ func (x *PslLight) GetCode() string { return "" } +func (x *PslLight) GetTopAnnotation() string { + if x != nil { + return x.TopAnnotation + } + return "" +} + +func (x *PslLight) GetLightColor() PslElementColor { + if x != nil { + return x.LightColor + } + return PslElementColor_red +} + +// * PSL按钮 +type PslButton struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Common *CommonInfo `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + TopAnnotation string `protobuf:"bytes,3,opt,name=topAnnotation,proto3" json:"topAnnotation,omitempty"` + ButtonColor PslElementColor `protobuf:"varint,4,opt,name=buttonColor,proto3,enum=pslGraphicData.PslElementColor" json:"buttonColor,omitempty"` +} + +func (x *PslButton) Reset() { + *x = PslButton{} + if protoimpl.UnsafeEnabled { + mi := &file_pslGraphics_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PslButton) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PslButton) ProtoMessage() {} + +func (x *PslButton) ProtoReflect() protoreflect.Message { + mi := &file_pslGraphics_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PslButton.ProtoReflect.Descriptor instead. +func (*PslButton) Descriptor() ([]byte, []int) { + return file_pslGraphics_proto_rawDescGZIP(), []int{2} +} + +func (x *PslButton) GetCommon() *CommonInfo { + if x != nil { + return x.Common + } + return nil +} + +func (x *PslButton) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +func (x *PslButton) GetTopAnnotation() string { + if x != nil { + return x.TopAnnotation + } + return "" +} + +func (x *PslButton) GetButtonColor() PslElementColor { + if x != nil { + return x.ButtonColor + } + return PslElementColor_red +} + +// * PSL钥匙 +type PslKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Common *CommonInfo `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + TopAnnotation string `protobuf:"bytes,3,opt,name=topAnnotation,proto3" json:"topAnnotation,omitempty"` + RightAnnotation string `protobuf:"bytes,4,opt,name=rightAnnotation,proto3" json:"rightAnnotation,omitempty"` +} + +func (x *PslKey) Reset() { + *x = PslKey{} + if protoimpl.UnsafeEnabled { + mi := &file_pslGraphics_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PslKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PslKey) ProtoMessage() {} + +func (x *PslKey) ProtoReflect() protoreflect.Message { + mi := &file_pslGraphics_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PslKey.ProtoReflect.Descriptor instead. +func (*PslKey) Descriptor() ([]byte, []int) { + return file_pslGraphics_proto_rawDescGZIP(), []int{3} +} + +func (x *PslKey) GetCommon() *CommonInfo { + if x != nil { + return x.Common + } + return nil +} + +func (x *PslKey) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +func (x *PslKey) GetTopAnnotation() string { + if x != nil { + return x.TopAnnotation + } + return "" +} + +func (x *PslKey) GetRightAnnotation() string { + if x != nil { + return x.RightAnnotation + } + return "" +} + var File_pslGraphics_proto protoreflect.FileDescriptor var file_pslGraphics_proto_rawDesc = []byte{ @@ -130,16 +363,57 @@ var file_pslGraphics_proto_rawDesc = []byte{ 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x70, 0x73, 0x6c, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x1b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0x4b, 0x0a, 0x11, 0x50, 0x73, 0x6c, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x73, 0x6c, 0x6c, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x73, 0x6c, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x73, 0x6c, 0x4c, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x09, 0x70, 0x73, 0x6c, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, 0x4f, 0x0a, - 0x08, 0x50, 0x73, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x21, + 0x22, 0xe5, 0x01, 0x0a, 0x11, 0x50, 0x73, 0x6c, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, + 0x44, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x52, 0x06, 0x63, 0x61, 0x6e, + 0x76, 0x61, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x73, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x73, 0x6c, 0x47, 0x72, 0x61, 0x70, + 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x73, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x09, 0x70, 0x73, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x70, + 0x73, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x70, 0x73, 0x6c, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, + 0x2e, 0x50, 0x73, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x73, 0x6c, 0x42, + 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x70, 0x73, 0x6c, 0x4b, 0x65, 0x79, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x73, 0x6c, 0x47, 0x72, 0x61, + 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x73, 0x6c, 0x4b, 0x65, 0x79, 0x52, + 0x07, 0x70, 0x73, 0x6c, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xb6, 0x01, 0x0a, 0x08, 0x50, 0x73, 0x6c, + 0x4c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, + 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f, + 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x3f, 0x0a, 0x0a, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x73, 0x6c, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, + 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x73, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x0a, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x22, 0xb9, 0x01, 0x0a, 0x09, 0x50, 0x73, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, + 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x70, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x62, 0x75, + 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1f, 0x2e, 0x70, 0x73, 0x6c, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, + 0x2e, 0x50, 0x73, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x9d, 0x01, + 0x0a, 0x06, 0x50, 0x73, 0x6c, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, + 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, + 0x0d, 0x74, 0x6f, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x2f, 0x0a, + 0x0f, 0x50, 0x73, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x12, 0x07, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x67, 0x72, 0x65, + 0x65, 0x6e, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x21, 0x5a, 0x1f, 0x2e, 0x2f, 0x61, 0x74, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, @@ -157,20 +431,32 @@ func file_pslGraphics_proto_rawDescGZIP() []byte { return file_pslGraphics_proto_rawDescData } -var file_pslGraphics_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_pslGraphics_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_pslGraphics_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_pslGraphics_proto_goTypes = []interface{}{ - (*PslGraphicStorage)(nil), // 0: pslGraphicData.PslGraphicStorage - (*PslLight)(nil), // 1: pslGraphicData.PslLight - (*CommonInfo)(nil), // 2: graphicData.CommonInfo + (PslElementColor)(0), // 0: pslGraphicData.PslElementColor + (*PslGraphicStorage)(nil), // 1: pslGraphicData.PslGraphicStorage + (*PslLight)(nil), // 2: pslGraphicData.PslLight + (*PslButton)(nil), // 3: pslGraphicData.PslButton + (*PslKey)(nil), // 4: pslGraphicData.PslKey + (*Canvas)(nil), // 5: graphicData.Canvas + (*CommonInfo)(nil), // 6: graphicData.CommonInfo } var file_pslGraphics_proto_depIdxs = []int32{ - 1, // 0: pslGraphicData.PslGraphicStorage.psllights:type_name -> pslGraphicData.PslLight - 2, // 1: pslGraphicData.PslLight.common:type_name -> graphicData.CommonInfo - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 5, // 0: pslGraphicData.PslGraphicStorage.canvas:type_name -> graphicData.Canvas + 2, // 1: pslGraphicData.PslGraphicStorage.pslLights:type_name -> pslGraphicData.PslLight + 3, // 2: pslGraphicData.PslGraphicStorage.pslButtons:type_name -> pslGraphicData.PslButton + 4, // 3: pslGraphicData.PslGraphicStorage.pslKeys:type_name -> pslGraphicData.PslKey + 6, // 4: pslGraphicData.PslLight.common:type_name -> graphicData.CommonInfo + 0, // 5: pslGraphicData.PslLight.lightColor:type_name -> pslGraphicData.PslElementColor + 6, // 6: pslGraphicData.PslButton.common:type_name -> graphicData.CommonInfo + 0, // 7: pslGraphicData.PslButton.buttonColor:type_name -> pslGraphicData.PslElementColor + 6, // 8: pslGraphicData.PslKey.common:type_name -> graphicData.CommonInfo + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_pslGraphics_proto_init() } @@ -204,19 +490,44 @@ func file_pslGraphics_proto_init() { return nil } } + file_pslGraphics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PslButton); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pslGraphics_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PslKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pslGraphics_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, + NumEnums: 1, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, GoTypes: file_pslGraphics_proto_goTypes, DependencyIndexes: file_pslGraphics_proto_depIdxs, + EnumInfos: file_pslGraphics_proto_enumTypes, MessageInfos: file_pslGraphics_proto_msgTypes, }.Build() File_pslGraphics_proto = out.File diff --git a/ats/verify/protos/state/device_state.pb.go b/ats/verify/protos/state/device_state.pb.go index 395ceb2..5cd0f3e 100644 --- a/ats/verify/protos/state/device_state.pb.go +++ b/ats/verify/protos/state/device_state.pb.go @@ -1261,6 +1261,134 @@ func (x *PushedDevicesStatus) GetAllStatus() *AllDevicesStatus { return nil } +// 仿真信息状态 +type SimulationStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SimulationId string `protobuf:"bytes,1,opt,name=simulationId,proto3" json:"simulationId,omitempty"` + MapId int32 `protobuf:"varint,2,opt,name=mapId,proto3" json:"mapId,omitempty"` + ProjectId int32 `protobuf:"varint,3,opt,name=projectId,proto3" json:"projectId,omitempty"` +} + +func (x *SimulationStatus) Reset() { + *x = SimulationStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_device_state_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SimulationStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SimulationStatus) ProtoMessage() {} + +func (x *SimulationStatus) ProtoReflect() protoreflect.Message { + mi := &file_device_state_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SimulationStatus.ProtoReflect.Descriptor instead. +func (*SimulationStatus) Descriptor() ([]byte, []int) { + return file_device_state_proto_rawDescGZIP(), []int{12} +} + +func (x *SimulationStatus) GetSimulationId() string { + if x != nil { + return x.SimulationId + } + return "" +} + +func (x *SimulationStatus) GetMapId() int32 { + if x != nil { + return x.MapId + } + return 0 +} + +func (x *SimulationStatus) GetProjectId() int32 { + if x != nil { + return x.ProjectId + } + return 0 +} + +// 变更信息状态 +type MemoryDataStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AllSimulations []*SimulationStatus `protobuf:"bytes,1,rep,name=allSimulations,proto3" json:"allSimulations,omitempty"` + AddSimulations []*SimulationStatus `protobuf:"bytes,2,rep,name=addSimulations,proto3" json:"addSimulations,omitempty"` + RemoveSimulations []*SimulationStatus `protobuf:"bytes,3,rep,name=removeSimulations,proto3" json:"removeSimulations,omitempty"` +} + +func (x *MemoryDataStatus) Reset() { + *x = MemoryDataStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_device_state_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MemoryDataStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MemoryDataStatus) ProtoMessage() {} + +func (x *MemoryDataStatus) ProtoReflect() protoreflect.Message { + mi := &file_device_state_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MemoryDataStatus.ProtoReflect.Descriptor instead. +func (*MemoryDataStatus) Descriptor() ([]byte, []int) { + return file_device_state_proto_rawDescGZIP(), []int{13} +} + +func (x *MemoryDataStatus) GetAllSimulations() []*SimulationStatus { + if x != nil { + return x.AllSimulations + } + return nil +} + +func (x *MemoryDataStatus) GetAddSimulations() []*SimulationStatus { + if x != nil { + return x.AddSimulations + } + return nil +} + +func (x *MemoryDataStatus) GetRemoveSimulations() []*SimulationStatus { + if x != nil { + return x.RemoveSimulations + } + return nil +} + var File_device_state_proto protoreflect.FileDescriptor var file_device_state_proto_rawDesc = []byte{ @@ -1457,16 +1585,37 @@ var file_device_state_proto_rawDesc = []byte{ 0x09, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x2a, 0x37, 0x0a, 0x0b, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6e, 0x79, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x41, 0x78, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x10, - 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x10, 0x03, 0x42, 0x54, 0x0a, - 0x25, 0x63, 0x6c, 0x75, 0x62, 0x2e, 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x62, 0x6a, - 0x72, 0x74, 0x73, 0x73, 0x2e, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x42, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x19, 0x2e, 0x2f, 0x61, 0x74, 0x73, 0x2f, - 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x6a, 0x0a, 0x10, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x6d, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x6d, 0x61, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x61, 0x70, + 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, + 0x22, 0xdb, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x53, 0x69, 0x6d, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x53, 0x69, 0x6d, 0x75, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x61, 0x64, 0x64, 0x53, 0x69, 0x6d, + 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x61, 0x64, 0x64, 0x53, 0x69, 0x6d, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x11, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x37, + 0x0a, 0x0b, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, + 0x03, 0x41, 0x6e, 0x79, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x78, 0x6c, 0x65, 0x10, 0x01, + 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, + 0x68, 0x79, 0x73, 0x69, 0x63, 0x10, 0x03, 0x42, 0x54, 0x0a, 0x25, 0x63, 0x6c, 0x75, 0x62, 0x2e, + 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x62, 0x6a, 0x72, 0x74, 0x73, 0x73, 0x2e, 0x61, + 0x74, 0x73, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, + 0x42, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x5a, 0x19, 0x2e, 0x2f, 0x61, 0x74, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1482,7 +1631,7 @@ func file_device_state_proto_rawDescGZIP() []byte { } var file_device_state_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_device_state_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_device_state_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_device_state_proto_goTypes = []interface{}{ (SectionType)(0), // 0: state.SectionType (*LinkState)(nil), // 1: state.LinkState @@ -1497,6 +1646,8 @@ var file_device_state_proto_goTypes = []interface{}{ (*VariationStatus)(nil), // 10: state.VariationStatus (*AllDevicesStatus)(nil), // 11: state.AllDevicesStatus (*PushedDevicesStatus)(nil), // 12: state.PushedDevicesStatus + (*SimulationStatus)(nil), // 13: state.SimulationStatus + (*MemoryDataStatus)(nil), // 14: state.MemoryDataStatus } var file_device_state_proto_depIdxs = []int32{ 0, // 0: state.SectionState.type:type_name -> state.SectionType @@ -1510,11 +1661,14 @@ var file_device_state_proto_depIdxs = []int32{ 2, // 8: state.AllDevicesStatus.sectionState:type_name -> state.SectionState 10, // 9: state.PushedDevicesStatus.varStatus:type_name -> state.VariationStatus 11, // 10: state.PushedDevicesStatus.allStatus:type_name -> state.AllDevicesStatus - 11, // [11:11] is the sub-list for method output_type - 11, // [11:11] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 13, // 11: state.MemoryDataStatus.allSimulations:type_name -> state.SimulationStatus + 13, // 12: state.MemoryDataStatus.addSimulations:type_name -> state.SimulationStatus + 13, // 13: state.MemoryDataStatus.removeSimulations:type_name -> state.SimulationStatus + 14, // [14:14] is the sub-list for method output_type + 14, // [14:14] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_device_state_proto_init() } @@ -1667,6 +1821,30 @@ func file_device_state_proto_init() { return nil } } + file_device_state_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SimulationStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_device_state_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MemoryDataStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1674,7 +1852,7 @@ func file_device_state_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_device_state_proto_rawDesc, NumEnums: 1, - NumMessages: 12, + NumMessages: 14, NumExtensions: 0, NumServices: 0, }, diff --git a/ats/verify/simulation/simulation_manage.go b/ats/verify/simulation/simulation_manage.go index 3731cd2..2f3c8c6 100644 --- a/ats/verify/simulation/simulation_manage.go +++ b/ats/verify/simulation/simulation_manage.go @@ -82,11 +82,11 @@ func init() { var simulationMap sync.Map // 创建仿真对象 -func CreateSimulation(mapId int32) string { +func CreateSimulation(mapId, projectId int32) string { simulationId := createSimulationId(mapId) _, e := simulationMap.Load(simulationId) if !e { - verifySimulation := memory.CreateSimulation(mapId, simulationId) + verifySimulation := memory.CreateSimulation(mapId, projectId, simulationId) //通知动力学 httpCode, _, err := dynamics.SendSimulationStartReq(buildLineBaseInfo(memory.QueryMapVerifyStructure(verifySimulation.MapId))) if httpCode != http.StatusOK || err != nil { @@ -117,13 +117,14 @@ func createSimulationId(mapId int32) string { } // 获取仿真列表 -func ListAllSimulations() []*dto.SimulationInfoRepDto { - simArr := []*dto.SimulationInfoRepDto{} +func ListAllSimulations() []*dto.SimulationInfoRspDto { + simArr := []*dto.SimulationInfoRspDto{} simulationMap.Range(func(_, v any) bool { s := v.(*memory.VerifySimulation) - simArr = append(simArr, &dto.SimulationInfoRepDto{ + simArr = append(simArr, &dto.SimulationInfoRspDto{ SimulationId: s.SimulationId, - MapId: strconv.Itoa(int(s.MapId)), + MapId: s.MapId, + ProjectId: s.ProjectId, }) return true }) diff --git a/ats/verify/simulation/wayside/memory/wayside_simulation.go b/ats/verify/simulation/wayside/memory/wayside_simulation.go index 7faff06..7f2aa6e 100644 --- a/ats/verify/simulation/wayside/memory/wayside_simulation.go +++ b/ats/verify/simulation/wayside/memory/wayside_simulation.go @@ -8,6 +8,8 @@ import ( type VerifySimulation struct { //地图id MapId int32 + // 项目ID + ProjectId int32 //仿真id SimulationId string //仿真内存数据 @@ -15,10 +17,11 @@ type VerifySimulation struct { } // 创建仿真对象 -func CreateSimulation(mapId int32, simulationId string) *VerifySimulation { +func CreateSimulation(mapId, projectId int32, simulationId string) *VerifySimulation { m := &WaysideMemory{} verifySimulation := &VerifySimulation{ MapId: mapId, + ProjectId: projectId, SimulationId: simulationId, Memory: m.Create(), } diff --git a/bj-rtss-message b/bj-rtss-message index e8d0e1e..e33f466 160000 --- a/bj-rtss-message +++ b/bj-rtss-message @@ -1 +1 @@ -Subproject commit e8d0e1e67593db6463c0b36870a6865e380e7a9e +Subproject commit e33f466f120e257e2b6a30e8d85281aad5f21ec1 diff --git a/dto/auth.go b/dto/auth.go index ac88c2a..879302d 100644 --- a/dto/auth.go +++ b/dto/auth.go @@ -56,6 +56,7 @@ const ( ) type AuthUserStorageDto struct { + UID int32 `json:"uid" form:"uid"` IsAdmin bool `json:"isAdmin" form:"isAdmin"` RoleIds []int32 `json:"roleIds" form:"roleIds"` AuthPaths []*AuthPath `json:"authPath" form:"authPath"` diff --git a/dto/simulation.go b/dto/simulation.go index d04dc7e..f055462 100644 --- a/dto/simulation.go +++ b/dto/simulation.go @@ -4,12 +4,16 @@ package dto type SimulationCreateReqDto struct { //地图id MapId int32 `json:"mapId" form:"mapId"` + // 项目id + ProjectId int32 `json:"projectId" form:"projectId"` } // 创建仿真响应 type SimulationCreateRspDto struct { //地图id MapId int32 `json:"mapId" form:"mapId"` + // 项目ID + ProjectId int32 `json:"projectId" form:"projectId"` //仿真id SimulationId string `json:"simulationId" form:"simulationId"` } @@ -72,8 +76,9 @@ type CheckMapDataRspDto struct { } // 仿真实例的基本信息响应 -type SimulationInfoRepDto struct { +type SimulationInfoRspDto struct { SimulationId string `form:"simulationId" json:"simulationId"` - MapId string `form:"mapId" json:"mapId"` + MapId int32 `form:"mapId" json:"mapId"` + ProjectId int32 `form:"projectId" json:"projectId"` } -type SimulationInfoRepDtoArr []SimulationInfoRepDto +type SimulationInfoRspDtoArr []SimulationInfoRspDto diff --git a/dto/user.go b/dto/user.go index 68ca64c..2d6f663 100644 --- a/dto/user.go +++ b/dto/user.go @@ -1,6 +1,10 @@ package dto -import "joylink.club/bj-rtsts-server/db/model" +import ( + "time" + + "joylink.club/bj-rtsts-server/db/model" +) // 分页查询用户请求 type PageUserReqDto struct { @@ -12,3 +16,11 @@ type PageUserReqDto struct { } type RegisterUser = model.User + +type UserRspDto struct { + ID int32 `json:"id" form:"id"` + Name string `json:"name" form:"name"` // 名字 + Mobile string `json:"mobile" form:"mobile"` // 手机号 + RegisterTime time.Time `json:"register_time" form:"register_time"` // 注册时间 + Roles []*AuthRoleRspDto `json:"roles" form:"roles"` +} diff --git a/grpcproto/memory_change_server.go b/grpcproto/memory_change_server.go new file mode 100644 index 0000000..6f98d59 --- /dev/null +++ b/grpcproto/memory_change_server.go @@ -0,0 +1,70 @@ +package apiproto + +import ( + "time" + + "google.golang.org/protobuf/proto" + "joylink.club/bj-rtsts-server/ats/verify/protos/state" + "joylink.club/bj-rtsts-server/ats/verify/simulation" +) + +type MemoryChangeServer struct { + simulationMap map[string]*state.SimulationStatus +} + +// 返回通道格式 +func (t *MemoryChangeServer) getChannelName() string { + return "memory-data-change" +} + +// 消息运行间隔 +func (t *MemoryChangeServer) getInterval() time.Duration { + return 1 * time.Second +} + +// 返回所有数据 +func (t *MemoryChangeServer) allMsgData(params map[string]string) []byte { + arr := make([]*state.SimulationStatus, len(t.simulationMap)) + i := 0 + for _, v := range t.simulationMap { + arr[i] = v + i++ + } + msg := &state.MemoryDataStatus{AllSimulations: arr} + data, err := proto.Marshal(msg) + if err != nil { + panic(err) + } + return data +} + +// 定时发送数据 +func (t *MemoryChangeServer) onTick() []TopicMsg { + simArr := simulation.GetSimulationArr() + addArr, delArr := []*state.SimulationStatus{}, []*state.SimulationStatus{} + // 增加的仿真 + allSim := make(map[string]bool) + for _, v := range simArr { + allSim[v.SimulationId] = true + if t.simulationMap[v.SimulationId] == nil { + addArr = append(addArr, &state.SimulationStatus{ + SimulationId: v.SimulationId, + MapId: v.MapId, + ProjectId: v.ProjectId, + }) + } + } + // 已经移除的仿真 + for k, v := range t.simulationMap { + if !allSim[k] { + delArr = append(delArr, v) + } + } + msg := &state.MemoryDataStatus{AddSimulations: addArr, RemoveSimulations: delArr} + b, err := proto.Marshal(msg) + if err != nil { + panic(err) + } + msgArr := []TopicMsg{{channalName: t.getChannelName(), data: b}} + return msgArr +} diff --git a/grpcproto/simulation_server.go b/grpcproto/simulation_server.go index 6ea3b4a..e44f9af 100644 --- a/grpcproto/simulation_server.go +++ b/grpcproto/simulation_server.go @@ -4,7 +4,7 @@ import ( "strings" "time" - "github.com/golang/protobuf/proto" + "google.golang.org/protobuf/proto" "joylink.club/bj-rtsts-server/ats/verify/simulation" ) diff --git a/middleware/auth.go b/middleware/auth.go index 439d09f..27352a3 100644 --- a/middleware/auth.go +++ b/middleware/auth.go @@ -73,6 +73,24 @@ func validateUserPath(path, method string, paths []*dto.AuthPath) bool { } // 重新登录时移除权限 -func clearUserPermission(userId int32) { +func ClearUserPermission(userId int32) { delete(userAuthPathMap, userId) } + +// 修改角色后清理用户权限 +func ClearUserPermissionByRid(roleId int32) { + uids := []int32{} + for uid, u := range userAuthPathMap { + for _, r := range u.RoleIds { + if r == roleId { + uids = append(uids, uid) + break + } + } + } + if len(uids) > 0 { + for _, uid := range uids { + ClearUserPermission(uid) + } + } +} diff --git a/middleware/jwt.go b/middleware/jwt.go index 1505556..a3747b7 100644 --- a/middleware/jwt.go +++ b/middleware/jwt.go @@ -52,7 +52,7 @@ func InitGinJwtMiddleware() (authMiddleware *jwt.GinJWTMiddleware) { return nil, jwt.ErrFailedAuthentication } // 清理权限 - clearUserPermission(user.ID) + ClearUserPermission(user.ID) return user, nil }, // Authorizator: func(data interface{}, c *gin.Context) bool { diff --git a/service/auth.go b/service/auth.go index c319017..edf8ade 100644 --- a/service/auth.go +++ b/service/auth.go @@ -238,7 +238,7 @@ func QueryUserAuthApiPath(uid int32) *dto.AuthUserStorageDto { if err1 != nil { panic(dto.ErrorDto{Code: dto.DataOperationError, Message: err1.Error()}) } - authUser := &dto.AuthUserStorageDto{IsAdmin: false} + authUser := &dto.AuthUserStorageDto{UID: uid, IsAdmin: false} rn := len(linkRids) if rn > 0 { rids := make([]int32, rn) diff --git a/service/user.go b/service/user.go index 99a12b7..7ae00ff 100644 --- a/service/user.go +++ b/service/user.go @@ -2,10 +2,12 @@ package service import ( "fmt" + "time" + "go.uber.org/zap" "joylink.club/bj-rtsts-server/db/dbquery" + "joylink.club/bj-rtsts-server/db/model" "joylink.club/bj-rtsts-server/dto" - "time" ) // 分页查询用户列表 @@ -22,7 +24,7 @@ func PagingQueryUser(query *dto.PageUserReqDto) (*dto.PageDto, error) { if err != nil { panic(err) } - return &dto.PageDto{Total: int(total), PageQueryDto: query.PageQueryDto, Records: records}, err + return &dto.PageDto{Total: int(total), PageQueryDto: query.PageQueryDto, Records: linkUserRole(records)}, err } func Register(user *dto.RegisterUser) { @@ -65,3 +67,48 @@ func FindUserInfo(userId int32) *dto.RegisterUser { } return user } + +// 查询关联用户角色信息 +func linkUserRole(users []*model.User) []*dto.UserRspDto { + un := len(users) + uids := make([]int32, un) + userMap := make(map[int32]*dto.UserRspDto, un) + for i, u := range users { + uids[i] = u.ID + userMap[u.ID] = &dto.UserRspDto{ + ID: u.ID, + Name: u.Name, + Mobile: u.Mobile, + RegisterTime: u.RegisterTime, + Roles: []*dto.AuthRoleRspDto{}, + } + } + // 获取角色信息 + roles, err1 := dbquery.AuthRole.Find() + if err1 != nil { + panic(dto.ErrorDto{Code: dto.DataOperationError, Message: err1.Error()}) + } + roleMap := make(map[int32]*model.AuthRole) + for _, r := range roles { + roleMap[r.ID] = r + } + // 用户角色关联信息 + utls, err2 := dbquery.AuthRoleUser.Where(dbquery.AuthRoleUser.UID.In(uids...)).Find() + if err2 != nil { + panic(dto.ErrorDto{Code: dto.DataOperationError, Message: err2.Error()}) + } + for _, ul := range utls { + u, r := userMap[ul.UID], roleMap[ul.Rid] + if u == nil || r == nil { + continue + } + u.Roles = append(u.Roles, &dto.AuthRoleRspDto{Id: r.ID, Name: r.Name}) + } + userArr := make([]*dto.UserRspDto, un) + i := 0 + for _, u := range userMap { + userArr[i] = u + i++ + } + return userArr +}