pdd.ddk.order.list.increment.get.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package report
  2. import (
  3. pdd2 "duoduo/apis/pdd"
  4. "duoduo/conf"
  5. "duoduo/models/mysql"
  6. "duoduo/models/pdd"
  7. "duoduo/tools"
  8. "fmt"
  9. "github.com/shopspring/decimal"
  10. "time"
  11. )
  12. func OrderList() {
  13. go DdkOrder()
  14. }
  15. func DdkOrder() {
  16. var inData pdd.PddDdkOrderListIncrementGetRequest
  17. var outData pdd.PddDdkOrderListIncrementGetResponse
  18. var pddErr pdd.ErrorPddResponse
  19. var sqlData mysql.Order
  20. var pag int
  21. confIni, err := conf.ConnIni()
  22. if err != nil {
  23. return
  24. }
  25. pag = 0
  26. for {
  27. pag++
  28. inData.ClientId = confIni.MustValue("pdd", "client_id")
  29. inData.Type = "pdd.ddk.order.list.increment.get"
  30. inData.Timestamp = fmt.Sprintf("%d", time.Now().Unix())
  31. inData.DataType = "JSON"
  32. inData.Page = fmt.Sprintf("%d", pag)
  33. inData.PageSize = "50"
  34. timeInt := time.Now().Unix()
  35. inData.EndUpdateTime = fmt.Sprintf("%d", timeInt)
  36. inData.StartUpdateTime = fmt.Sprintf("%d", timeInt-60)
  37. inData.Sign = "sign"
  38. sign, err := pdd2.DDKSign(inData)
  39. if err != nil {
  40. return
  41. }
  42. inData.Sign = sign
  43. val, err := pdd2.PostDDk(inData, nil)
  44. if err != nil {
  45. return
  46. }
  47. err = tools.JsonUnmarshal(val, &pddErr)
  48. if err != nil {
  49. return
  50. }
  51. err = tools.JsonUnmarshal(val, &outData)
  52. if err != nil {
  53. return
  54. }
  55. if pddErr.ErrorResponse.ErrorCode != 0 {
  56. return
  57. }
  58. //同步订单信息
  59. for i := 0; i < len(outData.OrderListGetResponse.OrderList); i++ {
  60. var pid mysql.Pid
  61. var order mysql.Order
  62. var trans mysql.TransRecords
  63. sqlData.OrderID = outData.OrderListGetResponse.OrderList[i].OrderID
  64. sqlData.PID = outData.OrderListGetResponse.OrderList[i].PID
  65. sqlData.UpdateTime = tools.GetCurrntTimeStr()
  66. sqlData.OrderStatus = outData.OrderListGetResponse.OrderList[i].OrderStatus
  67. sqlData.GoodsName = outData.OrderListGetResponse.OrderList[i].GoodsName
  68. sqlData.GoodsThumbnailURL = outData.OrderListGetResponse.OrderList[i].GoodsThumbnailURL
  69. sqlData.OrderGroupSuccessTime = tools.TimeToStr(outData.OrderListGetResponse.OrderList[i].OrderGroupSuccessTime)
  70. sqlData.OrderStatusDesc = outData.OrderListGetResponse.OrderList[i].OrderStatusDesc
  71. sqlData.PromotionAmount = outData.OrderListGetResponse.OrderList[i].PromotionAmount
  72. sqlData.JSONData, _ = tools.JsonMarshal(&outData.OrderListGetResponse.OrderList[i])
  73. count := sqlData.GetNum()
  74. if count <= 0 {
  75. sqlData.CreateTime = tools.GetCurrntTimeStr()
  76. _, err = sqlData.Create()
  77. if err != nil {
  78. return
  79. }
  80. } else {
  81. _, err = sqlData.Update(sqlData.OrderID)
  82. if err != nil {
  83. return
  84. }
  85. }
  86. //统计钱包数据
  87. //首先获取open_id
  88. pid.Pid = outData.OrderListGetResponse.OrderList[i].PID
  89. pidVal, _ := pid.GetOpenId()
  90. //统计钱包数据
  91. walletVal, err := order.GetAmount(pidVal.OpenID)
  92. if err != nil {
  93. continue
  94. }
  95. walletVal.LatelyAmount = walletVal.LatelyAmount.Div(decimal.NewFromInt(100))
  96. walletVal.TodayAmount = walletVal.TodayAmount.Div(decimal.NewFromInt(100))
  97. walletVal.TotalAmount = walletVal.TotalAmount.Div(decimal.NewFromInt(100))
  98. walletVal.YesterdayAmount = walletVal.YesterdayAmount.Div(decimal.NewFromInt(100))
  99. walletVal.AvailableAmount = walletVal.AvailableAmount.Div(decimal.NewFromInt(100))
  100. trans.TransStatus = 3
  101. trans.OpenID = pidVal.OpenID
  102. transVal, err := trans.GetAmount()
  103. if err != nil {
  104. continue
  105. }
  106. walletVal.WithdrawalAmount = transVal.Amount.Div(decimal.NewFromInt(100))
  107. walletVal.AvailableAmount = walletVal.AvailableAmount.Sub(walletVal.WithdrawalAmount)
  108. //更新钱包
  109. walletVal.OpenID = pidVal.OpenID
  110. walletVal.Pid = outData.OrderListGetResponse.OrderList[i].PID
  111. walletVal.UpdateTime = tools.GetCurrntTimeStr()
  112. walletVal.Update()
  113. }
  114. if outData.OrderListGetResponse.TotalCount < 50 {
  115. break
  116. }
  117. }
  118. }