pdd.ddk.order.list.increment.get.go 6.6 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. //val = `{"p_id": "9112489_209622235", "type": 0, "cat_ids": [17285, 17297, 17399], "cpa_new": 0, "mall_id": 305882, "sep_pid": "", "batch_no": "", "cps_sign": "", "goods_id": 221061098061, "group_id": 1537327585628893442, "order_id": "cBYawYD5UdqmCI4qFoL/Lw==", "order_sn": "210630-327585628893442", "sep_rate": 0, "is_direct": 1, "zs_duo_id": 0, "goods_name": "【80包一年装】加量原木纸巾抽纸批发整箱餐巾纸面巾纸10包家用", "goods_sign": "Y9X2kRIKVNlPPNRxwfDZNzh24-rT0Lqa_JQwkpd4AL7", "point_time": 0, "sep_duo_id": 40005, "share_rate": 0, "auth_duo_id": 0, "fail_reason": "", "goods_price": 1090, "order_amount": 590, "order_status": 2, "share_amount": 0, "subsidy_type": 0, "activity_tags": [10000, 21, 10939, 10780, 10044, 10924, 10781, 10782], "return_status": 0, "goods_quantity": 1, "order_pay_time": 1625034240, "promotion_rate": 21, "sep_market_fee": 2, "sep_parameters": "", "subsidy_amount": 0, "order_modify_at": 1625648437, "promotion_amount": 12, "custom_parameters": "", "order_create_time": 1625034216, "order_settle_time": 0, "order_status_desc": "确认收货", "order_verify_time": 0, "order_receive_time": 1625648338, "goods_thumbnail_url": "http://t00img.yangkeduo.com/goods/images/2021-06-03/a6b8a84f61f277c6100f445682af6380.jpeg", "price_compare_status": 0, "url_last_generate_time": 0, "order_group_success_time": 1625034240, "subsidy_duo_amount_level": 0, "subsidy_duo_amount_ten_million": 0}`
  60. err = tools.JsonUnmarshal(val, &outData)
  61. if err != nil {
  62. app.Error(c, 500, nil, err.Error())
  63. return
  64. }
  65. if pddErr.ErrorResponse.ErrorCode != 0 {
  66. app.Error(c, 500, nil, pddErr.ErrorResponse.SubMsg)
  67. return
  68. }
  69. //同步订单信息
  70. for i := 0; i < len(outData.OrderListGetResponse.OrderList); i++ {
  71. var pid mysql.Pid
  72. var order mysql.Order
  73. var trans mysql.TransRecords
  74. sqlData.OrderID = outData.OrderListGetResponse.OrderList[i].OrderID
  75. sqlData.PID = outData.OrderListGetResponse.OrderList[i].PID
  76. sqlData.UpdateTime = tools.GetCurrntTimeStr()
  77. sqlData.OrderStatus = outData.OrderListGetResponse.OrderList[i].OrderStatus
  78. sqlData.GoodsName = outData.OrderListGetResponse.OrderList[i].GoodsName
  79. sqlData.GoodsThumbnailURL = outData.OrderListGetResponse.OrderList[i].GoodsThumbnailURL
  80. sqlData.OrderGroupSuccessTime = tools.TimeToStr(outData.OrderListGetResponse.OrderList[i].OrderGroupSuccessTime)
  81. sqlData.OrderStatusDesc = outData.OrderListGetResponse.OrderList[i].OrderStatusDesc
  82. sqlData.PromotionAmount = outData.OrderListGetResponse.OrderList[i].PromotionAmount
  83. sqlData.JSONData, _ = tools.JsonMarshal(&outData.OrderListGetResponse.OrderList[i])
  84. sqlData.OrderCreateTime = tools.TimeToStr(outData.OrderListGetResponse.OrderList[i].OrderCreateTime)
  85. sqlData.OrderSn = outData.OrderListGetResponse.OrderList[i].OrderSn
  86. sqlData.Amount = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.005))
  87. sqlData.Amount1 = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.0015))
  88. sqlData.Amount2 = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.001))
  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.5))
  119. walletVal.TodayAmount = walletVal.TodayAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.5))
  120. walletVal.TotalAmount = walletVal.TotalAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.5))
  121. walletVal.YesterdayAmount = walletVal.YesterdayAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.5))
  122. walletVal.AvailableAmount = walletVal.AvailableAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.5))
  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.5))
  130. walletVal.AvailableAmount = walletVal.AvailableAmount.Sub(walletVal.WithdrawalAmount).Mul(decimal.NewFromFloat(0.5))
  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. }