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
- }
|