diff --git a/go.mod b/go.mod index 7c9b2cb..c1cbc3e 100644 --- a/go.mod +++ b/go.mod @@ -28,6 +28,7 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/spf13/cast v1.7.0 // indirect go.opentelemetry.io/otel v1.14.0 // indirect go.opentelemetry.io/otel/exporters/jaeger v1.14.0 // indirect go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 // indirect diff --git a/index.go b/index.go index a7e979b..197efc1 100644 --- a/index.go +++ b/index.go @@ -3,6 +3,7 @@ package third_platform_sdk import ( "github.com/zeromicro/go-zero/core/logx" "repository.lenntc.com/lenntc/third-platform-sdk/platform/fliggy" + shoutu_show "repository.lenntc.com/lenntc/third-platform-sdk/platform/shoutu-show" didiunion "repository.lenntc.com/lenntc/third-platform-sdk/platform/didi-union" elemeunion "repository.lenntc.com/lenntc/third-platform-sdk/platform/eleme-union" @@ -34,6 +35,8 @@ const ( PlatformElongHotel = "elong_hotel" // PlatformFliggy 飞猪 PlatformFliggy = "fliggy" + // PlatformShoutuShow 守兔演出 + PlatformShoutuShow = "shoutu_show" ) // PlatformNameMap 平台名称 @@ -47,6 +50,7 @@ var PlatformNameMap = map[string]string{ PlatformJutuike: "聚推客", PlatformElongHotel: "同程酒店", PlatformFliggy: "飞猪", + PlatformShoutuShow: "守兔演出", } // GetPlatformName 获取平台名称 @@ -94,6 +98,11 @@ func NewElongHotelApi(log logx.Logger, conf elonghotel.AuthConfig) elonghotel.El return elonghotel.NewApiClient(log, conf) } +// NewFliggyApi 飞猪 func NewFliggyApi(log logx.Logger, conf fliggy.AuthConfig) fliggy.FliggyApi { return fliggy.NewApiClient(log, conf) } + +func NewShoutuShow(log logx.Logger, conf shoutu_show.AuthConfig) shoutu_show.ShouTuShowApi { + return shoutu_show.NewApiClient(log, conf) +} diff --git a/platform/fliggy/api_test.go b/platform/fliggy/api_test.go index b18e282..ba06cfb 100644 --- a/platform/fliggy/api_test.go +++ b/platform/fliggy/api_test.go @@ -2,6 +2,7 @@ package fliggy import ( "context" + "encoding/json" "github.com/stretchr/testify/suite" "github.com/zeromicro/go-zero/core/logx" "repository.lenntc.com/lenntc/third-platform-sdk/sdk/fliggysdk/util" @@ -31,21 +32,22 @@ func (a *apiClientSuite) SetupSuite() { } func (a *apiClientSuite) Test_FliggyPromoteOrdersList() { - page := int64(1) - start, _ := time.ParseInLocation(time.DateTime, "2024-08-04 00:00:00", time.Local) - end, _ := time.ParseInLocation(time.DateTime, "2024-08-04 23:59:59", time.Local) + page := int64(0) + start, _ := time.ParseInLocation(time.DateTime, "2024-11-05 16:10:00", time.Local) + end, _ := time.ParseInLocation(time.DateTime, "2024-11-05 16:20:00", time.Local) sTime := util.LocalTime(start) eTime := util.LocalTime(end) req := &request.AlibabaFliggyPromoteOrdersListRequest{ PageNo: &page, - BeforeModifyTime: &sTime, - AfterModifyTime: &eTime, + BeforeModifyTime: &eTime, + AfterModifyTime: &sTime, } resp, err := a.api.FliggyPromoteOrdersList(req) if err != nil { a.T().Errorf("=====[Test_FliggyPromoteOrdersList] err: %v", err) return } - a.T().Logf("=====[Test_FliggyPromoteOrdersList] resp: %+v", resp) + ret, _ := json.Marshal(resp) + a.T().Logf("=====[Test_FliggyPromoteOrdersList] resp: %+v", string(ret)) } diff --git a/platform/jutuike/api.go b/platform/jutuike/api.go index 686ad9d..5ac764f 100644 --- a/platform/jutuike/api.go +++ b/platform/jutuike/api.go @@ -3,6 +3,8 @@ package jutuike import ( "context" "errors" + "github.com/spf13/cast" + "reflect" "time" "github.com/zeromicro/go-zero/core/logx" @@ -48,12 +50,45 @@ func (a *jutuikeApiImpl) GenerateLink(ctx context.Context, req GenerateLinkReque return nil, err } if response.Code != 1 { - a.log.WithFields(logx.LogField{Key: "data", Value: map[string]any{"req": req, "resp": response}}). - Errorf("[jutuikeApiImpl][GenerateLink] response result error: %s", response.Msg) + a.log.WithFields(logx.LogField{Key: "data", Value: map[string]any{"req": req, "resp": response}}).Errorf("[jutuikeApiImpl][GenerateLink] response result error: %s", response.Msg) return nil, errors.New(response.Msg) } - result := response.Data.(GenerateLinkData) - return &result, nil + result := new(GenerateLinkData) + data := cast.ToStringMap(response.Data) + if _, ok := data["act_name"]; ok { + result.ActName = data["act_name"].(string) + } + if _, ok := data["poster_qrcode_url"]; ok { + result.PosterQrcodeUrl = data["poster_qrcode_url"].(string) + } + if _, ok := data["h5"]; ok { + result.H5 = data["h5"].(string) + } + if _, ok := data["long_h5"]; ok { + result.LongH5 = data["long_h5"].(string) + } + if _, ok := data["h5_evoke"]; ok { + result.H5Evoke = data["h5_evoke"].(string) + } + if _, ok := data["deeplink"]; ok { + result.DeepLink = data["deeplink"].(string) + } + if _, ok := data["we_app_info"]; ok { + weApp := cast.ToStringMap(data["we_app_info"]) + result.WeAppInfo = &WeAppInfo{ + AppId: weApp["app_id"].(string), + PagePath: weApp["page_path"].(string), + MiniCode: weApp["miniCode"].(string), + } + } + if _, ok := data["alipay_app_info"]; ok { + alipayApp := cast.ToStringMap(data["alipay_app_info"]) + result.AlipayAppInfo = &AlipayAppInfo{ + AppId: alipayApp["app_id"].(string), + PagePath: alipayApp["page_path"].(string), + } + } + return result, nil } // QueryOrderList 查询订单列表 @@ -76,12 +111,20 @@ func (a *jutuikeApiImpl) QueryOrderList(ctx context.Context, req QueryOrderListR if err := a.client.HttpPost(GetOrderListUrl, request, &client.HttpResponse{Result: response}); err != nil { return nil, err } + responseData := new(QueryOrderListData) if response.Code != 1 { - a.log.WithFields(logx.LogField{Key: "data", Value: map[string]any{"req": req, "resp": response}}). - Errorf("[jutuikeApiImpl][QueryOrderList] response result error: %s", response.Msg) - return nil, errors.New(response.Msg) + dataType := reflect.TypeOf(response.Data).String() + if dataType == "string" { + a.log.WithFields(logx.LogField{Key: "data", Value: map[string]any{"req": req, "resp": response}}).Errorf("[jutuikeApiImpl][QueryOrderList] response result error: %s", response.Msg) + return nil, errors.New(response.Msg) + } else { + responseData.PerPage = req.Page + responseData.CurrentPage = req.Page + responseData.LastPage = req.Page + responseData.Data = make([]*OrderItem, 0) + return responseData, nil + } } - var responseData *QueryOrderListData if err := xcopy.Copy(&responseData, response.Data); err != nil { return nil, err } diff --git a/platform/jutuike/api_test.go b/platform/jutuike/api_test.go index fd6fa0d..ae614e3 100644 --- a/platform/jutuike/api_test.go +++ b/platform/jutuike/api_test.go @@ -3,11 +3,9 @@ package jutuike import ( "context" "encoding/json" - "testing" - "time" - "github.com/stretchr/testify/suite" "github.com/zeromicro/go-zero/core/logx" + "testing" ) // api-单元测试 @@ -23,14 +21,14 @@ func TestApiClient(t *testing.T) { func (a *apiClientSuite) SetupSuite() { log := logx.WithContext(context.Background()) apiClient := NewApiClient(log, AuthConfig{ - ApiKey: "IyftVpzDVqDIRDqPZByW5xVpj9MgZSB7", + ApiKey: "IyftVpzDVqDIRDqPZByW5xVpj9MgZSB7", // }) a.api = apiClient } func (a *apiClientSuite) Test_GenerateLink() { req := GenerateLinkRequest{ - ActId: 3, + ActId: 65, Sid: "f3a8c1", } result, err := a.api.GenerateLink(context.Background(), req) @@ -48,8 +46,8 @@ func (a *apiClientSuite) Test_GenerateLink() { func (a *apiClientSuite) Test_QueryOrderList() { req := QueryOrderListRequest{ - StartTime: time.Unix(1718726400, 0).Format(time.DateTime), - EndTime: time.Unix(1718812799, 0).Format(time.DateTime), + StartTime: "2024-11-05 14:16:07", + EndTime: "2024-11-05 14:26:07", PageSize: 1, } result, err := a.api.QueryOrderList(context.Background(), req) diff --git a/platform/jutuike/types.go b/platform/jutuike/types.go index 14e9d14..d0b32be 100644 --- a/platform/jutuike/types.go +++ b/platform/jutuike/types.go @@ -14,10 +14,19 @@ type GenerateLinkResponse struct { } type GenerateLinkData struct { - H5 string `json:"h5"` // 推广短链接(部分活动没有,请注意判断) - WeAppInfo WeAppInfo `json:"we_app_info"` // 小程序信息(部分活动没有,请注意判断) - ActName string `json:"act_name"` // 活动名称 - LongH5 string `json:"long_h5"` // 推广长链接(部分活动没有,请注意判断) + ActName string `json:"act_name"` // 活动名称 + PosterQrcodeUrl string `json:"poster_qrcode_url"` //活动海报 + H5 string `json:"h5"` // 推广短链接(部分活动没有,请注意判断) + LongH5 string `json:"long_h5"` // 推广长链接(部分活动没有,请注意判断) + H5Evoke string `json:"h5_evoke"` + DeepLink string `json:"deeplink"` + WeAppInfo *WeAppInfo `json:"we_app_info"` // 微信小程序信息(部分活动没有,请注意判断) + AlipayAppInfo *AlipayAppInfo `json:"alipay_app_info"` //支付宝小程序信息(部分活动没有,请注意判断) +} + +type AlipayAppInfo struct { + AppId string `json:"app_id"` // 小程序ID + PagePath string `json:"page_path"` // 小程序路径 } type WeAppInfo struct {