k.zhang пре 4 година
родитељ
комит
ff27d80040

+ 10 - 3
apis/pdd/base.go

@@ -6,8 +6,15 @@ import "github.com/gin-gonic/gin"
 func InitPddDdkRouter(engine *gin.RouterGroup) {
 	v1 := engine.Group("v1")
 	{
-		v1.POST("/pdd/ddk/search", PddDdkGoodsSearch) //多多客  商品查询
-		v1.POST("/pdd/ddk/detail", PddDdkGoodsDetail) //多多客  商品详情
-		v1.POST("/pdd/pid/generate", PddDdkGoodsPidGenerate)
+		v1.POST("/pdd/ddk/search", PddDdkGoodsSearch)                 //多多客  商品查询
+		v1.POST("/pdd/ddk/detail", PddDdkGoodsDetail)                 //多多客  商品详情
+		v1.POST("/pdd/pid/generate", PddDdkGoodsPidGenerate)          //多多客 生成pid
+		v1.POST("/pdd/url/generate", PddDdkGoodsPromotionUrlGenerate) //多多客 生成单品推广链接                                        //多多客 生成单品推广链接
+		v1.POST("/pdd/order/list", PddDdkOrderListIncrementGet)
+		v1.POST("/pdd/pid/query", PddDdkGoodsPidQuery)
 	}
 }
+
+//1.创建 pid
+//2.获取code   授权 获取token
+//3.pdd.ddk.oauth.goods.prom.url.generate   授权推手 跳转领券

+ 2 - 0
apis/pdd/get.go

