|
@@ -1,12 +1,19 @@
|
|
|
package com.smcic.api.operate.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.smcic.api.operate.entity.KeysConst;
|
|
|
import com.smcic.api.operate.entity.Operate;
|
|
|
import com.smcic.api.operate.mapper.OperateMapper;
|
|
|
import com.smcic.api.operate.service.IOperateService;
|
|
|
import com.smcic.core.advice.APIException;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.http.util.TextUtils;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneOffset;
|
|
|
|
|
@@ -19,11 +26,18 @@ import java.time.ZoneOffset;
|
|
|
* @since 2022-12-10
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class OperateServiceImpl extends ServiceImpl<OperateMapper, Operate> implements IOperateService {
|
|
|
|
|
|
+ @Resource
|
|
|
+ private RedisTemplate<String, String> redisTemplate;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ObjectMapper objectMapper;
|
|
|
+
|
|
|
public void verify(Integer operateId){
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
- Operate ope = getById(operateId);
|
|
|
+ Operate ope = getFromCache(operateId);
|
|
|
|
|
|
if(null != ope.getStartTime() && ope.getStartTime().isAfter(now)){
|
|
|
throw new APIException(400, "活动尚未开始");
|
|
@@ -35,6 +49,24 @@ public class OperateServiceImpl extends ServiceImpl<OperateMapper, Operate> impl
|
|
|
|
|
|
}
|
|
|
|
|
|
+ public Operate getFromCache(Integer operateId){
|
|
|
+ String ope = redisTemplate.opsForValue().get(KeysConst.OPERATE + operateId);
|
|
|
+ Operate operate = new Operate();
|
|
|
+ try {
|
|
|
+ if(TextUtils.isEmpty(ope)){
|
|
|
+ operate = getById(operateId);
|
|
|
+
|
|
|
+ redisTemplate.opsForValue().set(KeysConst.OPERATE + operateId, objectMapper.writeValueAsString(operate));
|
|
|
+
|
|
|
+ }else{
|
|
|
+ operate = objectMapper.readValue(ope, Operate.class);
|
|
|
+ }
|
|
|
+ } catch (JsonProcessingException e) {
|
|
|
+ log.error("获取operate失败", e);
|
|
|
+ }
|
|
|
+ return operate;
|
|
|
+ }
|
|
|
+
|
|
|
public Long getTTl(Integer operateId){
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
Operate ope = getById(operateId);
|