- 改Struct2MapWithIgnore为递归
This commit is contained in:
@@ -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{})
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user