package shop.alien.store.service.impl;

import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import shop.alien.entity.store.TagStoreRelation;
import shop.alien.mapper.TagStoreRelationMapper;
import shop.alien.store.config.BaseRedisService;
import shop.alien.store.service.TagStoreRelationService;
import java.util.List;

@Slf4j
@Service
@RequiredArgsConstructor
public class TagStoreRelationServiceImpl implements TagStoreRelationService {
    public final TagStoreRelationMapper tagStoreRelationMapper;
    private final BaseRedisService baseRedisService;
    private static final String TAG_STORE_CACHE_KEY = "tag_store";
    @Override
    public TagStoreRelation createOrUpdateTagStoreRelation(TagStoreRelation tagStoreRelation) {
        // 校验同一层级是否存在相同的店铺标签信息
        List<TagStoreRelation> tagStoreRelationList = tagStoreRelationMapper.selectList(new LambdaQueryWrapper<TagStoreRelation>().eq(TagStoreRelation::getStoreId, tagStoreRelation.getStoreId()));
        if(CollectionUtils.isNotEmpty(tagStoreRelationList)){
            // 店铺标签信息已经存在，进行更新操作
            tagStoreRelationMapper.updateById(tagStoreRelation);
        } else {
            // 将数据存储到数据库中
            tagStoreRelationMapper.insert(tagStoreRelation);
        }
        return tagStoreRelation;
    }

    @Override
    public TagStoreRelation getTagStoreRelationByStoreId(int storeId) {
        TagStoreRelation tagStoreRelation = new TagStoreRelation();
        LambdaQueryWrapper<TagStoreRelation> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(TagStoreRelation::getStoreId, storeId);
        wrapper.eq(TagStoreRelation::getDeleteFlag,0);
        List<TagStoreRelation> tagStoreRelationList = tagStoreRelationMapper.selectList(wrapper);
        if (CollectionUtils.isNotEmpty(tagStoreRelationList)) {
            tagStoreRelation = tagStoreRelationList.get(0);
        }
        return tagStoreRelation;
    }

    /**
     * 构建 Redis 缓存 Key
     */
    private String buildTagStoreCacheKey(int storeId) {
        return TAG_STORE_CACHE_KEY + ":" + storeId;
    }
}
