package handler import ( "fmt" "net/http" "modelRT/diagram" "modelRT/log" "modelRT/network" "github.com/gin-gonic/gin" "github.com/gofrs/uuid" "go.uber.org/zap" ) // CircuitDiagramUpdateHandler define circuit diagram update process API func CircuitDiagramUpdateHandler(c *gin.Context) { logger := log.GetLoggerInstance() var request network.CircuitDiagramUpdateRequest if err := c.ShouldBindJSON(&request); err != nil { logger.Error("unmarshal circuit diagram update info failed", zap.Error(err)) header := network.ResponseHeader{Status: http.StatusBadRequest, ErrMsg: err.Error()} resp := network.BasicResponse{ ResponseHeader: header, } c.JSON(http.StatusOK, resp) return } graph, err := diagram.GetGraphMap(request.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": request.PageID, }, } c.JSON(http.StatusOK, resp) return } for _, newTopologicLink := range request.TopologicLinks { fromUUID, err1 := uuid.FromString(newTopologicLink.FromUUID) toUUID, err2 := uuid.FromString(newTopologicLink.ToUUID) if err1 != nil || err2 != nil { var err error if err1 != nil { err = fmt.Errorf("format from_uuid failed:%w", err1) } if err2 != nil { err = fmt.Errorf("%s,format to_uuid failed:%w", err.Error(), err2) } logger.Error("format uuid from string failed", zap.Error(err)) header := network.ResponseHeader{Status: http.StatusBadRequest, ErrMsg: err.Error()} resp := network.BasicResponse{ ResponseHeader: header, PayLoad: map[string]interface{}{ "from_uuid": newTopologicLink.FromUUID, "to_uuid": newTopologicLink.ToUUID, }, } c.JSON(http.StatusOK, resp) return } graph.AddEdge(fromUUID, toUUID) // TODO 修改 component 先关信息 fmt.Println(request.ComponentInfos) } }