pets.create.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package petsLy
  2. import (
  3. "context"
  4. "duoduo/conf"
  5. "duoduo/models/mysqlLy"
  6. "duoduo/models/petsLy"
  7. "duoduo/tools"
  8. "duoduo/tools/app"
  9. "encoding/json"
  10. "fmt"
  11. "github.com/gin-gonic/gin"
  12. "github.com/qiniu/go-sdk/v7/auth/qbox"
  13. "github.com/qiniu/go-sdk/v7/storage"
  14. "time"
  15. )
  16. func PetsCreate(c *gin.Context) {
  17. var inData petsLy.PetsCreateRequest
  18. var pets mysqlLy.Pets
  19. var user mysqlLy.User
  20. err := c.ShouldBindJSON(&inData)
  21. if err != nil {
  22. app.Error(c, 400, err, err.Error())
  23. return
  24. }
  25. confIni, err := conf.ConnIni()
  26. if err != nil {
  27. app.Error(c, 400, err, err.Error())
  28. return
  29. }
  30. fmt.Println("%+v", inData)
  31. //校验
  32. user.OpenID = inData.OpenId
  33. userInfo, err := user.Get()
  34. if err != nil {
  35. app.Error(c, 500, err, "用户信息错误")
  36. return
  37. }
  38. var pictures []string
  39. for i := 0; i < len(inData.Pictures); i++ {
  40. //fmt.Println(inData.Pictures[i])
  41. //上传图片
  42. timeUnixNano := time.Now().UnixNano() //单位纳秒
  43. fileName := fmt.Sprintf("%d.jpg", timeUnixNano)
  44. //七牛云上传图片
  45. bucket := "imgxx"
  46. key := "lingyang/" + inData.OpenId + "/" + fileName
  47. putPolicy := storage.PutPolicy{
  48. Scope: bucket,
  49. }
  50. mac := qbox.NewMac(confIni.MustValue("ly-qn", "access_key"), confIni.MustValue("ly-qn", "secret_key"))
  51. upToken := putPolicy.UploadToken(mac)
  52. cfg := storage.Config{}
  53. // 空间对应的机房
  54. cfg.Zone = &storage.ZoneHuanan
  55. // 是否使用https域名
  56. cfg.UseHTTPS = false
  57. // 上传是否使用CDN上传加速
  58. cfg.UseCdnDomains = false
  59. // 构建表单上传的对象
  60. baseUploader := storage.NewBase64Uploader(&cfg)
  61. ret := storage.PutRet{}
  62. //data, err := base64.RawStdEncoding.DecodeString(inData.Pictures[i])
  63. //if err != nil {
  64. // app.Error(c, 500, err, "上传图片失败")
  65. // return
  66. //}
  67. err = baseUploader.Put(context.Background(), &ret, upToken, key, []byte(inData.Pictures[i]), nil)
  68. if err != nil {
  69. app.Error(c, 500, err, "上传图片失败")
  70. return
  71. }
  72. pictures = append(pictures, "http://lingyang.shisanmiao.com/"+key)
  73. }
  74. pets.UpdateTime = time.Now().Local()
  75. pets.CreateTime = time.Now().Local()
  76. pets.Name = inData.Name
  77. pets.Sex = inData.Sex
  78. pets.Status = 1 //待领养
  79. pets.UserID = userInfo.ID
  80. pets.Amount = inData.Amount
  81. pets.AdoptInfo = inData.AdoptInfo
  82. pets.Age = inData.Age
  83. pets.Area = inData.Area
  84. pets.City = inData.City
  85. pets.Deposit = inData.Deposit
  86. if inData.IsFee == 2 {
  87. pets.DepositDate, err = tools.GetStringToTime(inData.DepositDate)
  88. if err != nil {
  89. app.Error(c, 500, err, "")
  90. return
  91. }
  92. }
  93. pets.IsExpellingParasite = inData.IsExpellingParasite
  94. pets.IsFee = inData.IsFee
  95. pets.IsImmune = inData.IsImmune
  96. pets.IsSterilization = inData.IsSterilization
  97. pets.Pet = inData.Pet
  98. pets.PetDes = inData.PetDes
  99. pets.PetInfo = inData.PetInfo
  100. pets.PetStatus = inData.PetStatus
  101. jsonData, err := json.Marshal(pictures)
  102. if err != nil {
  103. app.Error(c, 500, err, "")
  104. return
  105. }
  106. pets.Pictures = string(jsonData)
  107. pets.Province = inData.Province
  108. _, err = pets.Create()
  109. if err != nil {
  110. app.Error(c, 500, err, "插入数据失败")
  111. return
  112. }
  113. app.OK(c, nil, app.Success)
  114. }