package com.yiqi.core.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yiqi.common.exception.GlobalException;
import com.yiqi.common.utils.DateUtils;
import com.yiqi.common.utils.SecurityUtils;
import com.yiqi.core.domain.GoodsBrand;
import com.yiqi.core.mapper.GoodsBrandMapper;
import com.yiqi.core.service.IGoodsBrandService;
import com.yiqi.core.service.IGoodsInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 * 商品品牌管理Service业务层处理
 *
 * @author ruoyi
 * @date 2023-08-21
 */
@Service
public class GoodsBrandServiceImpl extends ServiceImpl<GoodsBrandMapper, GoodsBrand> implements IGoodsBrandService {

    @Autowired
    IGoodsInfoService goodsInfoService;

    /**
     * 查询商品品牌管理
     *
     * @param id 商品品牌管理主键
     * @return 商品品牌管理
     */
    @Override
    public GoodsBrand selectGoodsBrandById(Long id) {
        return baseMapper.selectGoodsBrandById(id);
    }

    /**
     * 查询商品品牌管理列表
     *
     * @param goodsBrand 商品品牌管理
     * @return 商品品牌管理
     */
    @Override
    public List<GoodsBrand> selectGoodsBrandList(GoodsBrand goodsBrand) {
        return baseMapper.selectGoodsBrandList(goodsBrand);
    }

    /**
     * 新增商品品牌管理
     *
     * @param goodsBrand 商品品牌管理
     * @return 结果
     */
    @Override
    public int insertGoodsBrand(GoodsBrand goodsBrand) {
        goodsBrand.setCreateTime(DateUtils.getNowDate());
        return baseMapper.insertGoodsBrand(goodsBrand);
    }

    /**
     * 修改商品品牌管理
     *
     * @param goodsBrand 商品品牌管理
     * @return 结果
     */
    @Override
    public int updateGoodsBrand(GoodsBrand goodsBrand) {
        goodsBrand.setUpdateTime(DateUtils.getNowDate());
        return baseMapper.updateGoodsBrand(goodsBrand);
    }

    /**
     * 批量删除商品品牌管理
     *
     * @param ids 需要删除的商品品牌管理主键
     * @return 结果
     */
    @Override
    public int deleteGoodsBrandByIds(Long[] ids) {
        int count = goodsInfoService.selectGoodsByBrandIds(ids);
        if (count > 0){
            throw new GlobalException("存在该品牌的商品,无法删除");
        }
        return baseMapper.deleteGoodsBrandByIds(ids);
    }

    /**
     * 删除商品品牌管理信息
     *
     * @param id 商品品牌管理主键
     * @return 结果
     */
    @Override
    public int deleteGoodsBrandById(Long id) {
        return baseMapper.deleteGoodsBrandById(id);
    }


    /**
     * 修改商品品牌管理状态
     *
     * @param brand 商品品牌
     * @return 结果
     */
    @Override
    public int updateBrandStatus(GoodsBrand brand) {
        brand.setUpdateBy(SecurityUtils.getUsername());
        brand.setUpdateById(SecurityUtils.getUserId());
        brand.setUpdateTime(DateUtils.getNowDate());
        return baseMapper.updateGoodsBrand(brand);
    }
}
