package user import ( pdd2 "duoduo/apis/pdd" "duoduo/conf" "duoduo/models/mysql" "duoduo/models/pdd" "duoduo/models/user" "duoduo/tools" "duoduo/tools/app" "fmt" "github.com/gin-gonic/gin" "time" ) func PidGet(c *gin.Context) { var inData user.PidGetRequest var outData user.PidGetResponse var sqlData mysql.User err := c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } sqlData.OpenID = inData.OpenId val, err := sqlData.Get() if err != nil { app.Error(c, 500, err, err.Error()) return } //创建pid if val.Pid == "" { var pidCreate pdd.PddDdkGoodsPidGenerateRequest var pidOut pdd.PddDdkGoodsPidGenerateResponse var pddErr pdd.ErrorPddResponse confIni, err := conf.ConnIni() if err != nil { app.Error(c, 400, err, err.Error()) return } pidCreate.ClientId = confIni.MustValue("pdd", "client_id") pidCreate.Type = "pdd.ddk.goods.pid.generate" pidCreate.Timestamp = fmt.Sprintf("%d", time.Now().Unix()) pidCreate.DataType = "JSON" pidCreate.Sign = "sign" pidCreate.Number = "1" sign, err := pdd2.DDKSign(pidCreate) if err != nil { app.Error(c, 400, err, err.Error()) return } pidCreate.Sign = sign val, err := pdd2.PostDDk(pidCreate, 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, &pidOut) if err != nil { app.Error(c, 500, err, err.Error()) return } outData.Pid = pidOut.PIDGenerateResponse.PIDList[0].PID //更新pid sqlData.Pid = outData.Pid sqlData.OpenID = inData.OpenId sqlData.Update() } else { outData.Pid = val.Pid } app.OK(c, outData, app.Success) }