package dao import ( "fmt" "git.x2erp.com/qdy/go-base/model/request/configreq" ) // 配置元信息记录结构 type ConfigMetaRecord struct { ID string `db:"id"` ConfigName string `db:"config_name"` FieldType string `db:"field_type"` YamlName string `db:"yaml_name"` } type ConfigMetaParam struct { ConfigRequest *configreq.ConfigRequest IDS []string //meat配置表的id idsMap map[string]string //key是yamlName,值是id,方便通过yamlName查找赋值 YamlNames []string } // GetConfigStartupParam 得到config_startup表ID集合和yamlName集合 func GetConfigStartupParam(req *configreq.ConfigRequest) *ConfigMetaParam { // 提取 yaml_names idsMap := make(map[string]string, len(req.ConfigFields)) yamlNames := make([]string, 0, len(req.ConfigFields)) ids := make([]string, 0, len(req.ConfigFields)) for _, configField := range req.ConfigFields { id := fmt.Sprintf("%s.%s", req.YamlRoot, configField.YamlName) idsMap[configField.YamlName] = id ids = append(ids, id) yamlNames = append(yamlNames, configField.YamlName) } return &ConfigMetaParam{ ConfigRequest: req, idsMap: idsMap, IDS: ids, YamlNames: yamlNames, } } // GetConfigStartupParamSVCID 得到config_startup_svc表ID集合和yamlName集合 func GetConfigStartupParamSVC(serviceName string, req *configreq.ConfigRequest) *ConfigMetaParam { // 提取 yaml_names idsMap := make(map[string]string, len(req.ConfigFields)) yamlNames := make([]string, 0, len(req.ConfigFields)) ids := make([]string, 0, len(req.ConfigFields)) for _, configField := range req.ConfigFields { id := fmt.Sprintf("%s.%s.%s", serviceName, req.YamlRoot, configField.YamlName) metaId := fmt.Sprintf("%s.%s", req.YamlRoot, configField.YamlName) idsMap[configField.YamlName] = id ids = append(ids, metaId) yamlNames = append(yamlNames, configField.YamlName) } return &ConfigMetaParam{ ConfigRequest: req, idsMap: idsMap, IDS: ids, YamlNames: yamlNames, } } func (p *ConfigMetaParam) GetID(yamlName string) string { return p.idsMap[yamlName] } // GetSvcIDS 获取微服务配置表的ID func (p *ConfigMetaParam) GetSvcIDS() []string { if p == nil || p.idsMap == nil { return []string{} } ids := make([]string, 0, len(p.idsMap)) for _, value := range p.idsMap { ids = append(ids, value) } return ids }