package pdd import ( "duoduo/conf" "duoduo/models/mysql" "duoduo/models/pdd" "duoduo/tools" "duoduo/tools/app" "fmt" "github.com/gin-gonic/gin" "github.com/shopspring/decimal" "time" ) func PddDdkOrderListIncrementGet(c *gin.Context) { var inData pdd.PddDdkOrderListIncrementGetRequest var outData pdd.PddDdkOrderListIncrementGetResponse var pddErr pdd.ErrorPddResponse var sqlData mysql.Order var pag int confIni, err := conf.ConnIni() if err != nil { app.Error(c, 400, err, err.Error()) return } err = c.ShouldBindJSON(&inData) if err != nil { app.Error(c, 400, err, err.Error()) return } pag = 0 for { pag++ inData.ClientId = confIni.MustValue("pdd", "client_id") inData.Type = "pdd.ddk.order.list.increment.get" inData.Timestamp = fmt.Sprintf("%d", time.Now().Unix()) inData.DataType = "JSON" inData.Page = fmt.Sprintf("%d", pag) inData.PageSize = "50" startTm, _ := tools.GetTimeStamp(inData.StartUpdateTime) inData.StartUpdateTime = fmt.Sprintf("%d", startTm) endTm, _ := tools.GetTimeStamp(inData.EndUpdateTime) inData.EndUpdateTime = fmt.Sprintf("%d", endTm) inData.Sign = "sign" sign, err := DDKSign(inData) if err != nil { app.Error(c, 400, err, err.Error()) return } inData.Sign = sign val, err := PostDDk(inData, nil) if err != nil { app.Error(c, 400, err, err.Error()) return } err = tools.JsonUnmarshal(val, &pddErr) if err != nil { app.Error(c, 500, err, err.Error()) return } //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}` err = tools.JsonUnmarshal(val, &outData) if err != nil { app.Error(c, 500, nil, err.Error()) return } if pddErr.ErrorResponse.ErrorCode != 0 { app.Error(c, 500, nil, pddErr.ErrorResponse.SubMsg) return } //同步订单信息 for i := 0; i < len(outData.OrderListGetResponse.OrderList); i++ { var pid mysql.Pid var order mysql.Order var trans mysql.TransRecords sqlData.OrderID = outData.OrderListGetResponse.OrderList[i].OrderID sqlData.PID = outData.OrderListGetResponse.OrderList[i].PID sqlData.UpdateTime = tools.GetCurrntTimeStr() sqlData.OrderStatus = outData.OrderListGetResponse.OrderList[i].OrderStatus sqlData.GoodsName = outData.OrderListGetResponse.OrderList[i].GoodsName sqlData.GoodsThumbnailURL = outData.OrderListGetResponse.OrderList[i].GoodsThumbnailURL sqlData.OrderGroupSuccessTime = tools.TimeToStr(outData.OrderListGetResponse.OrderList[i].OrderGroupSuccessTime) sqlData.OrderStatusDesc = outData.OrderListGetResponse.OrderList[i].OrderStatusDesc sqlData.PromotionAmount = outData.OrderListGetResponse.OrderList[i].PromotionAmount sqlData.JSONData, _ = tools.JsonMarshal(&outData.OrderListGetResponse.OrderList[i]) sqlData.OrderCreateTime = tools.TimeToStr(outData.OrderListGetResponse.OrderList[i].OrderCreateTime) sqlData.OrderSn = outData.OrderListGetResponse.OrderList[i].OrderSn sqlData.Amount = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.005)) sqlData.Amount1 = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.0015)) sqlData.Amount2 = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.001)) fmt.Println("amount = ", sqlData.Amount) count := sqlData.GetNum() if count <= 0 { sqlData.CreateTime = tools.GetCurrntTimeStr() _, err = sqlData.Create() if err != nil { app.Error(c, 500, nil, err.Error()) return } } else { _, err = sqlData.Update(sqlData.OrderID) if err != nil { app.Error(c, 500, nil, err.Error()) return } } //统计钱包数据 //首先获取open_id pid.Pid = outData.OrderListGetResponse.OrderList[i].PID pidVal, err := pid.GetOpenId() if err != nil { continue } order.PID = outData.OrderListGetResponse.OrderList[i].PID //统计钱包数据 walletVal, err := order.GetAmount() if err != nil { continue } walletVal.LatelyAmount = walletVal.LatelyAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.5)) walletVal.TodayAmount = walletVal.TodayAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.5)) walletVal.TotalAmount = walletVal.TotalAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.5)) walletVal.YesterdayAmount = walletVal.YesterdayAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.5)) walletVal.AvailableAmount = walletVal.AvailableAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.5)) trans.TransStatus = 3 trans.OpenID = pidVal.OpenID transVal, err := trans.GetAmount() if err != nil { continue } walletVal.WithdrawalAmount = transVal.Amount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.5)) walletVal.AvailableAmount = walletVal.AvailableAmount.Sub(walletVal.WithdrawalAmount).Mul(decimal.NewFromFloat(0.5)) //更新钱包 walletVal.OpenID = pidVal.OpenID walletVal.Pid = outData.OrderListGetResponse.OrderList[i].PID walletVal.UpdateTime = tools.GetCurrntTimeStr() _, err = walletVal.UpdateAll() if err != nil { continue } } if outData.OrderListGetResponse.TotalCount < 50 { break } } app.OK(c, nil, app.Success) }