package com.yuchen.saas.park.service.service.door.card;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yuchen.saas.park.api.commons.PageWrapper;
import com.yuchen.saas.park.service.mapper.domain.DoorAccessControlCardRO;
import com.yuchen.saas.park.service.mapper.domain.DoorAccessControlCardStateAggregationCondition;
import com.yuchen.saas.park.service.mapper.domain.DoorAccessControlCardUserAggregationRO;
import com.yuchen.saas.park.service.service.domain.*;

import javax.validation.constraints.Positive;
import java.util.List;

public interface DoorAccessControlCardService {
    /**
     * 新增
     */
    void insert(DoorAccessControlCardInsert o);

    void batchInsert(List<DoorAccessControlCardInsert> list);

    void batchInsertByUser(DoorAccessControlCardUserBatchInsert o);

    /**
     * 更新
     */
    void update(DoorAccessControlCardUpdate o);

    /**
     * 删除:退卡
     */
    void delete(@Positive long id);

    void batchDelete(List<@Positive Long> ids);

    /**
     * 换卡
     */
    void rebind(DoorAccessControlCardRebind o);

    /**
     * 挂失
     */
    void lossReport(@Positive long id);

    /**
     * 取消挂失
     */
    void cancelLossReport(@Positive long id);

    /**
     * 绑定人脸
     */
    void bindFacial(DoorAccessControlCardFacialBind o);

    IPage<DoorAccessControlCardRO> page(PageWrapper<DoorAccessControlCardUserCondition> o);

    IPage<DoorAccessControlCardUserAggregationRO> pageForUser(PageWrapper<DoorAccessControlCardConditionSO> o);

    DoorAccessControlCardStateAggregation stateAggregation(DoorAccessControlCardStateAggregationCondition o);
}
