refactor(iap/apple): 优化商品ID解析逻辑以提高可读性
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 6m22s

将原有的字符串索引查找方式改为分割字符串后遍历检查,使代码更清晰易读
This commit is contained in:
shanshanzhong 2025-12-17 19:33:56 -08:00
parent e98709b511
commit 2fdc9c8127

View File

@ -63,31 +63,32 @@ func (l *AttachTransactionLogic) Attach(req *types.AttachAppleTransactionRequest
var parsedQuantity int64 var parsedQuantity int64
{ {
pid := strings.ToLower(txPayload.ProductId) pid := strings.ToLower(txPayload.ProductId)
var unitIdx = -1 parts := strings.Split(pid, ".")
var unitLen = 0 for i := len(parts) - 1; i >= 0; i-- {
if i := strings.Index(pid, "day"); i >= 0 { p := parts[i]
unitIdx, unitLen, parsedUnit = i, 3, "Day" if strings.HasPrefix(p, "day") || strings.HasPrefix(p, "month") || strings.HasPrefix(p, "year") {
switch {
case strings.HasPrefix(p, "day"):
parsedUnit = "Day"
p = p[len("day"):]
case strings.HasPrefix(p, "month"):
parsedUnit = "Month"
p = p[len("month"):]
case strings.HasPrefix(p, "year"):
parsedUnit = "Year"
p = p[len("year"):]
} }
if i := strings.Index(pid, "month"); i >= 0 { digits := p
if unitIdx == -1 || i < unitIdx { for j := 0; j < len(digits); j++ {
unitIdx, unitLen, parsedUnit = i, 5, "Month" if digits[j] < '0' || digits[j] > '9' {
} digits = digits[:j]
}
if i := strings.Index(pid, "year"); i >= 0 {
if unitIdx == -1 || i < unitIdx {
unitIdx, unitLen, parsedUnit = i, 4, "Year"
}
}
if unitIdx >= 0 {
sub := pid[unitIdx+unitLen:]
for i := 0; i < len(sub); i++ {
if sub[i] < '0' || sub[i] > '9' {
sub = sub[:i]
break break
} }
} }
if q, e := strconv.ParseInt(sub, 10, 64); e == nil && q > 0 { if q, e := strconv.ParseInt(digits, 10, 64); e == nil && q > 0 {
parsedQuantity = q parsedQuantity = q
break
}
} }
} }
} }