k.zhang %!s(int64=4) %!d(string=hai) anos
pai
achega
5cac594b43

+ 27 - 0
apis/pdd/pdd.ddk.goods.pid.generate.go

@@ -2,6 +2,7 @@ package pdd
 
 import (
 	"duoduo/conf"
+	"duoduo/models/mysql"
 	"duoduo/models/pdd"
 	"duoduo/tools"
 	"duoduo/tools/app"
@@ -15,6 +16,7 @@ func PddDdkGoodsPidGenerate(c *gin.Context) {
 	var inData pdd.PddDdkGoodsPidGenerateRequest
 	var outData pdd.PddDdkGoodsPidGenerateResponse
 	var pddErr pdd.ErrorPddResponse
+	var pid mysql.Pid
 
 	confIni, err := conf.ConnIni()
 	if err != nil {
@@ -28,6 +30,20 @@ func PddDdkGoodsPidGenerate(c *gin.Context) {
 		return
 	}
 
+	//先查询用户名下是否有拼多多pid,有返回现有pid
+	pid.OpenID = inData.OpenId
+	pid.PidStatus = 1 //拼多多
+	pidVal, err := pid.Get()
+	if pidVal.Pid != "" {
+		var pidList pdd.PIDList
+		pidList.PID = pidVal.Pid
+
+		outData.PIDGenerateResponse.PIDList = append(outData.PIDGenerateResponse.PIDList, pidList)
+		//outData.PIDGenerateResponse.PIDList[0].PID = pidVal.Pid
+		app.OK(c, outData, app.Success)
+		return
+	}
+
 	inData.ClientId = confIni.MustValue("pdd", "client_id")
 	inData.Type = "pdd.ddk.goods.pid.generate"
 	inData.Timestamp = fmt.Sprintf("%d", time.Now().Unix())
@@ -64,5 +80,16 @@ func PddDdkGoodsPidGenerate(c *gin.Context) {
 		return
 	}
 
+	//生成pid 成功 创建钱包
+	var wallet mysql.Wallet
+	wallet.Pid = outData.PIDGenerateResponse.PIDList[0].PID
+	wallet.OpenID = inData.OpenId
+	wallet.CreateTime = tools.GetCurrntTimeStr()
+	wallet.UpdateTime = tools.GetCurrntTimeStr()
+	_, err = wallet.Create()
+	if err != nil {
+		app.Error(c, 500, err, "创建钱包失败")
+		return
+	}
 	app.OK(c, outData, app.Success)
 }

+ 44 - 0
apis/pdd/pdd.ddk.order.list.increment.get.go

@@ -8,6 +8,7 @@ import (
 	"duoduo/tools/app"
 	"fmt"
 	"github.com/gin-gonic/gin"
+	"github.com/shopspring/decimal"
 	"time"
 )
 
@@ -79,6 +80,10 @@ func PddDdkOrderListIncrementGet(c *gin.Context) {
 		//同步订单信息
 		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()
@@ -105,6 +110,45 @@ func PddDdkOrderListIncrementGet(c *gin.Context) {
 					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 {

+ 5 - 5
apis/user/user.open.id.set.go

@@ -15,7 +15,7 @@ func OpenIdSet(c *gin.Context) {
 	var inData user.OpenIdSetRequest
 	var outData user.OpenIdSetResponse
 	var sqlData mysql.User
-	var wallet mysql.Wallet
+	//var wallet mysql.Wallet
 	err := c.ShouldBindJSON(&inData)
 	if err != nil {
 		app.Error(c, 400, err, err.Error())
@@ -54,10 +54,10 @@ func OpenIdSet(c *gin.Context) {
 		sqlData.UpdateTime = tools.GetCurrntTimeStr()
 		sqlData.Create()
 		//创建钱包
-		wallet.CreateTime = tools.GetCurrntTimeStr()
-		wallet.UpdateTime = tools.GetCurrntTimeStr()
-		wallet.OpenID = outData.OpenId
-		wallet.Create()
+		//wallet.CreateTime = tools.GetCurrntTimeStr()
+		//wallet.UpdateTime = tools.GetCurrntTimeStr()
+		//wallet.OpenID = outData.OpenId
+		//wallet.Create()
 	}
 
 	app.OK(c, outData, app.Success)

+ 6 - 6
models/mysql/order.go

@@ -39,7 +39,7 @@ func (o *Order) GetNum() int {
 	return count
 }
 
-func (o *Order) GetAmount(openId string) (Wallet, error) {
+func (o *Order) GetAmount() (Wallet, error) {
 	var wallet Wallet
 
 	//历史总收益: 0,1,2,3,5 求和
@@ -49,32 +49,32 @@ func (o *Order) GetAmount(openId string) (Wallet, error) {
 	//可体现金额:5求和-已体现金额
 	//已体现金额:提现记录求和
 	//历史总收益
-	err := orm.Eloquent.Select("SUM(promotion_amount) as total_amount").Where("order_status in (0,1,2,3,5) and open_id = ? ", openId).Table(o.TableName()).First(&wallet).Error
+	err := orm.Eloquent.Select("SUM(promotion_amount) as total_amount").Where("order_status in (0,1,2,3,5) and p_id = ? ", o.PID).Table(o.TableName()).First(&wallet).Error
 
 	if err != nil {
 		return wallet, err
 	}
 	//今日收益
-	err = orm.Eloquent.Select("SUM(promotion_amount) as today_amount").Where("order_status in (0,1,2,3) and open_id = ? and DATE(order_group_success_time) = curdate() ", openId).Table(o.TableName()).First(&wallet).Error
+	err = orm.Eloquent.Select("SUM(promotion_amount) as today_amount").Where("order_status in (0,1,2,3) and p_id = ? and DATE(order_group_success_time) = curdate() ", o.PID).Table(o.TableName()).First(&wallet).Error
 
 	if err != nil {
 		return wallet, err
 	}
 	//昨日收益
-	err = orm.Eloquent.Select("SUM(promotion_amount) as yesterday_amount").Where("order_status in (0,1,2,3) and open_id = ? and DATE(order_group_success_time) = date_sub(curdate(),interval 1 day) ", openId).Table(o.TableName()).First(&wallet).Error
+	err = orm.Eloquent.Select("SUM(promotion_amount) as yesterday_amount").Where("order_status in (0,1,2,3) and p_id = ? and DATE(order_group_success_time) = date_sub(curdate(),interval 1 day) ", o.PID).Table(o.TableName()).First(&wallet).Error
 
 	if err != nil {
 		return wallet, err
 	}
 	//近30日收益
-	err = orm.Eloquent.Select("SUM(promotion_amount) as lately_amount").Where("order_status in (0,1,2,3) and open_id = ? and DATE(order_group_success_time) >= date_sub(curdate(),interval 30 day) ", openId).Table(o.TableName()).First(&wallet).Error
+	err = orm.Eloquent.Select("SUM(promotion_amount) as lately_amount").Where("order_status in (0,1,2,3) and p_id = ? and DATE(order_group_success_time) >= date_sub(curdate(),interval 30 day) ", o.PID).Table(o.TableName()).First(&wallet).Error
 
 	if err != nil {
 		return wallet, err
 	}
 
 	//上个月结算收益
-	err = orm.Eloquent.Select("SUM(promotion_amount) as available_amount").Where("order_status = 5 and open_id = ? and DATE(order_group_success_time) >= date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(day from now()) day),interval 0 month) ", openId).Table(o.TableName()).First(&wallet).Error
+	err = orm.Eloquent.Select("SUM(promotion_amount) as available_amount").Where("order_status = 5 and p_id = ? and DATE(order_group_success_time) >= date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(day from now()) day),interval 0 month) ", o.PID).Table(o.TableName()).First(&wallet).Error
 
 	if err != nil {
 		return wallet, err

+ 1 - 1
models/mysql/pid.go

@@ -29,7 +29,7 @@ func (p *Pid) Get() (Pid, error) {
 
 func (p *Pid) GetOpenId() (Pid, error) {
 	var doc Pid
-	err := orm.Eloquent.Select("open_id").Where("pid = ? ", p.OpenID).Table(p.TableName()).First(&doc).Error
+	err := orm.Eloquent.Select("open_id").Where("pid = ? ", p.Pid).Table(p.TableName()).First(&doc).Error
 	if err != nil {
 		return doc, err
 	}

+ 1 - 1
models/mysql/wallet.go

@@ -49,7 +49,7 @@ func (w *Wallet) Update() (update Wallet, err error) {
 
 func (w *Wallet) UpdateAll() (update Wallet, err error) {
 
-	if err := orm.Eloquent.Table(w.TableName()).Model(&update).Where("open_id = ? ", w.OpenID).Updates(
+	if err := orm.Eloquent.Table(w.TableName()).Model(&update).Where("open_id = ? and pid = ?", w.OpenID, w.Pid).Updates(
 		map[string]interface{}{
 			"total_amount":      w.TotalAmount,
 			"available_amount":  w.AvailableAmount,

+ 1 - 0
models/pdd/pdd.ddk.goods.pid.generate.go

@@ -3,6 +3,7 @@ package pdd
 type PddDdkGoodsPidGenerateRequest struct {
 	PddDdkBase
 	Number string `json:"number"` //生成数量
+	OpenId string `json:"openId"` //openId
 }
 
 type PddDdkGoodsPidGenerateResponse struct {

+ 20 - 11
report/pdd.ddk.order.list.increment.get.go

@@ -39,6 +39,7 @@ func DdkOrder() {
 		timeInt := time.Now().Unix()
 		inData.EndUpdateTime = fmt.Sprintf("%d", timeInt)
 		inData.StartUpdateTime = fmt.Sprintf("%d", timeInt-60)
+
 		inData.Sign = "sign"
 
 		sign, err := pdd2.DDKSign(inData)
@@ -95,22 +96,26 @@ func DdkOrder() {
 					return
 				}
 			}
+
 			//统计钱包数据
 			//首先获取open_id
 			pid.Pid = outData.OrderListGetResponse.OrderList[i].PID
-			pidVal, _ := pid.GetOpenId()
-
+			pidVal, err := pid.GetOpenId()
+			if err != nil {
+				continue
+			}
+			order.PID = outData.OrderListGetResponse.OrderList[i].PID
 			//统计钱包数据
-			walletVal, err := order.GetAmount(pidVal.OpenID)
+			walletVal, err := order.GetAmount()
 			if err != nil {
 				continue
 			}
 
-			walletVal.LatelyAmount = walletVal.LatelyAmount.Div(decimal.NewFromInt(100))
-			walletVal.TodayAmount = walletVal.TodayAmount.Div(decimal.NewFromInt(100))
-			walletVal.TotalAmount = walletVal.TotalAmount.Div(decimal.NewFromInt(100))
-			walletVal.YesterdayAmount = walletVal.YesterdayAmount.Div(decimal.NewFromInt(100))
-			walletVal.AvailableAmount = walletVal.AvailableAmount.Div(decimal.NewFromInt(100))
+			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
@@ -118,14 +123,18 @@ func DdkOrder() {
 			if err != nil {
 				continue
 			}
-			walletVal.WithdrawalAmount = transVal.Amount.Div(decimal.NewFromInt(100))
-			walletVal.AvailableAmount = walletVal.AvailableAmount.Sub(walletVal.WithdrawalAmount)
+			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()
-			walletVal.Update()
+			_, err = walletVal.UpdateAll()
+			if err != nil {
+				continue
+			}
+
 		}
 
 		if outData.OrderListGetResponse.TotalCount < 50 {