package pdd import ( "duoduo/conf" "duoduo/models/mysql" "duoduo/models/pdd" "duoduo/tools" "duoduo/tools/app" "fmt" "github.com/gin-gonic/gin" "time" ) //生成pid func PddDdkGoodsPidGenerate(c *gin.Context) { var inData pdd.PddDdkGoodsPidGenerateRequest var outData pdd.PddDdkGoodsPidGenerateResponse var pddErr pdd.ErrorPddResponse var pid mysql.Pid 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 } //先查询用户名下是否有拼多多pid,有返回现有pid pid.OpenID = inData.OpenId pid.PidStatus = 1 //拼多多 pidVal, err := pid.Get() if pidVal.Pid != "" { var pidList pdd.PIDList pidList.PID = pidVal.Pid outData.PIDGenerateResponse.PIDList = append(outData.PIDGenerateResponse.PIDList, pidList) //outData.PIDGenerateResponse.PIDList[0].PID = pidVal.Pid app.OK(c, outData, app.Success) return } inData.ClientId = confIni.MustValue("pdd", "client_id") inData.Type = "pdd.ddk.goods.pid.generate" 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 } //生成pid 成功 创建钱包 var wallet mysql.Wallet wallet.Pid = outData.PIDGenerateResponse.PIDList[0].PID wallet.OpenID = inData.OpenId wallet.CreateTime = tools.GetCurrntTimeStr() wallet.UpdateTime = tools.GetCurrntTimeStr() _, err = wallet.Create() if err != nil { app.Error(c, 500, err, "创建钱包失败") return } app.OK(c, outData, app.Success) }