Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
model-entity
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rust common
model-entity
Commits
daa2768a
Commit
daa2768a
authored
Dec 06, 2024
by
xuwencheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
upgrade
parent
eb4c9e5f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
26 additions
and
3 deletions
+26
-3
lib.rs
src/lib.rs
+14
-0
id.rs
src/tool/id.rs
+12
-3
No files found.
src/lib.rs
View file @
daa2768a
...
@@ -16,6 +16,20 @@ pub mod tool;
...
@@ -16,6 +16,20 @@ pub mod tool;
mod
tests
{
mod
tests
{
use
super
::
*
;
use
super
::
*
;
#[test]
fn
id
()
{
let
id
=
crate
::
tool
::
id
::
id
();
let
time
=
crate
::
tool
::
time
::
hour_millisecond
(
0
)
.unwrap_or_default
();
let
gid
=
crate
::
tool
::
id
::
generate_id
(
time
);
println!
(
"1. {id}, {}"
,
id
as
u64
);
println!
(
"2. {gid}, {}"
,
gid
as
i64
);
println!
(
"3. {}"
,
id
-
(
gid
as
i64
));
}
#[test]
#[test]
fn
publish
()
{
fn
publish
()
{
let
hex
=
"00059403C201C2003596B26E6F746966792D6F726465722D7374617465B26E6F746966792D6F726465722D7374617465C003CF192EDC28C376A001CD0BCB00000397789CB5585B4F135110FE2B757D6BA8D9B3D776E38321F0C09B4F3E9998C6F6810790289A18420245B016B923120D212037092A8596965E2099F9637EDB4269975E76CBB64DBA6C7B76BE9933DF7C33870929161D8F4AD684F4FACDC8487434F64EB2A497EF6559F43FAB5C069E538632D56FFAED8B2CEE3E457FB47223576FD4A7F55FDEAC18AC5B31F0A872113C4739FE4ED794E624DE795EE41C9DF1027FE552DD423C35FA10182AD2115D7291CABC41593EF6D1347CDDE5046742BCCA2BB07E4879BA78907DD1687F86A780315BC379AC685ECDCB6DCC276987B2B44F059EA55F5468615CAD5C06431D5ECD7DA93EDBD221B901919738613BC4294A5389F72C4556B4906C861439202296AE5A9AF001862EE8F76DDCD6007E3015A19986A6A8AA6AEAF8DBF0239624972947E51A908E1D3722B22AEBBA88C84A44F7903DF75F36CB3336338F42DBB538C5DF2A1596E47950F68AE7A9DC994F4D4D22A28030C3AA6188B022EBAFE4EEEC842302CC3B81631B54E442D5AC6E04BBB3160C060DC5500228F779BA469CCB7CC4ABE4A2E49BC6889DA22BDEF6A3283C72E70B3410EA1870BCDA50DA6659897FB6B199E2324FD3759B15CB908312CF75267F1BE63598147C882D84C8231D7F6D0D8694156DA96FC0ED1C9ED074C713AD970AA76DD7563D16BDB794066C521EA00ED35645D553508602A7D1FBCABEE1BAFCC57DF66ECAA76921B823A670EE823F9973A1363D489CB0751374DEEA4DC67A2A2974CA25F48053B8BFE2941517FA22BA14B259DE43AB596883DAFA61E589594375D7EA40D9353AB0BB5C6BAAB6806E34A38581DD8C62BD95FD043A6089B31D76CDDD8E79434E81E46B3C03493AB199E239577A97B86B983C8BBC05DC25BBF5784435EFC5DBA3C4ACF30FCCA6DBB723BED7DDB99B5ADD13398596EE3C4DB422725B2A37CA6A6F877A0FE161122D82EA50540B7DE64FD0C5C8E7DEFA341D8350591CF70E71FC3BB530A962360C562755CC9C7E62DD166B9637C18F9C856C20BA655EA47F9591F69237C9EEF3EB28674C58FC99F321D51E743B3BD1142F41FB0117FEDFCF51CB832CBA83F38CEC83C932EF22E259F89BBB313B550FC39F90A16BD495E3BF004DA11FE24786CFD01576DA9C29751FC2E5393E877E6731B8EFD025CE972580A5706F4BC6396F388567B4F6AE587951B52FF549B1F887E1D7F1A1986449C28C084D560C4D35744DC587D0B060ECEDF0E8F8D0787CC45E23C238AD2A11D330144508D308ABDA649F34FE712C2E59AA2C2293FF01A734A5A500203041303034303634303030453144393434464330363631444237394533304636"
;
let
hex
=
"00059403C201C2003596B26E6F746966792D6F726465722D7374617465B26E6F746966792D6F726465722D7374617465C003CF192EDC28C376A001CD0BCB00000397789CB5585B4F135110FE2B757D6BA8D9B3D776E38321F0C09B4F3E9998C6F6810790289A18420245B016B923120D212037092A8596965E2099F9637EDB4269975E76CBB64DBA6C7B76BE9933DF7C33870929161D8F4AD684F4FACDC8487434F64EB2A497EF6559F43FAB5C069E538632D56FFAED8B2CEE3E457FB47223576FD4A7F55FDEAC18AC5B31F0A872113C4739FE4ED794E624DE795EE41C9DF1027FE552DD423C35FA10182AD2115D7291CABC41593EF6D1347CDDE5046742BCCA2BB07E4879BA78907DD1687F86A780315BC379AC685ECDCB6DCC276987B2B44F059EA55F5468615CAD5C06431D5ECD7DA93EDBD221B901919738613BC4294A5389F72C4556B4906C861439202296AE5A9AF001862EE8F76DDCD6007E3015A19986A6A8AA6AEAF8DBF0239624972947E51A908E1D3722B22AEBBA88C84A44F7903DF75F36CB3336338F42DBB538C5DF2A1596E47950F68AE7A9DC994F4D4D22A28030C3AA6188B022EBAFE4EEEC842302CC3B81631B54E442D5AC6E04BBB3160C060DC5500228F779BA469CCB7CC4ABE4A2E49BC6889DA22BDEF6A3283C72E70B3410EA1870BCDA50DA6659897FB6B199E2324FD3759B15CB908312CF75267F1BE63598147C882D84C8231D7F6D0D8694156DA96FC0ED1C9ED074C713AD970AA76DD7563D16BDB794066C521EA00ED35645D553508602A7D1FBCABEE1BAFCC57DF66ECAA76921B823A670EE823F9973A1363D489CB0751374DEEA4DC67A2A2974CA25F48053B8BFE2941517FA22BA14B259DE43AB596883DAFA61E589594375D7EA40D9353AB0BB5C6BAAB6806E34A38581DD8C62BD95FD043A6089B31D76CDDD8E79434E81E46B3C03493AB199E239577A97B86B983C8BBC05DC25BBF5784435EFC5DBA3C4ACF30FCCA6DBB723BED7DDB99B5ADD13398596EE3C4DB422725B2A37CA6A6F877A0FE161122D82EA50540B7DE64FD0C5C8E7DEFA341D8350591CF70E71FC3BB530A962360C562755CC9C7E62DD166B9637C18F9C856C20BA655EA47F9591F69237C9EEF3EB28674C58FC99F321D51E743B3BD1142F41FB0117FEDFCF51CB832CBA83F38CEC83C932EF22E259F89BBB313B550FC39F90A16BD495E3BF004DA11FE24786CFD01576DA9C29751FC2E5393E877E6731B8EFD025CE972580A5706F4BC6396F388567B4F6AE587951B52FF549B1F887E1D7F1A1986449C28C084D560C4D35744DC587D0B060ECEDF0E8F8D0787CC45E23C238AD2A11D330144508D308ABDA649F34FE712C2E59AA2C2293FF01A734A5A500203041303034303634303030453144393434464330363631444237394533304636"
;
...
...
src/tool/id.rs
View file @
daa2768a
use
std
::
collections
::
hash_map
::
DefaultHasher
;
use
std
::
collections
::
hash_map
::
DefaultHasher
;
use
std
::
time
::
UNIX_EPOCH
;
use
std
::{
use
std
::{
any
::
TypeId
,
any
::
TypeId
,
hash
::{
Hash
,
Hasher
},
hash
::{
Hash
,
Hasher
},
...
@@ -9,20 +10,28 @@ use once_cell::sync::Lazy;
...
@@ -9,20 +10,28 @@ use once_cell::sync::Lazy;
use
snowflake
::
SnowflakeIdGenerator
;
use
snowflake
::
SnowflakeIdGenerator
;
use
uuid
::
Uuid
;
use
uuid
::
Uuid
;
// 和云端ShardingSphere雪花算法EPOCH保持一致,2016-11-01 00:00:00 UTC
const
TWEPOCH
:
u64
=
1477929600000
;
// 使用 Lazy 来惰性初始化 SnowflakeIdGenerator
static
mut
GENERATOR
:
Lazy
<
SnowflakeIdGenerator
>
=
Lazy
::
new
(||
{
let
epoch
=
UNIX_EPOCH
+
std
::
time
::
Duration
::
from_secs
(
TWEPOCH
/
1000
);
SnowflakeIdGenerator
::
with_epoch
(
1
,
1
,
epoch
)
});
pub
fn
uuid
()
->
String
{
pub
fn
uuid
()
->
String
{
Uuid
::
new_v4
()
.as_simple
()
.to_string
()
Uuid
::
new_v4
()
.as_simple
()
.to_string
()
}
}
pub
fn
id
()
->
i64
{
pub
fn
id
()
->
i64
{
static
mut
GENERATOR
:
Lazy
<
SnowflakeIdGenerator
>
=
// 调用生成器生成 ID
Lazy
::
new
(||
SnowflakeIdGenerator
::
new
(
1
,
1
));
unsafe
{
GENERATOR
.generate
()
}
unsafe
{
GENERATOR
.generate
()
}
}
}
// 生成指定日期的雪花ID函数
// 生成指定日期的雪花ID函数
pub
fn
generate_id
(
time
:
u64
)
->
u64
{
pub
fn
generate_id
(
time
:
u64
)
->
u64
{
// 默认: 2024-06-21 18:25:45
// 默认: 2024-06-21 18:25:45
let
last_time_millis
=
time
;
let
last_time_millis
=
time
-
TWEPOCH
;
let
timestamp_part
=
last_time_millis
<<
22
;
let
timestamp_part
=
last_time_millis
<<
22
;
let
node_id_part
=
(
1
as
u64
)
<<
17
;
let
node_id_part
=
(
1
as
u64
)
<<
17
;
let
worker_id_part
=
(
1
as
u64
)
<<
12
;
let
worker_id_part
=
(
1
as
u64
)
<<
12
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment