package handler import ( "fmt" "net/http" "strconv" "modelRT/diagram" "modelRT/log" "modelRT/network" "github.com/gin-gonic/gin" "go.uber.org/zap" ) // CircuitDiagramLoadHandler define circuit diagram load process API func CircuitDiagramLoadHandler(c *gin.Context) { logger := log.GetLoggerInstance() pageID, err := strconv.ParseInt(c.Query("page_id"), 10, 64) if err != nil { logger.Error("get pageID from url param failed", zap.Error(err)) header := network.ResponseHeader{Status: http.StatusBadRequest, ErrMsg: err.Error()} resp := network.BasicResponse{ ResponseHeader: header, PayLoad: map[string]interface{}{ "page_id": pageID, }, } c.JSON(http.StatusOK, resp) } topologicInfo, err := diagram.GetGraphMap(pageID) if err != nil { logger.Error("get topologic data from set by pageID failed", zap.Error(err)) header := network.ResponseHeader{Status: http.StatusBadRequest, ErrMsg: err.Error()} resp := network.BasicResponse{ ResponseHeader: header, PayLoad: map[string]interface{}{ "page_id": pageID, }, } c.JSON(http.StatusOK, resp) } payLoad := make(map[string]interface{}) payLoad["root_vertex"] = topologicInfo.RootVertex payLoad["topologic"] = topologicInfo.VerticeLinks componentParamMap := make(map[string][]byte) for _, VerticeLink := range topologicInfo.VerticeLinks { fmt.Println(VerticeLink) 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)) header := network.ResponseHeader{Status: http.StatusBadRequest, ErrMsg: err.Error()} resp := network.BasicResponse{ ResponseHeader: header, PayLoad: map[string]interface{}{ "uuid": UUIDStr, }, } c.JSON(http.StatusOK, resp) } byteSlice, err := componentParams.MarshalJSON() if err != nil { logger.Error("marshal component data failed", zap.Error(err)) header := network.ResponseHeader{Status: http.StatusBadRequest, ErrMsg: err.Error()} resp := network.BasicResponse{ ResponseHeader: header, } c.JSON(http.StatusOK, resp) } componentParamMap[UUIDStr] = byteSlice } } payLoad["component_params"] = componentParamMap resp := network.DiagramLoadResponse{ ResponseHeader: network.ResponseHeader{Status: http.StatusOK, ErrMsg: ""}, PayLoad: payLoad, } c.JSON(http.StatusOK, resp) }