f
This commit is contained in:
@@ -34,5 +34,14 @@ func ProcessQCXG7K2NRequest(ctx context.Context, params []byte, deps *processors
|
|||||||
return nil, err
|
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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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