package com.cool.store.dao;

import com.cool.store.dto.store.StoreOrderTimeDTO;
import com.cool.store.entity.StoreDO;
import com.cool.store.mapper.StoreMapper;
import com.cool.store.response.MiniShopsResponse;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

@Repository
public class StoreDao {

    @Resource
    private StoreMapper storeMapper;
    /**
     * 根据门店id查询门店
     * @param storeId
     * @return
     */
    public StoreDO getByStoreId(String storeId) {
        if(StringUtils.isBlank(storeId)) {
            return null;
        }
        return storeMapper.getByStoreId(storeId);
    }

    public List<StoreDO> getEffectiveStoreByStoreIds(List<String> storeIdList) {
        if(CollectionUtils.isEmpty(storeIdList)) {
            return Lists.newArrayList();
        }
        return storeMapper.getEffectiveStoreByStoreIds(storeIdList);
    }

    public List<StoreDO> listStoreByRegionId(String regionId) {
        if(StringUtils.isBlank(regionId)) {
            return Lists.newArrayList();
        }
        return storeMapper.listStoreByRegionId(regionId);
    }

    public List<String> getStoreNumByStoreIds(List<String> storeIdList) {
        if(CollectionUtils.isEmpty(storeIdList)) {
            return Lists.newArrayList();
        }
        return storeMapper.getStoreNumByStoreIds(storeIdList);
    }

    public StoreDO getByStoreNum(String storeNum) {
        if(StringUtils.isBlank(storeNum)) {
            return null;
        }
        return storeMapper.getByStoreNum(storeNum);
    }

    public List<StoreDO> listByMobile(String mobile) {
        if(StringUtils.isBlank(mobile)) {
            return new ArrayList<>();
        }
        return storeMapper.listByMobile(mobile);
    }

    public List<MiniShopsResponse> getSubStoreByRegionIdsAndMobile(List<String> regionIdList, String mobile,String storeName,String storeNum) {
        if(StringUtils.isBlank(mobile)) {
            return new ArrayList<>();
        }
        return storeMapper.getSubStoreByRegionIdsAndMobile(regionIdList,mobile,storeName,storeNum);
    }


    public List<StoreDO> list(Integer isIot) {
        return storeMapper.list(isIot);
    }

    public List<StoreDO> getStoreNumByStoreCodes(List<String> storeCodeIds) {
        if(CollectionUtils.isEmpty(storeCodeIds)) {
            return Lists.newArrayList();
        }
        return storeMapper.getStoreNumByStoreCodes(storeCodeIds);
    }

    /**
     * 新增或编辑最新订货时间
     * @param dtoList 门店最新订货时间DTO列表
     * @return int
     */
    public void batchInsertOrUpdateOrderTime(List<StoreOrderTimeDTO> dtoList) {
        if (CollectionUtils.isEmpty(dtoList)) {
            return ;
        }
        storeMapper.batchInsertOrUpdateOrderTime(dtoList);
    }

    /**
     * 查询所有门店id和门店编码
     */
    public List<StoreDO> getAllStoreIdAndNum(List<String> storeStatus) {
        return storeMapper.getAllStoreIdAndNum(storeStatus);
    }
}
