package com.yc.ship.module.otc.dal.mysql.store;

import com.yc.ship.framework.common.pojo.PageParam;
import com.yc.ship.framework.common.pojo.PageResult;
import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yc.ship.module.otc.dal.dataobject.store.StoreUserDO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 门店账号关联 Mapper
 *
 * @author 管理员
 */
@Mapper
public interface StoreUserMapper extends BaseMapperX<StoreUserDO> {

    default PageResult<StoreUserDO> selectPage(PageParam reqVO, Long storeId) {
        return selectPage(reqVO, new LambdaQueryWrapperX<StoreUserDO>()
                .eq(StoreUserDO::getStoreId, storeId)
                .orderByDesc(StoreUserDO::getId));
    }

    default int deleteByStoreId(Long storeId) {
        return delete(StoreUserDO::getStoreId, storeId);
    }

    default int deleteStoreUserByUserId(Long userId,Long storeId) {
        return delete(new LambdaQueryWrapperX<StoreUserDO>()
                .eq(StoreUserDO::getUserId, userId)
                .eq(StoreUserDO::getStoreId, storeId));
    }

    default StoreUserDO selectStoreUser(Long userId, Long storeId) {
        return selectOne(StoreUserDO::getUserId, userId, StoreUserDO::getStoreId, storeId);
    }

    default List<StoreUserDO> selectListByUserIds(List<Long> userIds) {
        return selectList(new LambdaQueryWrapperX<StoreUserDO>()
                .inIfPresent(StoreUserDO::getUserId, userIds)
                .orderByDesc(StoreUserDO::getId));
    }

    default List<StoreUserDO> getStoreUserList() {
        return selectList();
    }

}
