Files
yunrui_asset/backend/utils/idGenerator.js
T

72 lines
1.5 KiB
JavaScript
Raw Normal View History

const DEFAULT_CONFIG = {
prefix: '',
timestampBase: 36,
timestampUpperCase: true,
randomLength: 4,
randomBase: 36,
randomUpperCase: true,
};
function generateId(config = {}) {
const {
prefix,
timestampBase,
timestampUpperCase,
randomLength,
randomBase,
randomUpperCase,
} = { ...DEFAULT_CONFIG, ...config };
const timestamp = Date.now().toString(timestampBase);
const formattedTimestamp = timestampUpperCase ? timestamp.toUpperCase() : timestamp;
let randomStr = '';
for (let i = 0; i < randomLength; i++) {
randomStr += Math.floor(Math.random() * randomBase).toString(randomBase);
}
const formattedRandom = randomUpperCase ? randomStr.toUpperCase() : randomStr;
return `${prefix}${formattedTimestamp}${formattedRandom}`;
}
function generateTicketId() {
return generateId({ prefix: 'TKT', randomLength: 4 });
}
function generateRoleId() {
return generateId({
prefix: 'role_',
timestampUpperCase: false,
randomLength: 9,
randomUpperCase: false
});
}
function generatePlanId() {
return generateId({ prefix: 'PLAN', randomLength: 4 });
}
function generateTaskId() {
return generateId({ prefix: 'TASK', randomLength: 4 });
}
function generateRecordId() {
return generateId({ prefix: 'REC', randomLength: 6 });
}
function generatePendingId() {
return generateId({ prefix: 'PEND', randomLength: 4 });
}
module.exports = {
generateId,
generateTicketId,
generateRoleId,
generatePlanId,
generateTaskId,
generateRecordId,
generatePendingId,
DEFAULT_CONFIG,
};