|
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.dal.mysql.cart;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
+import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
|
|
import cn.iocoder.yudao.module.trade.dal.dataobject.cart.TradeCartDO;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -34,6 +35,19 @@ public interface TradeCartMapper extends BaseMapperX<TradeCartDO> {
|
|
|
return CollUtil.getFirst(result) != null ? MapUtil.getInt(result.get(0), "sumCount") : 0;
|
|
|
}
|
|
|
|
|
|
+ default Map<Long, Integer> selectSumMapByUserId(Long userId) {
|
|
|
+ // SQL sum 查询
|
|
|
+ List<Map<String, Object>> result = selectMaps(new QueryWrapper<TradeCartDO>()
|
|
|
+ .select("spu_id, SUM(count) AS sumCount")
|
|
|
+ .eq("user_id", userId)
|
|
|
+ .eq("add_status", true) // 只计算添加到购物车中的
|
|
|
+ .eq("order_status", false) // 必须未下单
|
|
|
+ .groupBy("spu_id"));
|
|
|
+ // 获得数量
|
|
|
+ return CollectionUtils.convertMap(result, item -> MapUtil.getLong(item, "spu_id"),
|
|
|
+ item -> MapUtil.getInt(item, "sumCount"));
|
|
|
+ }
|
|
|
+
|
|
|
default TradeCartDO selectById(Long id, Long userId) {
|
|
|
return selectOne(TradeCartDO::getId, id,
|
|
|
TradeCartDO::getUserId, userId);
|