Files
chis_osi/main.go
T

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
}