package com.fs.hisStore.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fs.common.constant.LiveKeysConstant;
import com.fs.common.core.redis.RedisCache;
import com.fs.hisStore.mapper.FsStoreProductAttrScrmMapper;
import com.fs.hisStore.domain.FsStoreProductAttrScrm;
import com.fs.hisStore.service.IFsStoreProductAttrScrmService;
import lombok.extern.slf4j.Slf4j;

/**
 * 商品属性Service业务层处理
 * 
 * @author fs
 * @date 2022-03-15
 */
@Service
@Slf4j
public class FsStoreProductAttrScrmServiceImpl implements IFsStoreProductAttrScrmService
{
    @Autowired
    private FsStoreProductAttrScrmMapper fsStoreProductAttrMapper;

    @Autowired
    private RedisCache redisCache;

    /**
     * 清除商品详情缓存
     * @param productId 商品ID
     */
    private void clearProductDetailCache(Long productId) {
        if (productId != null) {
            String cacheKey = String.format(LiveKeysConstant.PRODUCT_DETAIL_CACHE, productId);
            redisCache.deleteObject(cacheKey);
            log.debug("清除商品详情缓存(属性): productId={}", productId);
        }
    }

    /**
     * 查询商品属性
     * 
     * @param id 商品属性ID
     * @return 商品属性
     */
    @Override
    public FsStoreProductAttrScrm selectFsStoreProductAttrById(Long id)
    {
        return fsStoreProductAttrMapper.selectFsStoreProductAttrById(id);
    }

    /**
     * 查询商品属性列表
     * 
     * @param fsStoreProductAttr 商品属性
     * @return 商品属性
     */
    @Override
    public List<FsStoreProductAttrScrm> selectFsStoreProductAttrList(FsStoreProductAttrScrm fsStoreProductAttr)
    {
        return fsStoreProductAttrMapper.selectFsStoreProductAttrList(fsStoreProductAttr);
    }

    /**
     * 新增商品属性
     * 
     * @param fsStoreProductAttr 商品属性
     * @return 结果
     */
    @Override
    public int insertFsStoreProductAttr(FsStoreProductAttrScrm fsStoreProductAttr)
    {
        return fsStoreProductAttrMapper.insertFsStoreProductAttr(fsStoreProductAttr);
    }

    /**
     * 修改商品属性
     * 
     * @param fsStoreProductAttr 商品属性
     * @return 结果
     */
    @Override
    public int updateFsStoreProductAttr(FsStoreProductAttrScrm fsStoreProductAttr)
    {
        int result = fsStoreProductAttrMapper.updateFsStoreProductAttr(fsStoreProductAttr);
        // 清除对应商品的缓存
        clearProductDetailCache(fsStoreProductAttr.getProductId());
        return result;
    }

    /**
     * 批量删除商品属性
     * 
     * @param ids 需要删除的商品属性ID
     * @return 结果
     */
    @Override
    public int deleteFsStoreProductAttrByIds(Long[] ids)
    {
        // 先查询出对应的商品ID，然后清除缓存
        if (ids != null && ids.length > 0) {
            for (Long id : ids) {
                FsStoreProductAttrScrm attr = fsStoreProductAttrMapper.selectFsStoreProductAttrById(id);
                if (attr != null) {
                    clearProductDetailCache(attr.getProductId());
                }
            }
        }
        return fsStoreProductAttrMapper.deleteFsStoreProductAttrByIds(ids);
    }

    /**
     * 删除商品属性信息
     * 
     * @param id 商品属性ID
     * @return 结果
     */
    @Override
    public int deleteFsStoreProductAttrById(Long id)
    {
        // 先查询出对应的商品ID，然后清除缓存
        FsStoreProductAttrScrm attr = fsStoreProductAttrMapper.selectFsStoreProductAttrById(id);
        if (attr != null) {
            clearProductDetailCache(attr.getProductId());
        }
        return fsStoreProductAttrMapper.deleteFsStoreProductAttrById(id);
    }

    @Override
    public List<FsStoreProductAttrScrm> selectFsStoreProductAttrByProductId(Long productId) {
        return fsStoreProductAttrMapper.selectFsStoreProductAttrByProductId(productId);
    }
}
