42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
/**
|
||
* 用于处理头像相关操作的实用类
|
||
*/
|
||
export class AvatarUtils {
|
||
private static readonly DEFAULT_AVATAR_RANGE = {
|
||
start: '001',
|
||
end: '021'
|
||
}
|
||
|
||
private static readonly RANGE_START = parseInt(AvatarUtils.DEFAULT_AVATAR_RANGE.start, 10)
|
||
private static readonly RANGE_END = parseInt(AvatarUtils.DEFAULT_AVATAR_RANGE.end, 10)
|
||
|
||
/**
|
||
* 检查头像字符串是否为默认头像 (001-021)
|
||
* @param avatar - 要检查的头像字符串
|
||
* @returns 布尔值指示是否是默认头像
|
||
*/
|
||
public static isDefaultAvatar(avatar: string): boolean {
|
||
// 快速判断:如果为空或长度不是3,直接返回false
|
||
if (!avatar || avatar.length !== 3) return false
|
||
|
||
// 检查是否全是数字
|
||
const num = parseInt(avatar, 10)
|
||
if (isNaN(num)) return false
|
||
|
||
// 数字范围检查 (001-021)
|
||
return num >= this.RANGE_START && num <= this.RANGE_END
|
||
}
|
||
|
||
/**
|
||
* 根据头像值获取头像URL
|
||
* @param avatar - 头像字符串或URL
|
||
* @returns 头像字符串或URL
|
||
*/
|
||
public static getAvatarUrl(avatar: string): string {
|
||
if (this.isDefaultAvatar(avatar)) {
|
||
return `/avatar/${avatar}.png`
|
||
}
|
||
return avatar
|
||
}
|
||
}
|