package shanghu

import (
	"context"
	"duoduo/apis/shanghu/models"
	"duoduo/conf"
	"duoduo/tools/app"
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/qiniu/go-sdk/v7/auth/qbox"
	"github.com/qiniu/go-sdk/v7/storage"
	"time"
)

func UploadPicture(c *gin.Context) {

	var inData models.UploadPictureRequest
	var outData models.UploadPictureReply

	confIni, err := conf.ConnIni()
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}

	err = c.ShouldBindJSON(&inData)
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}

	for i := 0; i < len(inData.Picture); i++ {
		//fmt.Println(inData.Pictures[i])
		//上传图片
		timeUnixNano := time.Now().UnixNano() //单位纳秒
		fileName := fmt.Sprintf("%d.jpg", timeUnixNano)

		//七牛云上传图片
		bucket := "imgxx"
		key := "shanghuka/" + inData.UserCode + "/" + time.Now().Format(time.DateOnly) + "/" + fileName

		putPolicy := storage.PutPolicy{
			Scope: bucket,
		}

		mac := qbox.NewMac(confIni.MustValue("ly-qn", "access_key"), confIni.MustValue("ly-qn", "secret_key"))
		upToken := putPolicy.UploadToken(mac)

		cfg := storage.Config{}
		// 空间对应的机房
		cfg.Zone = &storage.ZoneHuanan
		// 是否使用https域名
		cfg.UseHTTPS = false
		// 上传是否使用CDN上传加速
		cfg.UseCdnDomains = false

		// 构建表单上传的对象
		baseUploader := storage.NewBase64Uploader(&cfg)
		ret := storage.PutRet{}
		//data, err := base64.RawStdEncoding.DecodeString(inData.Pictures[i])
		//if err != nil {
		//	app.Error(c, 500, err, "上传图片失败")
		//	return
		//}

		err = baseUploader.Put(context.Background(), &ret, upToken, key, []byte(inData.Picture[i]), nil)
		if err != nil {
			app.Error(c, 500, err, "上传图片失败")
			return
		}

		outData.Picture = append(outData.Picture, "http://lingyang.shisanmiao.com/"+key)

	}

	app.OK(c, outData, app.Success)

}