Commit 540c0826 by dliangx

update

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