diff --git a/src/service/field.go b/src/service/field.go index a29330891e49ce245f1227a54d12e9a3ed06bba1..af2cdcf89fdb62352f34d895dbebb4b88ceb72ee 100644 --- a/src/service/field.go +++ b/src/service/field.go @@ -163,8 +163,8 @@ func ApplyCallCounts(proxyData model.ProxyData) (err error) { fmt.Println(err.Error()) return } - date := time.Now().Format(config.LocalDateTimeFormat) - err = redis.RPush(fmt.Sprintf("%s-%d", config.ApplyTag, proxyData.Apply_id), []byte(date)) + //date := time.Now().Format(config.LocalDateTimeFormat) + err = redis.RPush(fmt.Sprintf("%s", config.ApplyTag), proxyData.Apply_id) fmt.Println("rpush data to list failed:", err) return } @@ -173,13 +173,15 @@ func ApplyCallCounts(proxyData model.ProxyData) (err error) { func FiledFilter(proxyData model.ProxyData, respbody []byte) interface{} { fields := []request.ServiceField{} fields = dataconvertutil.GetResponseField(proxyData.ResFields) - model, arrmodel := dataconvertutil.ConvertJson(fields) + _, arrmodel := dataconvertutil.ConvertJson(fields) realData := make(map[string]interface{}) json.Unmarshal(respbody, &realData) - if model != nil && len(model) != 0 { - return Change(model, realData) - } else if arrmodel != nil && len(arrmodel) != 0 { - return Change(model, realData) + if arrmodel != nil && len(arrmodel) != 0 && len(realData) != 0 { + if fields[0].Type == "array" { + return Change(arrmodel, realData) + } else { + return Change(arrmodel[0], realData) + } } return respbody } @@ -194,7 +196,8 @@ func Change(model interface{}, returnData interface{}) interface{} { for k1, v1 := range model.(map[string]interface{}) { if k == k1 { flag = true - Change(v, v1) + //Change(v, v1) + Change(v1, v) } } // 删除属性 diff --git a/src/tools/dataconvertutil/dataconvertutil.go b/src/tools/dataconvertutil/dataconvertutil.go index b18cea52a8ecd56a33011b55fc76b2c1c8c43cef..39879db1aef293d2b263f505d82dfc4cb2d4710d 100644 --- a/src/tools/dataconvertutil/dataconvertutil.go +++ b/src/tools/dataconvertutil/dataconvertutil.go @@ -15,88 +15,45 @@ func ConvertJson(fields []request.ServiceField) (map[string]interface{}, []inter return m, n } for _, field := range fields { - if field.Selected == 1 && field.Type == "object" { + if field.Selected == 1 && (field.Type == "object" || field.Type == "array") { + mm, nn := ConvertJson(field.Children) if field.Name == "" { - mm, nn := ConvertJson(field.Children) if len(nn) != 0 { n = append(n, nn) } else { n = append(n, mm) } } else { - mm, nn := ConvertJson(field.Children) if len(nn) != 0 { m[field.Name] = nn } else { m[field.Name] = mm } - } - - } else if field.Selected == 1 && field.Type == "array" { - if len(field.Children) > 0 { - //判断第一个元素是否为对象 如果为对象则名称必定为空 - //第一个元素 要么为对象,要么为基本类型 要么为数组 - if field.Children[0].Type == "object" || field.Children[0].Type == "array" { - - mm, nn := ConvertJson(field.Children[0].Children) - - if field.Name == "" { - if len(nn) != 0 { - n = append(n, nn) - } else { - n = append(n, mm) - } - } else { - - if len(nn) != 0 { - m[field.Name] = nn - } else { - m[field.Name] = mm - } - } - - } else { - - if field.Name != "" { - var aaa []interface{} - m[field.Name] = aaa - } else { - if len(field.Children) > 0 { - switch field.Children[0].Type { - case "string", "text", "file": - n = append(n, field.Children[0].Example) - case "int": - n = append(n, tools.ParseInt(field.Children[0].Example, 0)) - case "float": - n = append(n, tools.ParseFloat64(field.Children[0].Example, 1.00)) - case "boolean": - n = append(n, true) - case "array": - n = append(n, []interface{}{field.Children[0].Example}) - default: - var cc interface{} - n = append(n, cc) - } - } else { - var cc interface{} - n = append(n, cc) - } - - } - - } + } else if field.Selected == 1 && (field.Type == "string" || field.Type == "file" || field.Type == "text") { + if field.Name == "" { + n = append(n, field.Example) } else { - if field.Name != "" { - m[field.Name] = []interface{}{field.Example} - } else { - var cc interface{} - n = append(n, cc) - } + m[field.Name] = field.Example + } + } else if field.Selected == 1 && field.Type == "int" { + if field.Name == "" { + n = append(n, field.Example) + } else { + m[field.Name] = tools.ParseInt(field.Example, 0) + } + } else if field.Selected == 1 && field.Type == "float" { + if field.Name == "" { + n = append(n, field.Example) + } else { + m[field.Name] = tools.ParseFloat64(field.Example, 0.0) + } + } else if field.Selected == 1 && field.Type == "bool" { + if field.Name == "" { + n = append(n, field.Example) + } else { + m[field.Name] = true } - - } else if field.Selected == 1 { - m[field.Name] = field.Example } } return m, n @@ -110,96 +67,48 @@ func ConvertJsonAll(fields []request.ServiceField) (map[string]interface{}, []in return m, n } for _, field := range fields { - if field.Type == "object" { + if field.Type == "object" || field.Type == "array" { + mm, nn := ConvertJsonAll(field.Children) if field.Name == "" { - mm, nn := ConvertJsonAll(field.Children) if len(nn) != 0 { n = append(n, nn) } else { n = append(n, mm) } } else { - mm, nn := ConvertJsonAll(field.Children) if len(nn) != 0 { m[field.Name] = nn } else { m[field.Name] = mm } - } - - } else if field.Type == "array" { - if len(field.Children) > 0 { - //判断第一个元素是否为对象 如果为对象则名称必定为空 - //第一个元素 要么为对象,要么为基本类型 要么为数组 - if field.Children[0].Type == "object" || field.Children[0].Type == "array" { - - mm, nn := ConvertJsonAll(field.Children[0].Children) - - if field.Name == "" { - if len(nn) != 0 { - n = append(n, nn) - } else { - n = append(n, mm) - } - } else { - - if len(nn) != 0 { - m[field.Name] = nn - } else { - m[field.Name] = mm - } - } - - } else { - - if field.Name != "" { - var aaa []interface{} - m[field.Name] = aaa - } else { - if len(field.Children) > 0 { - switch field.Children[0].Type { - case "string", "text", "file": - n = append(n, field.Children[0].Example) - case "int": - n = append(n, tools.ParseInt(field.Children[0].Example, 0)) - case "float": - n = append(n, tools.ParseFloat64(field.Children[0].Example, 1.00)) - case "boolean": - n = append(n, true) - case "array": - n = append(n, []interface{}{field.Children[0].Example}) - default: - var cc interface{} - n = append(n, cc) - } - } else { - var cc interface{} - n = append(n, cc) - } - - } - - } + } else if field.Type == "string" || field.Type == "file" || field.Type == "text" { + if field.Name == "" { + n = append(n, field.Example) } else { - if field.Name != "" { - m[field.Name] = []interface{}{field.Example} - } else { - var cc interface{} - n = append(n, cc) - } + m[field.Name] = field.Example } - - } else if field.Type == "string" || field.Type == "file" { - m[field.Name] = field.Example } else if field.Type == "int" { - m[field.Name] = tools.ParseInt(field.Example, 0) + if field.Name == "" { + n = append(n, field.Example) + } else { + m[field.Name] = tools.ParseInt(field.Example, 0) + } } else if field.Type == "float" { - m[field.Name] = tools.ParseFloat64(field.Example, 0.0) + if field.Name == "" { + n = append(n, field.Example) + } else { + m[field.Name] = tools.ParseFloat64(field.Example, 0.0) + } } else if field.Type == "bool" { - m[field.Name] = true + if field.Name == "" { + n = append(n, field.Example) + } else { + m[field.Name] = true + } } } + return m, n }