package com.yeshi.fanli.service.impl.taobao.dataoke;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
|
import com.yeshi.fanli.dao.mybatis.taobao.dataoke.DaTaoKeDetailMapper;
|
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
|
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService;
|
import com.yeshi.fanli.util.RedisManager;
|
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
|
|
@Service
|
public class DaTaoKeGoodsServiceImpl implements DaTaoKeGoodsService {
|
|
@Resource
|
private DaTaoKeDetailMapper daTaoKeDetailMapper;
|
|
@Resource
|
private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
|
|
@Resource
|
private RedisManager redisManager;
|
|
private List<DaTaoKeDetail> reSearchDetails(List<DaTaoKeDetail> list) {
|
Map<Long, DaTaoKeDetail> map = new HashMap<>();
|
List<Long> idList = new ArrayList<>();
|
if (list != null) {
|
for (DaTaoKeDetail detail : list) {
|
idList.add(detail.getId());
|
map.put(detail.getId(), detail);
|
}
|
List<DaTaoKeDetail> detailList = daTaoKeGoodsDetailService.listByIds(idList);
|
if (detailList != null)
|
for (DaTaoKeDetail dk : detailList) {
|
dk.setUpdateTime(new Date());// 增加更新时间
|
dk.setSalesNum(map.get(dk.getId()).getSalesNum());// 更改销量);
|
}
|
return detailList;
|
} else
|
return null;
|
}
|
|
@Override
|
public List<DaTaoKeDetail> getCurrentSalesRankGoodsList(Integer cid) {
|
// 缓存
|
String key = "dataoke-goods-shishirexiao-" + cid;
|
List<DaTaoKeDetail> list = redisManager.getObjList(DaTaoKeDetail.class, key);
|
if ((list != null && list.size() > 0
|
&& System.currentTimeMillis() - list.get(0).getUpdateTime().getTime() > 1000 * 60 * 20) || list == null
|
|| list.size() == 0)// 超过20分钟未更新
|
{
|
list = DaTaoKeUtil.getCurrentSalesRank(cid);
|
list = reSearchDetails(list);
|
if (list != null && list.size() > 0)
|
redisManager.saveObjList(list, key, null);// 长期缓存
|
return list;
|
} else
|
return list;
|
|
}
|
|
@Override
|
public List<DaTaoKeDetail> getCurrentDaySalesRankGoodsList(Integer cid) {
|
|
// 缓存
|
String key = "dataoke-goods-jinrirexiao-" + cid;
|
List<DaTaoKeDetail> list = redisManager.getObjList(DaTaoKeDetail.class, key);
|
if ((list != null && list.size() > 0
|
&& System.currentTimeMillis() - list.get(0).getUpdateTime().getTime() > 1000 * 60 * 20) || list == null
|
|| list.size() == 0)// 超过20分钟未更新
|
{
|
list = DaTaoKeUtil.getCurrentDaySalesRank(cid);
|
list = reSearchDetails(list);
|
if (list != null && list.size() > 0)
|
redisManager.saveObjList(list, key, null);// 长期缓存
|
return list;
|
} else
|
return list;
|
|
}
|
|
@Override
|
public List<DaTaoKeDetail> getCurrentHotSalesRankGoodsList() {
|
// 缓存
|
String key = "dataoke-goods-rexiao";
|
List<DaTaoKeDetail> list = redisManager.getObjList(DaTaoKeDetail.class, key);
|
if ((list != null && list.size() > 0
|
&& System.currentTimeMillis() - list.get(0).getUpdateTime().getTime() > 1000 * 60 * 20) || list == null
|
|| list.size() == 0)// 超过20分钟未更新
|
{
|
list = DaTaoKeUtil.getCurrentHotSalesRank();
|
LogHelper.test("热销数量:" + list.size());
|
list = reSearchDetails(list);
|
if (list != null && list.size() > 0)
|
redisManager.saveObjList(list, key, null);// 长期缓存
|
return list;
|
} else
|
return list;
|
}
|
|
@Override
|
public List<DaTaoKeDetail> getGoodsNotInList(Long cid, List<Long> listId, int count) {
|
return daTaoKeDetailMapper.getGoodsNotInList(cid, listId, count);
|
}
|
|
@Override
|
public List<DaTaoKeDetail> listBySellerId(long start, int count, Long sellerId){
|
return daTaoKeDetailMapper.listBySellerId(start, count, sellerId);
|
}
|
|
}
|