modelRT/handler/circuit_diagram_load.go

89 lines
2.5 KiB
Go
Raw Normal View History

package handler
import (
2024-11-27 15:41:22 +08:00
"net/http"
"strconv"
2024-11-27 15:41:22 +08:00
"modelRT/diagram"
"modelRT/log"
"modelRT/network"
"github.com/gin-gonic/gin"
2024-11-27 15:41:22 +08:00
"go.uber.org/zap"
)
2024-11-27 16:48:11 +08:00
// CircuitDiagramLoadHandler define circuit diagram load process API
2024-12-06 16:13:11 +08:00
// @Summary load circuit diagram info
// @Description load circuit diagram info by page id
// @Tags load circuit_diagram
// @Accept json
// @Produce json
// @Param page_id path int64 true "page ID"
// @Success 200 {object} network.SuccessResponse "request process success"
// @Failure 400 {object} network.FailureResponse "request process failed"
// @Router /model/diagram_load/{page_id} [get]
2024-11-27 16:48:11 +08:00
func CircuitDiagramLoadHandler(c *gin.Context) {
logger := log.GetLoggerInstance()
2024-11-27 15:41:22 +08:00
pageID, err := strconv.ParseInt(c.Query("page_id"), 10, 64)
if err != nil {
logger.Error("get pageID from url param failed", zap.Error(err))
2024-12-06 16:13:11 +08:00
header := network.FailResponseHeader{Status: http.StatusBadRequest, ErrMsg: err.Error()}
resp := network.FailureResponse{
FailResponseHeader: header,
2024-11-27 15:41:22 +08:00
PayLoad: map[string]interface{}{
"page_id": pageID,
},
}
c.JSON(http.StatusOK, resp)
return
2024-11-27 15:41:22 +08:00
}
topologicInfo, err := diagram.GetGraphMap(pageID)
if err != nil {
logger.Error("get topologic data from set by pageID failed", zap.Error(err))
2024-12-06 16:13:11 +08:00
header := network.FailResponseHeader{Status: http.StatusBadRequest, ErrMsg: err.Error()}
resp := network.FailureResponse{
FailResponseHeader: header,
2024-11-27 15:41:22 +08:00
PayLoad: map[string]interface{}{
"page_id": pageID,
},
}
c.JSON(http.StatusOK, resp)
return
2024-11-27 15:41:22 +08:00
}
payLoad := make(map[string]interface{})
payLoad["root_vertex"] = topologicInfo.RootVertex
payLoad["topologic"] = topologicInfo.VerticeLinks
2024-12-18 16:25:49 +08:00
componentParamMap := make(map[string]any)
2024-11-27 15:41:22 +08:00
for _, VerticeLink := range topologicInfo.VerticeLinks {
for _, componentUUID := range VerticeLink {
UUIDStr := componentUUID.String()
componentParams, err := diagram.GetComponentMap(UUIDStr)
if err != nil {
logger.Error("get component data from set by uuid failed", zap.Error(err))
2024-12-06 16:13:11 +08:00
header := network.FailResponseHeader{Status: http.StatusBadRequest, ErrMsg: err.Error()}
resp := network.FailureResponse{
FailResponseHeader: header,
2024-11-27 15:41:22 +08:00
PayLoad: map[string]interface{}{
"uuid": UUIDStr,
},
}
c.JSON(http.StatusOK, resp)
return
2024-11-27 15:41:22 +08:00
}
2024-12-18 16:25:49 +08:00
componentParamMap[UUIDStr] = componentParams
2024-11-27 15:41:22 +08:00
}
}
payLoad["component_params"] = componentParamMap
2024-12-06 16:13:11 +08:00
resp := network.SuccessResponse{
SuccessResponseHeader: network.SuccessResponseHeader{
Status: http.StatusOK,
ErrMsg: "",
},
PayLoad: payLoad,
2024-11-27 15:41:22 +08:00
}
c.JSON(http.StatusOK, resp)
}