Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xplot_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
digit_plot
xplot_server
Commits
8000990b
Commit
8000990b
authored
Nov 10, 2024
by
dliangx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
http handler impl
parent
fec0a92b
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
131 additions
and
47 deletions
+131
-47
geo/area.go
+3
-3
go.mod
+1
-1
go.sum
+6
-4
handler/http_handler.go
+121
-39
No files found.
geo/area.go
View file @
8000990b
...
...
@@ -2,7 +2,7 @@ package geo
import
"com.dliangx.xplot/appserver/model"
func
SaveRoute
(
line
model
.
GeoJson
,
opt_type
int
)
(
model
.
OptRoute
,
error
)
{
func
SaveRoute
(
line
model
.
GeoJson
)
(
model
.
OptRoute
,
error
)
{
return
model
.
OptRoute
{},
nil
}
...
...
@@ -12,7 +12,7 @@ func SaveOptArea(optArea model.GeoJson) (model.OptArea, error) {
return
model
.
OptArea
{},
nil
}
func
UpdateRoute
(
line
model
.
GeoJson
,
opt_type
int
)
(
model
.
OptRoute
,
error
)
{
func
UpdateRoute
(
line
model
.
GeoJson
)
(
model
.
OptRoute
,
error
)
{
return
model
.
OptRoute
{},
nil
}
...
...
@@ -57,7 +57,7 @@ func GetRelatedAdmArea(obj model.GeoJson) ([]model.GeoJson, error) {
return
[]
model
.
GeoJson
{},
nil
}
func
CheckOptAreasCrossById
(
id1
,
id2
string
)
(
bool
,
error
)
{
func
CheckOptAreasCrossById
(
id1
,
id2
int
)
(
bool
,
error
)
{
return
false
,
nil
}
...
...
go.mod
View file @
8000990b
...
...
@@ -6,6 +6,7 @@ require (
github.com/cloudwego/hertz v0.9.2
github.com/lib/pq v1.10.9
github.com/paulmach/go.geojson v1.5.0
github.com/twpayne/go-geom v1.5.7
)
require (
...
...
@@ -24,7 +25,6 @@ require (
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/twpayne/go-geom v1.5.7 // indirect
golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
...
...
go.sum
View file @
8000990b
github.com/alecthomas/assert/v2 v2.10.0 h1:jjRCHsj6hBJhkmhznrCzoNpbA3zqy0fYiUcYZP/GkPY=
github.com/alecthomas/assert/v2 v2.10.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/bytedance/go-tagexpr/v2 v2.9.2 h1:QySJaAIQgOEDQBLS3x9BxOWrnhqu5sQ+f6HaZIxD39I=
github.com/bytedance/go-tagexpr/v2 v2.9.2/go.mod h1:5qsx05dYOiUXOUgnQ7w3Oz8BYs2qtM/bJokdLb79wRM=
github.com/bytedance/gopkg v0.0.0-20220413063733-65bf48ffb3a7 h1:PtwsQyQJGxf8iaPptPNaduEIu9BnrNms+pcRdHAxZaM=
...
...
@@ -20,7 +24,6 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
...
...
@@ -33,6 +36,8 @@ github.com/henrylee2cn/ameda v1.4.10 h1:JdvI2Ekq7tapdPsuhrc4CaFiqw6QXFvZIULWJgQy
github.com/henrylee2cn/ameda v1.4.10/go.mod h1:liZulR8DgHxdK+MEwvZIylGnmcjzQ6N6f2PlWe7nEO4=
github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8 h1:yE9ULgp02BhYIrO6sdV/FPe0xQM6fNHkVQW2IAymfM0=
github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8/go.mod h1:Nhe/DM3671a5udlv2AdV2ni/MZzgfv2qrPL5nIi3EGQ=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
...
...
@@ -79,8 +84,6 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20220110181412-a018aaa089fe/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
...
...
@@ -89,7 +92,6 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
...
...
handler/http_handler.go
View file @
8000990b
...
...
@@ -3,75 +3,157 @@ package handler
import
(
"context"
"fmt"
"strconv"
"com.dliangx.xplot/appserver/geo"
"com.dliangx.xplot/appserver/model"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/common/utils"
"github.com/cloudwego/hertz/pkg/protocol/consts"
"github.com/twpayne/go-geom"
"github.com/twpayne/go-geom/encoding/geojson"
"github.com/twpayne/go-geom/encoding/wkt"
)
func
SaveGeometry
(
ctx
context
.
Context
,
c
*
app
.
RequestContext
)
{
var
resp
model
.
GeoJson
c
.
BindAndValidate
(
&
resp
)
switch
resp
.
Opt
{
case
1
:
break
case
2
:
break
case
3
:
break
default
:
break
var
req
model
.
GeoJson
err
:=
c
.
BindAndValidate
(
&
req
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"geojson required"
})
}
if
req
.
Opt
==
1
||
req
.
Opt
==
2
{
resp
,
err
:=
geo
.
SaveRoute
(
req
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
resp
)
}
else
if
req
.
Opt
==
3
{
resp
,
err
:=
geo
.
SaveOptArea
(
req
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
resp
)
}
}
func
UpdateGeometry
(
ctx
context
.
Context
,
c
*
app
.
RequestContext
)
{
var
resp
model
.
GeoJson
c
.
BindAndValidate
(
&
resp
)
switch
resp
.
Opt
{
case
1
:
break
case
2
:
break
case
3
:
break
default
:
break
var
req
model
.
GeoJson
err
:=
c
.
BindAndValidate
(
&
req
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"geojson required"
})
}
if
req
.
Opt
==
1
||
req
.
Opt
==
2
{
resp
,
err
:=
geo
.
UpdateRoute
(
req
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
resp
)
}
else
if
req
.
Opt
==
3
{
resp
,
err
:=
geo
.
UpdateOptArea
(
req
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
resp
)
}
}
func
GetGeometry
(
ctx
context
.
Context
,
c
*
app
.
RequestContext
)
{
var
id
string
c
.
BindAndValidate
(
&
id
)
id
,
err
:=
strconv
.
Atoi
(
c
.
Params
.
ByName
(
"id"
))
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"id required"
})
}
opt
,
err
:=
strconv
.
Atoi
(
c
.
Params
.
ByName
(
"opt"
))
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"opt required"
})
}
if
opt
==
1
||
opt
==
2
{
resp
,
err
:=
geo
.
GetRoute
(
id
,
opt
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
resp
)
}
else
if
opt
==
3
{
resp
,
err
:=
geo
.
GetOptArea
(
id
,
opt
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
resp
)
}
}
func
DeleteGeometry
(
ctx
context
.
Context
,
c
*
app
.
RequestContext
)
{
var
id
string
c
.
BindAndValidate
(
&
id
)
id
,
err
:=
strconv
.
Atoi
(
c
.
Params
.
ByName
(
"id"
))
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"id required"
})
}
opt
,
err
:=
strconv
.
Atoi
(
c
.
Params
.
ByName
(
"opt"
))
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"opt required"
})
}
if
opt
==
1
||
opt
==
2
{
resp
,
err
:=
geo
.
DeleteRoute
(
id
,
opt
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
resp
)
}
else
if
opt
==
3
{
resp
,
err
:=
geo
.
DeleteOptArea
(
id
,
opt
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
resp
)
}
}
func
FindRelatedGeometry
(
ctx
context
.
Context
,
c
*
app
.
RequestContext
)
{
var
resp
model
.
GeoJson
c
.
BindAndValidate
(
&
resp
)
switch
resp
.
Opt
{
case
1
:
break
case
2
:
break
case
3
:
break
default
:
break
var
req
model
.
GeoJson
err
:=
c
.
BindAndValidate
(
&
req
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"geojson required"
})
}
if
req
.
Opt
==
1
||
req
.
Opt
==
2
{
resp
,
err
:=
geo
.
GetRelatedRoute
(
req
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
resp
)
}
else
if
req
.
Opt
==
3
{
resp
,
err
:=
geo
.
GetRelatedOptArea
(
req
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
resp
)
}
}
func
CheckTwoOptAreaIsCross
(
ctx
context
.
Context
,
c
*
app
.
RequestContext
)
{
var
resp
[]
model
.
GeoJson
c
.
BindAndValidate
(
&
resp
)
var
req
[]
model
.
GeoJson
err
:=
c
.
BindAndValidate
(
&
req
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"geojson required"
})
}
if
len
(
req
)
!=
2
{
c
.
JSON
(
consts
.
StatusBadRequest
,
utils
.
H
{
"message"
:
"need tow geojson body"
})
}
if
req
[
0
]
.
ID
==
0
||
req
[
1
]
.
ID
==
0
{
res
,
err
:=
geo
.
CheckAreasCross
(
req
[
0
],
req
[
1
])
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
res
)
}
else
{
res
,
err
:=
geo
.
CheckOptAreasCrossById
(
req
[
0
]
.
ID
,
req
[
1
]
.
ID
)
if
err
!=
nil
{
c
.
JSON
(
consts
.
StatusInternalServerError
,
err
.
Error
())
}
c
.
JSON
(
consts
.
StatusOK
,
res
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment