76 lines
1.8 KiB
Go
76 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
|
|
"chis_osi/config"
|
|
)
|
|
|
|
type appMode string
|
|
|
|
const (
|
|
modeServer appMode = "server"
|
|
modeDeliver appMode = "deliver"
|
|
)
|
|
|
|
func parseMode(raw string) (appMode, error) {
|
|
switch appMode(raw) {
|
|
case modeServer:
|
|
return modeServer, nil
|
|
case modeDeliver:
|
|
return modeDeliver, nil
|
|
default:
|
|
return "", fmt.Errorf("invalid mode %q, want server or deliver", raw)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
modeFlag := flag.String("mode", string(modeServer), "运行模式:server 或 deliver")
|
|
configPath := flag.String("config", "config.yaml", "配置文件路径")
|
|
verifyJKDA := flag.Bool("verify-jkda", false, "阶段0联调验收:从 OSI_VERIFY_ID_CARD 读取身份证并查询 JKDA00002")
|
|
flag.Parse()
|
|
|
|
mode, err := parseMode(*modeFlag)
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, err)
|
|
os.Exit(2)
|
|
}
|
|
|
|
cfg, err := config.Load(*configPath)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "load config: %v\n", err)
|
|
os.Exit(2)
|
|
}
|
|
|
|
if *verifyJKDA {
|
|
idCard, err := resolveVerifyIDCard(*verifyJKDA, os.Getenv)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "verify JKDA00002: %v\n", err)
|
|
os.Exit(2)
|
|
}
|
|
result, err := runJKDAFindCheck(context.Background(), cfg, idCard)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "verify JKDA00002 failed: code=%s message=%s err=%v\n", result.Code, result.Message, err)
|
|
os.Exit(1)
|
|
}
|
|
fmt.Printf("JKDA00002 code=%s message=%s data_count=%d\n", result.Code, result.Message, result.DataCount)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("chis_osi mode=%s\n", mode)
|
|
}
|
|
|
|
func resolveVerifyIDCard(enabled bool, getenv func(string) string) (string, error) {
|
|
if !enabled {
|
|
return "", nil
|
|
}
|
|
idCard := getenv("OSI_VERIFY_ID_CARD")
|
|
if idCard == "" {
|
|
return "", fmt.Errorf("OSI_VERIFY_ID_CARD is required when -verify-jkda is set")
|
|
}
|
|
return idCard, nil
|
|
}
|