| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | package petsLyimport (	"context"	"duoduo/conf"	"duoduo/models/mysqlLy"	"duoduo/tools/app"	"encoding/json"	"fmt"	"github.com/gin-gonic/gin"	"github.com/qiniu/go-sdk/v7/auth/qbox"	"github.com/qiniu/go-sdk/v7/storage"	"github.com/shopspring/decimal"	"os"	"strconv"	"time")func CreateUpload(c *gin.Context) {	confIni, err := conf.ConnIni()	if err != nil {		app.Error(c, 400, err, err.Error())		return	}	form, err := c.MultipartForm()	if err != nil {		app.Error(c, 400, err, err.Error())		return	}	files := form.File["files"]	openId := c.PostForm("open_id")	name := c.PostForm("name")	pet := c.PostForm("pet")	age := c.PostForm("age")	sex := c.PostForm("sex")	petDes := c.PostForm("pet_des")	if openId == "" || name == "" || pet == "" || age == "" || sex == "" || petDes == "" {		app.Error(c, 400, err, "必填字段为空值")		return	}	petStatus := c.PostForm("pet_status")	petStatusN, _ := strconv.Atoi(petStatus)	isSterilization := c.PostForm("is_sterilization")	isSterilizationN, _ := strconv.Atoi(isSterilization)	isExpellingParasite := c.PostForm("is_expelling_parasite")	isExpellingParasiteN, _ := strconv.Atoi(isExpellingParasite)	isImmune := c.PostForm("is_immune")	isImmuneN, _ := strconv.Atoi(isImmune)	isFee := c.PostForm("is_fee")	isFeeN, _ := strconv.Atoi(isFee)	if petStatusN == 0 || isSterilizationN == 0 || isExpellingParasiteN == 0 || isImmuneN == 0 || isFeeN == 0 {		app.Error(c, 400, err, "必填状态为空值")		return	}	deposit := c.PostForm("deposit")	depositDate := c.PostForm("deposit_date")	amount := c.PostForm("amount")	if isFeeN == 2 && (deposit == "" || depositDate == "") {		app.Error(c, 400, err, "押金信息未填写")		return	}	if isFeeN == 3 && amount == "" {		app.Error(c, 400, err, "金额信息未填写")		return	}	province := c.PostForm("province")	city := c.PostForm("city")	area := c.PostForm("area")	petInfo := c.PostForm("pet_info")	adoptInfo := c.PostForm("adopt_info")	if province == "" || city == "" || area == "" || petInfo == "" || adoptInfo == "" {		app.Error(c, 400, err, "必填状态为空值!")		return	}	user := mysqlLy.User{}	user.OpenID = openId	userInfo, err := user.Get()	if err != nil {		app.Error(c, 500, err, "用户信息错误")		return	}	var pictures []string	for _, file := range files {		timeUnixNano := time.Now().UnixNano() //单位纳秒		fileName := fmt.Sprintf("%d-%s.jpg", timeUnixNano, openId)		err := c.SaveUploadedFile(file, "./"+fileName)		if err != nil {			app.Error(c, 500, err, "保存图片失败")			return		}		//七牛云上传图片		//localFile = "/Users/jemy/Documents/github.png"		bucket := "imgxx"		key := "lingyang/" + openId + "/" + 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		// 构建表单上传的对象		formUploader := storage.NewFormUploader(&cfg)		ret := storage.PutRet{}		// 可选配置		//putExtra := storage.PutExtra{		//	Params: map[string]string{		//		"x:name": "github logo",		//	},		//}		err = formUploader.PutFile(context.Background(), &ret, upToken, key, "./"+fileName, nil)		if err != nil {			app.Error(c, 500, err, "上传图片失败")			return		}		fmt.Println(ret.Key, ret.Hash)		err = os.Remove("./" + fileName)		if err != nil {			app.Error(c, 500, err, "删除图片失败")			return		}		pictures = append(pictures, "http://lingyang.shisanmiao.com/"+key)	}	sqlData := mysqlLy.Pets{}	sqlData.Province = province	picture, err := json.Marshal(pictures)	if err != nil {		app.Error(c, 500, err, err.Error())		return	}	sqlData.Pictures = string(picture)	sqlData.PetStatus = petStatusN	sqlData.PetInfo = petInfo	sqlData.PetDes = petDes	sqlData.IsSterilization = isSterilizationN	sqlData.IsImmune = isImmuneN	sqlData.IsFee = isFeeN	sqlData.IsExpellingParasite = isExpellingParasiteN	sqlData.DepositDate, _ = time.Parse("2006-01-02", depositDate)	sqlData.Deposit, _ = decimal.NewFromString(deposit)	sqlData.City = city	sqlData.Area = area	sqlData.Age = age	sqlData.AdoptInfo = adoptInfo	sqlData.Amount, _ = decimal.NewFromString(amount)	sqlData.UserID = userInfo.ID	sqlData.Status = 1 //待领养	sqlData.Sex = sex	sqlData.Name = name	sqlData.CreateTime = time.Now().Local()	sqlData.UpdateTime = time.Now().Local()	_, err = sqlData.Create()	if err != nil {		app.Error(c, 500, err, "插入数据失败")		return	}	app.OK(c, nil, "成功")	//OpenId              string          `json:"open_id" binding:"required"`	//Name                string          `json:"name" binding:"required"`                  // 昵称	//Pet                 string          `json:"pet" binding:"required"`                   // 品种	//Age                 string          `json:"age" binding:"required"`                   // 年龄  '0-3个月','3-6个月','6-9个月','小于1岁','小于2岁','小于3岁','大于3岁'	//Sex                 string          `json:"sex" binding:"required"`                   // 性别 MM GG	//PetStatus           int             `json:"pet_status" binding:"required"`            // 1-流浪 2-家养 3-收养所	//PetDes              string          `json:"pet_des" binding:"required"`               // 宠物详细种类	//IsSterilization     int             `json:"is_sterilization" binding:"required"`      // 绝育状态:1-是 2-否 3-不确认	//IsExpellingParasite int             `json:"is_expelling_parasite" binding:"required"` // 驱虫状态:1-是 2-否 3-不确认	//IsImmune            int             `json:"is_immune" binding:"required"`             // 免疫状态:1-是 2-否 3-不确认	//IsFee               int             `json:"is_fee" binding:"required"`                // 1-免费 2-押金 3-有偿	//Deposit             decimal.Decimal `json:"deposit"`                                  // 押金	//DepositDate         time.Time       `json:"deposit_date"`                             // 押金到期时间	//Amount              decimal.Decimal `json:"amount" `                                  // 金额	//Province            string          `json:"province" binding:"required"`              // 省	//City                string          `json:"city" binding:"required"`                  // 市	//Area                string          `json:"area" binding:"required"`                  // 区	//PetInfo             string          `json:"pet_info" binding:"required"`              // 宠物信息	//AdoptInfo           string          `json:"adopt_info" binding:"required"`            // 领养要求	//Pictures            string          `json:"pictures"`                                 // 图片url}
 |