| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | 
							- package petsLy
 
- import (
 
- 	"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
 
- }
 
 
  |