master:APP商品访问榜调优;
parent
60a76e9c7b
commit
9dad51c9a5
|
|
@ -22,6 +22,7 @@ public class StoreProdAppViewRankResDTO {
|
|||
private List<SPAVRViewCountDTO> viewCountList;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public static class SPAVRViewCountDTO {
|
||||
@ApiModelProperty(value = "档口ID")
|
||||
private Long storeId;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ package com.ruoyi.xkt.service.impl;
|
|||
import com.ruoyi.common.constant.CacheConstants;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.xkt.dto.StoreProductStatistics.StoreProdAppViewRankResDTO;
|
||||
import com.ruoyi.xkt.dto.storeProduct.StoreProdPriceAndMainPicAndTagDTO;
|
||||
import com.ruoyi.xkt.mapper.StoreProductMapper;
|
||||
import com.ruoyi.xkt.mapper.StoreProductStatisticsMapper;
|
||||
import com.ruoyi.xkt.service.IStoreProductStatisticsService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
|
@ -13,8 +15,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 档口商品统计 服务层实现
|
||||
|
|
@ -27,6 +32,7 @@ public class StoreProductStatisticsServiceImpl implements IStoreProductStatistic
|
|||
|
||||
final StoreProductStatisticsMapper prodStatisticsMapper;
|
||||
final RedisCache redisCache;
|
||||
final StoreProductMapper storeProdMapper;
|
||||
|
||||
/**
|
||||
* 档口商品访问榜
|
||||
|
|
@ -48,7 +54,18 @@ public class StoreProductStatisticsServiceImpl implements IStoreProductStatistic
|
|||
if (CollectionUtils.isEmpty(viewCountList)) {
|
||||
return redisAppViewRank;
|
||||
}
|
||||
redisAppViewRank.setViewCountList(viewCountList);
|
||||
final List<Long> storeProdIdList = viewCountList.stream().map(StoreProdAppViewRankResDTO.SPAVRViewCountDTO::getStoreProdId).collect(Collectors.toList());
|
||||
List<StoreProdPriceAndMainPicAndTagDTO> prodInfoList = this.storeProdMapper.selectPriceAndMainPicAndTagList(storeProdIdList);
|
||||
Map<Long, StoreProdPriceAndMainPicAndTagDTO> prodInfoMap = CollectionUtils.isEmpty(prodInfoList) ? new HashMap<>()
|
||||
: prodInfoList.stream().collect(Collectors.toMap(StoreProdPriceAndMainPicAndTagDTO::getStoreProdId, v -> v));
|
||||
List<StoreProdAppViewRankResDTO.SPAVRViewCountDTO> retViewList = viewCountList.stream()
|
||||
.filter(x -> prodInfoMap.containsKey(x.getStoreProdId()))
|
||||
.map(x -> {
|
||||
StoreProdPriceAndMainPicAndTagDTO prodInfo = prodInfoMap.get(x.getStoreProdId());
|
||||
return x.setStoreId(prodInfo.getStoreId()).setStoreProdId(x.getStoreProdId()).setStoreName(prodInfo.getStoreName())
|
||||
.setMainPicUrl(prodInfo.getMainPicUrl()).setProdArtNum(prodInfo.getProdArtNum()).setPrice(prodInfo.getMinPrice());
|
||||
}).collect(Collectors.toList());
|
||||
redisAppViewRank.setViewCountList(retViewList);
|
||||
// 放到redis中
|
||||
redisCache.setCacheObject(CacheConstants.STORE_PROD_VIEW_COUNT_CACHE, redisAppViewRank, 1, TimeUnit.DAYS);
|
||||
return redisAppViewRank;
|
||||
|
|
|
|||
|
|
@ -60,25 +60,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
<select id="selectTop10ProdViewCount">
|
||||
SELECT
|
||||
sps.store_id,
|
||||
s.store_name,
|
||||
sps.store_prod_id,
|
||||
sp.prod_art_num,
|
||||
spcp.min_price AS price,
|
||||
sps.view_count,
|
||||
sf.file_url AS mainPicUrl
|
||||
SUM( sps.view_count ) AS viewCount
|
||||
FROM
|
||||
store_product_statistics sps
|
||||
JOIN store s ON sps.store_id = s.id
|
||||
JOIN store_product sp ON sps.store_prod_id = sp.id AND sp.prod_status IN (2)
|
||||
JOIN store_product_file spf ON sps.store_prod_id = spf.store_prod_id AND spf.del_flag = 0 AND spf.file_type = 1 AND spf.order_num = 1
|
||||
JOIN sys_file sf ON spf.file_id = sf.id
|
||||
LEFT JOIN ( SELECT store_prod_id, MIN( price ) AS min_price FROM store_product_color_size GROUP BY store_prod_id ) spcp ON sp.id = spcp.store_prod_id
|
||||
WHERE
|
||||
sps.del_flag = 0
|
||||
AND sps.voucher_date BETWEEN #{threeMonthAgo} AND #{yesterday}
|
||||
sps.del_flag = 0 AND sps.voucher_date BETWEEN #{threeMonthAgo} AND #{yesterday}
|
||||
GROUP BY
|
||||
sps.store_prod_id
|
||||
ORDER BY
|
||||
sps.view_count DESC
|
||||
viewCount DESC
|
||||
LIMIT 10
|
||||
</select>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue