Browse Source

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

k.zhang 4 years ago
parent
commit
e2df89ec87

+ 0 - 1
apis/pdd/base.go

@@ -18,7 +18,6 @@ func InitSetRouter(engine *gin.RouterGroup) {
 	v1 := engine.Group("v1")
 	{
 		v1.POST("/set", Set) //
-
 	}
 }
 

+ 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)
 }

+ 132 - 21
apis/pdd/pdd.ddk.order.list.increment.get.go

@@ -2,11 +2,13 @@ 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"
 )
 
@@ -14,6 +16,8 @@ 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 {
@@ -21,37 +25,144 @@ func PddDdkOrderListIncrementGet(c *gin.Context) {
 		return
 	}
 
-	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.EndUpdateTime = fmt.Sprintf("%d", tools.GetNowTimeStamp())
-	tm, _ := tools.GetTimeStamp("2021-05-20 10:00:00")
-	inData.StartUpdateTime = fmt.Sprintf("%d", tm)
-	inData.Sign = "sign"
-
-	sign, err := DDKSign(inData)
+	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"
 
-	inData.Sign = sign
-	val, err := PostDDk(inData, nil)
+		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
+		}
 
-	if err != nil {
-		app.Error(c, 400, err, err.Error())
-		return
-	}
-	err = tools.JsonUnmarshal(val, &outData)
-	if err != nil {
 		err = tools.JsonUnmarshal(val, &pddErr)
 		if err != nil {
 			app.Error(c, 500, err, err.Error())
 			return
 		}
-		app.Error(c, 500, nil, pddErr.ErrorResponse.ErrorMsg)
-		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
+
+			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))
+			sqlData.OrderAmount = decimal.NewFromInt(outData.OrderListGetResponse.OrderList[i].OrderAmount).Div(decimal.NewFromInt(100))
+
+			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, outData, app.Success)
+
+	app.OK(c, nil, app.Success)
 }

+ 1 - 1
apis/pdd/set.go

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

+ 4 - 1
apis/user/base.go

@@ -5,6 +5,9 @@ import "github.com/gin-gonic/gin"
 func InitUserRouter(engine *gin.RouterGroup) {
 	v1 := engine.Group("v1")
 	{
-		v1.POST("/user/open.id/set", OpenIdSet) //多多客  商品查询
+		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)   //获取订单列表
 	}
 }

+ 7 - 0
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 wallet mysql.Wallet
 	err := c.ShouldBindJSON(&inData)
 	if err != nil {
 		app.Error(c, 400, err, err.Error())
@@ -48,9 +49,15 @@ 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()
 	}
 
 	app.OK(c, outData, app.Success)

+ 49 - 0
apis/user/user.order.get.go

@@ -0,0 +1,49 @@
+package user
+
+import (
+	"duoduo/models/mysql"
+	"duoduo/models/user"
+	"duoduo/tools/app"
+	"github.com/gin-gonic/gin"
+)
+
+func OrderGet(c *gin.Context) {
+	var inData user.OrderGetRequest
+	//var outData user.OrderGetResponse
+	//var order []mysql.Order
+	var orderOpneId mysql.Order
+	var pid mysql.Pid
+
+	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
+	}
+
+	pid.OpenID = inData.OpenId
+	pid.PidStatus = 1
+	pidVal, err := pid.Get()
+	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
+	}
+
+	app.PageOK(c, orderVal, count, pageIndex, pageSize, app.Success)
+}

+ 114 - 0
apis/user/user.pid.get.go

