package cn.ysk.cashier.mybatis.service.impl;

import cn.ysk.cashier.dto.shoptable.ReturnOrderDTO;
import cn.ysk.cashier.enums.OrderStatusEnums;
import cn.ysk.cashier.mybatis.mapper.TbOrderDetailMapper;
import cn.ysk.cashier.mybatis.service.MpOrderDetailService;
import cn.ysk.cashier.pojo.order.TbOrderDetail;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * (TbShopPermission)表服务实现类
 *
 * @author makejava
 * @since 2024-09-14 17:08:49
 */
@Service
public class MpOrderDetailServiceImpl extends ServiceImpl<TbOrderDetailMapper, TbOrderDetail> implements MpOrderDetailService {
    @Override
    public boolean updateStatusByOrderIdAndIds(OrderStatusEnums oldOrderStatusEnums, OrderStatusEnums orderStatusEnums, Integer orderId, List<Integer> orderDetails) {
        LambdaUpdateWrapper<TbOrderDetail> wrapper = new LambdaUpdateWrapper<TbOrderDetail>()
                .eq(TbOrderDetail::getOrderId, orderId)
                .in(TbOrderDetail::getId, orderDetails)
                .set(TbOrderDetail::getStatus, orderStatusEnums.getValue());
        if (oldOrderStatusEnums != null) {
            wrapper.eq(TbOrderDetail::getStatus, oldOrderStatusEnums.getValue());
        }
        return update(wrapper);
    }

    @Override
    public boolean updateUseTypeByCartIds(ArrayList<Integer> cartIds, String useType) {
        return update(new LambdaUpdateWrapper<TbOrderDetail>()
                .in(TbOrderDetail::getCartId, cartIds)
                .set(TbOrderDetail::getUseType, useType));
    }

    @Override
    public List<TbOrderDetail> selectByOrderId(Integer orderId) {
        return list(new LambdaQueryWrapper<TbOrderDetail>()
                .eq(TbOrderDetail::getOrderId, orderId));
    }
}

