package shop.alien.storeplatform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import shop.alien.entity.result.R;
import shop.alien.entity.store.StoreContract;
import shop.alien.entity.store.dto.StoreContractQueryDto;
import shop.alien.entity.store.vo.StoreContractVo;

/**
 * 合同服务接口
 *
 * @author alien
 * @since 2025-01-XX
 */
public interface StoreContractService {

    /**
     * 分页查询合同列表
     *
     * @param queryDto 查询条件
     * @return 分页结果
     */
    R<IPage<StoreContractVo>> getContractList(StoreContractQueryDto queryDto);

    /**
     * 根据ID查询合同详情
     *
     * @param id 合同ID
     * @return 合同详情
     */
    R<StoreContractVo> getContractDetail(Integer id);

    /**
     * 新增合同
     *
     * @param contract 合同信息
     * @return 操作结果
     */
    R<StoreContract> addContract(StoreContract contract);

    /**
     * 更新合同
     *
     * @param contract 合同信息
     * @return 操作结果
     */
    R<StoreContract> updateContract(StoreContract contract);

    /**
     * 签署合同
     *
     * @param id 合同ID
     * @return 操作结果
     */
    R<Boolean> signContract(Long id);

    /**
     * 删除合同（逻辑删除）
     *
     * @param id 合同ID
     * @return 操作结果
     */
    R<Boolean> deleteContract(Integer id);

    /**
     * 获取合同的签署状态
     *
     * @param storeId 店铺ID
     * @return 签署状态 (0:未签署, 1:已签署, 2:已到期)
     */
    R<String> getSigningStatus(Integer storeId);
}

