Commit 540c0826 by dliangx

update

parent e2688d48
......@@ -2,7 +2,9 @@ package geo
import (
"database/sql"
"encoding/json"
"fmt"
"time"
"com.dliangx.xplot/appserver/model"
)
......@@ -24,21 +26,23 @@ func SaveRoute(line model.GeoJson) (model.OptRoute, error) {
// 插入数据
var route model.OptRoute
jsonGeometry, _ := json.Marshal(line.Geometry)
jsonProperties, _ := json.Marshal(line.Properties)
if line.Opt == 1 {
err = tx.QueryRow(`
INSERT INTO opt_routes (type, geometry, properties, opt_time)
VALUES ($1, ST_GeomFromGeoJSON($2), $3, now())
RETURNING id, type, properties, opt_time
`, line.Type, line.Geometry, line.Properties).Scan(
&route.ID, &route.Type, &route.Properties, &route.OptTime,
RETURNING id
`, line.Type, string(jsonGeometry), string(jsonProperties)).Scan(
&route.ID,
)
} else if line.Opt == 2 {
err = tx.QueryRow(`
INSERT INTO opt_fly_routes (type, geometry, properties, opt_time)
VALUES ($1, ST_GeomFromGeoJSON($2), $3, now())
RETURNING id, type, properties, opt_time
`, line.Type, line.Geometry, line.Properties).Scan(
&route.ID, &route.Type, &route.Properties, &route.OptTime,
RETURNING id
`, line.Type, string(jsonGeometry), string(jsonProperties)).Scan(
&route.ID,
)
}
......@@ -50,7 +54,10 @@ func SaveRoute(line model.GeoJson) (model.OptRoute, error) {
if err = tx.Commit(); err != nil {
return model.OptRoute{}, fmt.Errorf("commit transaction failed: %w", err)
}
route.Type = line.Type
route.OptTime = time.Now()
route.Geometry = line.Geometry
route.Properties = line.Properties
return route, nil
}
......@@ -68,12 +75,14 @@ func SaveOptArea(optArea model.GeoJson) (model.OptArea, error) {
defer tx.Rollback()
var area model.OptArea
jsonGeometry, _ := json.Marshal(optArea.Geometry)
jsonProperties, _ := json.Marshal(optArea.Properties)
err = tx.QueryRow(`
INSERT INTO opt_areas (type, geometry, properties, opt_time)
VALUES ($1, ST_GeomFromGeoJSON($2), $3, now())
RETURNING id, type, properties, opt_time
`, optArea.Type, optArea.Geometry, optArea.Properties).Scan(
&area.ID, &area.Type, &area.Properties, &area.OptTime,
RETURNING id
`, optArea.Type, string(jsonGeometry), string(jsonProperties)).Scan(
&area.ID,
)
if err != nil {
return model.OptArea{}, fmt.Errorf("insert area failed: %w", err)
......@@ -82,7 +91,10 @@ func SaveOptArea(optArea model.GeoJson) (model.OptArea, error) {
if err = tx.Commit(); err != nil {
return model.OptArea{}, fmt.Errorf("commit transaction failed: %w", err)
}
area.Type = optArea.Type
area.OptTime = time.Now()
area.Geometry = optArea.Geometry
area.Properties = optArea.Properties
return area, nil
}
......@@ -100,23 +112,25 @@ func UpdateRoute(line model.GeoJson) (model.OptRoute, error) {
defer tx.Rollback()
var route model.OptRoute
jsonGeometry, _ := json.Marshal(line.Geometry)
jsonProperties, _ := json.Marshal(line.Properties)
if line.Opt == 1 {
err = tx.QueryRow(`
UPDATE opt_routes
SET type = $1, geometry = ST_GeomFromGeoJSON($2), properties = $3, opt_time = now()
WHERE id = $4
RETURNING id, type, properties, opt_time
`, line.Type, line.Geometry, line.Properties, line.ID).Scan(
&route.ID, &route.Type, &route.Properties, &route.OptTime,
RETURNING id
`, line.Type, string(jsonGeometry), string(jsonProperties), line.ID).Scan(
&route.ID,
)
} else if line.Opt == 2 {
err = tx.QueryRow(`
UPDATE opt_fly_routes
SET type = $1, geometry = ST_GeomFromGeoJSON($2), properties = $3, opt_time = now()
WHERE id = $4
RETURNING id, type, properties, opt_time
`, line.Type, line.Geometry, line.Properties, line.ID).Scan(
&route.ID, &route.Type, &route.Properties, &route.OptTime,
RETURNING id
`, line.Type, string(jsonGeometry), string(jsonProperties), line.ID).Scan(
&route.ID,
)
}
......@@ -127,7 +141,10 @@ func UpdateRoute(line model.GeoJson) (model.OptRoute, error) {
if err = tx.Commit(); err != nil {
return model.OptRoute{}, fmt.Errorf("commit transaction failed: %w", err)
}
route.Type = line.Type
route.OptTime = time.Now()
route.Geometry = line.Geometry
route.Properties = line.Properties
return route, nil
}
......@@ -145,13 +162,15 @@ func UpdateOptArea(optArea model.GeoJson) (model.OptArea, error) {
defer tx.Rollback()
var area model.OptArea
jsonGeometry, _ := json.Marshal(optArea.Geometry)
jsonProperties, _ := json.Marshal(optArea.Properties)
err = tx.QueryRow(`
UPDATE opt_areas
SET type = $1, geometry = ST_GeomFromGeoJSON($2), properties = $3, opt_time = now()
WHERE id = $4
RETURNING id, type, properties, opt_time
`, optArea.Type, optArea.Geometry, optArea.Properties, optArea.ID).Scan(
&area.ID, &area.Type, &area.Properties, &area.OptTime,
RETURNING id
`, optArea.Type, string(jsonGeometry), string(jsonProperties), optArea.ID).Scan(
&area.ID,
)
if err != nil {
return model.OptArea{}, fmt.Errorf("update area failed: %w", err)
......@@ -160,7 +179,10 @@ func UpdateOptArea(optArea model.GeoJson) (model.OptArea, error) {
if err = tx.Commit(); err != nil {
return model.OptArea{}, fmt.Errorf("commit transaction failed: %w", err)
}
area.Type = optArea.Type
area.OptTime = time.Now()
area.Geometry = optArea.Geometry
area.Properties = optArea.Properties
return area, nil
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment