Browse Source

addKuaiShouProduct

Xingyu Xian 8 months ago
parent
commit
8715f23061
6 changed files with 206 additions and 2 deletions
  1. 82 1
      go.mod
  2. 2 0
      go.sum
  3. 52 0
      handler/find_kuaishou_product.go
  4. 42 0
      model/http_model/find_kuaishou_product.go
  5. 2 1
      route/init.go
  6. 26 0
      service/product.go

+ 82 - 1
go.mod

@@ -1,6 +1,8 @@
 module youngee_b_api
 
-go 1.16
+go 1.22.1
+
+toolchain go1.22.3
 
 require (
 	github.com/GUAIK-ORG/go-snowflake v0.0.0-20200116064823-220c4260e85f
@@ -8,6 +10,85 @@ require (
 	github.com/google/uuid v1.3.0
 )
 
+require (
+	github.com/BurntSushi/toml v0.3.1 // indirect
+	github.com/KyleBanks/depth v1.2.1 // indirect
+	github.com/PuerkitoBio/purell v1.1.1 // indirect
+	github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
+	github.com/agiledragon/gomonkey v2.0.2+incompatible // indirect
+	github.com/agiledragon/gomonkey/v2 v2.3.1 // indirect
+	github.com/cespare/xxhash/v2 v2.1.2 // indirect
+	github.com/chzyer/logex v1.1.10 // indirect
+	github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect
+	github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 // indirect
+	github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d // indirect
+	github.com/creack/pty v1.1.9 // indirect
+	github.com/davecgh/go-spew v1.1.1 // indirect
+	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
+	github.com/fsnotify/fsnotify v1.4.9 // indirect
+	github.com/ghodss/yaml v1.0.0 // indirect
+	github.com/gin-contrib/gzip v0.0.3 // indirect
+	github.com/gin-contrib/sse v0.1.0 // indirect
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/jsonreference v0.19.6 // indirect
+	github.com/go-openapi/spec v0.20.4 // indirect
+	github.com/go-playground/assert/v2 v2.0.1 // indirect
+	github.com/go-playground/locales v0.14.0 // indirect
+	github.com/go-playground/universal-translator v0.18.0 // indirect
+	github.com/go-sql-driver/mysql v1.6.0 // indirect
+	github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
+	github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
+	github.com/golang/protobuf v1.5.2 // indirect
+	github.com/google/go-cmp v0.5.5 // indirect
+	github.com/google/gofuzz v1.0.0 // indirect
+	github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect
+	github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 // indirect
+	github.com/hpcloud/tail v1.0.0 // indirect
+	github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 // indirect
+	github.com/issue9/assert/v2 v2.0.0 // indirect
+	github.com/jinzhu/inflection v1.0.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/jtolds/gls v4.20.0+incompatible // indirect
+	github.com/kr/pretty v0.3.0 // indirect
+	github.com/kr/pty v1.1.1 // indirect
+	github.com/kr/text v0.2.0 // indirect
+	github.com/leodido/go-urn v1.2.1 // indirect
+	github.com/lin-jim-leon/kuaishou v0.3.0 // indirect
+	github.com/modern-go/reflect2 v1.0.2 // indirect
+	github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
+	github.com/nxadm/tail v1.4.8 // indirect
+	github.com/onsi/ginkgo v1.16.5 // indirect
+	github.com/onsi/ginkgo/v2 v2.0.0 // indirect
+	github.com/onsi/gomega v1.18.1 // indirect
+	github.com/otiai10/copy v1.7.0 // indirect
+	github.com/otiai10/curr v1.0.0 // indirect
+	github.com/otiai10/mint v1.3.3 // indirect
+	github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e // indirect
+	github.com/pmezard/go-difflib v1.0.0 // indirect
+	github.com/rogpeppe/go-internal v1.8.0 // indirect
+	github.com/russross/blackfriday/v2 v2.0.1 // indirect
+	github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
+	github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect
+	github.com/smartystreets/goconvey v1.6.4 // indirect
+	github.com/stretchr/objx v0.4.0 // indirect
+	github.com/stretchr/testify v1.8.0 // indirect
+	github.com/tidwall/match v1.1.1 // indirect
+	github.com/tidwall/pretty v1.2.0 // indirect
+	github.com/ugorji/go/codec v1.2.7 // indirect
+	github.com/urfave/cli/v2 v2.3.0 // indirect
+	github.com/yuin/goldmark v1.4.1 // indirect
+	golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect
+	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
+	golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
+	golang.org/x/text v0.3.7 // indirect
+	golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
+	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
+	gopkg.in/errgo.v2 v2.1.0 // indirect
+	gopkg.in/fsnotify.v1 v1.4.7 // indirect
+	gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)
+
 require (
 	github.com/caixw/lib.go v0.0.0-20141220110639-1781da9139e0
 	github.com/go-openapi/swag v0.21.1 // indirect

+ 2 - 0
go.sum

@@ -115,6 +115,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
 github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
 github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lin-jim-leon/kuaishou v0.3.0 h1:Gb0DRc62K51/78680Pq+zupOXTnd1CN1Lfv5NrqRIHo=
+github.com/lin-jim-leon/kuaishou v0.3.0/go.mod h1:BFbAhNC3PUIhAaA9YDSi6WDB0UcRMPS9C7dpFAtENaY=
 github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=

+ 52 - 0
handler/find_kuaishou_product.go

@@ -0,0 +1,52 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+)
+
+func WrapFindKuaishouProductHandler(ctx *gin.Context) {
+	handler := newFindKuaishouProductHandler(ctx)
+	baseRun(handler)
+}
+
+func newFindKuaishouProductHandler(ctx *gin.Context) *FindKuaishouProductHandler {
+	return &FindKuaishouProductHandler{
+		req:  http_model.NewFindKuaishouProductRequest(),
+		resp: http_model.NewFindKuaishouProductResponse(),
+		ctx:  ctx,
+	}
+}
+
+type FindKuaishouProductHandler struct {
+	req  *http_model.FindKuaishouProductRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *FindKuaishouProductHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *FindKuaishouProductHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *FindKuaishouProductHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *FindKuaishouProductHandler) run() {
+	data := *&http_model.FindKuaishouProductRequest{}
+	data = *h.req
+	// print("data: ", data.ItemList)
+
+	res, err := service.Product.QueryKuaishouProduct(h.ctx, data)
+	if err != nil {
+		logrus.Info("FindKuaishouProduct fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Data = res
+}
+func (h *FindKuaishouProductHandler) checkParam() error {
+	return nil
+}

+ 42 - 0
model/http_model/find_kuaishou_product.go

@@ -0,0 +1,42 @@
+package http_model
+
+type FindKuaishouProductRequest struct {
+	AppKey      string   `json:"app_key"`
+	SignSecret  string   `json:"sign_secret"`
+	AccessToken string   `json:"access_token"`
+	ItemList    []string `json:"item_list"`
+}
+
+type KuaishouCarousePhoto struct {
+	PhotoUrl string `json:"photo_url"` // 图片或视频url
+}
+
+type KuaishouDetailPhoto struct {
+	PhotoUrl string `json:"photo_url"` // 图片或视频url
+}
+
+type FindKuaishouProductData struct {
+	ProductName                 string   `json:"product_name"`                    // 商品名称
+	ProductPrice                float64  `json:"product_price"`                   // 商品价值
+	ProductDetail               string   `json:"product_detail"`                  // 商品描述
+	KuaishouMainPhoto           string   `json:"kuaishou_main_photo"`             // 商品主图
+	KuaishouCarousePhotoList    []string `json:"kuaishou_carouse_photo_list"`     // 商品轮播图列表
+	KuaishouDetailPhotoList     []string `json:"kuaishou_detail_photo_list"`      // 商品详情图列表
+	ProductUrl                  string   `json:"product_url"`                     // 商品链接,可为电商网址、公司官网、大众点评的店铺地址等可以说明商品信息或者品牌信息的线上地址;
+	EnterpriseID                string   `json:"enterprise_id"`                   // 所属企业id
+	BrandName                   string   `json:"brand_name"`                      // 品牌名称
+	PublicCommission            float64  `json:"public_commission"`               // 公开佣金
+	ExclusiveCommission         float64  `json:"exclusive_commission"`            // 专属佣金
+	CommissionPrice             float64  `json:"commission_price"`                // 佣金金额
+	KuaishouProductId           int64    `json:"kuaishou_product_id"`             // 快手商品ID
+	MerchantSoldCountThirtyDays int64    `json:"merchant_sold_count_thirty_days"` // 商品30天销量
+}
+
+func NewFindKuaishouProductRequest() *FindKuaishouProductRequest {
+	return new(FindKuaishouProductRequest)
+}
+func NewFindKuaishouProductResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(FindKuaishouProductData)
+	return resp
+}

+ 2 - 1
route/init.go

@@ -45,7 +45,8 @@ func InitRoute(r *gin.Engine) {
 			auth := middleware.GetSessionAuth(c)
 			logrus.Infof("auth:%+v", auth)
 		})
-		m.POST("/product/findall", handler.WrapFindAllProductHandler)                        //查询全部产品
+		m.POST("/product/findKuaishou", handler.WrapFindKuaishouProductHandler)              // 查询快手产品信息
+		m.POST("/product/findall", handler.WrapFindAllProductHandler)                        // 查询全部产品
 		m.POST("/product/find", handler.WrapFindProductHandler)                              // 查找单个产品
 		m.POST("/project/create", handler.WrapCreateProjectHandler)                          // 创建项目
 		m.POST("/project/show", handler.WrapShowProjectHandler)                              // 展示项目内容

+ 26 - 0
service/product.go

@@ -3,6 +3,7 @@ package service
 import (
 	"context"
 	"fmt"
+	"github.com/lin-jim-leon/kuaishou"
 	"strconv"
 	"youngee_b_api/consts"
 	"youngee_b_api/db"
@@ -168,3 +169,28 @@ func (*product) GetAllProduct(ctx context.Context, req *http_model.GetAllProduct
 	ProjectBriefInfoPreview.Total = strconv.FormatInt(total, 10)
 	return ProjectBriefInfoPreview, nil
 }
+
+// QueryKuaishouProduct 通过快手商品ID从SDK拉取快手商品信息
+func (*product) QueryKuaishouProduct(ctx context.Context, newKuaishouProduct http_model.FindKuaishouProductRequest) (*http_model.FindKuaishouProductData, error) {
+	AccessToken := "ChFvYXV0aC5hY2Nlc3NUb2tlbhJgpNyhn_OyOXO-hSkJDAmlssr8lCAzT0CePeh-9-NyQEK3quECYOVm40RG0ppGMSnV0xq-_hlLrO7BoBOj-ai75oD4hzJ1QDNWChUhEZaXWwv9BtHAPp4Hioa08mw3ZiakGhI3fO2jrXtNfq7z9Xoxtovjx-YiINfD-RUDsg0A2tscTHxuBVd4yaWdtWWbN9QNeaTOLf31KAUwAQ"
+	appKey := "ks651333097154138217"
+	signSecret := "bf6393dce0a2b669ee348bebb837b0da"
+	kuaishouProduct, err := kuaishou.Queryselectiondetail(appKey, signSecret, AccessToken, newKuaishouProduct.ItemList)
+	if err != nil {
+		return nil, err
+	}
+	fmt.Println("kuaishouProduct: ", kuaishouProduct)
+	findKuaishouProductData := http_model.FindKuaishouProductData{
+		ProductName:                 kuaishouProduct.ItemList[0].ItemTitle,
+		ProductPrice:                float64(kuaishouProduct.ItemList[0].ItemPrice) * 0.01,
+		ExclusiveCommission:         float64(kuaishouProduct.ItemList[0].CommissionRate) * 0.1,
+		CommissionPrice:             float64(kuaishouProduct.ItemList[0].ProfitAmount) * 0.01,
+		KuaishouMainPhoto:           kuaishouProduct.ItemList[0].ItemImgURL,
+		KuaishouCarousePhotoList:    kuaishouProduct.ItemList[0].ItemGalleryURLs,
+		KuaishouDetailPhotoList:     kuaishouProduct.ItemList[0].ItemDescURLs,
+		MerchantSoldCountThirtyDays: kuaishouProduct.ItemList[0].MerchantSoldCountThirtyDays,
+		KuaishouProductId:           kuaishouProduct.ItemList[0].ItemID,
+	}
+	// print("kuaoshou_product: ", findKuaishouProductData.ProductName)
+	return &findKuaishouProductData, err
+}