package pdd import ( "duoduo/conf" "duoduo/models/pdd" "duoduo/tools" "duoduo/tools/app" "fmt" "github.com/gin-gonic/gin" "github.com/shopspring/decimal" "time" ) //商品详情 func PddDdkGoodsDetail(c *gin.Context) { var inData pdd.PddDdkGoodsDetailRequest var outData pdd.PddDdkGoodsDetailResponse var pddErr pdd.ErrorPddResponse confIni, err := conf.ConnIni() if err != nil { app.Error(c, 400, err, err.Error()) return } err = c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } inData.ClientId = confIni.MustValue("pdd", "client_id") inData.Type = "pdd.ddk.goods.detail" inData.Timestamp = fmt.Sprintf("%d", time.Now().Unix()) inData.DataType = "JSON" inData.Sign = "sign" sign, err := DDKSign(inData) if err != nil { app.Error(c, 400, err, err.Error()) return } inData.Sign = sign val, err := PostDDk(inData, nil) if err != nil { app.Error(c, 400, err, err.Error()) return } err = tools.JsonUnmarshal(val, &pddErr) if err != nil { app.Error(c, 500, err, err.Error()) return } if pddErr.ErrorResponse.ErrorCode != 0 { app.Error(c, 500, err, pddErr.ErrorResponse.ErrorMsg) return } err = tools.JsonUnmarshal(val, &outData) if err != nil { app.Error(c, 500, err, err.Error()) return } outData.GoodsDetailResponse.GoodsDetails[0].MinAmount = decimal.NewFromInt(outData.GoodsDetailResponse.GoodsDetails[0].MinGroupPrice).Sub(decimal.NewFromInt(outData.GoodsDetailResponse.GoodsDetails[0].CouponDiscount)).Div(decimal.NewFromInt(100)).Round(2) outData.GoodsDetailResponse.GoodsDetails[0].Rebate = outData.GoodsDetailResponse.GoodsDetails[0].MinAmount.Mul(decimal.NewFromInt(outData.GoodsDetailResponse.GoodsDetails[0].PromotionRate)).Div(decimal.NewFromInt(1000)).Mul(decimal.NewFromFloat(0.6)).Round(2) app.OK(c, outData, app.Success) }