pdd.ddk.goods.pid.generate.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package pdd
  2. import (
  3. "duoduo/conf"
  4. "duoduo/models/mysql"
  5. "duoduo/models/pdd"
  6. "duoduo/tools"
  7. "duoduo/tools/app"
  8. "fmt"
  9. "github.com/gin-gonic/gin"
  10. "time"
  11. )
  12. //生成pid
  13. func PddDdkGoodsPidGenerate(c *gin.Context) {
  14. var inData pdd.PddDdkGoodsPidGenerateRequest
  15. var outData pdd.PddDdkGoodsPidGenerateResponse
  16. var pddErr pdd.ErrorPddResponse
  17. var pid mysql.Pid
  18. confIni, err := conf.ConnIni()
  19. if err != nil {
  20. app.Error(c, 400, err, err.Error())
  21. return
  22. }
  23. err = c.ShouldBindJSON(&inData)
  24. if err != nil {
  25. app.Error(c, 400, err, err.Error())
  26. return
  27. }
  28. //先查询用户名下是否有拼多多pid,有返回现有pid
  29. pid.OpenID = inData.OpenId
  30. pid.PidStatus = 1 //拼多多
  31. pidVal, err := pid.Get()
  32. if pidVal.Pid != "" {
  33. var pidList pdd.PIDList
  34. pidList.PID = pidVal.Pid
  35. outData.PIDGenerateResponse.PIDList = append(outData.PIDGenerateResponse.PIDList, pidList)
  36. //outData.PIDGenerateResponse.PIDList[0].PID = pidVal.Pid
  37. app.OK(c, outData, app.Success)
  38. return
  39. }
  40. inData.ClientId = confIni.MustValue("pdd", "client_id")
  41. inData.Type = "pdd.ddk.goods.pid.generate"
  42. inData.Timestamp = fmt.Sprintf("%d", time.Now().Unix())
  43. inData.DataType = "JSON"
  44. inData.Sign = "sign"
  45. sign, err := DDKSign(inData)
  46. if err != nil {
  47. app.Error(c, 400, err, err.Error())
  48. return
  49. }
  50. inData.Sign = sign
  51. val, err := PostDDk(inData, nil)
  52. if err != nil {
  53. app.Error(c, 400, err, err.Error())
  54. return
  55. }
  56. err = tools.JsonUnmarshal(val, &pddErr)
  57. if err != nil {
  58. app.Error(c, 500, err, err.Error())
  59. return
  60. }
  61. if pddErr.ErrorResponse.ErrorCode != 0 {
  62. app.Error(c, 500, err, pddErr.ErrorResponse.ErrorMsg)
  63. return
  64. }
  65. err = tools.JsonUnmarshal(val, &outData)
  66. if err != nil {
  67. app.Error(c, 500, err, err.Error())
  68. return
  69. }
  70. //生成pid 成功 创建钱包
  71. var wallet mysql.Wallet
  72. wallet.Pid = outData.PIDGenerateResponse.PIDList[0].PID
  73. wallet.OpenID = inData.OpenId
  74. wallet.CreateTime = tools.GetCurrntTimeStr()
  75. wallet.UpdateTime = tools.GetCurrntTimeStr()
  76. _, err = wallet.Create()
  77. if err != nil {
  78. app.Error(c, 500, err, "创建钱包失败")
  79. return
  80. }
  81. app.OK(c, outData, app.Success)
  82. }