From 3120cfc3a57b1ca561ba950cd54c065a161527b3 Mon Sep 17 00:00:00 2001 From: douxu Date: Fri, 5 Sep 2025 17:10:34 +0800 Subject: [PATCH] add code of init measurement api --- handler/measurement_load.go | 55 ++++++++++++++++++++++++++++++ orm/circuit_diagram_measurement.go | 1 + router/measurement.go | 14 ++++++++ router/router.go | 1 + 4 files changed, 71 insertions(+) create mode 100644 handler/measurement_load.go create mode 100644 router/measurement.go diff --git a/handler/measurement_load.go b/handler/measurement_load.go new file mode 100644 index 0000000..4457910 --- /dev/null +++ b/handler/measurement_load.go @@ -0,0 +1,55 @@ +package handler + +import ( + "net/http" + + "modelRT/database" + "modelRT/logger" + "modelRT/network" + + "github.com/gin-gonic/gin" +) + +// TODO 优化redis 读取步骤 +// MeasurementGetHandler retrieves the value of measurement data +func MeasurementGetHandler(c *gin.Context) { + var request network.MeasurementGetRequest + + if err := c.ShouldBindJSON(&request); err != nil { + logger.Error(c, "Failed to unmarshal measurement get request", "error", err) + c.JSON(http.StatusOK, network.FailureResponse{ + Code: http.StatusBadRequest, + Msg: err.Error(), + }) + return + } + + pgClient := database.GetPostgresDBClient() + tx := pgClient.Begin() + + attrModel, err := database.ParseAttrToken(c, tx, request.MeasurementToken) + if err != nil { + tx.Rollback() + logger.Error(c, "Failed to parse attribute token", "attr_token", request.MeasurementToken, "error", err) + c.JSON(http.StatusOK, network.FailureResponse{ + Code: http.StatusBadRequest, + Msg: err.Error(), + PayLoad: map[string]interface{}{"attr_token": request.MeasurementToken}, + }) + return + } + tx.Commit() + + // The GetAttrValue method is assumed to exist on the AttrModelInterface. + // You need to add this method to your attribute_model.go interface definition. + attrValue := attrModel.GetAttrValue() + + c.JSON(http.StatusOK, network.SuccessResponse{ + Code: http.StatusOK, + Msg: "success", + PayLoad: map[string]interface{}{ + "attr_token": request.MeasurementToken, + "attr_value": attrValue, + }, + }) +} diff --git a/orm/circuit_diagram_measurement.go b/orm/circuit_diagram_measurement.go index c1b002d..fb276a5 100644 --- a/orm/circuit_diagram_measurement.go +++ b/orm/circuit_diagram_measurement.go @@ -15,6 +15,7 @@ type Measurement struct { Type int16 `gorm:"column:TYPE;not null;default:-1"` Size int `gorm:"column:SIZE;not null;default:-1"` DataSource map[string]interface{} `gorm:"column:DATA_SOURCE;type:jsonb;not null;default:'{}'"` + EventPlan map[string]interface{} `gorm:"column:EVENT_PLAN;type:jsonb;not null;default:'{}'"` BayUUID uuid.UUID `gorm:"column:BAY_UUID;type:uuid;not null"` ComponentUUID uuid.UUID `gorm:"column:COMPONENT_UUID;type:uuid;not null"` Op int `gorm:"column:OP;not null;default:-1"` diff --git a/router/measurement.go b/router/measurement.go new file mode 100644 index 0000000..7540d66 --- /dev/null +++ b/router/measurement.go @@ -0,0 +1,14 @@ +// Package router provides router config +package router + +import ( + "modelRT/handler" + + "github.com/gin-gonic/gin" +) + +// registerMeasurementRoutes define func of register measurement routes +func registerMeasurementRoutes(rg *gin.RouterGroup) { + g := rg.Group("/measurement/") + g.GET("load", handler.MeasurementGetHandler) +} diff --git a/router/router.go b/router/router.go index 094571d..af6d479 100644 --- a/router/router.go +++ b/router/router.go @@ -22,4 +22,5 @@ func RegisterRoutes(engine *gin.Engine) { routeGroup := engine.Group("") registerDiagramRoutes(routeGroup) registerAttrRoutes(routeGroup) + registerMeasurementRoutes(routeGroup) }