feat: management && notify

This commit is contained in:
fallen-angle
2022-05-04 20:06:21 +08:00
parent e58bafd0d3
commit 7598280fc1
28 changed files with 1226 additions and 143 deletions

View File

@@ -9,11 +9,13 @@ import (
// This file is define some business error
const (
BAD_REQUEST = "Bad Request"
DATA_NOT_FOUND = "Data not Found"
STATUS_DATA_NOT_FOUND = 210
FORBIDDENT = "FORBIDDENT"
PAGE_NOT_FOUND = "404 page not found"
BAD_REQUEST = "Bad Request"
DATA_NOT_FOUND = "Data not Found"
STATUS_DATA_NOT_FOUND = 210
FORBIDDENT = "FORBIDDENT"
PAGE_NOT_FOUND = "404 page not found"
STATUS_OPERATION_FAILED = 410
OPERATION_FAILED = "operation failed"
)
func RequestError(c *gin.Context, code int, data interface{}) {
@@ -40,3 +42,7 @@ func Forbidden(c *gin.Context) {
func UrlNotFound(c *gin.Context) {
c.String(http.StatusNotFound, PAGE_NOT_FOUND)
}
func OperationFailed(c *gin.Context) {
c.String(STATUS_OPERATION_FAILED, OPERATION_FAILED)
}

68
handler/management.go Normal file
View File

@@ -0,0 +1,68 @@
package handler
import (
"nCovTrack-Backend/service/management"
"nCovTrack-Backend/utils"
"strconv"
"github.com/gin-gonic/gin"
)
func PullContactHandler(c *gin.Context) {
claims := utils.ClaimsFromHeader(c)
patientId, _ := strconv.Atoi(c.Param("patientId"))
rowsAffected := management.PullFromFaker(claims, patientId)
if rowsAffected == -1 {
DataNotFound(c, map[string]interface{}{"patientId": patientId})
return
}
utils.Succ(c, map[string]interface{}{"pullAmount": rowsAffected})
}
func ListObservationsHandler(c *gin.Context) {
jsonMap := bindQuery(c)
utils.Succ(c, management.ListObservation(jsonMap))
}
func InsertObservationHandler(c *gin.Context) {
claims := utils.ClaimsFromHeader(c)
observaion := bindJson(c)
delete(observaion, "id")
ok := management.InsertObservation(claims, observaion)
if ok {
utils.Succ(c, nil)
} else {
OperationFailed(c)
}
}
func GetObservationHandler(c *gin.Context) {
id, _ := strconv.Atoi(c.Param("id"))
utils.Succ(c, management.GetObservation(id))
}
func ListLocationHandler(c *gin.Context) {
queryMap := bindQuery(c)
utils.Succ(c, management.ListLocation(queryMap))
}
func InsertLocationHandler(c *gin.Context) {
claims := utils.ClaimsFromHeader(c)
locationMap := bindJson(c)
ok := management.InsertLocation(claims, locationMap)
if ok {
utils.Succ(c, nil)
} else {
OperationFailed(c)
}
}
func DeleteLocationHandler(c *gin.Context) {
id, _ := strconv.Atoi(c.Param("id"))
ok := management.DeleteLocation(id)
if ok {
utils.Succ(c, nil)
} else {
OperationFailed(c)
}
}

View File

@@ -57,3 +57,14 @@ func ChinaDataHandler(c *gin.Context) {
data := service.GetChinaNCovStatistic()
utils.Succ(c, data)
}
// ChinaTrendHandler Get china data
// @Tags Statistics
// @Produce json
// @Summary china trend
// @Success 200 {object} utils.GinResponse{data=models.ChinaTrend}
// @Router /statistics/china/trend [get]
func ChinaTrendHandler(c *gin.Context) {
data := service.GetChinaTrend()
utils.Succ(c, data)
}

View File

@@ -2,6 +2,7 @@ package handler
import (
"encoding/json"
"github.com/gin-gonic/gin"
)
@@ -46,3 +47,12 @@ func bindJsonStruct[T any](c *gin.Context) map[string]interface{} {
}
return jsonMap
}
func bindQuery(c *gin.Context) map[string]interface{} {
jsonMap := map[string]interface{}{}
queries := c.Request.URL.Query()
for k := range queries {
jsonMap[k] = c.Query(k)
}
return jsonMap
}