114 lines
3.7 KiB
TypeScript
114 lines
3.7 KiB
TypeScript
/**
|
|
* 编码生成工具
|
|
*/
|
|
|
|
/**
|
|
* 生成套餐系列编码
|
|
* 规则: PS + 年月日时分秒 + 4位随机数
|
|
* 示例: PS20260203143025ABCD
|
|
*/
|
|
export function generateSeriesCode(): string {
|
|
const now = new Date()
|
|
const year = now.getFullYear()
|
|
const month = String(now.getMonth() + 1).padStart(2, '0')
|
|
const day = String(now.getDate()).padStart(2, '0')
|
|
const hours = String(now.getHours()).padStart(2, '0')
|
|
const minutes = String(now.getMinutes()).padStart(2, '0')
|
|
const seconds = String(now.getSeconds()).padStart(2, '0')
|
|
|
|
// 生成4位随机大写字母
|
|
const randomChars = Array.from({ length: 4 }, () =>
|
|
String.fromCharCode(65 + Math.floor(Math.random() * 26))
|
|
).join('')
|
|
|
|
return `PS${year}${month}${day}${hours}${minutes}${seconds}${randomChars}`
|
|
}
|
|
|
|
/**
|
|
* 生成套餐编码
|
|
* 规则: PKG + 年月日时分秒 + 4位随机数
|
|
* 示例: PKG20260203143025ABCD
|
|
*/
|
|
export function generatePackageCode(): string {
|
|
const now = new Date()
|
|
const year = now.getFullYear()
|
|
const month = String(now.getMonth() + 1).padStart(2, '0')
|
|
const day = String(now.getDate()).padStart(2, '0')
|
|
const hours = String(now.getHours()).padStart(2, '0')
|
|
const minutes = String(now.getMinutes()).padStart(2, '0')
|
|
const seconds = String(now.getSeconds()).padStart(2, '0')
|
|
|
|
// 生成4位随机大写字母
|
|
const randomChars = Array.from({ length: 4 }, () =>
|
|
String.fromCharCode(65 + Math.floor(Math.random() * 26))
|
|
).join('')
|
|
|
|
return `PKG${year}${month}${day}${hours}${minutes}${seconds}${randomChars}`
|
|
}
|
|
|
|
/**
|
|
* 生成店铺编码
|
|
* 规则: SHOP + 年月日时分秒 + 4位随机数
|
|
* 示例: SHOP20260314143025ABCD
|
|
*/
|
|
export function generateShopCode(): string {
|
|
const now = new Date()
|
|
const year = now.getFullYear()
|
|
const month = String(now.getMonth() + 1).padStart(2, '0')
|
|
const day = String(now.getDate()).padStart(2, '0')
|
|
const hours = String(now.getHours()).padStart(2, '0')
|
|
const minutes = String(now.getMinutes()).padStart(2, '0')
|
|
const seconds = String(now.getSeconds()).padStart(2, '0')
|
|
|
|
// 生成4位随机大写字母
|
|
const randomChars = Array.from({ length: 4 }, () =>
|
|
String.fromCharCode(65 + Math.floor(Math.random() * 26))
|
|
).join('')
|
|
|
|
return `SHOP${year}${month}${day}${hours}${minutes}${seconds}${randomChars}`
|
|
}
|
|
|
|
/**
|
|
* 生成运营商编码
|
|
* 规则: CARRIER + 年月日时分秒 + 4位随机数
|
|
* 示例: CARRIER20260328143025ABCD
|
|
*/
|
|
export function generateCarrierCode(): string {
|
|
const now = new Date()
|
|
const year = now.getFullYear()
|
|
const month = String(now.getMonth() + 1).padStart(2, '0')
|
|
const day = String(now.getDate()).padStart(2, '0')
|
|
const hours = String(now.getHours()).padStart(2, '0')
|
|
const minutes = String(now.getMinutes()).padStart(2, '0')
|
|
const seconds = String(now.getSeconds()).padStart(2, '0')
|
|
|
|
// 生成4位随机大写字母
|
|
const randomChars = Array.from({ length: 4 }, () =>
|
|
String.fromCharCode(65 + Math.floor(Math.random() * 26))
|
|
).join('')
|
|
|
|
return `CARRIER${year}${month}${day}${hours}${minutes}${seconds}${randomChars}`
|
|
}
|
|
|
|
/**
|
|
* 生成企业编码
|
|
* 规则: ENT + 年月日时分秒 + 4位随机数
|
|
* 示例: ENT20260331143025ABCD
|
|
*/
|
|
export function generateEnterpriseCode(): string {
|
|
const now = new Date()
|
|
const year = now.getFullYear()
|
|
const month = String(now.getMonth() + 1).padStart(2, '0')
|
|
const day = String(now.getDate()).padStart(2, '0')
|
|
const hours = String(now.getHours()).padStart(2, '0')
|
|
const minutes = String(now.getMinutes()).padStart(2, '0')
|
|
const seconds = String(now.getSeconds()).padStart(2, '0')
|
|
|
|
// 生成4位随机大写字母
|
|
const randomChars = Array.from({ length: 4 }, () =>
|
|
String.fromCharCode(65 + Math.floor(Math.random() * 26))
|
|
).join('')
|
|
|
|
return `ENT${year}${month}${day}${hours}${minutes}${seconds}${randomChars}`
|
|
}
|