@@ -0,0 +1,114 @@
+package user
+
+import (
+	pdd2 "duoduo/apis/pdd"
+	"duoduo/conf"
+	"duoduo/models/mysql"
+	"duoduo/models/pdd"
+	"duoduo/models/user"
+	"duoduo/tools"
+	"duoduo/tools/app"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"time"
+)
+
+func PidGet(c *gin.Context) {
+	var inData user.PidGetRequest
+	var outData user.PidGetResponse
+	//var sqlData mysql.User
+	//var wallet mysql.Wallet
+	var pid mysql.Pid
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	pid.PidStatus = 1
+	pid.OpenID = inData.OpenId
+	//sqlData.OpenID = inData.OpenId
+	val, err := pid.Get()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	//创建pid
+	if val.Pid == "" {
+		var pidCreate pdd.PddDdkGoodsPidGenerateRequest
+		var pidOut pdd.PddDdkGoodsPidGenerateResponse
+		var pddErr pdd.ErrorPddResponse
+
+		confIni, err := conf.ConnIni()
+		if err != nil {
+			app.Error(c, 400, err, err.Error())
+			return
+		}
+		pidCreate.ClientId = confIni.MustValue("pdd", "client_id")
+		pidCreate.Type = "pdd.ddk.goods.pid.generate"
+		pidCreate.Timestamp = fmt.Sprintf("%d", time.Now().Unix())
+		pidCreate.DataType = "JSON"
+		pidCreate.Sign = "sign"
+		pidCreate.Number = "1"
+
+		sign, err := pdd2.DDKSign(pidCreate)
+		if err != nil {
+			app.Error(c, 400, err, err.Error())
+			return
+		}
+
+		pidCreate.Sign = sign
+		val, err := pdd2.PostDDk(pidCreate, 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
+		}
+		if pddErr.ErrorResponse.ErrorCode != 0 {
+			app.Error(c, 500, err, pddErr.ErrorResponse.ErrorMsg)
+			return
+		}
+
+		err = tools.JsonUnmarshal(val, &pidOut)
+		if err != nil {
+			app.Error(c, 500, err, err.Error())
+			return
+		}
+		outData.Pid = pidOut.PIDGenerateResponse.PIDList[0].PID
+
+		//sqlData.Pid = outData.Pid
+		//sqlData.OpenID = inData.OpenId
+		//sqlData.Update()
+		//插入pid
+		pid.OpenID = inData.OpenId
+		pid.PidStatus = 1 //拼多多
+		pid.UpdateTime = tools.GetCurrntTimeStr()
+		pid.CreateTime = tools.GetCurrntTimeStr()
+		pid.Create()
+
+		//生成pid 成功 创建钱包
+		var wallet mysql.Wallet
+		wallet.Pid = pidOut.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
+		}
+
+	} else {
+		outData.Pid = val.Pid
+	}
+
+	app.OK(c, outData, app.Success)
+
+}

+ 38 - 0
apis/user/user.wallet.get.go

@@ -0,0 +1,38 @@
+package user
+
+import (
+	"duoduo/models/mysql"
+	"duoduo/models/user"
+	"duoduo/tools/app"
+	"fmt"
+	"github.com/gin-gonic/gin"
+)
+
+// 查询钱包
+func WalletGet(c *gin.Context) {
+	var inData user.WalletGetRequest
+	var outData user.WalletGetResponse
+	var wallet mysql.Wallet
+
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	wallet.OpenID = inData.OpenId
+	fmt.Print(wallet.OpenID)
+	walletVal, err := wallet.Get()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	//for i := 0; i < len(walletVal); i++ {
+	//
+	//}
+	outData.Wallet = walletVal
+
+	app.OK(c, outData, app.Success)
+
+}

+ 2 - 2
conf/conf.ini

@@ -4,10 +4,10 @@ client_secret = 1d4d5dd30f665c0ed3b315275f81fe358c3da609
 api_http = https://gw-api.pinduoduo.com/api/router
 [mysql]
 mysql_host = 49.234.19.130
-mysql_name = duoduo
+mysql_name = duoduo_test
 mysql_password = Zhangkun0212a@
 mysql_port = 3306
 mysql_username = gogs
 [wx]
 app_id = wxc5b88e9d942121cc
-secret = 66d4694c94371186f5f15abbd76a89c6
+secret = 66d4694c94371186f5f15abbd76a89c6

+ 13 - 0
conf/conf_master.ini

@@ -0,0 +1,13 @@
+[pdd]
+client_id = a5d05569c6584a50bfb6600b2d150bae
+client_secret = 1d4d5dd30f665c0ed3b315275f81fe358c3da609
+api_http = https://gw-api.pinduoduo.com/api/router
+[mysql]
+mysql_host = 49.234.19.130
+mysql_name = duoduo
+mysql_password = Zhangkun0212a@
+mysql_port = 3306
+mysql_username = gogs
+[wx]
+app_id = wxc5b88e9d942121cc
+secret = 66d4694c94371186f5f15abbd76a89c6

+ 13 - 0
conf/conf_test.ini

