upload.go 3.0 KB
package v1

import (
	"bytes"
	"encoding/json"
	"fmt"
	"opp/controllers"
	"opp/internal/aliyun"
	"opp/protocol"
	"opp/services/upload"

	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
)

type UploadController struct {
	controllers.BaseController
}

// Image
// @router /image [post]
func (this *UploadController) Image() {
	var (
		msg *protocol.ResponseMessage
		err error
		rsp *protocol.FileResponse = &protocol.FileResponse{}
	)
	defer func() {
		this.Resp(msg)
	}()
	var request = &protocol.FileRequest{}
	if len(this.Ctx.Request.MultipartForm.File) != 0 {
		var tmp *protocol.FileResponse
		for _, key := range upload.GetSortFileKeys(this.Ctx.Request.MultipartForm.File) {
			request.Files = this.Ctx.Request.MultipartForm.File[key]
			if tmp, err = upload.Image(request); err != nil {
				log.Error(err)
				return
			}
			rsp.Paths = append(rsp.Paths, tmp.Paths...)
		}
	}
	msg = protocol.NewReturnResponse(rsp, err)
}

// Voice
// @router /voice [post]
func (this *UploadController) Voice() {
	var (
		msg *protocol.ResponseMessage
		err error
		rsp *protocol.FileResponse = &protocol.FileResponse{}
	)
	defer func() {
		this.Resp(msg)
	}()
	var request = &protocol.FileRequest{}
	if len(this.Ctx.Request.MultipartForm.File) != 0 {
		var tmp *protocol.FileResponse
		var logBuf = bytes.NewBufferString("")
		for _, key := range upload.GetSortFileKeys(this.Ctx.Request.MultipartForm.File) {
			request.Files = this.Ctx.Request.MultipartForm.File[key]
			logBuf.WriteString(fmt.Sprintf(" key:%v 文件数量:%v ", key, len(request.Files)))
			if tmp, err = upload.Voice(request); err != nil {
				log.Error(err)
				return
			}
			rsp.Paths = append(rsp.Paths, tmp.Paths...)
		}
		log.Debug("【上传音频文件】 ", logBuf.String())
	}
	msg = protocol.NewReturnResponse(rsp, err)
}

// Video
// @router /video [post]
func (this *UploadController) Video() {
	var (
		msg *protocol.ResponseMessage
		err error
		rsp *protocol.FileResponse = &protocol.FileResponse{}
	)
	defer func() {
		this.Resp(msg)
	}()
	var request = &protocol.FileRequest{}
	if len(this.Ctx.Request.MultipartForm.File) != 0 {
		var tmp *protocol.FileResponse
		for _, key := range upload.GetSortFileKeys(this.Ctx.Request.MultipartForm.File) {
			request.Files = this.Ctx.Request.MultipartForm.File[key]
			if tmp, err = upload.Video(request); err != nil {
				log.Error(err)
				return
			}
			rsp.Paths = append(rsp.Paths, tmp.Paths...)
		}
	}
	msg = protocol.NewReturnResponse(rsp, err)
}

//创建视频上传凭证 CreateUploadVideo
// @router /createUploadVideo [post]
func (this *UploadController) CreateUploadVideo() {
	var msg *protocol.ResponseMessage
	defer func() {
		this.Resp(msg)
	}()
	var request *aliyun.CreateUploadVideoRequest
	if err := json.Unmarshal(this.ByteBody, &request); err != nil {
		log.Error(err)
		msg = protocol.BadRequestParam(1)
		return
	}
	if b, m := this.Valid(request); !b {
		msg = m
		return
	}
	header := controllers.GetRequestHeader(this.Ctx)
	msg = protocol.NewReturnResponse(upload.CreateUploadVideo(header, request))
}