商品列表 分组排序
This commit is contained in:
@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Update;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Component
|
||||
@Mapper
|
||||
@@ -20,7 +21,7 @@ public interface TbProductMapper {
|
||||
|
||||
List<TbProduct> selectByIdIn(@Param("ids") String ids);
|
||||
List<TbProduct> selectByIdInAndCheck(@Param("ids") String ids);
|
||||
List<TbProduct> selectHot(@Param("shopId") String shopId);
|
||||
List<TbProduct> selectHot(@Param("shopId") String shopId,@Param("list") Set<Integer> proIds);
|
||||
|
||||
List<TbProduct> selectIsSpecialty(@Param("shopId") Integer shopId);
|
||||
|
||||
|
||||
@@ -228,25 +228,41 @@ public class ProductService {
|
||||
TbShopInfo shopInfo = mpShopInfoMapper.selectById(shopId);
|
||||
concurrentMap.put("hots", handleDate(tbProducts,true,1,false, shopInfo));
|
||||
List<TbProductGroup> groupList = tbProductGroupMapper.selectByShopId(shopId, id);
|
||||
if (ObjectUtil.isNotEmpty(groupList) && groupList.size() > 0) {
|
||||
//热销
|
||||
TbProductGroup hot = new TbProductGroup();
|
||||
hot.setName("热销");
|
||||
List<TbProduct> hots = tbProductMapper.selectHot(shopId);
|
||||
hot.setProducts(handleDate(hots,true,1,false, shopInfo));
|
||||
Set<Integer> proSets = new HashSet<>();
|
||||
if (ObjectUtil.isNotEmpty(groupList)) {
|
||||
//商品
|
||||
groupList.parallelStream().forEach(g -> {
|
||||
if (g.getUseTime()==1) g.setIsSale(getIsSale(g.getSaleStartTime(),g.getSaleEndTime()));
|
||||
String in = g.getProductIds().substring(1, g.getProductIds().length() - 1);
|
||||
if (ObjectUtil.isNotEmpty(in) && ObjectUtil.isNotNull(in)) {
|
||||
|
||||
String[] idArray = in.split(",");
|
||||
Set<Integer> proSet = Arrays.stream(idArray)
|
||||
.map(Integer::parseInt)
|
||||
.collect(Collectors.toSet());
|
||||
proSets.addAll(proSet);
|
||||
|
||||
List<TbProduct> products = tbProductMapper.selectByIdInAndCheck(in);
|
||||
g.setProducts(handleDate(products,false,g.getIsSale(),false, shopInfo));
|
||||
products = handleDate(products, false, g.getIsSale(), false, shopInfo);
|
||||
if(StringUtils.isNotBlank(g.getSortMode()) && "1".equals(g.getSortMode())){
|
||||
products.sort(Comparator.comparing(TbProduct::getLowPrice, Comparator.nullsLast(Comparator.reverseOrder())));
|
||||
}else if (StringUtils.isNotBlank(g.getSortMode()) && "2".equals(g.getSortMode())) {
|
||||
products.sort(Comparator.comparing(TbProduct::getStockNumber, Comparator.nullsLast(Comparator.reverseOrder())));
|
||||
}
|
||||
g.setProducts(products);
|
||||
} else {
|
||||
g.setProducts(new ArrayList<>());
|
||||
}
|
||||
});
|
||||
groupList.sort(Comparator.comparingInt(TbProductGroup::getIsSale).reversed());
|
||||
|
||||
//热销
|
||||
TbProductGroup hot = new TbProductGroup();
|
||||
hot.setName("热销");
|
||||
List<TbProduct> hots = tbProductMapper.selectHot(shopId,proSets);
|
||||
hot.setProducts(handleDate(hots,true,1,false, shopInfo));
|
||||
groupList.add(0, hot);
|
||||
|
||||
concurrentMap.put("productInfo", groupList);
|
||||
}
|
||||
|
||||
|
||||
@@ -922,49 +922,51 @@
|
||||
select min( sku.suit ) as suit,tb.*
|
||||
from tb_product tb
|
||||
LEFT JOIN tb_product_sku sku ON tb.id = sku.product_id
|
||||
where tb.id in (${ids}) and is_show_mall =1 and sku.is_del = 0
|
||||
where tb.id in (${ids}) and sku.is_del = 0
|
||||
group by tb.id
|
||||
order by tb.sort asc
|
||||
</select>
|
||||
|
||||
<select id="selectByIdInAndCheck" resultMap="BaseResultMap">
|
||||
select min( sku.suit ) as suit,tb.*
|
||||
select min( sku.suit ) as suit,tb.*,sum(sku.real_sales_number) as stockNumber
|
||||
from tb_product tb
|
||||
LEFT JOIN tb_product_sku sku ON tb.id = sku.product_id
|
||||
where tb.id in (${ids}) and is_show_mall =1 and sku.is_del = 0 and sku.is_grounding=1 and tb.type_enum!='group' and tb.status = 1
|
||||
LEFT JOIN tb_product_sku sku ON tb.id = sku.product_id and sku.is_del = 0
|
||||
where tb.id in (${ids}) and tb.is_grounding=1 and tb.type_enum!='group' and tb.status = 1
|
||||
group by tb.id
|
||||
order by tb.sort asc
|
||||
</select>
|
||||
|
||||
<select id="selectHot" resultMap="BaseResultMap">
|
||||
select min(sku.suit) as suit, tb.*
|
||||
select min(sku.suit) as suit, tb.* ,realSalesNumber as stockNumber
|
||||
from tb_product tb
|
||||
LEFT JOIN tb_product_sku sku ON tb.id = sku.product_id
|
||||
JOIN (SELECT product_id
|
||||
JOIN (SELECT product_id ,SUM(real_sales_number) as realSalesNumber
|
||||
FROM tb_product_sku
|
||||
WHERE shop_id = #{shopId}
|
||||
and is_del = 0
|
||||
AND product_id IN
|
||||
<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
GROUP BY product_id
|
||||
ORDER BY SUM(real_sales_number) DESC LIMIT 3) AS top_products ON tb.id = top_products.product_id
|
||||
where is_show_mall = 1
|
||||
and tb.status = 1
|
||||
ORDER BY stockNumber DESC LIMIT 3) AS top_products ON tb.id = top_products.product_id
|
||||
where
|
||||
tb.status = 1
|
||||
and tb.type_enum != 'group'
|
||||
and sku.is_del = 0
|
||||
and sku.is_grounding = 1
|
||||
and tb.is_grounding = 1
|
||||
group by tb.id
|
||||
order by tb.sort asc
|
||||
order by stockNumber desc
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectIsSpecialty" resultMap="BaseResultMap">
|
||||
select min(sku.suit) as suit, tb.*
|
||||
from tb_product tb
|
||||
LEFT JOIN tb_product_sku sku ON tb.id = sku.product_id
|
||||
LEFT JOIN tb_product_sku sku ON tb.id = sku.product_id and sku.is_del = 0
|
||||
where is_hot = 1
|
||||
and is_show_mall = 1
|
||||
and tb.shop_id = #{shopId}
|
||||
and tb.status = 1
|
||||
and sku.is_del = 0
|
||||
and sku.is_grounding = 1
|
||||
and tb.is_grounding = 1
|
||||
and tb.type_enum != 'group'
|
||||
group by tb.id
|
||||
order by tb.sort asc
|
||||
|
||||
Reference in New Issue
Block a user