package shop.alien.store.service;

import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.entity.store.SportsFacilityArea;

import java.util.List;

/**
 * 运动设施区域服务接口
 *
 * @author assistant
 * @since 2025-12-19
 */
public interface SportsFacilityAreaService extends IService<SportsFacilityArea> {

    /**
     * 新建区域
     * 创建新的设施区域
     *
     * @param storeId  门店ID，不能为空且必须大于0
     * @param areaName 区域名称，必填，限10字
     * @return 创建的区域ID
     */
    Integer createArea(Integer storeId, String areaName);

    /**
     * 查询指定门店下的所有区域列表
     *
     * @param storeId 门店ID，不能为空且必须大于0
     * @return 区域列表，按排序号升序，相同排序号按创建时间降序
     */
    List<SportsFacilityArea> listAreas(Integer storeId);

    /**
     * 更新区域信息
     *
     * @param areaId   区域ID
     * @param areaName 区域名称（可选）
     * @param sortOrder 排序号（可选）
     * @return 更新是否成功
     */
    boolean updateArea(Integer areaId, String areaName, Integer sortOrder);

    /**
     * 更新区域头图
     * 将传入的长字符串URL覆盖原有的area_head_url字段中的数据
     *
     * @param areaId 区域ID，不能为空且必须大于0
     * @param areaHeadUrl 区域头图URL（长字符串），必填
     * @return 更新是否成功
     */
    boolean updateAreaHeadUrl(Integer areaId, String areaHeadUrl);

    /**
     * 删除区域（逻辑删除）
     * 删除区域时，会同时逻辑删除该区域下的所有设施
     *
     * @param areaId 区域ID
     * @return 删除是否成功
     */
    boolean deleteArea(Integer areaId);

    /**
     * 批量删除区域（逻辑删除）
     * 删除区域时，会同时逻辑删除该区域下的所有设施
     *
     * @param storeId 门店ID
     * @param areaIds 区域ID列表
     * @return 删除是否成功
     */
    boolean batchDeleteAreas(Integer storeId, List<Integer> areaIds);
}

