This commit is contained in:
2026-07-05 00:58:25 +08:00
parent bdb2e78e10
commit bd0727277e
3 changed files with 77 additions and 1 deletions

View File

@@ -34,5 +34,14 @@ func ProcessQCXG7K2NRequest(ctx context.Context, params []byte, deps *processors
return nil, err
}
return ProcessQCXGX2X6Request(ctx, reqParams, deps)
respBytes, err = ProcessQCXGX2X6Request(ctx, reqParams, deps)
if err != nil {
return nil, err
}
transformed, err := transformX2X6To3M7Z(respBytes)
if err != nil {
return nil, errors.Join(processors.ErrSystem, err)
}
return transformed, nil
}

View File

@@ -0,0 +1,29 @@
package qcxg
import (
"encoding/json"
"fmt"
)
// transformX2X6To3M7Z 将行驶证信息核验V2响应转换为 ETC 人车关系核验格式。
// checkResult: 00 姓名一致 -> status 101 姓名不一致 -> 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"
}
}

View File

@@ -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)
}
})
}
}