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<OaNoticeReadDO> {
|
|
default OaNoticeReadDO selectByNoticeIdAndUserId(Long noticeId, Long userId) {
|
return selectOne(new LambdaQueryWrapperX<OaNoticeReadDO>()
|
.eq(OaNoticeReadDO::getNoticeId, noticeId)
|
.eq(OaNoticeReadDO::getUserId, userId));
|
}
|
|
default List<OaNoticeReadDO> selectListByNoticeId(Long noticeId) {
|
return selectList(new LambdaQueryWrapperX<OaNoticeReadDO>()
|
.eq(OaNoticeReadDO::getNoticeId, noticeId));
|
}
|
|
default Long selectCountByNoticeId(Long noticeId) {
|
return selectCount(new LambdaQueryWrapperX<OaNoticeReadDO>()
|
.eq(OaNoticeReadDO::getNoticeId, noticeId));
|
}
|
|
default Long selectUnreadCountByUserId(Long userId, List<Long> noticeIds) {
|
if (noticeIds == null || noticeIds.isEmpty()) {
|
return 0L;
|
}
|
// 总公告数 - 已读数 = 未读数
|
return (long) noticeIds.size() - selectCount(new LambdaQueryWrapperX<OaNoticeReadDO>()
|
.in(OaNoticeReadDO::getNoticeId, noticeIds)
|
.eq(OaNoticeReadDO::getUserId, userId));
|
}
|
|
}
|