user.pid.get.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package user
  2. import (
  3. pdd2 "duoduo/apis/pdd"
  4. "duoduo/conf"
  5. "duoduo/models/mysql"
  6. "duoduo/models/pdd"
  7. "duoduo/models/user"
  8. "duoduo/tools"
  9. "duoduo/tools/app"
  10. "fmt"
  11. "github.com/gin-gonic/gin"
  12. "time"
  13. )
  14. func PidGet(c *gin.Context) {
  15. var inData user.PidGetRequest
  16. var outData user.PidGetResponse
  17. var sqlData mysql.User
  18. err := c.ShouldBindJSON(&inData)
  19. if err != nil {
  20. app.Error(c, 400, err, err.Error())
  21. return
  22. }
  23. sqlData.OpenID = inData.OpenId
  24. val, err := sqlData.Get()
  25. if err != nil {
  26. app.Error(c, 500, err, err.Error())
  27. return
  28. }
  29. //创建pid
  30. if val.Pid == "" {
  31. var pidCreate pdd.PddDdkGoodsPidGenerateRequest
  32. var pidOut pdd.PddDdkGoodsPidGenerateResponse
  33. var pddErr pdd.ErrorPddResponse
  34. confIni, err := conf.ConnIni()
  35. if err != nil {
  36. app.Error(c, 400, err, err.Error())
  37. return
  38. }
  39. pidCreate.ClientId = confIni.MustValue("pdd", "client_id")
  40. pidCreate.Type = "pdd.ddk.goods.pid.generate"
  41. pidCreate.Timestamp = fmt.Sprintf("%d", time.Now().Unix())
  42. pidCreate.DataType = "JSON"
  43. pidCreate.Sign = "sign"
  44. pidCreate.Number = "1"
  45. sign, err := pdd2.DDKSign(pidCreate)
  46. if err != nil {
  47. app.Error(c, 400, err, err.Error())
  48. return
  49. }
  50. pidCreate.Sign = sign
  51. val, err := pdd2.PostDDk(pidCreate, 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, &pidOut)
  66. if err != nil {
  67. app.Error(c, 500, err, err.Error())
  68. return
  69. }
  70. outData.Pid = pidOut.PIDGenerateResponse.PIDList[0].PID
  71. //更新pid
  72. sqlData.Pid = outData.Pid
  73. sqlData.OpenID = inData.OpenId
  74. sqlData.Update()
  75. } else {
  76. outData.Pid = val.Pid
  77. }
  78. app.OK(c, outData, app.Success)
  79. }