diff --git a/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java b/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java index 7e167a93e..39666265b 100644 --- a/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java @@ -4,6 +4,7 @@ import com.iformall.domain.po.PushLimit; import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxMall; import com.iformall.domain.po.WxScoreRules; +import com.iformall.domain.vo.WxCouponCVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cache.CacheManager; @@ -122,4 +123,21 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("couponDetailRedisTemplate") + public RedisTemplate getCouponDetailRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(WxCouponCVo.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java index 9dd32a89b..502710f08 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java @@ -17,9 +17,13 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; import org.springframework.web.bind.annotation.*; import java.util.Date; +import java.util.concurrent.TimeUnit; @RestController @RequestMapping("/api/wxCoupon") @@ -29,8 +33,10 @@ public class WxCouponController extends BaseController { @Autowired private WxCouponChannelService wxCouponChannelService; + @Autowired - private WxCouponService wxCouponService; + @Qualifier("couponDetailRedisTemplate") + RedisTemplate cdRedisTemplate; @ApiOperation("根据id(couponChannel)查询接口") @@ -49,10 +55,40 @@ public class WxCouponController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId转换失败" + couponChannelId); } + String key = "cc:" + couponChannelId; + + ValueOperations operations = cdRedisTemplate.opsForValue(); + // 缓存 + boolean hasKey = cdRedisTemplate.hasKey(key); + if(hasKey) { + // 从缓存获取用户信息 + WxCouponCVo wxCouponCVo = operations.get(key); + // 更新状态 + WxCouponCVo couponCVo = wxCouponChannelService.findVoStatusDetail(couponChannelIdL); + if (wxCouponCVo == null) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY); + } + wxCouponCVo.setRemainInventory(couponCVo.getRemainInventory()); + wxCouponCVo.setStatus(couponCVo.getStatus()); + // end of 更新状态 + updateActivityStatus(wxCouponCVo); + return new ResultData(wxCouponCVo); + } + WxCouponCVo wxCouponCVo = wxCouponChannelService.findDetailVo(couponChannelIdL); - if (wxCouponCVo == null) + if (wxCouponCVo == null) { return new ResultData(ErrorCode.COUPON_IS_EMPTY); + } + + // 插入缓存 + operations.set(key, wxCouponCVo, 3600, TimeUnit.SECONDS); + updateActivityStatus(wxCouponCVo); + + return new ResultData(wxCouponCVo); + } + + private void updateActivityStatus(WxCouponCVo wxCouponCVo) { if (wxCouponCVo.getTargetAd()!= null && wxCouponCVo.getTargetAd().equals(EnumCouponChannelType.COUPON_CHANNEL_ID_TIMED.getCode())) { Date now = new Date(); @@ -65,8 +101,6 @@ public class WxCouponController extends BaseController { wxCouponCVo.setActivityStatus(EnumCouponChannelActivityStatus.STARTED.getCode()); } } - - return new ResultData(wxCouponCVo); } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java index eae1b6590..332e4a631 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java @@ -23,6 +23,8 @@ public interface WxCouponChannelMapper extends CommonMapper listVo(WxCouponChannel record) { return wxCouponChannelMapper.findVoList(record); diff --git a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml index 7959979ff..282ec1180 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml @@ -218,6 +218,10 @@ cc.qr_code + + cc.id,cc.coupon_id,c.remain_inventory,c.status + + @@ -273,6 +277,13 @@ where cc.id = #{id} + +