作者 tangxvhui

添加

package openapi
import (
"encoding/json"
"fmt"
"oppmg/common/log"
"oppmg/models"
"oppmg/protocol"
"strconv"
"github.com/astaxie/beego"
)
type OpenApiController struct {
beego.Controller
}
func (this *OpenApiController) ResposeJson(msg *protocol.ResponseMessage) {
this.Data["json"] = msg
this.ServeJSON()
}
//Finish 实现beego.ControllerInterface 的接口
func (this *OpenApiController) Finish() {
strByte, _ := json.Marshal(this.Data["json"])
length := len(strByte)
if length > 1000 {
log.Info(fmt.Sprintf("<====Send to client: RspBodyData: %s......", string(strByte[:1000])))
} else {
log.Info(fmt.Sprintf("<====Send to client: RspBodyData: %s", string(strByte)))
}
}
//Prepare 实现beego.ControllerInterface 的接口
func (this *OpenApiController) Prepare() {
this.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", "*")
this.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Headers", "*")
if this.Ctx.Input.Method() == "OPTIONS" {
this.Ctx.ResponseWriter.WriteHeader(204)
this.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")
this.Ctx.WriteString("")
return
}
return
}
//GetChangeMedia 获取机会的图片、音频、视频的地址
//@router /common/chance/media
func (c *OpenApiController) GetChangeMedia() {
var msg *protocol.ResponseMessage
defer func() {
c.ResposeJson(msg)
}()
type Parameter struct {
ChanceId string `json:"chance_id"`
CheckSum string `json:"check_sum"`
}
var param Parameter
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
log.Error("json 解析失败", err)
msg = protocol.BadRequestParam("1")
return
}
chanceId, _ := strconv.ParseInt(param.ChanceId, 10, 64)
var (
err error
chanceData *models.ChanceData
imageData []models.ChanceDataImage
speedchsData []models.ChanceDataSpeechs
videosData []models.ChanceDataVideos
)
chanceData, err = models.GetChanceDataByChanceId(chanceId)
rsp := []map[string]interface{}{}
if err != nil {
msg = protocol.NewReturnResponse(nil, nil)
return
}
json.Unmarshal([]byte(chanceData.Images), &imageData)
json.Unmarshal([]byte(chanceData.Speechs), &speedchsData)
json.Unmarshal([]byte(chanceData.Videos), &videosData)
videoMapData := []map[string]interface{}{}
for i := range videosData {
m := map[string]interface{}{
"path": videosData[i].Path,
"cover": map[string]string{
"path": videosData[i].Cover.Path,
},
}
videoMapData = append(videoMapData, m)
}
rsp = append(rsp, map[string]interface{}{
"type": 1, "data": videoMapData,
})
imgMapData := []map[string]interface{}{}
for i := range imageData {
m := map[string]interface{}{
"path": imageData[i].Path,
}
imgMapData = append(imgMapData, m)
}
rsp = append(rsp, map[string]interface{}{
"type": 2, "data": imgMapData,
})
speedchMapData := []map[string]interface{}{}
for i := range speedchsData {
m := map[string]interface{}{
"path": speedchsData[i].Path,
}
speedchMapData = append(speedchMapData, m)
}
rsp = append(rsp, map[string]interface{}{
"type": 3, "data": speedchMapData,
})
msg = protocol.NewReturnResponse(rsp, nil)
return
}
... ...