package service import ( "fmt" "strings" ) func buildDeliveryProduct(openProduct *OpenOrderProduct, good map[string]interface{}) *DeliveryProduct { if openProduct == nil { return nil } product := &DeliveryProduct{ Name: openProduct.Name, SKU: openProduct.SKU, Game: openProduct.Game, } if title := stringFromMap(good, "title"); title != "" { product.Name = title } product.Image = stringFromMap(good, "image") return product } func isZeroCode(code interface{}) bool { switch v := code.(type) { case nil: return true case float64: return v == 0 case string: return v == "0" default: return false } } func stringFromMap(m map[string]interface{}, key string) string { if m == nil { return "" } switch v := m[key].(type) { case string: return v case float64: return fmt.Sprintf("%.0f", v) default: if v != nil { return fmt.Sprint(v) } return "" } } func firstNonEmpty(values ...string) string { for _, value := range values { if strings.TrimSpace(value) != "" { return strings.TrimSpace(value) } } return "" } func gameChannelText(account map[string]interface{}) string { area := stringFromMap(account, "game_account_area") plat := stringFromMap(account, "game_account_plat") if area == "" && plat == "" { return "" } return strings.Trim(strings.Join([]string{area, plat}, "-"), "-") } func truncateDeliveryText(value string) string { if len(value) <= 300 { return value } return value[:300] }