@@ -0,0 +1,13 @@
+[pdd]
+client_id = a5d05569c6584a50bfb6600b2d150bae
+client_secret = 1d4d5dd30f665c0ed3b315275f81fe358c3da609
+api_http = https://gw-api.pinduoduo.com/api/router
+[mysql]
+mysql_host = 49.234.19.130
+mysql_name = duoduo_test
+mysql_password = Zhangkun0212a@
+mysql_port = 3306
+mysql_username = gogs
+[wx]
+app_id = wxc5b88e9d942121cc
+secret = 66d4694c94371186f5f15abbd76a89c6

+ 3 - 4
conf/conn_ini_.go

@@ -4,20 +4,19 @@ import (
 	"errors"
 	"fmt"
 	"github.com/Unknwon/goconfig"
-	"os"
-	"strings"
 )
 
 // 读取配置文件
 var connIni *goconfig.ConfigFile
 var connIniTest = false
+var Model string
 
 func ConnIni() (conf *goconfig.ConfigFile, err error) {
 
 	// 通过全局变量设置配置文件的名字
 	var confName string
-
-	switch strings.ToLower(os.Getenv("model")) {
+	fmt.Print("model = ", Model)
+	switch Model {
 
 	case "test":
 		confName = "conf_test.ini"

+ 2 - 0
go.mod

@@ -16,6 +16,8 @@ require (
 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 	github.com/modern-go/reflect2 v1.0.1 // indirect
 	github.com/olivere/elastic/v7 v7.0.4 // indirect
+	github.com/robfig/cron v1.2.0 // indirect
+	github.com/shopspring/decimal v1.2.0 // indirect
 	github.com/sirupsen/logrus v1.4.2 // indirect
 	github.com/ugorji/go v1.2.5 // indirect
 	github.com/unrolled/secure v1.0.9 // indirect

+ 4 - 0
go.sum

@@ -116,6 +116,10 @@ github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8
 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
 github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
 github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
+github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ=
+github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
+github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
+github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=

+ 13 - 1
main.go

@@ -1,13 +1,25 @@
 package main
 
 import (
+	"duoduo/conf"
 	"duoduo/database"
+	"duoduo/report"
 	"duoduo/routers"
 	"fmt"
+	"os"
 )
 
 func main() {
-	fmt.Println("hello duo!")
+
+	for idx, args := range os.Args {
+
+		if idx == 1 {
+			conf.Model = args
+			fmt.Print("model = ", conf.Model)
+		}
+
+	}
 	database.Setup()
+	report.SysCronStart()
 	routers.InitRouter()
 }

+ 124 - 0
models/mysql/order.go

@@ -0,0 +1,124 @@
+package mysql
+
+import (
+	orm "duoduo/database"
+	"github.com/shopspring/decimal"
+)
+
+type Order struct {
+	CreateTime            string          `gorm:"column:create_time" json:"createTime"`
+	GoodsName             string          `gorm:"column:goods_name" json:"goodsName"`
+	GoodsThumbnailURL     string          `gorm:"column:goods_thumbnail_url" json:"goodsThumbnailUrl"`
+	JSONData              string          `gorm:"column:json_data" json:"jsonData"`
+	OrderGroupSuccessTime string          `gorm:"column:order_group_success_time" json:"orderGroupSuccessTime"`
+	OrderID               string          `gorm:"column:order_id" json:"orderId"`
+	OrderStatus           int             `gorm:"column:order_status" json:"orderStatus"`
+	OrderStatusDesc       string          `gorm:"column:order_status_desc" json:"orderStatusDesc"`
+	PID                   string          `gorm:"column:p_id" json:"pId"`
+	PromotionAmount       int64           `gorm:"column:promotion_amount" json:"promotionAmount"`
+	UpdateTime            string          `gorm:"column:update_time" json:"updateTime"`
+	OrderCreateTime       string          `gorm:"column:order_create_time" json:"orderCreateTime"`
+	OrderSn               string          `gorm:"column:order_sn" json:"orderSn"`
+	Amount                decimal.Decimal `gorm:"column:amount" json:"amount"`
+	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"`
+}
+
+// TableName sets the insert table name for this struct type
+func (o *Order) TableName() string {
+	return "order"
+}
+
+func (o *Order) Create() (Order, error) {
+	var doc Order
+	result := orm.Eloquent.Table(o.TableName()).Create(&o)
+	if result.Error != nil {
+		err := result.Error
+		return doc, err
+	}
+	doc = *o
+	return doc, nil
+}
+
+func (o *Order) GetNum() int {
+	var count int
+	tableCount := orm.Eloquent.Table(o.TableName()).Where("order_id = ? ", o.OrderID)
+	tableCount.Count(&count)
+	return count
+}
+
+func (o *Order) GetAmount() (Wallet, error) {
+	var wallet Wallet
+
+	//历史总收益: 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(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 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 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 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 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
+	}
+
+	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 {
+		return
+	}
+
+	//参数1:是要修改的数据
+	//参数2:是修改的数据
+	if err = orm.Eloquent.Table(o.TableName()).Model(&update).Updates(&o).Error; err != nil {
+		return
+	}
+	return
+}
+
+//list 接口使用
+func (o *Order) GetOrderList(pageSize int, pageIndex int) ([]Order, int, error) {
+	var doc []Order
+
+	table := orm.Eloquent.Table(o.TableName())
+
+	table = table.Where("p_id = ?  ", o.PID)
+
+	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
+}

+ 49 - 0
models/mysql/pid.go

@@ -0,0 +1,49 @@
+package mysql
+
+import orm "duoduo/database"
+
+type Pid struct {
+	CreateTime string `gorm:"column:create_time" json:"create_time"`
+	OpenID     string `gorm:"column:open_id" json:"open_id"`
+	Pid        string `gorm:"column:pid" json:"pid"`
+	PidStatus  int    `gorm:"column:pid_status" json:"pid_status"` //1-拼多多 2-淘宝天猫 3-京东
+	UpdateTime string `gorm:"column:update_time" json:"update_time"`
+}
+
+// TableName sets the insert table name for this struct type
+func (p *Pid) TableName() string {
+	return "pid"
+}
+
+//     自己 上  上上
+//级别 0.5 0.15 0.05  70% 交税+
+func (p *Pid) Get() (Pid, error) {
+	var doc Pid
+	err := orm.Eloquent.Select("pid").Where("open_id = ?  and pid_status = ?", p.OpenID, p.PidStatus).Table(p.TableName()).First(&doc).Error
+	if err != nil {
+		return doc, err
+	}
+	return doc, nil
+
+}
+
+func (p *Pid) GetOpenId() (Pid, error) {
+	var doc Pid
+	err := orm.Eloquent.Select("open_id").Where("pid = ? ", p.Pid).Table(p.TableName()).First(&doc).Error
+	if err != nil {
+		return doc, err
+	}
+	return doc, nil
+
+}
+
+func (p *Pid) Create() (Pid, error) {
+	var doc Pid
+	result := orm.Eloquent.Table(p.TableName()).Create(&p)
+	if result.Error != nil {
+		err := result.Error
+		return doc, err
+	}
+	doc = *p
+	return doc, nil
+}

+ 47 - 0
models/mysql/trans_records.go

@@ -0,0 +1,47 @@
+package mysql
+
+import (
+	orm "duoduo/database"
+	"github.com/shopspring/decimal"
+)
+
+type TransRecords struct {
+	Amount      decimal.Decimal `gorm:"column:amount" json:"amount"`
+	CreateTime  string          `gorm:"column:create_time" json:"createTime"`
+	OpenID      string          `gorm:"column:open_id" json:"openId"`
+	TransStatus int             `gorm:"column:trans_status" json:"transStatus"`
+	UpdateTime  string          `gorm:"column:update_time" json:"updateTime"`
+}
+
+// TableName sets the insert table name for this struct type
+func (t *TransRecords) TableName() string {
+	return "trans_records"
+}
+
+func (t *TransRecords) Create() (TransRecords, error) {
+	var doc TransRecords
+	result := orm.Eloquent.Table(t.TableName()).Create(&t)
+	if result.Error != nil {
+		err := result.Error
+		return doc, err
+	}
+	doc = *t
+	return doc, nil
+}
+
+func (t *TransRecords) GetAmount() (TransRecords, error) {
+	var trans TransRecords
+
+	//可体现金额:5求和-已体现金额
+	//已体现金额:提现记录求和
+
+	//历史总收益
+	err := orm.Eloquent.Select("SUM(amount) as amount").Where("open_id = ? and trans_status = ? ", t.OpenID, t.TransStatus).Table(t.TableName()).First(&trans).Error
+
+	if err != nil {
+		return trans, err
+	}
+
+	return trans, nil
+
+}

+ 26 - 1
models/mysql/user.go

@@ -1,6 +1,9 @@
 package mysql
 
-import orm "duoduo/database"
+import (
+	orm "duoduo/database"
+	"duoduo/tools"
+)
 
 type User struct {
 	CreateTime string `gorm:"column:create_time" json:"createTime"`
@@ -23,6 +26,16 @@ 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
+	if err != nil {
+		return doc, err
+	}
+	return doc, nil
+
+}
+
 func (u *User) Create() (User, error) {
 	var doc User
 	result := orm.Eloquent.Table(u.TableName()).Create(&u)
@@ -33,3 +46,15 @@ func (u *User) Create() (User, error) {
 	doc = *u
 	return doc, nil
 }
+
+func (u *User) Update() (update User, err error) {
+
+	if err := orm.Eloquent.Table(u.TableName()).Model(&update).Where("open_id = ? ", u.OpenID).Updates(
+		map[string]interface{}{
+			"pid":         u.Pid,
+			"update_time": tools.GetCurrntTimeStr()}).Error; err != nil {
+		return update, err
+	}
+
+	return update, nil
+}

+ 79 - 0
models/mysql/wallet.go

@@ -0,0 +1,79 @@
+package mysql
+
+import (
+	orm "duoduo/database"
+	"duoduo/tools"
+	"github.com/shopspring/decimal"
+)
+
+type Wallet struct {
+	AvailableAmount  decimal.Decimal `gorm:"column:available_amount" json:"availableAmount"`   //可提现金额
+	CreateTime       string          `gorm:"column:create_time" json:"createTime"`             //创建时间
+	LatelyAmount     decimal.Decimal `gorm:"column:lately_amount" json:"latelyAmount"`         //近30日金额
+	OpenID           string          `gorm:"column:open_id" json:"openId"`                     //openId
+	TodayAmount      decimal.Decimal `gorm:"column:today_amount" json:"todayAmount"`           //今日金额
+	TotalAmount      decimal.Decimal `gorm:"column:total_amount" json:"totalAmount"`           //历史总金额
+	UpdateTime       string          `gorm:"column:update_time" json:"updateTime"`             //更新时间
+	WithdrawalAmount decimal.Decimal `gorm:"column:withdrawal_amount" json:"withdrawalAmount"` //已经体现总金额
+	YesterdayAmount  decimal.Decimal `gorm:"column:yesterday_amount" json:"yesterdayAmount"`   //昨日收益
+	Pid              string          `gorm:"column:pid" json:"pid"`
+}
+
+// TableName sets the insert table name for this struct type
+func (w *Wallet) TableName() string {
+	return "wallet"
+}
+
+func (w *Wallet) Create() (Wallet, error) {
+	var doc Wallet
+	result := orm.Eloquent.Table(w.TableName()).Create(&w)
+	if result.Error != nil {
+		err := result.Error
+		return doc, err
+	}
+	doc = *w
+	return doc, nil
+}
+
+func (w *Wallet) Update() (update Wallet, err error) {
+
+	if err := orm.Eloquent.Table(w.TableName()).Model(&update).Where("open_id = ? ", w.OpenID).Updates(
+		map[string]interface{}{
+			"pid":         w.Pid,
+			"update_time": tools.GetCurrntTimeStr()}).Error; err != nil {
+		return update, err
+	}
+
+	return update, nil
+}
+
+func (w *Wallet) UpdateAll() (update Wallet, err error) {
+
+	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,
+			"today_amount":      w.TodayAmount,
+			"yesterday_amount":  w.YesterdayAmount,
+			"lately_amount":     w.LatelyAmount,
+			"withdrawal_amount": w.WithdrawalAmount,
+			"update_time":       tools.GetCurrntTimeStr()}).Error; err != nil {
+		return update, err
+	}
+
+	return update, nil
+}
+
+func (w *Wallet) Get() (Wallet, error) {
+	var doc Wallet
+
+	err := orm.Eloquent.Select("SUM(total_amount) as total_amount, SUM(available_amount) as available_amount,"+
+		"SUM(today_amount) as today_amount  , SUM(yesterday_amount) as yesterday_amount, "+
+		"SUM(lately_amount) as lately_amount,SUM(withdrawal_amount) as withdrawal_amount").Where("open_id = ? ", w.OpenID).Table(w.TableName()).Order("id desc").Find(&doc).Error
+
+	if err != nil {
+		return doc, err
+	}
+	return doc, nil
+
+}

+ 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 {

+ 60 - 3
models/pdd/pdd.ddk.order.list.increment.get.go

@@ -4,13 +4,70 @@ type PddDdkOrderListIncrementGetRequest struct {
 	PddDdkBase
 	EndUpdateTime   string `json:"end_update_time"` //
 	StartUpdateTime string `json:"start_update_time"`
+	Page            string `json:"page"` //页码
+	PageSize        string `json:"page_size"`
+}
+
+type DdkOrderListRequest struct {
 }
 
 type PddDdkOrderListIncrementGetResponse struct {
 	OrderListGetResponse OrderListGetResponse `json:"order_list_get_response"`
 }
+
 type OrderListGetResponse struct {
-	TotalCount int           `json:"total_count"`
-	OrderList  []interface{} `json:"order_list"`
-	RequestID  string        `json:"request_id"`
+	TotalCount int         `json:"total_count"`
+	OrderList  []OrderList `json:"order_list"`
+	RequestID  string      `json:"request_id"`
+}
+type OrderList struct {
+	ActivityTags               []int  `json:"activity_tags"`
+	AuthDuoID                  int    `json:"auth_duo_id"`
+	BatchNo                    string `json:"batch_no"`
+	CatIds                     []int  `json:"cat_ids"`
+	CpaNew                     int    `json:"cpa_new"`
+	CpsSign                    string `json:"cps_sign"`
+	CustomParameters           string `json:"custom_parameters"`
+	FailReason                 string `json:"fail_reason"`
+	GoodsID                    int64  `json:"goods_id"`
+	GoodsName                  string `json:"goods_name"`
+	GoodsPrice                 int    `json:"goods_price"`
+	GoodsQuantity              int    `json:"goods_quantity"`
+	GoodsSign                  string `json:"goods_sign"`
+	GoodsThumbnailURL          string `json:"goods_thumbnail_url"`
+	GroupID                    int64  `json:"group_id"`
+	IsDirect                   int    `json:"is_direct"`
+	MallID                     int    `json:"mall_id"`
+	OrderAmount                int64  `json:"order_amount"`
+	OrderCreateTime            int64  `json:"order_create_time"`
+	OrderGroupSuccessTime      int64  `json:"order_group_success_time"`
+	OrderID                    string `json:"order_id"`
+	OrderModifyAt              int    `json:"order_modify_at"`
+	OrderPayTime               int    `json:"order_pay_time"`
+	OrderReceiveTime           int    `json:"order_receive_time"`
+	OrderSettleTime            int    `json:"order_settle_time"`
+	OrderSn                    string `json:"order_sn"`
+	OrderStatus                int    `json:"order_status"`
+	OrderStatusDesc            string `json:"order_status_desc"`
+	OrderVerifyTime            int    `json:"order_verify_time"`
+	PID                        string `json:"p_id"`
+	PointTime                  int    `json:"point_time"`
+	PriceCompareStatus         int    `json:"price_compare_status"`
+	PromotionAmount            int64  `json:"promotion_amount"`
+	PromotionRate              int    `json:"promotion_rate"`
+	ReturnStatus               int    `json:"return_status"`
+	SepDuoID                   int    `json:"sep_duo_id"`
+	SepMarketFee               int    `json:"sep_market_fee"`
+	SepParameters              string `json:"sep_parameters"`
+	SepPid                     string `json:"sep_pid"`
+	SepRate                    int    `json:"sep_rate"`
+	ShareAmount                int    `json:"share_amount"`
+	ShareRate                  int    `json:"share_rate"`
+	SubsidyAmount              int    `json:"subsidy_amount"`
+	SubsidyDuoAmountLevel      int    `json:"subsidy_duo_amount_level"`
+	SubsidyDuoAmountTenMillion int    `json:"subsidy_duo_amount_ten_million"`
+	SubsidyType                int    `json:"subsidy_type"`
+	Type                       int    `json:"type"`
+	URLLastGenerateTime        int    `json:"url_last_generate_time"`
+	ZsDuoID                    int    `json:"zs_duo_id"`
 }

+ 13 - 0
models/user/user.order.get.go

@@ -0,0 +1,13 @@
+package user
+
+import "duoduo/models/mysql"
+
+type OrderGetRequest struct {
+	OpenId    string `json:"openId"`
+	PageSize  int    `json:"pageSize"`
+	PageIndex int    `json:"pageIndex"`
+}
+
+type OrderGetResponse struct {
+	Order []mysql.Order `json:"order"`
+}

+ 9 - 0
models/user/user.pid.get.go

@@ -0,0 +1,9 @@
+package user
+
+type PidGetRequest struct {
+	OpenId string `json:"openId"`
+}
+
+type PidGetResponse struct {
+	Pid string `json:"pid"`
+}

+ 11 - 0
models/user/user.wallet.get.go

@@ -0,0 +1,11 @@
+package user
+
+import "duoduo/models/mysql"
+
+type WalletGetRequest struct {
+	OpenId string `json:"openId"`
+}
+
+type WalletGetResponse struct {
+	Wallet mysql.Wallet `json:"wallet"`
+}

+ 154 - 0
report/pdd.ddk.order.list.increment.get.go

@@ -0,0 +1,154 @@
+package report
+
+import (
+	pdd2 "duoduo/apis/pdd"
+	"duoduo/conf"
+	"duoduo/models/mysql"
+	"duoduo/models/pdd"
+	"duoduo/tools"
+	"fmt"
+	"github.com/shopspring/decimal"
+	"time"
+)
+
+//1 分钟计算一次?
+//2 分钟计算一次
+//创建订单的时候就把他算好  根据状态进行累计加减  每天统计一次,
+func OrderList() {
+
+	go DdkOrder()
+}
+
+func DdkOrder() {
+	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 {
+		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"
+
+		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)
+		if err != nil {
+			return
+		}
+
+		inData.Sign = sign
+		val, err := pdd2.PostDDk(inData, nil)
+
+		if err != nil {
+			return
+		}
+		err = tools.JsonUnmarshal(val, &pddErr)
+		if err != nil {
+			return
+		}
+
+		err = tools.JsonUnmarshal(val, &outData)
+		if err != nil {
+			return
+		}
+
+		if pddErr.ErrorResponse.ErrorCode != 0 {
+			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.Amount1 = 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))
+
+			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
+			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
+		}
+	}
+
+}

