github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/vin-code/vin_data.go (about)

     1  package vincode
     2  
     3  // WMI 世界制造厂识别代码
     4  type WMIData struct {
     5  	// 洲
     6  	Continent string
     7  	// 制造国
     8  	Country string
     9  	// 制造商
    10  	Manufacturer string
    11  	// 车用途类型
    12  	VehicleType string
    13  }
    14  
    15  // VDS 车辆说明部分
    16  type VDSData struct {
    17  	// 约束系统
    18  	RestraintSystem string
    19  	// 系列
    20  	CarSeries string
    21  	// 几门类型
    22  	DoorType string
    23  	// 发动机
    24  	Engine string
    25  	// 排放
    26  	Emissison string
    27  }
    28  
    29  // VIS 车辆指示部分
    30  type VISData struct {
    31  	// 生产年份
    32  	ModelYear string
    33  	// 装配厂
    34  	AssemblyPlant string
    35  	// 生产序列号
    36  	SequenceNO string
    37  }
    38  
    39  // VIN 解析后数据
    40  type VINData struct {
    41  	// WMI部分
    42  	WMISection WMIData
    43  	// VDS部分
    44  	VDSSection VDSData
    45  	// VIS部分
    46  	VISSection VISData
    47  }
    48  
    49  type VINInterface interface {
    50  	// 解析WMI
    51  	ParseWMI() (WMIData, error)
    52  	// 解析VDS
    53  	ParseVDS() (VDSData, error)
    54  	// 解析VIS
    55  	ParseVIS() (VISData, error)
    56  }
    57  
    58  // 解析ALL
    59  func ParseAll(it VINInterface) (VINData, error) {
    60  	vinData := VINData{}
    61  	WMISection, err := it.ParseWMI()
    62  	if err != nil {
    63  		return vinData, err
    64  	}
    65  	vinData.WMISection = WMISection
    66  	VISSection, err := it.ParseVIS()
    67  	if err != nil {
    68  		return vinData, err
    69  	}
    70  	vinData.VISSection = VISSection
    71  	VDSSection, err := it.ParseVDS()
    72  	if err != nil {
    73  		return vinData, err
    74  	}
    75  	vinData.VDSSection = VDSSection
    76  
    77  	return vinData, nil
    78  }