SnowflakeIdGeneratorService.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.webchat.common.service;
  2. import com.webchat.common.util.DateUtils;
  3. import com.webchat.common.util.SnowflakeIdGenerator;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Component;
  6. import java.util.Date;
  7. import static com.webchat.common.util.DateUtils.YYYYMMDD;
  8. @Component
  9. public class SnowflakeIdGeneratorService {
  10. @Autowired
  11. private RedisService redisService;
  12. /**
  13. * 基于雪花算法分布下唯一id生成器
  14. *
  15. * @return
  16. */
  17. public String generateId() {
  18. SnowflakeIdGenerator snowflakeIdGenerator = new SnowflakeIdGenerator(incrementId());
  19. return snowflakeIdGenerator.nextId() + "";
  20. }
  21. /**
  22. * 生成带前缀的id
  23. *
  24. * @param prefix
  25. * @return
  26. */
  27. public String generateId(String prefix) {
  28. return prefix + "-" + this.generateId();
  29. }
  30. private Long incrementId() {
  31. return redisService.increx("SnowflakeId", 1L);
  32. }
  33. public static void main(String[] args) {
  34. SnowflakeIdGenerator snowflakeIdGenerator = new SnowflakeIdGenerator(1);
  35. String prefix = DateUtils.getDate2String(YYYYMMDD, new Date());
  36. System.out.println("orderId : " + prefix + snowflakeIdGenerator.nextId());
  37. }
  38. }