package com.izouma.nineth.service; import com.izouma.nineth.domain.MetaEmail; import com.izouma.nineth.dto.MetaRestResult; import com.izouma.nineth.dto.PageQuery; import com.izouma.nineth.repo.MetaEmailRecordRepo; import com.izouma.nineth.repo.MetaEmailRepo; import com.izouma.nineth.utils.JpaUtils; import com.izouma.nineth.utils.SecurityUtils; import lombok.AllArgsConstructor; import org.apache.commons.collections.CollectionUtils; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import java.util.List; @Service @AllArgsConstructor public class MetaEmailService { private MetaEmailRepo metaEmailRepo; private MetaEmailRecordRepo metaEmailRecordRepo; public Page all(PageQuery pageQuery) { return metaEmailRepo.findAll(JpaUtils.toSpecification(pageQuery, MetaEmail.class), JpaUtils.toPageRequest(pageQuery)); } public MetaRestResult> metaQuery() { Long userId = SecurityUtils.getAuthenticatedUser().getId(); List delIds = metaEmailRecordRepo.findEmailIdByDel(userId, true); List metaEmails; metaEmails = CollectionUtils.isEmpty(delIds) ? metaEmailRepo.findAllByDel(false) : metaEmailRepo.findAllByDelAndIdNotIn(false, delIds); if (CollectionUtils.isEmpty(metaEmails)) { return MetaRestResult.returnSuccess(metaEmails); } List readIds = metaEmailRecordRepo.findEmailIdRead(userId, true); if (CollectionUtils.isEmpty(readIds)) { return MetaRestResult.returnSuccess(metaEmails); } metaEmails.forEach(metaEmail -> { if (readIds.contains(metaEmail.getId())) { metaEmail.setRead(true); } }); return MetaRestResult.returnSuccess(metaEmails); } }