+ 15 - 0
report/report.go

@@ -0,0 +1,15 @@
+package report
+
+import "github.com/robfig/cron"
+
+const (
+	cronSettDateCutoff = "0 0 1 * * *"   //每天凌晨1:00:00
+	cronRunStart       = "0 0 17 * * *"  //凌晨一点
+	cronMinuteStart    = "0 */1 * * * *" //每分钟
+)
+
+func SysCronStart() {
+	c := cron.New()
+	c.AddFunc(cronMinuteStart, OrderList) //每分钟同步一下订单
+	c.Start()
+}

+ 9 - 4
routers/router.go

@@ -3,6 +3,7 @@ package routers
 import (
 	"duoduo/apis/pdd"
 	"duoduo/apis/user"
+	"duoduo/conf"
 	"github.com/gin-gonic/gin"
 	"github.com/unrolled/secure"
 )
@@ -10,8 +11,9 @@ import (
 func InitRouter() {
 
 	r := gin.New()
-
-	//r.Use(TlsHandler())
+	if conf.Model == "master" {
+		r.Use(TlsHandler())
+	}
 
 	r.GET("/", func(c *gin.Context) { c.File("./root.txt") })
 	r.GET("/root.txt", func(c *gin.Context) { c.File("./root.txt") })
@@ -21,8 +23,11 @@ func InitRouter() {
 		pdd.InitSetRouter(r2)
 		user.InitUserRouter(r2)
 	}
-	//r.RunTLS(":443", "./shisanmiao.com.pem", "./shisanmiao.com.key")
-	_ = r.Run(":8081")
+	if conf.Model == "master" {
+		r.RunTLS(":443", "./shisanmiao.com.pem", "./shisanmiao.com.key")
+	} else {
+		_ = r.Run(":8081")
+	}
 
 }
 

+ 12 - 1
tools/string.go

@@ -88,6 +88,16 @@ func DateSubDate(startDate string, endDate string) (float64, error) {
 
 }
 
+func TimeToStr(tm int64) string {
+
+	timeLayout := "2006-01-02 15:04:05"
+	// time.Unix的第二个参数传递0或10结果一样,因为都不大于1e9
+	timeStr := time.Unix(tm, 0).Format(timeLayout)
+
+	return timeStr
+
+}
+
 //加天数
 func DateAdd(startDate string, num time.Duration) (string, error) {
 	timeLayout := "2006-01-02" //转化所需模板
@@ -113,7 +123,8 @@ func GetTimeStamp(timeIn string) (int64, error) {
 	if err != nil {
 		return 0, err
 	}
-	return tm2.Unix(), nil
+
+	return tm2.Unix() - 8*3600, nil
 
 }