package user import "fmt" // NumericDisplayUserIDAllocator 基于 user_id 生成数字短号候选。 // 它只生成格式合法的候选,唯一性仍由 repository 事务保证。 type NumericDisplayUserIDAllocator struct{} // NextDisplayUserID 返回 6 到 10 位数字短号候选。 func (NumericDisplayUserIDAllocator) NextDisplayUserID(userID int64, attempt int) string { base := int64(100000) space := int64(9_999_000_000) value := base + ((userID + int64(attempt)) % space) if value < base { // 负数 user_id 只可能来自测试注入,仍要规整成合法候选。 value = base - value } return fmt.Sprintf("%d", value) }