package com.yc.ship.module.resource.dal.mysql.roommodel;

import java.util.*;

import com.yc.ship.framework.common.pojo.PageResult;
import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
import com.yc.ship.module.product.enums.YesOrNoEnum;
import com.yc.ship.module.resource.controller.app.roommodel.vo.AppResourceRoomModelPageReqVO;
import com.yc.ship.module.resource.dal.dataobject.roommodel.ResourceRoomModelDO;
import com.yc.ship.module.resource.enums.CommonStatusEnum;
import org.apache.ibatis.annotations.Mapper;
import com.yc.ship.module.resource.controller.admin.roommodel.vo.*;

/**
 * 资源管理-房型管理 Mapper
 *
 * @author lfy
 */
@Mapper
public interface ResourceRoomModelMapper extends BaseMapperX<ResourceRoomModelDO> {

    default PageResult<ResourceRoomModelDO> selectPage(ResourceRoomModelPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<ResourceRoomModelDO>()
                .likeIfPresent(ResourceRoomModelDO::getName, reqVO.getName())
                .eqIfPresent(ResourceRoomModelDO::getCode, reqVO.getCode())
                .eqIfPresent(ResourceRoomModelDO::getShipId, reqVO.getShipId())
                .eqIfPresent(ResourceRoomModelDO::getSuite, reqVO.getSuite())
                .eqIfPresent(ResourceRoomModelDO::getStatus, reqVO.getStatus())
                .betweenIfPresent(ResourceRoomModelDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(ResourceRoomModelDO::getId));
    }

    default List<ResourceRoomModelDO> selectListByShipId(String shipId) {
        return selectList(new LambdaQueryWrapperX<ResourceRoomModelDO>()
                .eqIfPresent(ResourceRoomModelDO::getShipId, shipId)
                .eq(ResourceRoomModelDO::getStatus, CommonStatusEnum.ENABLE.getStatus()));
    }

    default List<ResourceRoomModelDO> selectRoomModelCanSaleListByShipId(String shipId) {
        return selectList(new LambdaQueryWrapperX<ResourceRoomModelDO>()
                .eqIfPresent(ResourceRoomModelDO::getShipId, shipId)
                .eq(ResourceRoomModelDO::getStatus, CommonStatusEnum.ENABLE.getStatus())
                .eq(ResourceRoomModelDO::getCanSale, YesOrNoEnum.YES.getType()));
    }

    default PageResult<ResourceRoomModelDO> selectAppPage(AppResourceRoomModelPageReqVO pageReqVO) {
        return selectPage(pageReqVO, new LambdaQueryWrapperX<ResourceRoomModelDO>()
                .eqIfPresent(ResourceRoomModelDO::getShipId, pageReqVO.getShipId())
                .eq(ResourceRoomModelDO::getStatus, CommonStatusEnum.ENABLE.getStatus())
                .eq(ResourceRoomModelDO::getCanSale, YesOrNoEnum.YES.getType())
                .orderByDesc(ResourceRoomModelDO::getShipId)
                .orderByDesc(ResourceRoomModelDO::getId)
        );
    }
}