package cn.iocoder.yudao.module.bpm.dal.mysql.oa; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.OaNoticeReadDO; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface OaNoticeReadMapper extends BaseMapperX { default OaNoticeReadDO selectByNoticeIdAndUserId(Long noticeId, Long userId) { return selectOne(new LambdaQueryWrapperX() .eq(OaNoticeReadDO::getNoticeId, noticeId) .eq(OaNoticeReadDO::getUserId, userId)); } default List selectListByNoticeId(Long noticeId) { return selectList(new LambdaQueryWrapperX() .eq(OaNoticeReadDO::getNoticeId, noticeId)); } default Long selectCountByNoticeId(Long noticeId) { return selectCount(new LambdaQueryWrapperX() .eq(OaNoticeReadDO::getNoticeId, noticeId)); } default Long selectUnreadCountByUserId(Long userId, List noticeIds) { if (noticeIds == null || noticeIds.isEmpty()) { return 0L; } // 总公告数 - 已读数 = 未读数 return (long) noticeIds.size() - selectCount(new LambdaQueryWrapperX() .in(OaNoticeReadDO::getNoticeId, noticeIds) .eq(OaNoticeReadDO::getUserId, userId)); } }