package controllers
|
|
import (
|
"encoding/json"
|
"vamicro/push-service/models"
|
"vamicro/push-service/mqtt"
|
"vamicro/push-service/service"
|
"vamicro/push-service/vo"
|
|
"basic.com/valib/bhomeclient.git"
|
"basic.com/valib/logger.git"
|
)
|
|
type EventPushController struct {
|
}
|
|
// @Summary 事件推送保存
|
// @Description 事件推送保存
|
// @Tags 事件推送
|
// @Param SaveArgs body vo.EventPushVo true "时间推送保存参数"
|
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
|
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
|
// @Router /data/api-v/eventPush/save [post]
|
func (epc EventPushController) Save(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
var saveBody vo.EventPushVo
|
if err := c.BindJSON(&saveBody); err != nil {
|
return &bhomeclient.Reply{Success: false, Msg: "参数有误"}
|
}
|
sv := service.NewEventPushService(h.Bk)
|
if sv.Save(&saveBody) {
|
return &bhomeclient.Reply{Success: true, Data: saveBody}
|
} else {
|
return &bhomeclient.Reply{Success: false, Msg: "保存失败"}
|
}
|
}
|
|
// @Summary 根据事件推送主题的一级和二级选项获取最后下拉菜单列表
|
// @Description 根据事件推送主题的一级和二级选项获取最后下拉菜单列表
|
// @Produce json
|
// @Tags 事件推送
|
// @Param topic query string true "一级主题选项,例如:camera(摄像机)"
|
// @Param type query string true "子选项类型,例如:name(名称)或addr(位置)"
|
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
|
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
|
// @Router /data/api-v/eventPush/findByEventTopic [get]
|
func (epc EventPushController) FindByEventTopic(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
topic := c.Query("topic")
|
childType := c.Query("type")
|
if topic == "" {
|
return &bhomeclient.Reply{Success: false, Msg: "参数有误"}
|
}
|
|
sv := service.NewEventPushService(h.Bk)
|
list, err := sv.FindByEventTopic(topic, childType)
|
if err == nil {
|
return &bhomeclient.Reply{Success: true, Data: list}
|
} else {
|
return &bhomeclient.Reply{Success: false, Msg: err.Error()}
|
}
|
}
|
|
// @Summary 查全部
|
// @Description 查全部
|
// @Produce json
|
// @Tags 事件推送
|
// @Param name query string false "事件名称"
|
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
|
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
|
// @Router /data/api-v/eventPush/findAll [get]
|
func (epc EventPushController) FindAll(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
name := c.Query("name")
|
sv := service.NewEventPushService(h.Bk)
|
flag, data := sv.FindAll(name)
|
if flag {
|
return &bhomeclient.Reply{Success: true, Data: data}
|
} else {
|
return &bhomeclient.Reply{Success: false, Msg: "查询失败"}
|
}
|
}
|
|
// @Router /data/api-v/eventPush/findAllDetails [get]
|
func (epc EventPushController) FindAllDetails(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
sv := service.NewEventPushService(h.Bk)
|
data := sv.FindAllDetails()
|
return &bhomeclient.Reply{Success: true, Data: data}
|
}
|
|
// @Summary 事件推送编辑
|
// @Description 事件推送编辑
|
// @Produce json
|
// @Tags 事件推送
|
// @Param id query string true "id"
|
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
|
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
|
// @Router /data/api-v/eventPush/getById [get]
|
func (epc EventPushController) GetById(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
id := c.Query("id")
|
logger.Debug("id:", id)
|
if id == "" {
|
return &bhomeclient.Reply{Success: false, Msg: "参数有误"}
|
}
|
sv := service.NewEventPushService(h.Bk)
|
flag, data := sv.GetById(id)
|
logger.Debug("getByID FLAG:", flag, " data:", data)
|
if flag {
|
return &bhomeclient.Reply{Success: true, Data: data}
|
} else {
|
return &bhomeclient.Reply{Success: false, Msg: "查询失败"}
|
}
|
}
|
|
type ChangeStatusVo struct {
|
Id string `json:"id"`
|
Enable bool `json:"enable"`
|
}
|
|
// @Summary 改变enable状态
|
// @Description 改变enable状态
|
// @Produce json
|
// @Tags 事件推送
|
// @Param statusBody body controllers.ChangeStatusVo true "参数结构"
|
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
|
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
|
// @Router /data/api-v/eventPush/changeStatus [post]
|
func (epc EventPushController) ChangeStatus(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
var statusBody ChangeStatusVo
|
err := c.BindJSON(&statusBody)
|
if err != nil {
|
return &bhomeclient.Reply{Success: false, Msg: "参数有误"}
|
}
|
sv := service.NewEventPushService(h.Bk)
|
if sv.ChangeStatus(statusBody.Id, statusBody.Enable) {
|
//消息提醒
|
var epE models.EventPush
|
epE.GetById(statusBody.Id)
|
|
//udp推送
|
if epE.PushType == 1 {
|
msg := map[string]string{
|
"type": "change", // 注意逗号
|
"status": "", // 最后一个元素也需要逗号(Go 语法要求)
|
"id": statusBody.Id,
|
}
|
if statusBody.Enable {
|
msg["status"] = "start"
|
} else {
|
msg["status"] = "stop"
|
}
|
jsonStr, _ := json.Marshal(msg)
|
go mqtt.Client.Publish(mqtt.MQTT_CONFIG_TOPIC, jsonStr)
|
}
|
|
return &bhomeclient.Reply{Success: true, Msg: "修改成功"}
|
} else {
|
return &bhomeclient.Reply{Success: false, Msg: "修改失败"}
|
}
|
}
|
|
// @Summary 根据id删除
|
// @Description 根据id删除
|
// @Accept x-www-form-urlencoded
|
// @Produce json
|
// @Tags 事件推送
|
// @Param id formData string true "id"
|
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
|
// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
|
// @Router /data/api-v/eventPush/delete [post]
|
func (epc EventPushController) Delete(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
id := c.PostForm("id")
|
if id == "" {
|
return &bhomeclient.Reply{Success: false, Msg: "参数有误"}
|
}
|
sv := service.NewEventPushService(h.Bk)
|
if sv.DeleteById(id) {
|
return &bhomeclient.Reply{Success: true, Msg: "删除成功"}
|
} else {
|
return &bhomeclient.Reply{Success: false, Msg: "删除失败"}
|
}
|
}
|