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 }