12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author syj
- * @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 = getFromCache(operateId);
- if(null != ope.getStartTime() && ope.getStartTime().isAfter(now)){
- throw new APIException(400, "活动尚未开始");
- }
- if(null != ope.getEndTime() && ope.getEndTime().isBefore(now)){
- throw new APIException(400, "活动已经结束");
- }
- }
- 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);
- if(null == ope.getEndTime()) return 3600 * 24 * 365L;
- return ope.getEndTime().isAfter(now) ? ope.getEndTime().toEpochSecond(ZoneOffset.of("+8")) - now.toEpochSecond(ZoneOffset.of("+8")) : 1L;
- }
- }
|