From e376b160ce5b2d196893541efc5ab2d426455471 Mon Sep 17 00:00:00 2001 From: Shikong <919411476@qq.com> Date: Tue, 14 Mar 2023 19:10:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E6=94=B6=E4=B8=8A=E6=8A=A5=E7=9A=84?= =?UTF-8?q?=E5=AE=9A=E4=BD=8D=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.idea/codestream.xml | 2 +- .../golang/matrix-middle-service/docs/docs.go | 29 +++++++++ .../matrix-middle-service/docs/swagger.json | 29 +++++++++ .../matrix-middle-service/docs/swagger.yaml | 19 ++++++ .../controller/record/location/loaction.go | 61 +++++++++++++++++++ .../internel/controller/record/record.go | 11 ++++ .../internel/route/route.go | 2 + .../pkg/utils/time/time.go | 31 ++++++++++ 8 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 backend/golang/matrix-middle-service/internel/controller/record/location/loaction.go create mode 100644 backend/golang/matrix-middle-service/internel/controller/record/record.go create mode 100644 backend/golang/matrix-middle-service/pkg/utils/time/time.go diff --git a/backend/golang/matrix-middle-service/.idea/codestream.xml b/backend/golang/matrix-middle-service/.idea/codestream.xml index a0428d3..3281014 100644 --- a/backend/golang/matrix-middle-service/.idea/codestream.xml +++ b/backend/golang/matrix-middle-service/.idea/codestream.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/backend/golang/matrix-middle-service/docs/docs.go b/backend/golang/matrix-middle-service/docs/docs.go index 5d3969b..700413a 100644 --- a/backend/golang/matrix-middle-service/docs/docs.go +++ b/backend/golang/matrix-middle-service/docs/docs.go @@ -168,6 +168,35 @@ const docTemplate = `{ } } } + }, + "/record/location/post": { + "post": { + "description": "上报定位信息", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Record" + ], + "summary": "上报定位信息", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/resp.Response" + } + }, + "default": { + "description": "", + "schema": { + "$ref": "#/definitions/errorx.CodeErrorResponse" + } + } + } + } } }, "definitions": { diff --git a/backend/golang/matrix-middle-service/docs/swagger.json b/backend/golang/matrix-middle-service/docs/swagger.json index a79aae8..4c9dc18 100644 --- a/backend/golang/matrix-middle-service/docs/swagger.json +++ b/backend/golang/matrix-middle-service/docs/swagger.json @@ -161,6 +161,35 @@ } } } + }, + "/record/location/post": { + "post": { + "description": "上报定位信息", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Record" + ], + "summary": "上报定位信息", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/resp.Response" + } + }, + "default": { + "description": "", + "schema": { + "$ref": "#/definitions/errorx.CodeErrorResponse" + } + } + } + } } }, "definitions": { diff --git a/backend/golang/matrix-middle-service/docs/swagger.yaml b/backend/golang/matrix-middle-service/docs/swagger.yaml index efbd11e..88664c9 100644 --- a/backend/golang/matrix-middle-service/docs/swagger.yaml +++ b/backend/golang/matrix-middle-service/docs/swagger.yaml @@ -149,4 +149,23 @@ paths: summary: 获取 bot 类型列表 tags: - BotType + /record/location/post: + post: + consumes: + - application/json + description: 上报定位信息 + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/resp.Response' + default: + description: "" + schema: + $ref: '#/definitions/errorx.CodeErrorResponse' + summary: 上报定位信息 + tags: + - Record swagger: "2.0" diff --git a/backend/golang/matrix-middle-service/internel/controller/record/location/loaction.go b/backend/golang/matrix-middle-service/internel/controller/record/location/loaction.go new file mode 100644 index 0000000..a6c0a58 --- /dev/null +++ b/backend/golang/matrix-middle-service/internel/controller/record/location/loaction.go @@ -0,0 +1,61 @@ +package location + +import ( + "github.com/gofiber/fiber/v2" + "matrix-middle-service/pkg/logger" + response "matrix-middle-service/pkg/resp" + "matrix-middle-service/pkg/resp/errorx" + utils "matrix-middle-service/pkg/utils/json" + "matrix-middle-service/pkg/utils/time" +) + +func SetupLocation(r fiber.Router) { + api := r.Group("/location") + postLocation(api) +} + +type Data struct { + CallbackTime time.Time `json:"callbackTime"` + LocationTime time.Time `json:"locationTime"` + LocationType int `json:"locationType,omitempty"` + Latitude float64 `json:"latitude,omitempty"` + Longitude float64 `json:"longitude,omitempty"` + Accuracy float64 `json:"accuracy,omitempty"` + Altitude float64 `json:"altitude,omitempty"` + Bearing float64 `json:"bearing,omitempty"` + Speed float64 `json:"speed,omitempty"` + Country string `json:"country,omitempty"` + Province string `json:"province,omitempty"` + City string `json:"city,omitempty"` + District string `json:"district,omitempty"` + Street string `json:"street,omitempty"` + StreetNumber string `json:"streetNumber,omitempty"` + CityCode string `json:"cityCode,omitempty"` + AdCode string `json:"adCode,omitempty"` + Address string `json:"address,omitempty"` + Description string `json:"description,omitempty"` +} + +// postLocation +// @Summary 上报定位信息 +// @Description 上报定位信息 +// @Tags Record +// @Accept json +// @Produce json +// @Success 200 {object} response.Response +// @Failure default {object} errorx.CodeErrorResponse +// @Router /record/location/post [post] +func postLocation(api fiber.Router) { + api.Post("/post", func(ctx *fiber.Ctx) error { + data := &Data{} + err := ctx.BodyParser(data) + if err != nil { + logger.Log().Error(err) + return ctx.JSON(errorx.ParseError(err)) + } + + logger.Log().Debug(utils.Json(data)) + + return ctx.JSON(response.NewResponse(data)) + }) +} diff --git a/backend/golang/matrix-middle-service/internel/controller/record/record.go b/backend/golang/matrix-middle-service/internel/controller/record/record.go new file mode 100644 index 0000000..befc3db --- /dev/null +++ b/backend/golang/matrix-middle-service/internel/controller/record/record.go @@ -0,0 +1,11 @@ +package record + +import ( + "github.com/gofiber/fiber/v2" + "matrix-middle-service/internel/controller/record/location" +) + +func SetupRecordController(r fiber.Router) { + api := r.Group("/record") + location.SetupLocation(api) +} diff --git a/backend/golang/matrix-middle-service/internel/route/route.go b/backend/golang/matrix-middle-service/internel/route/route.go index 708a140..f1a89fd 100644 --- a/backend/golang/matrix-middle-service/internel/route/route.go +++ b/backend/golang/matrix-middle-service/internel/route/route.go @@ -3,6 +3,7 @@ package route import ( "github.com/gofiber/fiber/v2" "matrix-middle-service/internel/controller/bot" + "matrix-middle-service/internel/controller/record" "matrix-middle-service/pkg/config" ) @@ -12,4 +13,5 @@ func SetupRoute(app *fiber.App, conf *config.Conf) { } bot.SetupBotController(app) + record.SetupRecordController(app) } diff --git a/backend/golang/matrix-middle-service/pkg/utils/time/time.go b/backend/golang/matrix-middle-service/pkg/utils/time/time.go new file mode 100644 index 0000000..1f373fc --- /dev/null +++ b/backend/golang/matrix-middle-service/pkg/utils/time/time.go @@ -0,0 +1,31 @@ +package time + +import ( + "fmt" + "time" +) + +type Time time.Time + +const ( + timeFormat = "2006-01-02 15:04:05" +) + +// MarshalJSON on Json Time format Time field with %Y-%m-%d %H:%M:%S +func (t *Time) MarshalJSON() ([]byte, error) { + // 重写time转换成json之后的格式 + var tmp = fmt.Sprintf("\"%s\"", time.Time(*t).Format(timeFormat)) + return []byte(tmp), nil +} + +func (t *Time) UnmarshalJSON(data []byte) error { + // Ignore null, like in the main JSON package. + if string(data) == "null" { + return nil + } + // Fractional seconds are handled implicitly by Parse. + var err error + rawT, err := time.Parse(`"`+timeFormat+`"`, string(data)) + *t = Time(rawT) + return err +}