package com.ruoyi.bst.store.service.impl;

import java.util.List;

import com.github.pagehelper.PageHelper;
import com.ruoyi.bst.storeStaff.domain.enums.StoreStaffPermission;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ServiceUtil;
import com.ruoyi.common.utils.collection.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.bst.store.mapper.StoreMapper;
import com.ruoyi.bst.store.domain.Store;
import com.ruoyi.bst.store.domain.StoreVO;
import com.ruoyi.bst.store.domain.StoreQuery;
import com.ruoyi.bst.store.service.StoreService;

/**
 * 店铺Service业务层处理
 *
 * @author ruoyi
 * @date 2025-04-18
 */
@Service
public class StoreServiceImpl implements StoreService
{
    @Autowired
    private StoreMapper storeMapper;

    /**
     * 查询店铺
     *
     * @param storeId 店铺主键
     * @return 店铺
     */
    @Override
    public StoreVO selectStoreById(Long storeId,boolean scope)
    {
        if (storeId == null) {
            return null;
        }
        StoreQuery query = new StoreQuery();
        query.setStoreId(storeId);
        query.setScope(scope);
        query.addStorePermission(StoreStaffPermission.STORE_VIEW.getCode());
        return this.selectOne(query);
    }

    @Override
    public StoreVO selectOne(StoreQuery query) {
        PageHelper.startPage(1, 1);
        List<StoreVO> list = storeMapper.selectStoreList(query);
        return CollectionUtils.firstElement(list);
    }

    /**
     * 查询店铺列表
     *
     * @param store 店铺
     * @return 店铺
     */
    @Override
    public List<StoreVO> selectStoreList(StoreQuery store)
    {
        return storeMapper.selectStoreList(store);
    }

    /**
     * 新增店铺
     *
     * @param store 店铺
     * @return 结果
     */
    @Override
    public int insertStore(Store store)
    {
        store.setCreateTime(DateUtils.getNowDate());
        return storeMapper.insertStore(store);
    }

    /**
     * 修改店铺
     *
     * @param store 店铺
     * @return 结果
     */
    @Override
    public int updateStore(Store store)
    {
        return storeMapper.updateStore(store);
    }

    /**
     * 批量删除店铺
     *
     * @param storeIds 需要删除的店铺主键
     * @return 结果
     */
    @Override
    public int deleteStoreByStoreIds(Long[] storeIds)
    {
        return storeMapper.deleteStoreByStoreIds(storeIds);
    }

    /**
     * 删除店铺信息
     *
     * @param storeId 店铺主键
     * @return 结果
     */
    @Override
    public int deleteStoreByStoreId(Long storeId)
    {
        return storeMapper.deleteStoreByStoreId(storeId);
    }

    @Override
    public int logicDel(List<Long> ids) {
        return storeMapper.logicDel(ids);
    }
}
