package cn.iocoder.yudao.module.trade.dal.mysql.order; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.map.MapUtil; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; @Mapper public interface TradeOrderItemMapper extends BaseMapperX { default int updateAfterSaleStatus(Long id, Integer oldAfterSaleStatus, Integer newAfterSaleStatus, Long afterSaleId) { return update(new TradeOrderItemDO().setAfterSaleStatus(newAfterSaleStatus).setAfterSaleId(afterSaleId), new LambdaUpdateWrapper<>(new TradeOrderItemDO().setId(id).setAfterSaleStatus(oldAfterSaleStatus))); } default List selectListByOrderId(Long orderId) { return selectList(TradeOrderItemDO::getOrderId, orderId); } default List selectListByOrderId(Collection orderIds) { return selectList(TradeOrderItemDO::getOrderId, orderIds); } default TradeOrderItemDO selectByIdAndUserId(Long orderItemId, Long loginUserId) { return selectOne(new LambdaQueryWrapperX() .eq(TradeOrderItemDO::getId, orderItemId) .eq(TradeOrderItemDO::getUserId, loginUserId)); } default List selectListByOrderIdAndCommentStatus(Long orderId, Boolean commentStatus) { return selectList(new LambdaQueryWrapperX() .eq(TradeOrderItemDO::getOrderId, orderId) .eq(TradeOrderItemDO::getCommentStatus, commentStatus)); } default int selectProductSumByOrderId(@Param("orderIds") Set orderIds) { // SQL sum 查询 List> result = selectMaps(new QueryWrapper() .select("SUM(count) AS sumCount") .in("order_id", orderIds)); // 只计算选中的 // 获得数量 return CollUtil.getFirst(result) != null ? MapUtil.getInt(result.get(0), "sumCount") : 0; } }