pdd.ddk.goods.search.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package pdd
  2. import (
  3. "duoduo/conf"
  4. "duoduo/models/pdd"
  5. "duoduo/tools"
  6. "duoduo/tools/app"
  7. "fmt"
  8. "github.com/gin-gonic/gin"
  9. "github.com/shopspring/decimal"
  10. "time"
  11. )
  12. //商品列表
  13. func PddDdkGoodsSearch(c *gin.Context) {
  14. var inData pdd.PddDdkGoodsSearchRequest
  15. var outData pdd.PddDdkGoodsSearchResponse
  16. var pddErr pdd.ErrorPddResponse
  17. confIni, err := conf.ConnIni()
  18. if err != nil {
  19. app.Error(c, 400, err, err.Error())
  20. return
  21. }
  22. err = c.ShouldBindJSON(&inData)
  23. if err != nil {
  24. app.Error(c, 400, err, err.Error())
  25. return
  26. }
  27. fmt.Print(inData.Page)
  28. fmt.Print(inData.PageSize)
  29. inData.ClientId = confIni.MustValue("pdd", "client_id")
  30. inData.Type = "pdd.ddk.goods.search"
  31. inData.Timestamp = fmt.Sprintf("%d", time.Now().Unix())
  32. inData.DataType = "JSON"
  33. inData.Sign = "sign"
  34. sign, err := DDKSign(inData)
  35. if err != nil {
  36. app.Error(c, 400, err, err.Error())
  37. return
  38. }
  39. inData.Sign = sign
  40. val, err := PostDDk(inData, nil)
  41. if err != nil {
  42. app.Error(c, 400, err, err.Error())
  43. return
  44. }
  45. fmt.Println("val = ", val)
  46. err = tools.JsonUnmarshal(val, &outData)
  47. if err != nil {
  48. err = tools.JsonUnmarshal(val, &pddErr)
  49. if err != nil {
  50. app.Error(c, 500, err, err.Error())
  51. return
  52. }
  53. app.Error(c, 500, nil, pddErr.ErrorResponse.ErrorMsg)
  54. return
  55. }
  56. for i := 0; i < len(outData.GoodsSearchResponse.GoodsList); i++ {
  57. outData.GoodsSearchResponse.GoodsList[i].MinAmount = decimal.NewFromInt(outData.GoodsSearchResponse.GoodsList[i].MinGroupPrice).Sub(decimal.NewFromInt(outData.GoodsSearchResponse.GoodsList[i].CouponDiscount)).Div(decimal.NewFromInt(100)).Round(2)
  58. outData.GoodsSearchResponse.GoodsList[i].Rebate = outData.GoodsSearchResponse.GoodsList[i].MinAmount.Mul(decimal.NewFromInt(outData.GoodsSearchResponse.GoodsList[i].PromotionRate)).Div(decimal.NewFromInt(1000)).Mul(decimal.NewFromFloat(0.6)).Round(2)
  59. }
  60. app.OK(c, outData, app.Success)
  61. }