优化备注与封禁

This commit is contained in:
yml2213
2026-07-23 17:05:23 +08:00
parent d4e674f8f6
commit edbe8ca227
6 changed files with 149 additions and 16 deletions
+53 -2
View File
@@ -43,7 +43,7 @@ func ParseUploadText(text string) (ParsedUpload, error) {
if err != nil {
return ParsedUpload{}, err
}
account.SecretKD, err = parseRequiredFloat(values, "绝密KD", "绝密kd")
account.SecretKD, err = parseOptionalFloat(values, "绝密KD", "绝密kd")
if err != nil {
return ParsedUpload{}, err
}
@@ -51,10 +51,12 @@ func ParseUploadText(text string) (ParsedUpload, error) {
if err != nil {
return ParsedUpload{}, err
}
account.BanRecord = optionalDefault(firstValue(values, "封禁记录"), "无")
banRaw := firstValue(values, "封禁记录")
account.BanRecord = normalizeBanFlag(banRaw)
account.CommonRegion = firstValue(values, "常用地区", "常用区域")
account.ContactPhone = firstValue(values, "联系电话", "手机号", "电话")
account.OwnerOnlineTime = firstValue(values, "号主在线时间", "在线时间")
account.Remark = composeRemark(firstValue(values, "备注", "说明"), banRaw)
account.Currency.HafuCoin, err = parseRequiredFloat(values, "哈夫币纯币", "哈夫币")
if err != nil {
@@ -134,6 +136,43 @@ func optionalDefault(value, fallback string) string {
return strings.TrimSpace(value)
}
// normalizeBanFlag 只输出“有/无”,具体封禁历史放到备注。
func normalizeBanFlag(value string) string {
value = strings.TrimSpace(value)
if value == "" || isNoBanRecord(value) {
return "无"
}
return "有"
}
func isNoBanRecord(value string) bool {
value = strings.TrimSpace(value)
switch value {
case "无", "无封禁", "无封禁记录", "否", "没有", "none", "None", "NONE":
return true
default:
return false
}
}
// composeRemark 合并原文备注与封禁历史详情。
func composeRemark(remark, banRaw string) string {
remark = strings.TrimSpace(remark)
banDetail := strings.TrimSpace(banRaw)
if banDetail == "" || isNoBanRecord(banDetail) {
return remark
}
// 如果原文已经是“有/无”,不当作详情追加
if banDetail == "有" || banDetail == "是" || banDetail == "有封禁" || banDetail == "有封禁记录" {
return remark
}
banLine := "封禁历史:" + banDetail
if remark == "" {
return banLine
}
return remark + "\n" + banLine
}
func parseRequiredInt(values map[string]string, labels ...string) (int, error) {
value := firstValue(values, labels...)
if value == "" {
@@ -170,6 +209,18 @@ func parseRequiredFloat(values map[string]string, labels ...string) (float64, er
return number, nil
}
func parseOptionalFloat(values map[string]string, labels ...string) (float64, error) {
value := firstValue(values, labels...)
if value == "" {
return 0, nil
}
number, err := parseFloatText(value, false)
if err != nil {
return 0, fmt.Errorf("%s 数字格式不正确:%s", labels[0], value)
}
return number, nil
}
func parseRequiredRatio(values map[string]string, labels ...string) (float64, error) {
value := firstValue(values, labels...)
if value == "" {