| | |
| | | package com.yeshi.fanli.util.cache;
|
| | |
|
| | | import java.util.Calendar;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import com.yeshi.fanli.entity.taobao.SearchFilter;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
|
| | | import org.springframework.stereotype.Component;
|
| | |
|
| | | import com.google.gson.Gson;
|
| | | import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
|
| | | import com.yeshi.fanli.util.RedisKeyEnum;
|
| | | import com.yeshi.fanli.util.RedisManager;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import org.yeshi.utils.TimeUtil;
|
| | |
|
| | | @Component
|
| | | public class TaoBaoGoodsCacheUtil {
|
| | | @Resource
|
| | | private RedisManager redisManager;
|
| | |
|
| | | /**
|
| | | * 保存常规的淘宝商品详情(搜索,详情)
|
| | | *
|
| | | * @param goods
|
| | | */
|
| | | public void saveCommonTaoBaoGoodsInfo(TaoBaoGoodsBrief goods) {
|
| | | if (goods == null || goods.getAuctionId() == null)
|
| | | return;
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoGoodsCommon, goods.getAuctionId() + "");
|
| | | // 保存20分钟
|
| | | redisManager.cacheCommonString(key, new Gson().toJson(goods), 60 * 20);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取缓存
|
| | | *
|
| | | * @param auctionId
|
| | | * @return
|
| | | */
|
| | | public TaoBaoGoodsBrief getCommonTaoBaoGoodsInfo(long auctionId) {
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoGoodsCommon, auctionId + "");
|
| | | String value = redisManager.getCommonString(key);
|
| | | if (!StringUtil.isNullOrEmpty(value)) {
|
| | | return new Gson().fromJson(value, TaoBaoGoodsBrief.class);
|
| | | } else
|
| | | return null;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 是否可以添加到更新队列中
|
| | | *
|
| | | * @param auctionId
|
| | | * @return
|
| | | */
|
| | | public boolean canAddToUpdateQueue(Long auctionId) {
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoQueue, auctionId + "");
|
| | | String value = redisManager.getCommonString(key);
|
| | | if (StringUtil.isNullOrEmpty(value))
|
| | | return true;
|
| | | else
|
| | | return false;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 增加添加到队列中的记录
|
| | | *
|
| | | * @param auctionId
|
| | | */
|
| | | public void addAddToQueueHistory(Long auctionId) {
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoQueue, auctionId + "");
|
| | | redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 有效期2个小时
|
| | | }
|
| | |
|
| | | /**
|
| | | * 查询商品是否需要更新
|
| | | *
|
| | | * @param actionId
|
| | | * @return
|
| | | */
|
| | | public boolean needUpdate(Long actionId) {
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoUpdate, actionId + "");
|
| | | String value = redisManager.getCommonString(key);
|
| | | if (StringUtil.isNullOrEmpty(value))
|
| | | return true;
|
| | | else
|
| | | return false;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 添加更新记录数据
|
| | | *
|
| | | * @param actionId
|
| | | * @return
|
| | | */
|
| | | public void addUpdateHistory(Long actionId) {
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoUpdate, actionId + "");
|
| | | redisManager.cacheCommonString(key, "1", 60 * 60 * 1);// 有效期1个小时
|
| | | }
|
| | |
|
| | | /**
|
| | | * 删除更新记录
|
| | | */
|
| | | public void removeUpdateHistory() {
|
| | | // TODO 凌晨删除缓存记录
|
| | | }
|
| | |
|
| | | /**
|
| | | * 保存口令对应的商品ID
|
| | | *
|
| | | * @param token
|
| | | * @param auctionId
|
| | | */
|
| | | public void saveTokenGoodsIdMap(String token, Long auctionId) {
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoTokenGoodsMap, StringUtil.Md5(token));
|
| | | redisManager.cacheCommonString(key, auctionId + "", 60 * 30);// 有效期30分钟
|
| | | }
|
| | |
|
| | | /**
|
| | | * 通过口令获取商品ID
|
| | | *
|
| | | * @param token
|
| | | * @return
|
| | | */
|
| | | public Long getGoodsIdByToken(String token) {
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoTokenGoodsMap, StringUtil.Md5(token));
|
| | | String goodsId = redisManager.getCommonString(key);
|
| | | if (StringUtil.isNullOrEmpty(goodsId))
|
| | | return null;
|
| | | return Long.parseLong(goodsId);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 缓存转链结果
|
| | | *
|
| | | * @param auctionId
|
| | | * @param pid
|
| | | * @param link void 返回类型
|
| | | * @throws
|
| | | * @Title: cacheBaseConvertLink
|
| | | * @Description:
|
| | | */
|
| | | public void cacheBaseConvertLink(Long auctionId, String pid, String link) {
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoBaseLink, StringUtil.Md5(auctionId + "#" + pid));
|
| | | //
|
| | | Calendar calendar = Calendar.getInstance();
|
| | | long now = calendar.getTimeInMillis();
|
| | | calendar.add(Calendar.HOUR, 1);
|
| | |
|
| | | Long time = TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(calendar.getTimeInMillis(), "yyyy-MM-dd HH"),
|
| | | "yyyy-MM-dd HH");
|
| | |
|
| | | int second = (int) ((time - now) / 1000);
|
| | | if (second <= 0)
|
| | | second = 1;
|
| | |
|
| | | redisManager.cacheCommonString(key, link, second);// 有效期30分钟
|
| | | }
|
| | |
|
| | | public String getBaseConvertLink(Long auctionId, String pid) {
|
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoBaseLink, StringUtil.Md5(auctionId + "#" + pid));
|
| | | String url = redisManager.getCommonString(key);
|
| | |
|
| | | return StringUtil.isNullOrEmpty(url) ? null : url;
|
| | | }
|
| | |
|
| | |
|
| | | /**
|
| | | * 保存搜索接口
|
| | | *
|
| | | * @param sf
|
| | | * @param result
|
| | | */
|
| | | public void saveSearchResult(SearchFilter sf, TaoBaoSearchResult result) {
|
| | | if (result == null||result.getTaoBaoGoodsBriefs()==null)
|
| | | return;
|
| | | String key = RedisKeyEnum.taobaoSearchResult.getKey() + StringUtil.Md5(new Gson().toJson(sf));
|
| | | //缓存20分钟
|
| | | redisManager.cacheCommonString(key, new Gson().toJson(result), 60 * 20);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取搜索结果
|
| | | *
|
| | | * @param sf
|
| | | * @return
|
| | | */
|
| | | public TaoBaoSearchResult getSearchResult(SearchFilter sf) {
|
| | | String key = RedisKeyEnum.taobaoSearchResult.getKey() + StringUtil.Md5(new Gson().toJson(sf));
|
| | | String result = redisManager.getCommonString(key);
|
| | |
|
| | | if (StringUtil.isNullOrEmpty(result))
|
| | | return null;
|
| | | else
|
| | | return new Gson().fromJson(result, TaoBaoSearchResult.class);
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.util.cache; |
| | | |
| | | import java.util.Calendar; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.entity.taobao.SearchFilter; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import com.google.gson.Gson; |
| | | import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; |
| | | import com.yeshi.fanli.util.RedisKeyEnum; |
| | | import com.yeshi.fanli.util.RedisManager; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import org.yeshi.utils.TimeUtil; |
| | | |
| | | @Component |
| | | public class TaoBaoGoodsCacheUtil { |
| | | @Resource |
| | | private RedisManager redisManager; |
| | | |
| | | /** |
| | | * 保存常规的淘宝商品详情(搜索,详情) |
| | | * |
| | | * @param goods |
| | | */ |
| | | public void saveCommonTaoBaoGoodsInfo(TaoBaoGoodsBrief goods) { |
| | | if (goods == null || goods.getAuctionId() == null) |
| | | return; |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoGoodsCommon, goods.getAuctionId() + ""); |
| | | // 保存20分钟 |
| | | redisManager.cacheCommonString(key, new Gson().toJson(goods), 60 * 20); |
| | | } |
| | | |
| | | /** |
| | | * 获取缓存 |
| | | * |
| | | * @param auctionId |
| | | * @return |
| | | */ |
| | | public TaoBaoGoodsBrief getCommonTaoBaoGoodsInfo(String auctionId) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoGoodsCommon, auctionId + ""); |
| | | String value = redisManager.getCommonString(key); |
| | | if (!StringUtil.isNullOrEmpty(value)) { |
| | | return new Gson().fromJson(value, TaoBaoGoodsBrief.class); |
| | | } else |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 是否可以添加到更新队列中 |
| | | * |
| | | * @param auctionId |
| | | * @return |
| | | */ |
| | | public boolean canAddToUpdateQueue(String auctionId) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoQueue, auctionId + ""); |
| | | String value = redisManager.getCommonString(key); |
| | | if (StringUtil.isNullOrEmpty(value)) |
| | | return true; |
| | | else |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 增加添加到队列中的记录 |
| | | * |
| | | * @param auctionId |
| | | */ |
| | | public void addAddToQueueHistory(String auctionId) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoQueue, auctionId + ""); |
| | | redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 有效期2个小时 |
| | | } |
| | | |
| | | /** |
| | | * 查询商品是否需要更新 |
| | | * |
| | | * @param actionId |
| | | * @return |
| | | */ |
| | | public boolean needUpdate(String actionId) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoUpdate, actionId + ""); |
| | | String value = redisManager.getCommonString(key); |
| | | if (StringUtil.isNullOrEmpty(value)) |
| | | return true; |
| | | else |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 添加更新记录数据 |
| | | * |
| | | * @param actionId |
| | | * @return |
| | | */ |
| | | public void addUpdateHistory(String actionId) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoUpdate, actionId + ""); |
| | | redisManager.cacheCommonString(key, "1", 60 * 60 * 1);// 有效期1个小时 |
| | | } |
| | | |
| | | /** |
| | | * 删除更新记录 |
| | | */ |
| | | public void removeUpdateHistory() { |
| | | // TODO 凌晨删除缓存记录 |
| | | } |
| | | |
| | | /** |
| | | * 保存口令对应的商品ID |
| | | * |
| | | * @param token |
| | | * @param auctionId |
| | | */ |
| | | public void saveTokenGoodsIdMap(String token, String auctionId) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoTokenGoodsMap, StringUtil.Md5(token)); |
| | | redisManager.cacheCommonString(key, auctionId + "", 60 * 30);// 有效期30分钟 |
| | | } |
| | | |
| | | /** |
| | | * 通过口令获取商品ID |
| | | * |
| | | * @param token |
| | | * @return |
| | | */ |
| | | public String getGoodsIdByToken(String token) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoTokenGoodsMap, StringUtil.Md5(token)); |
| | | String goodsId = redisManager.getCommonString(key); |
| | | if (StringUtil.isNullOrEmpty(goodsId)) |
| | | return null; |
| | | return goodsId; |
| | | } |
| | | |
| | | /** |
| | | * 缓存转链结果 |
| | | * |
| | | * @param auctionId |
| | | * @param pid |
| | | * @param link void 返回类型 |
| | | * @throws |
| | | * @Title: cacheBaseConvertLink |
| | | * @Description: |
| | | */ |
| | | public void cacheBaseConvertLink(String auctionId, String pid, String link) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoBaseLink, StringUtil.Md5(auctionId + "#" + pid)); |
| | | // |
| | | Calendar calendar = Calendar.getInstance(); |
| | | long now = calendar.getTimeInMillis(); |
| | | calendar.add(Calendar.HOUR, 1); |
| | | |
| | | Long time = TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(calendar.getTimeInMillis(), "yyyy-MM-dd HH"), |
| | | "yyyy-MM-dd HH"); |
| | | |
| | | int second = (int) ((time - now) / 1000); |
| | | if (second <= 0) |
| | | second = 1; |
| | | |
| | | redisManager.cacheCommonString(key, link, second);// 有效期30分钟 |
| | | } |
| | | |
| | | public String getBaseConvertLink(String auctionId, String pid) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoBaseLink, StringUtil.Md5(auctionId + "#" + pid)); |
| | | String url = redisManager.getCommonString(key); |
| | | |
| | | return StringUtil.isNullOrEmpty(url) ? null : url; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 保存搜索接口 |
| | | * |
| | | * @param sf |
| | | * @param result |
| | | */ |
| | | public void saveSearchResult(SearchFilter sf, TaoBaoSearchResult result) { |
| | | if (result == null||result.getTaoBaoGoodsBriefs()==null) |
| | | return; |
| | | String key = RedisKeyEnum.taobaoSearchResult.getKey() + StringUtil.Md5(new Gson().toJson(sf)); |
| | | //缓存20分钟 |
| | | redisManager.cacheCommonString(key, new Gson().toJson(result), 60 * 20); |
| | | } |
| | | |
| | | /** |
| | | * 获取搜索结果 |
| | | * |
| | | * @param sf |
| | | * @return |
| | | */ |
| | | public TaoBaoSearchResult getSearchResult(SearchFilter sf) { |
| | | String key = RedisKeyEnum.taobaoSearchResult.getKey() + StringUtil.Md5(new Gson().toJson(sf)); |
| | | String result = redisManager.getCommonString(key); |
| | | |
| | | if (StringUtil.isNullOrEmpty(result)) |
| | | return null; |
| | | else |
| | | return new Gson().fromJson(result, TaoBaoSearchResult.class); |
| | | } |
| | | |
| | | } |