You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

157 lines
4.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package ControllerData
import (
"dsData/Model"
"dsData/Service"
"github.com/gin-gonic/gin"
"net/http"
)
//模块的路由配置
func Routers(r *gin.RouterGroup) {
rr := r.Group("")
//获取授权token
rr.POST("/token", token)
//数据下行,数据分发
rr.GET("/share", share)
//数据上行,数据汇集
r.POST("/collect", collect)
//数据类型获取
r.GET("/datatype", datatype)
return
}
// @Summary 获取授权票据
// @Description 获取授权票据
// @Tags 统一数据类
// @Accept application/x-www-form-urlencoded
// @Produce json
// @Param id formData string true "第三方系统的访问id"
// @Param secret formData string true "第三方系统的访问密码"
// @Success 200 {object} Model.Res
// @Router /data/token [post]
// @X-LengthLimit [{"id":"20,20"},{"secret":"26,26"}]
func token(c *gin.Context) {
id := c.PostForm("id")
secret := c.PostForm("secret")
success, token, expireTime := Service.Token(id, secret)
if success {
c.JSON(http.StatusOK, Model.Res{
Code: http.StatusOK,
Token: token,
ExpireTime: expireTime,
Msg: "获取成功",
})
return
} else {
c.JSON(http.StatusOK, Model.Res{
Code: http.StatusNotImplemented,
Msg: "用户名或密码不正确!",
})
return
}
}
// @Summary 共享的数据类型有哪些
// @Description 共享的数据类型有哪些
// @Tags 统一数据类
// @Accept application/x-www-form-urlencoded
// @Produce json
// @Param token query string true "访问票据"
// @Success 200 {object} Model.Res
// @Router /data/datatype [get]
// @X-LengthLimit [{"token":"26,26"}]
func datatype(c *gin.Context) {
//1、token是不是正确如果正确并且没有过期那么这个系统是谁
token := c.Query("token")
success, clientId := Service.CheckToken(token)
if !success {
c.JSON(http.StatusOK, Model.Res{
Code: http.StatusNotImplemented,
Msg: "票据无效!",
})
return
}
//2、获取数据列表
list := Service.Datatype(clientId)
c.JSON(http.StatusOK, Model.Res{
Code: http.StatusOK,
Data: list,
})
return
}
// @Summary 数据分发
// @Description 数据分发
// @Tags 统一数据类
// @Accept application/x-www-form-urlencoded
// @Produce json
// @Param token query string true "访问票据"
// @Param data_type query string true "获取哪一类数据"
// @Param start_time query string true "开始时间"
// @Param pk query string true "主键值,如果不清楚第一次可以传0,以后按返回的数据再次传入即可"
// @Success 200 {object} Model.Res
// @Router /data/share [get]
// @X-LengthLimit [{"token":"26,26"},{"data_type":"2,20"},{"start_time":"19,19"},{"pk":"1,10"}]
// @X-DateTime ["start_time"]
func share(c *gin.Context) {
//1、token是不是正确如果正确并且没有过期那么这个系统是谁
token := c.Query("token")
success, clientId := Service.CheckToken(token)
if !success {
c.JSON(http.StatusOK, Model.Res{
Code: http.StatusNotImplemented,
Msg: "票据无效!",
})
return
}
//2、判断获取的数据类型是否有效
dataType := c.Query("data_type")
exists := Service.DataTypeIsExists(dataType, clientId)
if !exists {
c.JSON(http.StatusOK, Model.Res{
Code: http.StatusNotImplemented,
Msg: "查询的数据类型无效!",
})
return
}
//3、检查当前系统是否有此数据类型的访问权(待扩展,接入系统,有哪些数据类型+数据范围的访问权)
//TODO
//4、返回数据
startTime := c.Query("start_time")
pk := c.Query("pk")
success, msg, vStartTime, vPk, list := Service.Share(clientId, dataType, startTime, pk)
if success {
c.JSON(http.StatusOK, Model.Res{
Code: http.StatusOK,
StartTime: vStartTime,
Count: len(list),
Pk: vPk,
Data: list,
})
return
} else {
c.JSON(http.StatusOK, Model.Res{
Code: http.StatusNotImplemented,
Msg: "获取数据失败:" + msg,
Count: 0,
})
return
}
}
// @Summary 数据上报
// @Description 数据上报
// @Tags 统一数据类
// @Accept application/x-www-form-urlencoded
// @Produce json
// @Param access_token formData string true "访问票据"
// @Success 200 {object} Model.Res
// @Router /oauth2/authorize [post]
func collect(c *gin.Context) {
//TODO
//一期暂无此内容
}