From 53c315297a3906e567b01107a85836528a664206 Mon Sep 17 00:00:00 2001 From: seatonwan9 Date: 星期二, 19 八月 2025 18:11:38 +0800 Subject: [PATCH] 产品订购sql --- src/main/java/com/webmanage/service/impl/TokenServiceImpl.java | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 45 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/webmanage/service/impl/TokenServiceImpl.java b/src/main/java/com/webmanage/service/impl/TokenServiceImpl.java new file mode 100644 index 0000000..964e8b4 --- /dev/null +++ b/src/main/java/com/webmanage/service/impl/TokenServiceImpl.java @@ -0,0 +1,45 @@ +package com.webmanage.service.impl; + +import com.webmanage.service.TokenService; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +@Service +public class TokenServiceImpl implements TokenService { + + private static final String IDEMPOTENCY_TOKEN_PREFIX = "idempotency:token:"; + private static final long DEFAULT_EXPIRE_SECONDS = 60 * 5; // 5鍒嗛挓 + + @Resource + private RedisTemplate<String, Object> redisTemplate; + + @Override + public String generateToken(Long userId) { + String token = UUID.randomUUID().toString().replace("-", ""); + String key = IDEMPOTENCY_TOKEN_PREFIX + token; + // 鍊间笉閲嶈锛岃缃竴涓爣璁板嵆鍙� + redisTemplate.opsForValue().set(key, userId == null ? 0L : userId, DEFAULT_EXPIRE_SECONDS, TimeUnit.SECONDS); + return token; + } + + @Override + public boolean verifyAndConsume(String token) { + if (token == null || token.isEmpty()) { + return false; + } + String key = IDEMPOTENCY_TOKEN_PREFIX + token; + Boolean existed = redisTemplate.hasKey(key); + if (Boolean.TRUE.equals(existed)) { + // 娑堣垂鍚庡垹闄わ紝纭繚涓�娆℃�� + redisTemplate.delete(key); + return true; + } + return false; + } +} + + -- Gitblit v1.8.0