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 PddDdkGoodsSearch(c *gin.Context) { var inData pdd.PddDdkGoodsSearchRequest var outData pdd.PddDdkGoodsSearchResponse 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 } fmt.Print(inData.Page) fmt.Print(inData.PageSize) inData.ClientId = confIni.MustValue("pdd", "client_id") inData.Type = "pdd.ddk.goods.search" 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 } fmt.Println("val = ", val) err = tools.JsonUnmarshal(val, &outData) if err != nil { err = tools.JsonUnmarshal(val, &pddErr) if err != nil { app.Error(c, 500, err, err.Error()) return } app.Error(c, 500, nil, pddErr.ErrorResponse.ErrorMsg) return } for i := 0; i < len(outData.GoodsSearchResponse.GoodsList); i++ { 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) 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) } app.OK(c, outData, app.Success) }