package cn.binux.item.service.impl; import cn.binux.constant.Const; import cn.binux.item.service.ItemService; import cn.binux.mapper.TbItemDescMapper; import cn.binux.mapper.TbItemMapper; import cn.binux.pojo.TbItem; import cn.binux.pojo.TbItemDesc; import cn.binux.redis.service.JedisClient; import cn.binux.utils.FastJsonConvert; import com.alibaba.dubbo.config.annotation.Reference; import com.alibaba.dubbo.config.annotation.Service; 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.Value; /** * 商品 Service 实现 * * @author xubin. * @create 2017-02-06 下午3:41 */ @Service(version = Const.XBIN_STORE_ITEM_VERSION) public class ItemServiceImpl implements ItemService { private static final Logger logger = LoggerFactory.getLogger(ItemServiceImpl.class); @Autowired private TbItemMapper itemMapper; @Autowired private TbItemDescMapper itemDescMapper; @Reference(version = Const.XBIN_STORE_REDIS_VERSION) private JedisClient jedisClient; @Value("${redisKey.prefix.item_info_profix}") private String ITEM_INFO_PROFIX; @Value("${redisKey.suffix.item_info_base_suffix}") private String ITEM_INFO_BASE_SUFFIX; @Value("${redisKey.suffix.item_info_desc_suffix}") private String ITEM_INFO_DESC_SUFFIX; @Value("${redisKey.expire_time}") private Integer REDIS_EXPIRE_TIME; @Override public TbItem getItemById(Long itemId) { String key = ITEM_INFO_PROFIX + itemId + ITEM_INFO_BASE_SUFFIX; try { String jsonItem = jedisClient.get(key); if (StringUtils.isNotBlank(jsonItem)) { logger.info("Redis 查询 商品信息 商品ID:" + itemId); return FastJsonConvert.convertJSONToObject(jsonItem, TbItem.class); } else { logger.error("Redis 查询不到 key:" + key); } } catch (Exception e) { logger.error("商品信息 获取缓存报错",e); } logger.info("根据商品ID"+itemId+"查询商品!"); TbItem item = itemMapper.selectByPrimaryKey(itemId); try { jedisClient.set(key, FastJsonConvert.convertObjectToJSON(item)); jedisClient.expire(key, REDIS_EXPIRE_TIME); logger.info("Redis 缓存商品信息 key:" + key); } catch (Exception e) { logger.error("缓存错误商品ID:" + itemId, e); } return item; } @Override public TbItemDesc getItemDescById(Long itemId) { String key = ITEM_INFO_PROFIX + itemId + ITEM_INFO_DESC_SUFFIX; try { String jsonItem = jedisClient.get(key); if (StringUtils.isNotBlank(jsonItem)) { logger.info("Redis 查询 商品详情 商品ID:" + itemId); return FastJsonConvert.convertJSONToObject(jsonItem, TbItemDesc.class); } else { logger.error("Redis 查询不到 key:" + key); } } catch (Exception e) { logger.error("商品详情 获取缓存报错",e); } logger.info("根据商品ID"+itemId+"查询商品详情!"); TbItemDesc itemDesc = itemDescMapper.selectByPrimaryKey(itemId); try { jedisClient.set(key, FastJsonConvert.convertObjectToJSON(itemDesc)); jedisClient.expire(key, REDIS_EXPIRE_TIME); logger.info("Redis 缓存 商品详情 key:" + key); } catch (Exception e) { logger.error("缓存错误商品ID:" + itemId, e); } return itemDesc; } }