@@ -13,9 +13,11 @@ func DuoDuoGet(url string) (outData string, err error) {
 
 	req := requests.Requests()
 	resp, err := req.Get(url)
+
 	if err != nil {
 		return "", err
 	} else {
+		fmt.Print("resp = ", resp.R)
 		return resp.Text(), err
 	}
 

+ 1 - 0
apis/pdd/pdd.code.go

@@ -0,0 +1 @@
+package pdd

+ 20 - 0
apis/pdd/pdd.code_test.go

@@ -0,0 +1,20 @@
+package pdd
+
+import (
+	"duoduo/tools"
+	"fmt"
+	"testing"
+)
+
+func TestPddCode(t *testing.T) {
+	path := "https://jinbao.pinduoduo.com/open.html?response_type=code&client_id=a5d05569c6584a50bfb6600b2d150bae&redirect_uri=https://jinbao.pinduoduo.com/promotion/single-promotion&state=1212"
+
+	dd, err := DuoDuoGet(path)
+	if err != nil {
+		fmt.Print("err = ", err.Error())
+	}
+
+	fmt.Print("dd = ", dd)
+
+	tools.GetCurrntTime()
+}

+ 1 - 0
apis/pdd/pdd.ddk.goods.detail.go

@@ -10,6 +10,7 @@ import (
 	"time"
 )
 
+//商品详情
 func PddDdkGoodsDetail(c *gin.Context) {
 	var inData pdd.PddDdkGoodsDetailRequest
 	var outData pdd.PddDdkGoodsDetailResponse

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

@@ -10,6 +10,7 @@ import (
 	"time"
 )
 
+//生成pid
 func PddDdkGoodsPidGenerate(c *gin.Context) {
 	var inData pdd.PddDdkGoodsPidGenerateRequest
 	var outData pdd.PddDdkGoodsPidGenerateResponse

+ 67 - 0
apis/pdd/pdd.ddk.goods.pid.query.go

@@ -0,0 +1,67 @@
+package pdd
+
+import (
+	"duoduo/conf"
+	"duoduo/models/pdd"
+	"duoduo/tools"
+	"duoduo/tools/app"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"time"
+)
+
+func PddDdkGoodsPidQuery(c *gin.Context) {
+	var inData pdd.PddDdkGoodsPidQueryRequest
+	var outData pdd.PddDdkGoodsPidQueryResponse
+	var pddErr pdd.ErrorPddResponse
+
+	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
+	}
+
+	inData.ClientId = confIni.MustValue("pdd", "client_id")
+	inData.Type = "pdd.ddk.goods.pid.query"
+	inData.Timestamp = fmt.Sprintf("%d", time.Now().Unix())
+	inData.DataType = "JSON"
+	inData.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
+	}
+	if pddErr.ErrorResponse.ErrorCode != 0 {
+		app.Error(c, 500, err, pddErr.ErrorResponse.ErrorMsg)
+		return
+	}
+
+	err = tools.JsonUnmarshal(val, &outData)
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	app.OK(c, outData, app.Success)
+}

+ 83 - 0
apis/pdd/pdd.ddk.goods.promotion.url.generate.go

@@ -0,0 +1,83 @@
+package pdd
+
+import (
+	"duoduo/conf"
+	"duoduo/models/pdd"
+	"duoduo/tools"
+	"duoduo/tools/app"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"time"
+)
+
+func PddDdkGoodsPromotionUrlGenerate(c *gin.Context) {
+	var inData pdd.WxDdkGoodsPromotionUrlGenerateRequest
+	var pddInData pdd.PddDdkGoodsPromotionUrlGenerateRequest
+	var outData pdd.PddDdkGoodsPromotionUrlGenerateResponse
+	var pddErr pdd.ErrorPddResponse
+
+	confIni, err := conf.ConnIni()
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	err = c.ShouldBindJSON(&inData)
+	if err != nil {
+		fmt.Print("err = ", err.Error())
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	pddInData.ClientId = confIni.MustValue("pdd", "client_id")
+	pddInData.Type = "pdd.ddk.goods.promotion.url.generate"
+	pddInData.Timestamp = fmt.Sprintf("%d", time.Now().Unix())
+	pddInData.DataType = "JSON"
+	pddInData.GoodsSignList = "["
+	for i := 0; i < len(inData.GoodsSignList); i++ {
+		if i == (len(inData.GoodsSignList) - 1) {
+			pddInData.GoodsSignList = pddInData.GoodsSignList + "\"" + inData.GoodsSignList[i] + "\""
+		} else {
+			pddInData.GoodsSignList = pddInData.GoodsSignList + "\"" + inData.GoodsSignList[i] + "\","
+		}
+
+	}
+	pddInData.GoodsSignList += "]"
+	pddInData.PId = inData.PId
+	pddInData.SearchId = inData.SearchId
+	pddInData.Sign = ""
+
+	fmt.Print("pddInData = ", pddInData)
+
+	sign, err := DDKSign(pddInData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	pddInData.Sign = sign
+	val, err := PostDDk(pddInData, 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, &outData)
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	app.OK(c, outData, app.Success)
+}

+ 1 - 0
apis/pdd/pdd.ddk.goods.search.go

@@ -12,6 +12,7 @@ import (
 	"time"
 )
 
+//商品列表
 func PddDdkGoodsSearch(c *gin.Context) {
 	var inData pdd.PddDdkGoodsSearchRequest
 	var outData pdd.PddDdkGoodsSearchResponse

+ 1 - 1
apis/pdd/pdd.ddk.goods.search_test.go

@@ -3,7 +3,7 @@ package pdd
 import (
 	"duoduo/conf"
 	"duoduo/models/pdd"
-	"duoduo/tools"
+
 	"fmt"
 	"testing"
 	"time"

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

@@ -0,0 +1,57 @@
+package pdd
+
+import (
+	"duoduo/conf"
+	"duoduo/models/pdd"
+	"duoduo/tools"
+	"duoduo/tools/app"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"time"
+)
+
+func PddDdkOrderListIncrementGet(c *gin.Context) {
+	var inData pdd.PddDdkOrderListIncrementGetRequest
+	var outData pdd.PddDdkOrderListIncrementGetResponse
+	var pddErr pdd.ErrorPddResponse
+
+	confIni, err := conf.ConnIni()
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		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, 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, &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
+	}
+	app.OK(c, outData, app.Success)
+}

+ 21 - 0
models/pdd/pdd.ddk.goods.pid.query.go

@@ -0,0 +1,21 @@
+package pdd
+
+type PddDdkGoodsPidQueryRequest struct {
+	PddDdkBase
+}
+
+type PddDdkGoodsPidQueryResponse struct {
+	PIDQueryResponse PIDQueryResponse `json:"p_id_query_response"`
+}
+type PIDQueryList struct {
+	CreateTime int    `json:"create_time"`
+	MediaID    int    `json:"media_id"`
+	PidName    string `json:"pid_name"`
+	PID        string `json:"p_id"`
+	Status     int    `json:"status"`
+}
+type PIDQueryResponse struct {
+	PIDList    []PIDQueryList `json:"p_id_list"`
+	TotalCount int            `json:"total_count"`
+	RequestID  string         `json:"request_id"`
+}

+ 36 - 0
models/pdd/pdd.ddk.goods.promotion.url.generate.go

@@ -0,0 +1,36 @@
+package pdd
+
+type WxDdkGoodsPromotionUrlGenerateRequest struct {
+	PId           string   `json:"p_id"`
+	SearchId      string   `json:"search_id"`
+	GoodsSignList []string `json:"goods_sign_list"`
+}
+
+//type AutoGenerated struct {
+//	PID           string   `json:"p_id"`
+//	SearchID      string   `json:"search_id"`
+//	GoodsSignList []string `json:"goods_sign_list"`
+//}
+
+type PddDdkGoodsPromotionUrlGenerateRequest struct {
+	PddDdkBase
+	PId           string `json:"p_id"`
+	SearchId      string `json:"search_id"`
+	GoodsSignList string `json:"goods_sign_list"`
+}
+
+type PddDdkGoodsPromotionUrlGenerateResponse struct {
+	GoodsPromotionURLGenerateResponse GoodsPromotionURLGenerateResponse `json:"goods_promotion_url_generate_response"`
+}
+type GoodsPromotionURLList struct {
+	MobileURL            string `json:"mobile_url"`
+	MobileShortURL       string `json:"mobile_short_url"`
+	WeAppWebViewURL      string `json:"we_app_web_view_url"`
+	URL                  string `json:"url"`
+	ShortURL             string `json:"short_url"`
+	WeAppWebViewShortURL string `json:"we_app_web_view_short_url"`
+}
+type GoodsPromotionURLGenerateResponse struct {
+	GoodsPromotionURLList []GoodsPromotionURLList `json:"goods_promotion_url_list"`
+	RequestID             string                  `json:"request_id"`
+}

+ 16 - 0
models/pdd/pdd.ddk.order.list.increment.get.go

@@ -0,0 +1,16 @@
+package pdd
+
+type PddDdkOrderListIncrementGetRequest struct {
+	PddDdkBase
+	EndUpdateTime   string `json:"end_update_time"` //
+	StartUpdateTime string `json:"start_update_time"`
+}
+
+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"`
+}

+ 14 - 0
tools/string.go

@@ -103,6 +103,20 @@ func GetCurrntTime() time.Time {
 	return time.Now().In(NowTimeZone)
 }
 
+func GetNowTimeStamp() int64 {
+
+	return time.Now().Unix()
+}
+
+func GetTimeStamp(timeIn string) (int64, error) {
+	tm2, err := time.Parse("2006-01-02 15:04:05", timeIn)
+	if err != nil {
+		return 0, err
+	}
+	return tm2.Unix(), nil
+
+}
+
 func StructToJsonStr(e interface{}) (string, error) {
 	if b, err := json.Marshal(e); err == nil {
 		return string(b), err

+ 14 - 0
tools/string_test.go

@@ -0,0 +1,14 @@
+package tools
+
+import (
+	"fmt"
+	"testing"
+)
+
+func TestString(t *testing.T) {
+
+	fmt.Print(GetNowTimeStamp())
+
+	ti, _ := GetTimeStamp("2021-05-20 10:00:00")
+	fmt.Print(ti)
+}