package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.mapper.InformationNotificationMapper; import com.yuanchu.mom.pojo.InformationNotification; import com.yuanchu.mom.pojo.InformationNotificationDto; import com.yuanchu.mom.service.InformationNotificationService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDate; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 消息通知 服务实现类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2024-04-23 02:14:30 */ @Service public class InformationNotificationServiceImpl extends ServiceImpl implements InformationNotificationService { @Resource private GetLook getLook; @Override public IPage getPage(Page page, String messageType) { Map map1 = getLook.selectPowerByMethodAndUserId(null); return baseMapper.getPage(page, messageType, map1.get("userId")); } @Override public void markAllInformationReadOrDeleteAllReadMessages(Boolean isMarkAllInformationRead) { Map map1 = getLook.selectPowerByMethodAndUserId("selectInsOrderParameter"); if (isMarkAllInformationRead) { baseMapper.update(new InformationNotification(), Wrappers.lambdaUpdate() .set(InformationNotification::getViewStatus, true) .eq(InformationNotification::getConsigneeId, map1.get("userId"))); } else { baseMapper.delete(Wrappers.lambdaUpdate() .eq(InformationNotification::getConsigneeId, map1.get("userId")) .eq(InformationNotification::getViewStatus, true)); } } @Override public Boolean checkForUnreadData() { Map map1 = null; try { map1 = getLook.selectPowerByMethodAndUserId("selectInsOrderParameter"); List informationNotifications = baseMapper.selectList( Wrappers.lambdaQuery() .eq(InformationNotification::getConsigneeId, map1.get("userId")) .eq(InformationNotification::getViewStatus, false) .last("limit 1")); return !informationNotifications.isEmpty(); } catch (Exception e) { } return false; } @Override public void triggerModificationStatusToRead(Integer id) { baseMapper.update(new InformationNotification(), Wrappers.lambdaUpdate() .eq(InformationNotification::getId, id) .set(InformationNotification::getViewStatus, true)); } @Override public int addInformationNotification(InformationNotification informationNotification) { return baseMapper.insert(informationNotification); } @Override public Map getNumberFourTypesMessagesHomePage() { Map map1 = null; Map map = new HashMap<>(); map1 = getLook.selectPowerByMethodAndUserId("selectInsOrderParameter"); Long totalNumberOfMessages = baseMapper.selectCount(Wrappers.lambdaQuery() .eq(InformationNotification::getConsigneeId, map1.get("userId")) .eq(InformationNotification::getViewStatus, false)); Long totalNumberOfReadMessages = baseMapper.selectCount(Wrappers.lambdaQuery() .eq(InformationNotification::getConsigneeId, map1.get("userId")) .eq(InformationNotification::getViewStatus, true)); LocalDate today = LocalDate.now(); LocalDate sevenDaysAgo = today.minusDays(7); Long totalNumberOfMessagesInThePastSevenDays = baseMapper.selectCount(Wrappers.lambdaQuery() .eq(InformationNotification::getConsigneeId, map1.get("userId")) .between(InformationNotification::getCreateTime, today.atStartOfDay(), sevenDaysAgo.atStartOfDay())); long remainingToDo = totalNumberOfMessages - totalNumberOfReadMessages; remainingToDo=remainingToDo<0?0:remainingToDo; map.put("totalNumberOfMessages", totalNumberOfMessages); map.put("remainingToDo", remainingToDo); map.put("totalNumberOfReadMessages", totalNumberOfReadMessages); map.put("totalNumberOfMessagesInThePastSevenDays", totalNumberOfMessagesInThePastSevenDays); return map; } }