package com.yeqifu.bus.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yeqifu.bus.entity.Goods;
import com.yeqifu.bus.entity.Sales;
import com.yeqifu.bus.mapper.GoodsMapper;
import com.yeqifu.bus.mapper.SalesMapper;
import com.yeqifu.bus.service.ISalesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.Serializable;

/**
 * <p>
 * InnoDB free: 9216 kB 服务实现类
 * </p>
 *
 * @author luoyi-
 * @since 2019-12-21
 */
@Service
public class SalesServiceImpl extends ServiceImpl<SalesMapper, Sales> implements ISalesService {

    @Autowired
    private GoodsMapper goodsMapper;

    /**
     * 添加商品销售
     * @param entity 商品销售实体类
     * @return 保存操作是否成功
     */
    @Override
    public boolean save(Sales entity) {
        // 根据商品ID从 goodsMapper 中查询商品信息
        Goods goods = goodsMapper.selectById(entity.getGoodsid());
        // 减少商品的库存数量，库存数量减去销售数量
        goods.setNumber(goods.getNumber()-entity.getNumber());
        //更新商品的库存信息
        goodsMapper.updateById(goods);
        // 保存商品销售信息
        return super.save(entity);
    }

    /**
     * 更新商品销售
     * @param entity 商品销售实体类
     * @return 更新操作是否成功
     */
    @Override
    public boolean updateById(Sales entity) {
        //根据销售单ID查询销售单信息
        Sales sales = baseMapper.selectById(entity.getId());
        // 根据商品ID从 goodsMapper 中查询商品信息
        Goods goods = goodsMapper.selectById(entity.getGoodsid());
        //仓库商品数量=原库存-销售单修改之前的数量+修改之后的数量
        //     80  +40 -  50     30
        goods.setNumber(goods.getNumber()+sales.getNumber()-entity.getNumber());
        // 更新商品信息
        goodsMapper.updateById(goods);
        // 更新商品销售信息
        return super.updateById(entity);
    }

    /**
     * 删除商品销售信息
     * @param id    商品销售单ID
     * @return 删除操作是否成功
     */
    @Override
    public boolean removeById(Serializable id) {
        //根据商品销售单ID查询出销售单数据
        Sales sales = baseMapper.selectById(id);
        // 根据商品ID从 goodsMapper 中查询商品信息
        Goods goods = goodsMapper.selectById(sales.getGoodsid());
        //仓库商品数量=原库存+删除商品销售单的数量
        goods.setNumber(goods.getNumber()+sales.getNumber());
        // 更新商品信息
        goodsMapper.updateById(goods);
        // 删除商品销售信息
        return super.removeById(id);
    }
}
