package com.fs.live.service.impl;


import com.fs.common.core.redis.RedisCache;
import com.fs.common.utils.DateUtils;
import com.fs.live.domain.LiveCart;
import com.fs.live.mapper.LiveCartMapper;
import com.fs.live.mapper.LiveOrderItemMapper;
import com.fs.live.mapper.LiveOrderMapper;
import com.fs.live.service.ILiveCartService;
import com.fs.live.vo.LiveCartVo;
import com.fs.store.mapper.FsStoreProductMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

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

/**
 * 购物车Service业务层处理
 *
 * @author fs
 * @date 2025-07-08
 */
@Service
public class LiveCartServiceImpl implements ILiveCartService {

    @Autowired
    private LiveCartMapper baseMapper;


    /**
     * 查询购物车
     *
     * @param cardId 购物车主键
     * @return 购物车
     */
    @Override
    public LiveCart selectLiveCartByCartId(Long cardId)
    {
        return baseMapper.selectLiveCartByCartId(cardId);
    }

    /**
     * 查询购物车列表
     *
     * @param liveCart 购物车
     * @return 购物车
     */
    @Override
    public List<LiveCart> selectLiveCartList(LiveCart liveCart)
    {
        ArrayList<LiveCart> liveCarts = new ArrayList<>();
        if (liveCart.getUserId() == null) {
            return liveCarts;
        }
        return baseMapper.selectLiveCartList(liveCart);
    }

    /**
     * 新增购物车
     *
     * @param liveCart 购物车
     * @return 结果
     */
    @Override
    public int insertLiveCart(LiveCart liveCart)
    {
        LiveCart liveCart1 = baseMapper.selectLiveCartByUserAndProductId(liveCart.getUserId(), liveCart.getProductId());
        if (liveCart1 != null) {
            liveCart.setCartId(liveCart1.getCartId());
            liveCart.setCartNum(liveCart.getCartNum() + liveCart1.getCartNum());
            return updateLiveCart(liveCart);
        }
        liveCart.setCreateTime(DateUtils.getNowDate());
        liveCart.setUpdateTime(DateUtils.getNowDate());
        liveCart.setIsPay(0);
        liveCart.setChecked(0);
        liveCart.setIsDel(0);
        liveCart.setIsBuy(0);
        return baseMapper.insertLiveCart(liveCart);
    }

    /**
     * 修改购物车
     *
     * @param liveCart 购物车
     * @return 结果
     */
    @Override
    public int updateLiveCart(LiveCart liveCart)
    {
        LiveCart exist = baseMapper.selectLiveCartByCartId(liveCart.getCartId());
        if (exist == null || !exist.getUserId().equals(liveCart.getUserId())) {
            return 0;
        }
        liveCart.setUpdateTime(DateUtils.getNowDate());
        return baseMapper.updateLiveCart(liveCart);
    }

    /**
     * 批量删除购物车
     *
     * @param cardIds 需要删除的购物车主键
     * @return 结果
     */
    @Override
    public int deleteLiveCartByCartIds(Long[] cardIds)
    {
        return baseMapper.deleteLiveCartByCartIds(cardIds);
    }

    /**
     * 删除购物车信息
     *
     * @param cardId 购物车主键
     * @return 结果
     */
    @Override
    public int deleteLiveCartByCartId(Long cardId)
    {
        return baseMapper.deleteLiveCartByCartId(cardId);
    }

    @Override
    public int deleteByCartIds(Long[] cardIds, Long userId) {
        return baseMapper.deleteByCartIdsAndUserId(cardIds, userId);
    }

    @Override
    public List<LiveCartVo> selectLiveCartListVo(LiveCart liveCart) {
        return baseMapper.selectLiveCartListVo(liveCart);
    }

    @Override
    public List<LiveCartVo> getChecked(LiveCart liveCart) {
        liveCart.setChecked(1);
        return baseMapper.selectLiveCartListVo(liveCart);
    }


}
