Browse Source

Merge branch 'develop' of k.zhang/duoduo into master

k.zhang 4 years ago
parent
commit
05e62e88cb

+ 88 - 36
apis/pdd/pdd.ddk.order.list.increment.get.go

@@ -79,11 +79,11 @@ 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
-
+			//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()
@@ -101,60 +101,58 @@ func PddDdkOrderListIncrementGet(c *gin.Context) {
 			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))
 
-			fmt.Println("amount = ", sqlData.Amount)
+			//根据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 {
-					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()
+			//本人
+
+			err = UpdateWallet(user.OpenID)
 			if err != nil {
 				continue
 			}
 
-			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 = pidVal.OpenID
-			transVal, err := trans.GetAmount()
-			if err != nil {
-				continue
+			if userVal.OpenIdOne != "" {
+				err = UpdateWallet(userVal.OpenIdOne)
+				if err != nil {
+					continue
+				}
 			}
-			walletVal.WithdrawalAmount = transVal.Amount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)
-			walletVal.AvailableAmount = walletVal.AvailableAmount.Sub(walletVal.WithdrawalAmount).Mul(decimal.NewFromFloat(0.6)).Round(2)
-
-			//更新钱包
-			walletVal.OpenID = pidVal.OpenID
-			walletVal.Pid = outData.OrderListGetResponse.OrderList[i].PID
-			walletVal.UpdateTime = tools.GetCurrntTimeStr()
-			_, err = walletVal.UpdateAll()
-			if err != nil {
-				continue
+
+			if userVal.OpenIdTwo != "" {
+				err = UpdateWallet(userVal.OpenIdTwo)
+				if err != nil {
+					continue
+				}
 			}
 
 		}
@@ -166,3 +164,57 @@ func PddDdkOrderListIncrementGet(c *gin.Context) {
 
 	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
+
+}

+ 1 - 1
apis/pdd/set.go

@@ -16,7 +16,7 @@ func Set(c *gin.Context) {
 		return
 	}
 
