zhangzengfei
2023-09-05 63645d248c765244488cd34dbc1bb6528ca6b7c7
system-service/controllers/mqtt.go
@@ -1,66 +1,66 @@
package controllers
import (
   "basic.com/valib/bhomeclient.git"
   "basic.com/valib/logger.git"
   "encoding/json"
   "io/ioutil"
   "os"
   "vamicro/extend/util"
   "vamicro/system-service/sys"
   "vamicro/system-service/vo"
)
type MqttController struct {
}
//获取mqtt配置
func (mc *MqttController) GetConfig(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply{
   r := &bhomeclient.Reply{ Success:true }
   mqttf := util.GetVamicroPath()+"/mqtt.config"
   if util.FileExists(mqttf) {
      b, err := ioutil.ReadFile(mqttf)
      if err == nil {
         var set vo.MqttConf
         if err = json.Unmarshal(b, &set);err == nil {
            r.Data = set
         }
      }
   }
   return r
}
//保存mqtt配置
func (mc *MqttController) SaveConfig(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply{
   var reqBody vo.MqttConf
   if err :=c.BindJSON(&reqBody);err !=nil {
      return &bhomeclient.Reply{Msg:err.Error()}
   }
   if !reqBody.AnonymousEnable && (reqBody.Username == "" || reqBody.Password == "") {
      return &bhomeclient.Reply{ Msg:"用户名和密码不能为空" }
   }
   b, err := json.Marshal(reqBody)
   if err != nil {
      return &bhomeclient.Reply{Msg:err.Error()}
   }
   mqttf := util.GetVamicroPath()+"/mqtt.config"
   err = ioutil.WriteFile(mqttf, b, os.ModePerm)
   if err != nil {
      return &bhomeclient.Reply{Msg:err.Error()}
   }
   //1.检查mosquitto 是否安装 (apt安装,配置文件在/etc/mosquitto目录下)
   if ex :=sys.ExistService("mosquitto");ex == "" {
      return &bhomeclient.Reply{ Msg:"mqtt server 尚未安装,请先安装服务" }
   }
   err = sys.SetMqttConf(&reqBody)
   if err != nil {
      logger.Error("SetMqttConf err:", err)
      return &bhomeclient.Reply{Msg:err.Error()}
   }
   return &bhomeclient.Reply{Success:true, Msg:"保存成功"}
package controllers
import (
   "basic.com/valib/bhomeclient.git"
   "basic.com/valib/logger.git"
   "encoding/json"
   "io/ioutil"
   "os"
   "vamicro/extend/util"
   "vamicro/system-service/sys"
   "vamicro/system-service/vo"
)
type MqttController struct {
}
//获取mqtt配置
func (mc *MqttController) GetConfig(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply{
   r := &bhomeclient.Reply{ Success:true }
   mqttf := util.GetVamicroPath()+"/mqtt.config"
   if util.FileExists(mqttf) {
      b, err := ioutil.ReadFile(mqttf)
      if err == nil {
         var set vo.MqttConf
         if err = json.Unmarshal(b, &set);err == nil {
            r.Data = set
         }
      }
   }
   return r
}
//保存mqtt配置
func (mc *MqttController) SaveConfig(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply{
   var reqBody vo.MqttConf
   if err :=c.BindJSON(&reqBody);err !=nil {
      return &bhomeclient.Reply{Msg:err.Error()}
   }
   if !reqBody.AnonymousEnable && (reqBody.Username == "" || reqBody.Password == "") {
      return &bhomeclient.Reply{ Msg:"用户名和密码不能为空" }
   }
   b, err := json.Marshal(reqBody)
   if err != nil {
      return &bhomeclient.Reply{Msg:err.Error()}
   }
   mqttf := util.GetVamicroPath()+"/mqtt.config"
   err = ioutil.WriteFile(mqttf, b, os.ModePerm)
   if err != nil {
      return &bhomeclient.Reply{Msg:err.Error()}
   }
   //1.检查mosquitto 是否安装 (apt安装,配置文件在/etc/mosquitto目录下)
   if ex :=sys.ExistService("mosquitto");ex == "" {
      return &bhomeclient.Reply{ Msg:"mqtt server 尚未安装,请先安装服务" }
   }
   err = sys.SetMqttConf(&reqBody)
   if err != nil {
      logger.Error("SetMqttConf err:", err)
      return &bhomeclient.Reply{Msg:err.Error()}
   }
   return &bhomeclient.Reply{Success:true, Msg:"保存成功"}
}