@@ 6-19 (lines=14) @@ | ||
3 | ||
4 | module.exports = { |
|
5 | ||
6 | uniqueIdOfToday: async function (serverId = 1) { |
|
7 | let timebase = new Date(new Date().setHours(0, 0, 0, 0)).getTime() |
|
8 | let time = Date.now() + Math.random() // 没有锁,增加随机因子 |
|
9 | ||
10 | let elapse = (time - timebase) * MULTIPLY_BASE // 阿里云执行保证不重复 |
|
11 | let elapseBin = (parseInt(Math.pow(2, 37) - 1) + parseInt(elapse)).toString(2) // 38bit |
|
12 | let serverIdBin = (Math.pow(2, 4) - 1 + serverId).toString(2) // 5bit // 1 to 2^4-1 ,即最大支持15台服务器 |
|
13 | let random = parseInt(Math.random() * (Math.pow(2, 6) - 1 - 1 + 1) + 1, 10) // |
|
14 | let randomBin = (Math.pow(2, 6) - 1 + random).toString(2) // 7bit |
|
15 | let resultBin = elapseBin + serverIdBin + randomBin // 50bit |
|
16 | // let result = await General.bindec(resultBin) |
|
17 | let result = parseInt(resultBin, 2) |
|
18 | return result |
|
19 | }, |
|
20 | ||
21 | /* 在部署集群时需要修改不同机器的这个编号。范围1-15 */ |
|
22 | // 生成订单号 |
@@ 6-18 (lines=13) @@ | ||
3 | ||
4 | module.exports = { |
|
5 | ||
6 | uniqueIdOfToday: async function (serverId = 1) { |
|
7 | let timebase = new Date(new Date().setHours(0, 0, 0, 0)).getTime() |
|
8 | let time = Date.now() + Math.random() // 没有锁,增加随机因子 |
|
9 | ||
10 | let elapse = (time - timebase) * MULTIPLY_BASE // 阿里云执行保证不重复 |
|
11 | let elapseBin = (parseInt(Math.pow(2, 37) - 1) + parseInt(elapse)).toString(2) // 38bit |
|
12 | let serverIdBin = (Math.pow(2, 4) - 1 + serverId).toString(2) // 5bit // 1 to 2^4-1 ,即最大支持15台服务器 |
|
13 | let random = parseInt(Math.random() * (Math.pow(2, 6) - 1 - 1 + 1) + 1, 10) // |
|
14 | let randomBin = (Math.pow(2, 6) - 1 + random).toString(2) // 7bit |
|
15 | let resultBin = elapseBin + serverIdBin + randomBin // 50bit |
|
16 | let result = parseInt(resultBin, 2) |
|
17 | return result |
|
18 | }, |
|
19 | ||
20 | /* 在部署集群时需要修改不同机器的这个编号。范围1-15 */ |
|
21 | // 生成订单号 |