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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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. "github.com/shopspring/decimal"
  11. "time"
  12. )
  13. func PddDdkOrderListIncrementGet(c *gin.Context) {
  14. var inData pdd.PddDdkOrderListIncrementGetRequest
  15. var outData pdd.PddDdkOrderListIncrementGetResponse
  16. var pddErr pdd.ErrorPddResponse
  17. var sqlData mysql.Order
  18. var pag int
  19. confIni, err := conf.ConnIni()
  20. if err != nil {
  21. app.Error(c, 400, err, err.Error())
  22. return
  23. }
  24. err = c.ShouldBindJSON(&inData)
  25. if err != nil {
  26. app.Error(c, 400, err, err.Error())
  27. return
  28. }
  29. pag = 0
  30. for {
  31. pag++
  32. inData.ClientId = confIni.MustValue("pdd", "client_id")
  33. inData.Type = "pdd.ddk.order.list.increment.get"
  34. inData.Timestamp = fmt.Sprintf("%d", time.Now().Unix())
  35. inData.DataType = "JSON"
  36. inData.Page = fmt.Sprintf("%d", pag)
  37. inData.PageSize = "50"
  38. startTm, _ := tools.GetTimeStamp(inData.StartUpdateTime)
  39. inData.StartUpdateTime = fmt.Sprintf("%d", startTm)
  40. endTm, _ := tools.GetTimeStamp(inData.EndUpdateTime)
  41. inData.EndUpdateTime = fmt.Sprintf("%d", endTm)
  42. inData.Sign = "sign"
  43. sign, err := DDKSign(inData)
  44. if err != nil {
  45. app.Error(c, 400, err, err.Error())
  46. return
  47. }
  48. inData.Sign = sign
  49. val, err := PostDDk(inData, nil)
  50. if err != nil {
  51. app.Error(c, 400, err, err.Error())
  52. return
  53. }
  54. err = tools.JsonUnmarshal(val, &pddErr)
  55. if err != nil {
  56. app.Error(c, 500, err, err.Error())
  57. return
  58. }
  59. err = tools.JsonUnmarshal(val, &outData)
  60. if err != nil {
  61. app.Error(c, 500, nil, err.Error())
  62. return
  63. }
  64. if pddErr.ErrorResponse.ErrorCode != 0 {
  65. app.Error(c, 500, nil, pddErr.ErrorResponse.SubMsg)
  66. return
  67. }
  68. //同步订单信息
  69. for i := 0; i < len(outData.OrderListGetResponse.OrderList); i++ {
  70. var pid mysql.Pid
  71. var order mysql.Order
  72. var trans mysql.TransRecords
  73. sqlData.OrderID = outData.OrderListGetResponse.OrderList[i].OrderID
  74. sqlData.PID = outData.OrderListGetResponse.OrderList[i].PID
  75. sqlData.UpdateTime = tools.GetCurrntTimeStr()
  76. sqlData.OrderStatus = outData.OrderListGetResponse.OrderList[i].OrderStatus
  77. sqlData.GoodsName = outData.OrderListGetResponse.OrderList[i].GoodsName
  78. sqlData.GoodsThumbnailURL = outData.OrderListGetResponse.OrderList[i].GoodsThumbnailURL
  79. sqlData.OrderGroupSuccessTime = tools.TimeToStr(outData.OrderListGetResponse.OrderList[i].OrderGroupSuccessTime)
  80. sqlData.OrderStatusDesc = outData.OrderListGetResponse.OrderList[i].OrderStatusDesc
  81. sqlData.PromotionAmount = outData.OrderListGetResponse.OrderList[i].PromotionAmount
  82. sqlData.JSONData, _ = tools.JsonMarshal(&outData.OrderListGetResponse.OrderList[i])
  83. sqlData.OrderCreateTime = tools.TimeToStr(outData.OrderListGetResponse.OrderList[i].OrderCreateTime)
  84. sqlData.OrderSn = outData.OrderListGetResponse.OrderList[i].OrderSn
  85. sqlData.Amount = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.006))
  86. sqlData.Amount1 = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.001))
  87. sqlData.Amount2 = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.001))
  88. sqlData.OrderAmount = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].OrderAmount).Div(decimal.NewFromInt(100))
  89. fmt.Println("amount = ", sqlData.Amount)
  90. count := sqlData.GetNum()
  91. if count <= 0 {
  92. sqlData.CreateTime = tools.GetCurrntTimeStr()
  93. _, err = sqlData.Create()
  94. if err != nil {
  95. app.Error(c, 500, nil, err.Error())
  96. return
  97. }
  98. } else {
  99. _, err = sqlData.Update(sqlData.OrderID)
  100. if err != nil {
  101. app.Error(c, 500, nil, err.Error())
  102. return
  103. }
  104. }
  105. //统计钱包数据
  106. //首先获取open_id
  107. pid.Pid = outData.OrderListGetResponse.OrderList[i].PID
  108. pidVal, err := pid.GetOpenId()
  109. if err != nil {
  110. continue
  111. }
  112. order.PID = outData.OrderListGetResponse.OrderList[i].PID
  113. //统计钱包数据
  114. walletVal, err := order.GetAmount()
  115. if err != nil {
  116. continue
  117. }
  118. walletVal.LatelyAmount = walletVal.LatelyAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)
  119. walletVal.TodayAmount = walletVal.TodayAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)
  120. walletVal.TotalAmount = walletVal.TotalAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)
  121. walletVal.YesterdayAmount = walletVal.YesterdayAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)
  122. walletVal.AvailableAmount = walletVal.AvailableAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)
  123. trans.TransStatus = 3
  124. trans.OpenID = pidVal.OpenID
  125. transVal, err := trans.GetAmount()
  126. if err != nil {
  127. continue
  128. }
  129. walletVal.WithdrawalAmount = transVal.Amount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)
  130. walletVal.AvailableAmount = walletVal.AvailableAmount.Sub(walletVal.WithdrawalAmount).Mul(decimal.NewFromFloat(0.6)).Round(2)
  131. //更新钱包
  132. walletVal.OpenID = pidVal.OpenID
  133. walletVal.Pid = outData.OrderListGetResponse.OrderList[i].PID
  134. walletVal.UpdateTime = tools.GetCurrntTimeStr()
  135. _, err = walletVal.UpdateAll()
  136. if err != nil {
  137. continue
  138. }
  139. }
  140. if outData.OrderListGetResponse.TotalCount < 50 {
  141. break
  142. }
  143. }
  144. app.OK(c, nil, app.Success)
  145. }