package com.jeelowcode.service.system.mapper;

import com.jeelowcode.tool.framework.mybatis.core.mapper.BaseMapperX;
import com.jeelowcode.tool.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.jeelowcode.service.system.entity.UserDutyDO;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.ibatis.annotations.Mapper;

import java.util.Collection;
import java.util.List;

@Mapper
public interface UserDutyMapper extends BaseMapperX<UserDutyDO> {

    default List<UserDutyDO> selectListByUserId(Long userId) {
        return selectList(UserDutyDO::getUserId, userId);
    }
    default List<UserDutyDO> selectListByUserId(Long userId,Long deptId) {
        return selectList(Wrappers.lambdaUpdate(UserDutyDO.class)
                .eq(UserDutyDO::getUserId, userId)
                .eq(UserDutyDO::getDeptId,deptId));
    }

    default void deleteByUserIdAndDeptId(Long userId, Long deptId) {
        delete(new LambdaQueryWrapperX<UserDutyDO>()
                .eq(UserDutyDO::getUserId, userId)
                .eq(UserDutyDO::getDeptId, deptId));
    }
    default void deleteByUserIdAndDutyId(Long userId, Collection<Long> dutyIds) {
        delete(new LambdaQueryWrapperX<UserDutyDO>()
                .eq(UserDutyDO::getUserId, userId)
                .in(UserDutyDO::getDutyId, dutyIds));
    }

    default void deleteByUserIdAndDutyId(Long userId, Long deptId,Collection<Long> dutyIds) {
        delete(new LambdaQueryWrapperX<UserDutyDO>()
                .eq(UserDutyDO::getUserId, userId)
                .eq(UserDutyDO::getDeptId, deptId)
                .in(UserDutyDO::getDutyId, dutyIds));
    }

    default List<UserDutyDO> selectListByDutyIds(Collection<Long> dutyIds) {
        return selectList(UserDutyDO::getDutyId, dutyIds);
    }

    default void deleteByUserId(Long userId) {
        delete(Wrappers.lambdaUpdate(UserDutyDO.class).eq(UserDutyDO::getUserId, userId));
    }
}
