package cn.iocoder.yudao.module.custom.service.impl;

import cn.iocoder.yudao.module.custom.entity.CarBrand;
import cn.iocoder.yudao.module.custom.mapper.CarBrandMapper;
import cn.iocoder.yudao.module.custom.service.CarBrandService;
import cn.iocoder.yudao.module.custom.vo.*;
import cn.iocoder.yudao.module.custom.vo.CarBrandReqVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;

import java.util.List;
import java.util.UUID;

/**
 * 车辆品牌维护 Service 实现类
 *
 * @author 后台管理员
 */
@Service
@Validated
public class CarBrandServiceImpl extends ServiceImpl<CarBrandMapper, CarBrand> implements CarBrandService {

    /**
     * 创建车辆品牌维护
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    @Override
    public String createCarBrand(CarBrandReqVO createReqVO) {
        // 插入
        CarBrand carBrand = BeanUtils.toBean(createReqVO, CarBrand.class);
        carBrand.setBrandValue(UUID.randomUUID().toString());
        baseMapper.insert(carBrand);
        // 返回
        return carBrand.getId();
    }

    /**
     * 更新车辆品牌维护
     *
     * @param updateReqVO 更新信息
     */
    @Override
    public void updateCarBrand(CarBrandReqVO updateReqVO) {

        // 更新
        CarBrand updateObj = BeanUtils.toBean(updateReqVO, CarBrand.class);
        baseMapper.updateById(updateObj);
    }

    /**
     * 删除车辆品牌维护
     *
     * @param id 编号
     */
    @Override
    public void deleteCarBrand(String id) {
        // 删除
        baseMapper.deleteById(id);
    }

    /**
     * 获得车辆品牌维护
     *
     * @param id 编号
     * @return 车辆品牌维护
     */
    @Override
    public CarBrand getCarBrand(String id) {
        return baseMapper.selectById(id);
    }

    /**
     * 获得车辆品牌维护分页
     *
     * @param pageReqVO 分页查询
     * @return 车辆品牌维护分页
     */
    @Override
    public IPage<CarBrandRespVO> getCarBrandPage(CarBrandReqVO pageReqVO) {
        Page<CarBrandReqVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
        return baseMapper.findPage(page,pageReqVO);
    }

    @Override
    public List<CarBrand> getCarBrandList() {
        return baseMapper.selectList(null);
    }

}