Commit 8000990b by dliangx

http handler impl

parent fec0a92b
......@@ -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
}
......
......@@ -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
......
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=
......
......@@ -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)
}
}
......
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