37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
package xerr
|
||
|
||
import (
|
||
"fmt"
|
||
"strings"
|
||
)
|
||
|
||
// DeviceAlreadyRegisteredMessage 生成同设备注册达到上限时直接展示给 App 的错误文案。
|
||
// count 代表当前设备已注册账号数,displayUserIDs 按原注册顺序列出短号,便于用户识别原账号。
|
||
func DeviceAlreadyRegisteredMessage(count int, displayUserIDs []string) string {
|
||
cleaned := make([]string, 0, len(displayUserIDs))
|
||
seen := make(map[string]struct{}, len(displayUserIDs))
|
||
for _, displayUserID := range displayUserIDs {
|
||
displayUserID = strings.TrimSpace(displayUserID)
|
||
if displayUserID == "" {
|
||
continue
|
||
}
|
||
if _, ok := seen[displayUserID]; ok {
|
||
continue
|
||
}
|
||
seen[displayUserID] = struct{}{}
|
||
cleaned = append(cleaned, displayUserID)
|
||
}
|
||
if count < len(cleaned) {
|
||
// 调用方如果只传了短号列表而没单独计数,展示数量必须至少覆盖实际列出的账号。
|
||
count = len(cleaned)
|
||
}
|
||
if count < 0 {
|
||
count = 0
|
||
}
|
||
if len(cleaned) == 0 {
|
||
return fmt.Sprintf("you device already register %d account, login failed", count)
|
||
}
|
||
|
||
return fmt.Sprintf("you device already register %d account %s, login failed", count, strings.Join(cleaned, ","))
|
||
}
|