diff --git a/platformapi/jdapi/promotion_order.go b/platformapi/jdapi/promotion_order.go index a3ebde40..7b63343c 100644 --- a/platformapi/jdapi/promotion_order.go +++ b/platformapi/jdapi/promotion_order.go @@ -29,7 +29,7 @@ type OrderDiscountRuleRequest struct { DiscountAmount int `json:"discountAmount"` UpperLimitCount int `json:"upperLimitCount"` LowerLimitCount int `json:"lowerLimitCount"` - DiscountRate int `json:"discountRate"` + DiscountRate float32 `json:"discountRate"` AddPrice int `json:"addPrice"` // 分 GiftList []*OrderDiscountGift `json:"giftList"` LadderLimit int `json:"ladderLimit"` @@ -85,17 +85,28 @@ type ActivityOpQueryInfoResponse struct { var ( ignoreOrderDiscountActivity = OrderDiscountActivity{} ignoreOrderDiscountRuleRequest = OrderDiscountRuleRequest{} -) -func (a *API) OrderDiscountSubmitActivity(actInfo *OrderDiscountActivity) (activityID int64, err error) { - result, err := a.AccessAPINoPage("orderdiscount/submitActivity", utils.Struct2MapWithIgnore(actInfo, map[string]interface{}{ + ignoreOrderDiscountSubmitActivityMap = map[string]interface{}{ "outStationNos": ignoreOrderDiscountActivity.OutStationNos, "stationNos": ignoreOrderDiscountActivity.StationNos, "outSkuIds": ignoreOrderDiscountActivity.OutSkuIds, "skuIds": ignoreOrderDiscountActivity.SkuIds, "limitUserTotalNumber": ignoreOrderDiscountActivity.LimitUserTotalNumber, "ruleRequestList": ignoreOrderDiscountActivity.RuleRequestList, - }), nil, nil, nil) + + "lowerLimitAmount": ignoreOrderDiscountRuleRequest.LowerLimitAmount, + "discountAmount": ignoreOrderDiscountRuleRequest.DiscountAmount, + "upperLimitCount": ignoreOrderDiscountRuleRequest.UpperLimitCount, + "lowerLimitCount": ignoreOrderDiscountRuleRequest.LowerLimitCount, + "discountRate": ignoreOrderDiscountRuleRequest.DiscountRate, + "addPrice": ignoreOrderDiscountRuleRequest.AddPrice, + "giftList": ignoreOrderDiscountRuleRequest.GiftList, + "ladderLimit": ignoreOrderDiscountRuleRequest.LadderLimit, + } +) + +func (a *API) OrderDiscountSubmitActivity(actInfo *OrderDiscountActivity) (activityID int64, err error) { + result, err := a.AccessAPINoPage("orderdiscount/submitActivity", utils.Struct2MapWithIgnore(actInfo, ignoreOrderDiscountSubmitActivityMap), nil, nil, nil) if err == nil { return utils.MustInterface2Int64((result.(map[string]interface{}))["activityId"]), nil } @@ -105,10 +116,8 @@ func (a *API) OrderDiscountSubmitActivity(actInfo *OrderDiscountActivity) (activ func (a *API) OrderDiscountQuerySubmitActivityResult(activityID int64) (response *ActivityOpQueryResultResponse, err error) { result, err := a.AccessAPINoPage("orderdiscount/querySubmitActivityResult", map[string]interface{}{ "activityId": activityID, - "sourceFrom": 3, - "operator": "", - "traceId": "", - "version": "", + "operator": "jxc4", + "traceId": utils.GetUUID(), }, nil, nil, nil) if err == nil { resultMap := result.(map[string]interface{}) diff --git a/platformapi/jdapi/promotion_order_test.go b/platformapi/jdapi/promotion_order_test.go index d0a7a99c..e9263ba8 100644 --- a/platformapi/jdapi/promotion_order_test.go +++ b/platformapi/jdapi/promotion_order_test.go @@ -2,10 +2,32 @@ package jdapi import ( "testing" + "time" + + "git.rosy.net.cn/baseapi/utils" ) func TestOrderDiscountSubmitActivity(t *testing.T) { - actID, err := api.OrderDiscountSubmitActivity(&OrderDiscountActivity{}) + actInfo := &OrderDiscountActivity{ + OutActivityID: utils.GetUUID(), + PromName: "测试0404", + PromType: OrderDiscountActivityTypeManJian, + BeginTime: utils.Time2Str(time.Now().Add(1 * time.Hour)), + EndTime: utils.Time2Str(time.Now().Add(48 * time.Hour)), + ParticipationMode: ParticipationModeAllSku, + Display: "hello", + OutStationNos: []string{"25"}, + OutSkuIds: []string{"5199"}, + LimitUserTotalNumber: 1, + RuleRequestList: []*OrderDiscountRuleRequest{ + &OrderDiscountRuleRequest{ + LowerLimitAmount: 100, + DiscountAmount: 1000, + DiscountRate: 0.5, + }, + }, + } + actID, err := api.OrderDiscountSubmitActivity(actInfo) if err != nil { t.Fatal(err) } diff --git a/utils/typeconv.go b/utils/typeconv.go index 0a453a73..fe6ca937 100644 --- a/utils/typeconv.go +++ b/utils/typeconv.go @@ -454,8 +454,6 @@ func FlatMap(in map[string]interface{}) map[string]interface{} { vMap = FlatMap(vMap) maps = append(maps, vMap) keys = append(keys, k) - } else { - fmt.Printf("%s is %s\n", k, reflect.TypeOf(v).String()) } } if len(maps) > 0 { @@ -473,14 +471,38 @@ func Struct2FlatMap(obj interface{}) map[string]interface{} { return FlatMap(m) } -func Struct2MapWithIgnore(obj interface{}, ignoreValues map[string]interface{}) map[string]interface{} { - mapData := Struct2FlatMap(obj) - for k, v := range ignoreValues { - // todo 性能考虑? - if fmt.Sprint(mapData[k]) == fmt.Sprint(v) { - delete(mapData, k) +func removeIgnoreFields(data interface{}, ignoreValues map[string]interface{}) { + dataType := reflect.TypeOf(data).Kind() + if dataType == reflect.Map { + inMap := data.(map[string]interface{}) + for k, v := range inMap { + // fmt.Printf("k:%s v:%v, ignoreValues[k]:%v\n", k, v, ignoreValues[k]) + if fmt.Sprint(ignoreValues[k]) == fmt.Sprint(v) { + delete(inMap, k) + } else { + fieldType := reflect.TypeOf(v).Kind() + if fieldType == reflect.Map || fieldType == reflect.Slice { + removeIgnoreFields(v, ignoreValues) + } + } + } + } else if dataType == reflect.Slice { + dataList := Interface2Slice(data) + for _, v := range dataList { + removeIgnoreFields(v, ignoreValues) } } + // mapData := data.(map[string]interface{}) + // for k, v := range ignoreValues { + // if fmt.Sprint(mapData[k]) == fmt.Sprint(v) { + // delete(mapData, k) + // } + // } +} + +func Struct2MapWithIgnore(obj interface{}, ignoreValues map[string]interface{}) map[string]interface{} { + mapData := Struct2FlatMap(obj) + removeIgnoreFields(mapData, ignoreValues) return mapData }