f
This commit is contained in:
@@ -57,5 +57,10 @@ func ProcessQCXG7K2NRequest(ctx context.Context, params []byte, deps *processors
|
||||
}
|
||||
return nil, errors.Join(processors.ErrSystem, err)
|
||||
}
|
||||
return respBytes, nil
|
||||
|
||||
transformed, err := transformX2X6To3M7Z(respBytes)
|
||||
if err != nil {
|
||||
return nil, errors.Join(processors.ErrSystem, err)
|
||||
}
|
||||
return transformed, nil
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package qcxg
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// transformX2X6To3M7Z 将行驶证信息核验V2响应转换为 ETC 人车关系核验格式。
|
||||
// checkResult: 00 姓名一致 -> status 1;01 姓名不一致 -> status 2。
|
||||
func transformX2X6To3M7Z(respBytes []byte) ([]byte, error) {
|
||||
var raw map[string]interface{}
|
||||
if err := json.Unmarshal(respBytes, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
status := mapCheckResultToStatus(raw["checkResult"])
|
||||
return json.Marshal(map[string]string{"status": status})
|
||||
}
|
||||
|
||||
func mapCheckResultToStatus(checkResult interface{}) string {
|
||||
switch fmt.Sprint(checkResult) {
|
||||
case "00":
|
||||
return "1"
|
||||
case "01":
|
||||
return "2"
|
||||
default:
|
||||
return "2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package qcxg
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestTransformX2X6To3M7Z(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
wantStat string
|
||||
}{
|
||||
{"姓名一致", `{"checkResult":"00","plate":"桂A12345"}`, "1"},
|
||||
{"姓名不一致", `{"checkResult":"01","plate":"桂A12345"}`, "2"},
|
||||
{"未知结果默认不一致", `{"checkResult":"99"}`, "2"},
|
||||
{"缺少checkResult默认不一致", `{"plate":"桂A12345"}`, "2"},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := transformX2X6To3M7Z([]byte(tt.input))
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
var out map[string]string
|
||||
if err := json.Unmarshal(got, &out); err != nil {
|
||||
t.Fatalf("invalid json: %v", err)
|
||||
}
|
||||
if len(out) != 1 {
|
||||
t.Fatalf("expected only status field, got %v", out)
|
||||
}
|
||||
if out["status"] != tt.wantStat {
|
||||
t.Fatalf("status = %q, want %q", out["status"], tt.wantStat)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user