package cn.pluss.platform.device.impl;

import cn.pluss.platform.DeviceGoodsService;
import cn.pluss.platform.device.DeviceGoodTagService;
import cn.pluss.platform.entity.DeviceGoodTag;
import cn.pluss.platform.entity.DeviceGoods;
import cn.pluss.platform.exception.MsgException;
import cn.pluss.platform.mapper.DeviceGoodTagMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.Serializable;
import java.util.Objects;

/**
 * <p>
 * 商品标签表 服务实现类
 * </p>
 *
 * @author Djh
 * @since 2022-04-21
 */
@Service
public class DeviceGoodTagServiceImpl extends ServiceImpl<DeviceGoodTagMapper, DeviceGoodTag> implements DeviceGoodTagService {

    @Autowired
    private DeviceGoodsService goodsService;

    @Override
    public boolean saveOrUpdate(DeviceGoodTag entity) {
        LambdaQueryWrapper<DeviceGoodTag> qWrapper = Wrappers.lambdaQuery();
        qWrapper.eq(DeviceGoodTag::getTag, entity.getTag());
        DeviceGoodTag exist = baseMapper.selectOne(qWrapper);

        if (exist == null) {
            baseMapper.insert(entity);
        } else {
            if (Objects.equals(exist.getId(), entity.getId())) {
                baseMapper.updateById(entity);
            } else {
                throw new MsgException("存在重复的标签，请勿重复添加");
            }
        }

        return super.saveOrUpdate(entity);
    }

    @Override
    public boolean removeById(Serializable id) {
        LambdaQueryWrapper<DeviceGoods> qWrapper = Wrappers.lambdaQuery();
        qWrapper.eq(DeviceGoods::getTagId, id);
        int count = goodsService.count(qWrapper);
        if (count > 0) {
            throw new MsgException("当前标签分类已存在商品，请修改商品标签分类后再执行该操作");
        }

        return super.removeById(id);
    }
}