-	if inData.Version == "1.0.3" || inData.Version == "1.0.2" {
+	if inData.Version == "1.0.4" {
 		outData.Type = "true"
 		app.OK(c, outData, app.Success)
 	} else {

+ 7 - 4
apis/user/base.go

@@ -5,9 +5,12 @@ import "github.com/gin-gonic/gin"
 func InitUserRouter(engine *gin.RouterGroup) {
 	v1 := engine.Group("v1")
 	{
-		v1.POST("/user/open.id/set", OpenIdSet) //设置openId
-		v1.POST("/user/pid/get", PidGet)        //获取pid
-		v1.POST("/user/wallet/get", WalletGet)  //用户钱包信息
-		v1.POST("/user/order/list", OrderGet)   //获取订单列表
+		v1.POST("/user/open.id/set", OpenIdSet)  //设置openId
+		v1.POST("/user/pid/get", PidGet)         //获取pid
+		v1.POST("/user/wallet/get", WalletGet)   //用户钱包信息
+		v1.POST("/user/order/list", OrderGet)    //获取订单列表
+		v1.POST("/user/open.id/get", OpenIdGet)  //根据openId获取信息
+		v1.POST("/user/update/name", UpdateName) //更新名字
+		v1.POST("/user/list", UserList)          //用户列表
 	}
 }

+ 34 - 0
apis/user/update.name.go

@@ -0,0 +1,34 @@
+package user
+
+import (
+	"duoduo/models/mysql"
+	"duoduo/models/user"
+	"duoduo/tools"
+	"duoduo/tools/app"
+	"github.com/gin-gonic/gin"
+)
+
+func UpdateName(c *gin.Context) {
+	var inData user.UpdateNameRequest
+
+	var sqlData mysql.User
+	//var wallet mysql.Wallet
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	sqlData.OpenID = inData.OpenId
+	sqlData.UpdateTime = tools.GetCurrntTimeStr()
+	sqlData.NickName = inData.NickName
+	sqlData.AvatarUrl = inData.AvatarUrl
+
+	_, err = sqlData.UpdateName()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	app.OK(c, nil, app.Success)
+}

+ 49 - 0
apis/user/user.list.go

@@ -0,0 +1,49 @@
+package user
+
+import (
+	"duoduo/models/mysql"
+	"duoduo/models/user"
+	"duoduo/tools/app"
+	"github.com/gin-gonic/gin"
+)
+
+func UserList(c *gin.Context) {
+	var inData user.UserListRequest
+
+	var user mysql.User
+
+	var pageSize = 10
+	var pageIndex = 1
+
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	if inData.PageSize != 0 {
+		pageSize = inData.PageSize
+	}
+	if inData.PageIndex != 0 {
+		pageIndex = inData.PageIndex
+	}
+
+	user.OpenID = inData.OpenId
+	userVal, count, err := user.GetOrderOpenIdList(pageSize, pageIndex, inData.Status)
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+	for i := 0; i < len(userVal); i++ {
+		///pages/image/my_fill1.png
+		if userVal[i].AvatarUrl == "" {
+			userVal[i].AvatarUrl = "/pages/image/my_fill1.png"
+		}
+		if userVal[i].NickName == "" {
+			userVal[i].NickName = "用户暂未授权昵称获取"
+		}
+	}
+
+	app.PageOK(c, userVal, count, pageIndex, pageSize, app.Success)
+
+}

+ 33 - 0
apis/user/user.open.id.get.go

@@ -0,0 +1,33 @@
+package user
+
+import (
+	"duoduo/models/mysql"
+	"duoduo/models/user"
+	"duoduo/tools/app"
+	"github.com/gin-gonic/gin"
+)
+
+func OpenIdGet(c *gin.Context) {
+	var inData user.OpenIdGetRequest
+	var outData user.OpenIdGetResponse
+	var sqlData mysql.User
+	//var wallet mysql.Wallet
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	sqlData.OpenID = inData.OpenId
+
+	userVal, err := sqlData.Get()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	outData.User = userVal
+
+	app.OK(c, outData, app.Success)
+
+}

+ 21 - 9
apis/user/user.open.id.set.go

@@ -15,6 +15,7 @@ func OpenIdSet(c *gin.Context) {
 	var inData user.OpenIdSetRequest
 	var outData user.OpenIdSetResponse
 	var sqlData mysql.User
+	var sql1 mysql.User
 	//var wallet mysql.Wallet
 	err := c.ShouldBindJSON(&inData)
 	if err != nil {
@@ -49,15 +50,26 @@ func OpenIdSet(c *gin.Context) {
 	sqlData.OpenID = outData.OpenId
 	num := sqlData.GetNum()
 	if num == 0 {
-		//创建用户
-		sqlData.CreateTime = tools.GetCurrntTimeStr()
-		sqlData.UpdateTime = tools.GetCurrntTimeStr()
-		sqlData.Create()
-		//创建钱包
-		//wallet.CreateTime = tools.GetCurrntTimeStr()
-		//wallet.UpdateTime = tools.GetCurrntTimeStr()
-		//wallet.OpenID = outData.OpenId
-		//wallet.Create()
+		if inData.OpenId != "" { //有上级
+			sql1.OpenID = inData.OpenId
+			val, err := sql1.Get()
+			if err != nil {
+				app.Error(c, 500, err, err.Error())
+				return
+			}
+			//创建用户
+			sqlData.CreateTime = tools.GetCurrntTimeStr()
+			sqlData.UpdateTime = tools.GetCurrntTimeStr()
+			sqlData.OpenIdOne = inData.OpenId
+			sqlData.OpenIdTwo = val.OpenIdOne
+			sqlData.Create()
+		} else { //无上级用户
+			//创建用户
+			sqlData.CreateTime = tools.GetCurrntTimeStr()
+			sqlData.UpdateTime = tools.GetCurrntTimeStr()
+			sqlData.Create()
+		}
+
 	}
 
 	app.OK(c, outData, app.Success)

+ 23 - 12
apis/user/user.order.get.go

@@ -4,15 +4,14 @@ import (
 	"duoduo/models/mysql"
 	"duoduo/models/user"
 	"duoduo/tools/app"
+	"fmt"
 	"github.com/gin-gonic/gin"
 )
 
 func OrderGet(c *gin.Context) {
 	var inData user.OrderGetRequest
-	//var outData user.OrderGetResponse
-	//var order []mysql.Order
+	var outData user.OrderGetResponse
 	var orderOpneId mysql.Order
-	var pid mysql.Pid
 
 	var pageSize = 10
 	var pageIndex = 1
@@ -30,20 +29,32 @@ func OrderGet(c *gin.Context) {
 		pageIndex = inData.PageIndex
 	}
 
-	pid.OpenID = inData.OpenId
-	pid.PidStatus = 1
-	pidVal, err := pid.Get()
+	orderOpneId.OpenId = inData.OpenId
+	orderVal, count, err := orderOpneId.GetOrderOpenIdList(pageSize, pageIndex, inData.UserStatus)
 	if err != nil {
 		app.Error(c, 500, err, err.Error())
 		return
 	}
 
-	orderOpneId.PID = pidVal.Pid
-	orderVal, count, err := orderOpneId.GetOrderList(pageSize, pageIndex)
-	if err != nil {
-		app.Error(c, 500, err, err.Error())
-		return
+	fmt.Print(orderVal)
+
+	for i := 0; i < len(orderVal); i++ {
+		var orderInfo user.OrderInfo
+		orderInfo.Order = orderVal[i]
+		if inData.UserStatus == 0 {
+			orderInfo.Amount = orderVal[i].Amount
+		} else if inData.UserStatus == 1 {
+			orderInfo.Amount = orderVal[i].Amount1
+		} else if inData.UserStatus == 2 {
+			orderInfo.Amount = orderVal[i].Amount2
+		} else {
+			app.Error(c, 500, err, "UserStatus error")
+			return
+		}
+
+		outData.OrderInfo = append(outData.OrderInfo, orderInfo)
+
 	}
 
-	app.PageOK(c, orderVal, count, pageIndex, pageSize, app.Success)
+	app.PageOK(c, outData, count, pageIndex, pageSize, app.Success)
 }

+ 153 - 1
models/mysql/order.go

@@ -2,6 +2,7 @@ package mysql
 
 import (
 	orm "duoduo/database"
+	"errors"
 	"github.com/shopspring/decimal"
 )
 
@@ -23,6 +24,27 @@ type Order struct {
 	Amount1               decimal.Decimal `gorm:"column:amount_1" json:"amount1"`
 	Amount2               decimal.Decimal `gorm:"column:amount_2" json:"amount2"`
 	OrderAmount           decimal.Decimal `gorm:"column:order_amount" json:"orderAmount"`
+	OpenId                string          `gorm:"column:open_id" json:"openId"`
+	OpenId1               string          `gorm:"column:open_id_1" json:"openId1"`
+	OpenId2               string          `gorm:"column:open_id_2" json:"openId2"`
+}
+
+type OrderAmount struct {
+	TotalAmount        decimal.Decimal `gorm:"column:total_amount" json:"totalAmount"`
+	TotalAmountOne     decimal.Decimal `gorm:"column:total_amount_one" json:"totalAmountOne"`
+	TotalAmountTwo     decimal.Decimal `gorm:"column:total_amount_two" json:"totalAmountTwo"`
+	TodayAmount        decimal.Decimal `gorm:"column:today_amount" json:"todayAmount"`
+	TodayAmountOne     decimal.Decimal `gorm:"column:today_amount_one" json:"todayAmountOne"`
+	TodayAmountTwo     decimal.Decimal `gorm:"column:today_amount_two" json:"todayAmountTwo"`
+	YesterdayAmount    decimal.Decimal `gorm:"column:yesterday_amount" json:"yesterdayAmount"`
+	YesterdayAmountOne decimal.Decimal `gorm:"column:yesterday_amount_one" json:"yesterdayAmountOne"`
+	YesterdayAmountTwo decimal.Decimal `gorm:"column:yesterday_amount_two" json:"yesterdayAmountTwo"`
+	LatelyAmount       decimal.Decimal `gorm:"column:lately_amount" json:"latelyAmount"`
+	LatelyAmountOne    decimal.Decimal `gorm:"column:lately_amount_one" json:"latelyAmountOne"`
+	LatelyAmountTwo    decimal.Decimal `gorm:"column:lately_amount_two" json:"latelyAmountTwo"`
+	AvailableAmount    decimal.Decimal `gorm:"column:available_amount" json:"availableAmount"`
+	AvailableAmountOne decimal.Decimal `gorm:"column:available_amount_one" json:"availableAmountOne"`
+	AvailableAmountTwo decimal.Decimal `gorm:"column:available_amount_two" json:"availableAmountTwo"`
 }
 
 // TableName sets the insert table name for this struct type
@@ -93,6 +115,108 @@ func (o *Order) GetAmount() (Wallet, error) {
 
 }
 
+func (o *Order) GetAmountOpenId() (OrderAmount, error) {
+	var wallet OrderAmount
+
+	//历史总收益: 0,1,2,3,5 求和
+	//今日预估收益:0,1,2,3 求和
+	//昨日预估收益:0,1,2,3 求和
+	//近30日预估收益:0,1,2,3,5 求和
+	//可体现金额:5求和-已体现金额
+	//已体现金额:提现记录求和
+	//历史总收益
+	err := orm.Eloquent.Select("SUM(amount) as total_amount").Where("order_status in (0,1,2,3,5) and open_id = ? ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+	err = orm.Eloquent.Select("SUM(amount_1) as total_amount_one").Where("order_status in (0,1,2,3,5) and open_id_1 = ? ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+
+	err = orm.Eloquent.Select("SUM(amount_2) as total_amount_two").Where("order_status in (0,1,2,3,5) and open_id_2 = ? ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+	//今日收益
+	err = orm.Eloquent.Select("SUM(amount) as today_amount").Where("order_status in (0,1,2,3) and open_id = ? and DATE(order_group_success_time) = curdate() ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+	err = orm.Eloquent.Select("SUM(amount_1) as today_amount_one").Where("order_status in (0,1,2,3) and open_id_1 = ? and DATE(order_group_success_time) = curdate() ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+	err = orm.Eloquent.Select("SUM(amount_2) as today_amount_two").Where("order_status in (0,1,2,3) and open_id_2 = ? and DATE(order_group_success_time) = curdate() ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+	//昨日收益
+	err = orm.Eloquent.Select("SUM(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) ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+
+	err = orm.Eloquent.Select("SUM(amount_1) as yesterday_amount_one").Where("order_status in (0,1,2,3) and open_id_1 = ? and DATE(order_group_success_time) = date_sub(curdate(),interval 1 day) ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+
+	err = orm.Eloquent.Select("SUM(amount_2) as yesterday_amount_two").Where("order_status in (0,1,2,3) and open_id_2 = ? and DATE(order_group_success_time) = date_sub(curdate(),interval 1 day) ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+	//近30日收益
+	err = orm.Eloquent.Select("SUM(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) ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+
+	err = orm.Eloquent.Select("SUM(amount_1) as lately_amount_one").Where("order_status in (0,1,2,3) and open_id_1 = ? and DATE(order_group_success_time) >= date_sub(curdate(),interval 30 day) ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+
+	err = orm.Eloquent.Select("SUM(amount_2) as lately_amount_two").Where("order_status in (0,1,2,3) and open_id_2 = ? and DATE(order_group_success_time) >= date_sub(curdate(),interval 30 day) ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+
+	//上个月结算收益
+	err = orm.Eloquent.Select("SUM(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) ", o.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+
+	err = orm.Eloquent.Select("SUM(amount_1) as available_amount_one").Where("order_status = 5 and open_id_1 = ? 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.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+
+	err = orm.Eloquent.Select("SUM(amount_2) as available_amount_two").Where("order_status = 5 and open_id_2 = ? 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.OpenId).Table(o.TableName()).First(&wallet).Error
+
+	if err != nil {
+		return wallet, err
+	}
+
+	return wallet, nil
+
+}
+
 // 更新
 func (o *Order) Update(orderId string) (update Order, err error) {
 	if err = orm.Eloquent.Table(o.TableName()).Where("order_id = ?", orderId).First(&update).Error; err != nil {
@@ -101,7 +225,7 @@ func (o *Order) Update(orderId string) (update Order, err error) {
 
 	//参数1:是要修改的数据
 	//参数2:是修改的数据
-	if err = orm.Eloquent.Table(o.TableName()).Model(&update).Updates(&o).Error; err != nil {
+	if err = orm.Eloquent.Table(o.TableName()).Where("order_id = ?", orderId).Model(&update).Updates(&o).Error; err != nil {
 		return
 	}
 	return
@@ -122,3 +246,31 @@ func (o *Order) GetOrderList(pageSize int, pageIndex int) ([]Order, int, error)
 	table.Count(&count)
 	return doc, count, nil
 }
+
+//list 接口使用
+func (o *Order) GetOrderOpenIdList(pageSize int, pageIndex int, status int) ([]Order, int, error) {
+	var doc []Order
+
+	table := orm.Eloquent.Table(o.TableName())
+
+	if status == 0 {
+		table = table.Where("open_id = ?  ", o.OpenId)
+	} else if status == 1 {
+		table = table.Where("open_id_1 = ?  ", o.OpenId)
+	} else if status == 2 {
+		table = table.Where("open_id_2 = ?  ", o.OpenId)
+	} else {
+		return nil, 0, errors.New("status err")
+	}
+
+	//table = table.Where("open_id = ?  ", o.OpenId)
+
+	var count int
+	if err := table.Select("order_id,promotion_amount,p_id,order_status,order_status_desc,goods_name," +
+		"goods_thumbnail_url,order_group_success_time,amount,amount_1,amount_2,order_sn," +
+		"DATE_FORMAT(order_create_time,'%Y-%m-%d %H:%i:%s') as order_create_time,order_amount").Order("id desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Error; err != nil {
+		return nil, 0, err
+	}
+	table.Count(&count)
+	return doc, count, nil
+}

+ 58 - 3
models/mysql/user.go

@@ -3,6 +3,7 @@ package mysql
 import (
 	orm "duoduo/database"
 	"duoduo/tools"
+	"errors"
 )
 
 type User struct {
@@ -11,6 +12,23 @@ type User struct {
 	Phone      string `gorm:"column:phone" json:"phone"`
 	Pid        string `gorm:"column:pid" json:"pid"`
 	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
+	NickName   string `gorm:"column:nick_name" json:"nickName"`
+	AvatarUrl  string `gorm:"column:avatar_url" json:"avatarUrl"`
+	OpenIdOne  string `gorm:"column:open_id_1" json:"openIdOne"`
+	OpenIdTwo  string `gorm:"column:open_id_2" json:"openIdTwo"`
+}
+
+type UserName struct {
+	CreateTime string `gorm:"column:create_time" json:"createTime"`
+	OpenID     string `gorm:"column:open_id" json:"openId"`
+	Phone      string `gorm:"column:phone" json:"phone"`
+	Pid        string `gorm:"column:pid" json:"pid"`
+	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
+	NickName   string `gorm:"column:nick_name" json:"nickName"`
+	AvatarUrl  string `gorm:"column:avatar_url" json:"avatarUrl"`
+	OpenIdOne  string `gorm:"column:open_id_1" json:"openIdOne"`
+	OpenIdTwo  string `gorm:"column:open_id_2" json:"openIdTwo"`
+	Id         int    `gorm:"column:id" json:"id"`
 }
 
 // TableName sets the insert table name for this struct type
@@ -26,9 +44,9 @@ func (u *User) GetNum() int {
 
 }
 
-func (u *User) Get() (User, error) {
-	var doc User
-	err := orm.Eloquent.Select("pid").Where("open_id = ? ", u.OpenID).Table(u.TableName()).First(&doc).Error
+func (u *User) Get() (UserName, error) {
+	var doc UserName
+	err := orm.Eloquent.Select("id,pid,nick_name,avatar_url,open_id_1,open_id_2").Where("open_id = ? ", u.OpenID).Table(u.TableName()).First(&doc).Error
 	if err != nil {
 		return doc, err
 	}
@@ -58,3 +76,40 @@ func (u *User) Update() (update User, err error) {
 
 	return update, nil
 }
+
+func (u *User) UpdateName() (update User, err error) {
+
+	if err := orm.Eloquent.Table(u.TableName()).Model(&update).Where("open_id = ? ", u.OpenID).Updates(
+		map[string]interface{}{
+			"nick_name":   u.NickName,
+			"avatar_url":  u.AvatarUrl,
+			"update_time": tools.GetCurrntTimeStr()}).Error; err != nil {
+		return update, err
+	}
+
+	return update, nil
+}
+
+//list 接口使用
+func (u *User) GetOrderOpenIdList(pageSize int, pageIndex int, status int) ([]UserName, int, error) {
+	var doc []UserName
+
+	table := orm.Eloquent.Table(u.TableName())
+
+	if status == 1 {
+		table = table.Where("open_id_1 = ?  ", u.OpenID)
+	} else if status == 2 {
+		table = table.Where("open_id_2 = ?  ", u.OpenID)
+	} else {
+		return nil, 0, errors.New("status err")
+	}
+
+	//table = table.Where("open_id = ?  ", o.OpenId)
+
+	var count int
+	if err := table.Select("id,nick_name,avatar_url,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s') as create_time").Order("id desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Error; err != nil {
+		return nil, 0, err
+	}
+	table.Count(&count)
+	return doc, count, nil
+}

+ 14 - 0
models/user/user.list.go

@@ -0,0 +1,14 @@
+package user
+
+import "duoduo/models/mysql"
+
+type UserListRequest struct {
+	OpenId    string `json:"openId"`
+	Status    int    `json:"status"` //1-下线 2-下下线
+	PageSize  int    `json:"pageSize"`
+	PageIndex int    `json:"pageIndex"`
+}
+
+type UserListResponse struct {
+	User []mysql.User `json:"user"`
+}

+ 11 - 0
models/user/user.open.id.get.go

@@ -0,0 +1,11 @@
+package user
+
+import "duoduo/models/mysql"
+
+type OpenIdGetRequest struct {
+	OpenId string `json:"openId"`
+}
+
+type OpenIdGetResponse struct {
+	User mysql.UserName `json:"user"`
+}

+ 2 - 1
models/user/user.open.id.set.go

@@ -1,7 +1,8 @@
 package user
 
 type OpenIdSetRequest struct {
-	Code string `json:"code"` //微信code
+	Code   string `json:"code"`   //微信code
+	OpenId string `json:"openId"` //邀请好友的openId
 }
 
 type OpenIdSetResponse struct {

+ 14 - 5
models/user/user.order.get.go

@@ -1,13 +1,22 @@
 package user
 
-import "duoduo/models/mysql"
+import (
+	"duoduo/models/mysql"
+	"github.com/shopspring/decimal"
+)
 
 type OrderGetRequest struct {
-	OpenId    string `json:"openId"`
-	PageSize  int    `json:"pageSize"`
-	PageIndex int    `json:"pageIndex"`
+	OpenId     string `json:"openId"`
+	UserStatus int    `json:"userStatus"` //0 -本人订单 1-下级订单 2-下下级订单
+	PageSize   int    `json:"pageSize"`
+	PageIndex  int    `json:"pageIndex"`
 }
 
 type OrderGetResponse struct {
-	Order []mysql.Order `json:"order"`
+	OrderInfo []OrderInfo `json:"orderInfo"`
+}
+
+type OrderInfo struct {
+	Order  mysql.Order     `json:"order"`
+	Amount decimal.Decimal `json:"amount"`
 }

+ 7 - 0
models/user/user.update.name.go

@@ -0,0 +1,7 @@
+package user
+
+type UpdateNameRequest struct {
+	OpenId    string `json:"openId"`
+	NickName  string `json:"nickName"`
+	AvatarUrl string `json:"avatarUrl"`
+}

+ 92 - 32
report/pdd.ddk.order.list.increment.get.go

@@ -43,6 +43,9 @@ func DdkOrder() {
 		inData.EndUpdateTime = fmt.Sprintf("%d", timeInt)
 		inData.StartUpdateTime = fmt.Sprintf("%d", timeInt-60)
 
+		//inData.EndUpdateTime = "1626786000"
+		//inData.StartUpdateTime = "1626739940"
+
 		inData.Sign = "sign"
 
 		sign, err := pdd2.DDKSign(inData)
@@ -73,8 +76,10 @@ func DdkOrder() {
 		//同步订单信息
 		for i := 0; i < len(outData.OrderListGetResponse.OrderList); i++ {
 			var pid mysql.Pid
-			var order mysql.Order
-			var trans mysql.TransRecords
+			//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()
@@ -89,9 +94,26 @@ func DdkOrder() {
 			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.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()
@@ -108,40 +130,24 @@ func DdkOrder() {
 
 			//统计钱包数据
 			//首先获取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()
+			//本人
+			err = UpdateWallet(user.OpenID)
 			if err != nil {
 				continue
 			}
 
-			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 = pidVal.OpenID
-			transVal, err := trans.GetAmount()
-			if err != nil {
-				continue
+			if userVal.OpenIdOne != "" {
+				err = UpdateWallet(userVal.OpenIdOne)
+				if err != nil {
+					continue
+				}
 			}
-			walletVal.WithdrawalAmount = transVal.Amount.Div(decimal.NewFromInt(100)).Mul(decimal.NewFromFloat(0.6)).Round(2)
-			walletVal.AvailableAmount = walletVal.AvailableAmount.Sub(walletVal.WithdrawalAmount).Mul(decimal.NewFromFloat(0.6)).Round(2)
-
-			//更新钱包
-			walletVal.OpenID = pidVal.OpenID
-			walletVal.Pid = outData.OrderListGetResponse.OrderList[i].PID
-			walletVal.UpdateTime = tools.GetCurrntTimeStr()
-			_, err = walletVal.UpdateAll()
-			if err != nil {
-				continue
+
+			if userVal.OpenIdTwo != "" {
+				err = UpdateWallet(userVal.OpenIdTwo)
+				if err != nil {
+					continue
+				}
 			}
 
 		}
@@ -152,3 +158,57 @@ func DdkOrder() {
 	}
 
 }
+
+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
+
+}