12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package utils
- import (
- "time"
- )
- func init() {
- lastTimeStamp = time.Now().UnixNano() / 1000000
- }
- // GetSnowflakeId
- // @函数名:GetSnowflakeId
- // @函数功能描述: 通过appid获取雪花id Apppid范围在 1~1023
- // @参数定义:appId
- // @返回值:int64
- //
- func GetSnowflakeId(appId int64) int64 {
- if appId == 0 {
- return 0
- }
- nowTime := time.Now().UnixNano() / 1000000
- appId = appId & 0x3FF
- sfOne := nowTime << 22
- sfTwo := appId << 12
- //每次累加,减小时间回滚发生重复的概率
- sn++
- sfThree := sn & 0xFFF
- return sfOne | sfTwo | sfThree
- }
- // GetAppIdBySnowflakeId
- // @函数名:GetAppIdBySnowflakeId
- // @函数功能描述: 通过雪花id,返回appid
- // @参数定义:snowflakeId
- // @返回值:int64
- //
- func GetAppIdBySnowflakeId(snowflakeId int64) int64 {
- if snowflakeId == 0 {
- return 0
- }
- appId := snowflakeId & 0x3FF000
- return appId >> 12
- }
|