pdd.ddk.goods.recommend.get.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. func DdkGoodsRecommendGet(c *gin.Context) {
  13. var inData pdd.DdkGoodsRecommendGetRequest
  14. var outData pdd.DdkGoodsRecommendGetResponse
  15. var pddErr pdd.ErrorPddResponse
  16. confIni, err := conf.ConnIni()
  17. if err != nil {
  18. app.Error(c, 400, err, err.Error())
  19. return
  20. }
  21. err = c.ShouldBindJSON(&inData)
  22. if err != nil {
  23. app.Error(c, 400, err, err.Error())
  24. return
  25. }
  26. inData.ClientId = confIni.MustValue("pdd", "client_id")
  27. inData.Type = "pdd.ddk.goods.recommend.get"
  28. inData.Timestamp = fmt.Sprintf("%d", time.Now().Unix())
  29. inData.DataType = "JSON"
  30. inData.Sign = "sign"
  31. sign, err := DDKSign(inData)
  32. if err != nil {
  33. app.Error(c, 400, err, err.Error())
  34. return
  35. }
  36. inData.Sign = sign
  37. val, err := PostDDk(inData, nil)
  38. if err != nil {
  39. app.Error(c, 400, err, err.Error())
  40. return
  41. }
  42. err = tools.JsonUnmarshal(val, &pddErr)
  43. if err != nil {
  44. app.Error(c, 500, err, err.Error())
  45. return
  46. }
  47. if pddErr.ErrorResponse.ErrorCode != 0 {
  48. app.Error(c, 500, err, pddErr.ErrorResponse.ErrorMsg)
  49. return
  50. }
  51. err = tools.JsonUnmarshal(val, &outData)
  52. if err != nil {
  53. app.Error(c, 500, err, err.Error())
  54. return
  55. }
  56. for i := 0; i < len(outData.GoodsBasicDetailResponse.List); i++ {
  57. outData.GoodsBasicDetailResponse.List[i].MinAmount = decimal.NewFromInt(outData.GoodsBasicDetailResponse.List[i].MinGroupPrice).Sub(decimal.NewFromInt(outData.GoodsBasicDetailResponse.List[i].CouponDiscount)).Div(decimal.NewFromInt(100)).Round(2)
  58. outData.GoodsBasicDetailResponse.List[i].Rebate = outData.GoodsBasicDetailResponse.List[i].MinAmount.Mul(decimal.NewFromInt(outData.GoodsBasicDetailResponse.List[i].PromotionRate)).Div(decimal.NewFromInt(1000)).Mul(decimal.NewFromFloat(0.6)).Round(2)
  59. }
  60. app.OK(c, outData, app.Success)
  61. }