feat: replay service
This commit is contained in:
@@ -19,6 +19,13 @@ type mqttDebugStartRequest struct {
|
||||
PersistToDatabase bool `json:"persistToDatabase"`
|
||||
}
|
||||
|
||||
type mqttReplayStartRequest struct {
|
||||
Addr string `json:"addr"`
|
||||
EndTime int64 `json:"endTime"`
|
||||
RegionID uint32 `json:"regionId"`
|
||||
StartTime int64 `json:"startTime"`
|
||||
}
|
||||
|
||||
var debugUpgrader = websocket.Upgrader{
|
||||
CheckOrigin: func(r *http.Request) bool {
|
||||
return true
|
||||
@@ -89,6 +96,70 @@ func (sc *SystemDebugController) StopMqtt(c *gin.Context) {
|
||||
writeSuccess(c, http.StatusOK, "stop success", service.Status())
|
||||
}
|
||||
|
||||
// @Summary 获取MQTT重放状态
|
||||
// @Description 获取心率历史数据 MQTT 重放状态
|
||||
// @Tags 系统调试
|
||||
// @Produce json
|
||||
// @Security BearerAuth
|
||||
// @Success 200 {object} SwagAPIResponse "查询成功"
|
||||
// @Router /admin/system-debug/mqtt/replay/status [get]
|
||||
func (sc *SystemDebugController) MqttReplayStatus(c *gin.Context) {
|
||||
service := mqtt.GetReplayService()
|
||||
if service == nil {
|
||||
writeError(c, http.StatusServiceUnavailable, "mqtt replay service unavailable")
|
||||
return
|
||||
}
|
||||
writeSuccess(c, http.StatusOK, "query success", service.Status())
|
||||
}
|
||||
|
||||
// @Summary 启动MQTT历史数据重放
|
||||
// @Description 按指定时间范围重放历史心率数据到 MQTT
|
||||
// @Tags 系统调试
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Security BearerAuth
|
||||
// @Success 200 {object} SwagAPIResponse "启动成功"
|
||||
// @Router /admin/system-debug/mqtt/replay/start [post]
|
||||
func (sc *SystemDebugController) StartMqttReplay(c *gin.Context) {
|
||||
service := mqtt.GetReplayService()
|
||||
if service == nil {
|
||||
writeError(c, http.StatusServiceUnavailable, "mqtt replay service unavailable")
|
||||
return
|
||||
}
|
||||
var payload mqttReplayStartRequest
|
||||
if err := c.ShouldBindJSON(&payload); err != nil {
|
||||
writeError(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
status, err := service.Start(mqtt.ReplayStartRequest{
|
||||
Addr: payload.Addr,
|
||||
EndTime: payload.EndTime,
|
||||
RegionID: payload.RegionID,
|
||||
StartTime: payload.StartTime,
|
||||
})
|
||||
if err != nil {
|
||||
writeError(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
writeSuccess(c, http.StatusOK, "start success", status)
|
||||
}
|
||||
|
||||
// @Summary 停止MQTT历史数据重放
|
||||
// @Description 停止当前正在执行的心率历史数据 MQTT 重放
|
||||
// @Tags 系统调试
|
||||
// @Produce json
|
||||
// @Security BearerAuth
|
||||
// @Success 200 {object} SwagAPIResponse "停止成功"
|
||||
// @Router /admin/system-debug/mqtt/replay/stop [post]
|
||||
func (sc *SystemDebugController) StopMqttReplay(c *gin.Context) {
|
||||
service := mqtt.GetReplayService()
|
||||
if service == nil {
|
||||
writeError(c, http.StatusServiceUnavailable, "mqtt replay service unavailable")
|
||||
return
|
||||
}
|
||||
writeSuccess(c, http.StatusOK, "stop success", service.Stop())
|
||||
}
|
||||
|
||||
// @Summary MQTT WebSocket连接
|
||||
// @Description 通过WebSocket实时监听MQTT消息(需要SuperAdmin权限)
|
||||
// @Tags 系统调试
|
||||
|
||||
Reference in New Issue
Block a user