| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 | package pddimport (	"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		}		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			var user mysql.User			//var wallet mysql.Wallet			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.006))			sqlData.Amount1 = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.001))			sqlData.Amount2 = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].PromotionAmount).Mul(decimal.NewFromFloat(0.001))			sqlData.OrderAmount = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].OrderAmount).Div(decimal.NewFromInt(100))			//根据pid			pid.Pid = outData.OrderListGetResponse.OrderList[i].PID			pidVal, err := pid.GetOpenId()			if err != nil {				continue			}			//根据openId 获取 openId1-2			user.OpenID = pidVal.OpenID			userVal, err := user.Get()			if err != nil {				continue			}			sqlData.OpenId = user.OpenID			sqlData.OpenId1 = userVal.OpenIdOne			sqlData.OpenId2 = userVal.OpenIdTwo			count := sqlData.GetNum()			if count <= 0 {				sqlData.CreateTime = tools.GetCurrntTimeStr()				_, err = sqlData.Create()				if err != nil {					return				}			} else {				_, err = sqlData.Update(sqlData.OrderID)				if err != nil {					return				}			}			//统计钱包数据			//首先获取open_id			//本人			err = UpdateWallet(user.OpenID)			if err != nil {				continue			}			if userVal.OpenIdOne != "" {				err = UpdateWallet(userVal.OpenIdOne)				if err != nil {					continue				}			}			if userVal.OpenIdTwo != "" {				err = UpdateWallet(userVal.OpenIdTwo)				if err != nil {					continue				}			}		}		if outData.OrderListGetResponse.TotalCount < 50 {			break		}	}	app.OK(c, nil, app.Success)}func UpdateWallet(openId string) error {	var order mysql.Order	var wallet mysql.Wallet	var trans mysql.TransRecords	var pid mysql.Pid	order.OpenId = openId	//根据订单统计钱包数据	walletVal, err := order.GetAmountOpenId()	if err != nil {		return err	}	wallet.TotalAmount = walletVal.TotalAmount.Add(walletVal.TotalAmountOne).Add(walletVal.TotalAmountTwo)	wallet.LatelyAmount = walletVal.LatelyAmount.Add(walletVal.LatelyAmountOne).Add(walletVal.LatelyAmountTwo)	wallet.TodayAmount = walletVal.TodayAmount.Add(walletVal.TodayAmountOne).Add(walletVal.TodayAmountTwo)	wallet.YesterdayAmount = walletVal.YesterdayAmount.Add(walletVal.YesterdayAmountOne).Add(walletVal.YesterdayAmountTwo)	wallet.AvailableAmount = walletVal.AvailableAmount.Add(walletVal.AvailableAmountOne).Add(walletVal.AvailableAmountTwo)	//本人金额计算	//walletVal.LatelyAmount = walletVal.LatelyAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)	//walletVal.TodayAmount = walletVal.TodayAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)	//walletVal.TotalAmount = walletVal.TotalAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)	//walletVal.YesterdayAmount = walletVal.YesterdayAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)	//walletVal.AvailableAmount = walletVal.AvailableAmount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)	trans.TransStatus = 3	trans.OpenID = openId	transVal, err := trans.GetAmount()	if err != nil {		return err	}	//已提现总金额 = 提现记录求和	wallet.WithdrawalAmount = transVal.Amount	//可以提现金额 = 5求和-已体现金额	wallet.AvailableAmount = wallet.AvailableAmount.Sub(wallet.WithdrawalAmount).Round(2)	pid.OpenID = openId	pid.PidStatus = 1	pidVal, err := pid.Get()	if err != nil {		return err	}	//更新钱包	wallet.OpenID = openId	wallet.Pid = pidVal.Pid	wallet.UpdateTime = tools.GetCurrntTimeStr()	_, err = wallet.UpdateAll()	if err != nil {		return err	}	return nil}
 |