package controllers import ( "basic.com/pubsub/protomsg.git" "basic.com/valib/bhomeclient.git" "encoding/json" "github.com/satori/go.uuid" "vamicro/system-service/models" "vamicro/system-service/service" ) type VoiceController struct{} type VoiceMenu struct { Id string `json:"id"` Name string `json:"name"` Path string `json:"path"` } // @Summary 查找所有报警声音 // @Description 查找所有报警声音 // @Produce json // @Tags 报警声音 // @Success 200 {string} json "{"code":200, msg:"",data:"",success:true}" // @Failure 500 {string} json "{"code":500, msg:"",data:"[]",success:false}" // @Router /data/api-v/voice/findAll [GET] func (vc *VoiceController) FindAll(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { var voiceMenus = make([]VoiceMenu, 0) var voice models.Voice voices, err := voice.FindAll() //config.Server.Voices if err == nil { for _, v := range voices { voiceMenus = append(voiceMenus, VoiceMenu{ Id: v.Id, Name: v.Name, Path: v.Path, }) } } return &bhomeclient.Reply{Success: true, Data: voiceMenus} } // @Summary 获取报警声音列表 // @Description 获取报警声音列表 // @Security ApiKeyAuth // @Produce json // @Tags 报警声音 // @Param id formData string false "id" // @Param name formData string true "名称" // @Param mp3File formData string true "mp3文件地址" // @Param g711aFile formData string true "g711a文件地址" // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}" // @Router /data/api-v/voice/add [post] func (vc *VoiceController) Add(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { id := c.PostForm("id") name := c.PostForm("name") mp3File := c.PostForm("mp3File") //g711aFile := c.PostForm("g711aFile") if name == "" { return &bhomeclient.Reply{Msg: "name不能为空"} } if mp3File == "" { return &bhomeclient.Reply{Msg: "音频文件不能为空"} } b := false var err error v := models.Voice{ Name: name, Path: mp3File, } dbMsg := protomsg.DbChangeMessage{ Table: protomsg.TableChanged_T_Voice, } if id == "" { //新增 v.Id = uuid.NewV4().String() b, err = v.Insert() dbMsg.Action = protomsg.DbAction_Insert dbMsg.Id = v.Id } else { //更新 v.Id = id b, err = v.Update() dbMsg.Action = protomsg.DbAction_Update dbMsg.Id = id } if err == nil { pb, _ := json.Marshal(dbMsg) h.Bk.Publish(service.ProcName, pb) return &bhomeclient.Reply{Success: b, Msg: "保存成功"} } else { return &bhomeclient.Reply{Msg: err.Error()} } } // @Summary 删除报警声音 // @Description 删除报警声音 // @Security ApiKeyAuth // @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/voice/del [delete] func (vc *VoiceController) Del(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { id := c.Query("id") if id == "" { return &bhomeclient.Reply{Msg: "id不能为空"} } var v models.Voice b, err := v.DeleteById(id) if b { dbMsg := protomsg.DbChangeMessage{ Table: protomsg.TableChanged_T_Voice, Id: id, Action: protomsg.DbAction_Delete, } pb, _ := json.Marshal(dbMsg) h.Bk.Publish(service.ProcName, pb) return &bhomeclient.Reply{Success: true, Msg: "删除成功"} } else { return &bhomeclient.Reply{Msg: err.Error()} } } // @Security ApiKeyAuth // @Summary 上传音频 // @Description 上传音频 // @Accept x-www-form-urlencoded // @Produce json // @Tags 报警声音 // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}" // @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}" // @Router /data/api-v/voice/upload [post] func (vc *VoiceController) Upload(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply { file, err := c.FormFile() if err == nil { var sv service.SysService if file.Name == "" || len(file.Bytes) == 0 { return &bhomeclient.Reply{Msg: "音频上传错误"} } filename := file.Name audioPath, err := sv.UploadVoice(file.Bytes, filename) if err != nil { if err.Error() == "audio format error" { return &bhomeclient.Reply{Msg: "声音只允许mp3,wav,wma的格式"} } else { return &bhomeclient.Reply{Msg: "声音上传失败:" + err.Error()} } } return &bhomeclient.Reply{Success: true, Data: audioPath} } return &bhomeclient.Reply{Msg: "未找到上传声音文件"} }