merchant.active.draw.product.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package shanghu
  2. import (
  3. "duoduo/apis/shanghu/models"
  4. "duoduo/models/shanghu"
  5. "duoduo/tools/app"
  6. "errors"
  7. "github.com/gin-gonic/gin"
  8. "github.com/shopspring/decimal"
  9. "time"
  10. )
  11. // 中奖商品与库存
  12. func DrawProductCreate(c *gin.Context) {
  13. var inData models.CreateDrawProductRequest
  14. var sqlData shanghu.MerchantActiveDrawProduct
  15. err := c.ShouldBindJSON(&inData)
  16. if err != nil {
  17. app.Error(c, 400, err, err.Error())
  18. return
  19. }
  20. if inData.DrawProductName == "" || inData.DrawUrl == "" || inData.TotalStock <= 0 {
  21. app.Error(c, 500, errors.New("必填参数缺失"), "必填参数缺失")
  22. return
  23. }
  24. if !inData.DrawOdds.GreaterThan(decimal.NewFromFloat(0)) {
  25. app.Error(c, 500, errors.New("中奖率需要大于0"), "中奖率需要大于0")
  26. return
  27. }
  28. sqlData.CreatedAt = time.Now()
  29. sqlData.UpdatedAt = time.Now()
  30. sqlData.DrawOdds = inData.DrawOdds
  31. sqlData.TotalStock = inData.TotalStock
  32. sqlData.MerchantOpenID = inData.MerchantOpenID
  33. sqlData.DrawProductName = inData.DrawProductName
  34. sqlData.Stock = 0
  35. sqlData.DrawUrl = inData.DrawUrl
  36. sqlData.Version = 0
  37. sqlData.IsPrize = inData.IsPrize
  38. _, err = sqlData.Create()
  39. if err != nil {
  40. app.Error(c, 500, err, err.Error())
  41. return
  42. }
  43. app.OK(c, nil, app.Success)
  44. }
  45. // 商品列表
  46. func DrawProductList(c *gin.Context) {
  47. var inData models.DrawProductListRequest
  48. var sqlData shanghu.MerchantActiveDrawProduct
  49. var outData []models.DrawProductListReply
  50. err := c.ShouldBindJSON(&inData)
  51. if err != nil {
  52. app.Error(c, 400, err, err.Error())
  53. return
  54. }
  55. sqlData.MerchantOpenID = inData.OpenId
  56. var pageSize = 10
  57. var pageIndex = 1
  58. if inData.PageSize != 0 {
  59. pageSize = inData.PageSize
  60. }
  61. if inData.PageIndex != 0 {
  62. pageIndex = inData.PageIndex
  63. }
  64. drawProductList, count, err := sqlData.GetDrawProductListByOpenId(pageSize, pageIndex)
  65. if err != nil {
  66. app.Error(c, 500, err, err.Error())
  67. return
  68. }
  69. for _, v := range drawProductList {
  70. var drawProductInfo models.DrawProductListReply
  71. drawProductInfo.DrawProductName = v.DrawProductName
  72. drawProductInfo.DrawOdds = v.DrawOdds
  73. drawProductInfo.MerchantOpenID = v.MerchantOpenID
  74. drawProductInfo.DrawUrl = v.DrawUrl
  75. drawProductInfo.ActiveConfigID = v.ActiveConfigID
  76. drawProductInfo.ID = v.ID
  77. drawProductInfo.Stock = v.Stock
  78. drawProductInfo.TotalStock = v.TotalStock
  79. drawProductInfo.IsPrize = v.IsPrize
  80. outData = append(outData, drawProductInfo)
  81. }
  82. app.PageOK(c, outData, count, pageIndex, pageSize, app.Success)
  83. }