diff --git a/shortdrama/consts/public/content_type.go b/shortdrama/consts/public/content_type.go index 43ab94a..4e49750 100644 --- a/shortdrama/consts/public/content_type.go +++ b/shortdrama/consts/public/content_type.go @@ -14,6 +14,7 @@ type FieldDef struct { Type string `json:"type"` Options []string `json:"options"` Required bool `json:"required"` + Multi bool `json:"multi" dc:"是否允许多选"` } // ContentTypeFields 每种内容类型的字段配置 diff --git a/shortdrama/service/drama_service.go b/shortdrama/service/drama_service.go index d0efe30..90813b5 100644 --- a/shortdrama/service/drama_service.go +++ b/shortdrama/service/drama_service.go @@ -1590,38 +1590,46 @@ func formatDramaConfig(contentType, configStr string) string { if configStr == "" || configStr == "{}" { return "" } - var cfg map[string]string + var cfg map[string]interface{} if err := json.Unmarshal([]byte(configStr), &cfg); err != nil { return "" } + formatValue := func(v interface{}) string { + switch val := v.(type) { + case string: + return val + case []interface{}: + parts := make([]string, 0, len(val)) + for _, item := range val { + parts = append(parts, fmt.Sprintf("%v", item)) + } + return strings.Join(parts, "、") + default: + return fmt.Sprintf("%v", v) + } + } if contentType == "短剧" { if v, ok := cfg["题材"]; ok { - return "题材:" + v + return "题材:" + formatValue(v) } } if contentType == "漫剧" { parts := make([]string, 0, 2) if v, ok := cfg["漫画画风"]; ok { - parts = append(parts, "漫画画风:"+v) + parts = append(parts, "漫画画风:"+formatValue(v)) } if v, ok := cfg["题材"]; ok { - parts = append(parts, "题材:"+v) + parts = append(parts, "题材:"+formatValue(v)) } return strings.Join(parts, ",") } if contentType == "广告视频" { - parts := make([]string, 0, 5) + parts := make([]string, 0, 2) if v, ok := cfg["广告类型"]; ok { - parts = append(parts, "广告类型:"+v) + parts = append(parts, "广告类型:"+formatValue(v)) } if v, ok := cfg["产品行业"]; ok { - parts = append(parts, "产品行业:"+v) - } - if v, ok := cfg["情感基调"]; ok { - parts = append(parts, "情感基调:"+v) - } - if v, ok := cfg["口播类型"]; ok { - parts = append(parts, "口播类型:"+v) + parts = append(parts, "产品行业:"+formatValue(v)) } return strings.Join(parts, ",") }