Files
geo/server/internal/tenant/app/media_supply_public.go
T

99 lines
3.6 KiB
Go
Raw Normal View History

package app
import (
"errors"
"strings"
)
const mediaSupplyPublicSupplierCode = "authority_news"
var errMediaSupplyAccountUserIDMissing = errors.New("media supply account user_id is not configured")
func publicMediaSupplySupplierCode(supplier string) string {
supplier = strings.TrimSpace(supplier)
if supplier == "" {
return ""
}
if strings.EqualFold(supplier, mediaSupplySupplierMeijiequan) {
return mediaSupplyPublicSupplierCode
}
return "media_supply"
}
func publicMediaSupplyArticleURL(value string) string {
value = strings.TrimSpace(value)
if value == "" {
return ""
}
if isLikelyPublishedArticleURL(value) {
return value
}
return ""
}
func mediaSupplyPublicErrorMessage(err error) string {
if err == nil {
return ""
}
switch {
case errors.Is(err, errMeijiequanCredentialsMissing):
return "媒体供应商账号未配置,请联系管理员处理"
case errors.Is(err, errMeijiequanSessionMissing), errors.Is(err, errMeijiequanSessionExpired), errors.Is(err, errMeijiequanAuthRequired):
return "媒体供应商登录状态已失效,请联系管理员处理"
case errors.Is(err, errMeijiequanChallengeRequired):
return "媒体供应商登录验证失败,请联系管理员处理"
case errors.Is(err, errMeijiequanOrderRejected):
return "媒体供应商拒绝投稿,请检查文章内容或联系管理员处理"
case errors.Is(err, errMediaSupplySelectedResourcesMissing):
return "媒体资源暂不可用或已下架,请重新选择媒体"
case errors.Is(err, errMediaSupplyLockedSellBelowCost):
return "媒体成本价已变化,当前锁定价格低于成本,请重新提交"
case errors.Is(err, errMediaSupplyAccountUserIDMissing):
return "媒体供应商账号信息不完整,请联系管理员处理"
default:
return mediaSupplyPublicGenericErrorMessage(err.Error())
}
}
func mediaSupplyPublicGenericErrorMessage(message string) string {
message = strings.TrimSpace(message)
if message == "" {
return "媒体投稿失败,请稍后重试或联系管理员"
}
lower := strings.ToLower(message)
switch {
case strings.Contains(lower, "failed to refresh supplier price"):
return "媒体资源暂不可用或已下架,请重新选择媒体"
case strings.Contains(lower, "supplier cost increased above locked sell price"):
return "媒体成本价已变化,当前锁定价格低于成本,请重新提交"
case strings.Contains(lower, "username") || strings.Contains(lower, "password") || strings.Contains(lower, "credentials"):
return "媒体供应商账号未配置,请联系管理员处理"
case strings.Contains(lower, "session") || strings.Contains(lower, "authentication") || strings.Contains(lower, "auth required"):
return "媒体供应商登录状态已失效,请联系管理员处理"
case strings.Contains(lower, "challenge") || strings.Contains(lower, "captcha"):
return "媒体供应商登录验证失败,请联系管理员处理"
case strings.Contains(lower, "user_id"):
return "媒体供应商账号信息不完整,请联系管理员处理"
case strings.Contains(lower, "meijiequan"):
return "媒体供应商请求失败,请稍后重试或联系管理员"
case strings.Contains(lower, "supplier"):
return "媒体投稿失败,请稍后重试或联系管理员"
case strings.Contains(lower, "failed to"):
return "媒体投稿失败,请稍后重试或联系管理员"
default:
if hasCJKText(message) {
return message
}
return "媒体投稿失败,请稍后重试或联系管理员"
}
}
func hasCJKText(message string) bool {
for _, r := range message {
if r >= '\u4e00' && r <= '\u9fff' {
return true
}
}
return false
}