package com.xy.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xy.dto.MsgUserMessageDto; import com.xy.entity.MsgSysMonitorNotice; import com.xy.entity.MsgUserMessage; import com.xy.enums.MsgReadStatus; import com.xy.mapper.MsgUserMessageMapper; import com.xy.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import static com.xy.utils.Beans.copy; import static com.xy.utils.PlusBeans.toIPage; import static com.xy.utils.PlusBeans.toPageBean; /** *

* 服务实现类 *

* * @author 谭斌 * @since 2023-02-24 */ @Service @AllArgsConstructor @Api(tags = "用户消息") public class MsgUserMessageServiceImpl extends ServiceImpl implements MsgUserMessageService { private MsgSysMonitorNoticeServiceImpl msgSysMonitorNoticeService; @Override @ApiOperation("消息详情") public R obj(MsgUserMessageDto.Vo vo) { MsgUserMessageDto.SelectList selectList = copy(MsgUserMessageDto.SelectList.class, vo); List list = list(selectList).getData(); MsgUserMessageDto.Vo myMsg = new MsgUserMessageDto.Vo(); if (Emptys.check(list)) { myMsg = list.get(0); //更新已读 MsgUserMessage msgUserMessage = new MsgUserMessage(); msgUserMessage.setId(myMsg.getId()).setReadState(MsgReadStatus.READ.getCode().toString()); if (ObjectUtil.isNotEmpty(myMsg)) { Long msgId = myMsg.getMsgId(); MsgSysMonitorNotice msgSysMonitorNotice = msgSysMonitorNoticeService.getById(msgId); if (ObjectUtil.isNotEmpty(msgSysMonitorNotice)) { myMsg.setContent(msgSysMonitorNotice.getContent()); myMsg.setTitle(msgSysMonitorNotice.getTitle()); } } this.updateById(msgUserMessage); return R.ok(myMsg); } return R.ok(myMsg); } public R> list(MsgUserMessageDto.SelectList selectList) { LambdaQueryWrapper lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList, MsgUserMessage.class).build(); List list = list(lambdaQueryWrapper); return R.ok(copy(MsgUserMessageDto.Vo.class, list)); } @ApiOperation("我的消息-未读数量") @Override public R myMsgUnRead() { long count = this.count(Wrappers.lambdaQuery() .eq(MsgUserMessage::getUserId, AuthorizeUtils.getLoginId(Long.class)) .eq(MsgUserMessage::getReadState, MsgReadStatus.UN_READ.getCode())); return R.ok(count); } @ApiOperation("我的消息-标记全部已读") @Override public R readAll() { Long loginId = AuthorizeUtils.getLoginId(Long.class); List list = this.list(Wrappers.lambdaQuery() .eq(MsgUserMessage::getUserId, loginId) .eq(MsgUserMessage::getReadState, MsgReadStatus.UN_READ.getCode())); if (CollUtil.isNotEmpty(list)) { list.forEach(mum -> { mum.setReadState(String.valueOf(MsgReadStatus.READ.getCode())); }); this.saveOrUpdateBatch(list); } return R.ok(Boolean.TRUE); } @ApiOperation("我的消息") @Override public R> myMsgPage(MsgUserMessageDto.Page page) { page.setUserId(AuthorizeUtils.getLoginId(Long.class)); PageBean pageBean = page.getPage(); LambdaQueryWrapper lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, MsgUserMessage.class) .ge(MsgUserMessage::getCreateTime, page.getBeginCreateTime()) .le(MsgUserMessage::getCreateTime, page.getEndCreateTime()) .build().orderByDesc(MsgUserMessage::getCreateTime); IPage iPage = page(toIPage(pageBean), lambdaQueryWrapper); PageBean pageVo = toPageBean(MsgUserMessageDto.PageVO.class, iPage); List records = pageVo.getRecords(); if (CollUtil.isNotEmpty(records)) { List msgIds = records.stream().map(MsgUserMessageDto.PageVO::getMsgId).collect(Collectors.toList()); List msgSysMonitorNotices = msgSysMonitorNoticeService.listByIds(msgIds); if (CollUtil.isNotEmpty(msgSysMonitorNotices)) { Map msgSysMonitorNoticeMap = msgSysMonitorNotices.stream().collect(Collectors.toMap(MsgSysMonitorNotice::getMsgId, i -> i)); for (MsgUserMessageDto.PageVO record : records) { Integer msgId = record.getMsgId(); MsgSysMonitorNotice msgSysMonitorNotice = msgSysMonitorNoticeMap.get(msgId); if (msgSysMonitorNotice != null) { record.setContent(msgSysMonitorNotice.getContent()); record.setTitle(msgSysMonitorNotice.getTitle()); } } } } return R.ok(pageVo); } @ApiOperation("新增我的消息") @Override public R save(@RequestBody @Validated MsgUserMessageDto.Save save) { MsgUserMessage saveInfo = Beans.copy(MsgUserMessage.class, save); save(saveInfo); return R.ok(); } @ApiOperation("更新") @Override public R update(@RequestBody @Validated MsgUserMessageDto.Update update) { MsgUserMessage updateInfo = Beans.copy(MsgUserMessage.class, update); updateById(updateInfo); return R.ok(); } }