123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- 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;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author 谭斌
- * @since 2023-02-24
- */
- @Service
- @AllArgsConstructor
- @Api(tags = "用户消息")
- public class MsgUserMessageServiceImpl extends ServiceImpl<MsgUserMessageMapper, MsgUserMessage> implements MsgUserMessageService {
- private MsgSysMonitorNoticeServiceImpl msgSysMonitorNoticeService;
- @Override
- @ApiOperation("消息详情")
- public R<MsgUserMessageDto.Vo> obj(MsgUserMessageDto.Vo vo) {
- MsgUserMessageDto.SelectList selectList = copy(MsgUserMessageDto.SelectList.class, vo);
- List<MsgUserMessageDto.Vo> 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.Vo>> list(MsgUserMessageDto.SelectList selectList) {
- LambdaQueryWrapper<MsgUserMessage> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList, MsgUserMessage.class).build();
- List<MsgUserMessage> list = list(lambdaQueryWrapper);
- return R.ok(copy(MsgUserMessageDto.Vo.class, list));
- }
- @ApiOperation("我的消息-未读数量")
- @Override
- public R<Long> myMsgUnRead() {
- long count = this.count(Wrappers.<MsgUserMessage>lambdaQuery()
- .eq(MsgUserMessage::getUserId, AuthorizeUtils.getLoginId(Long.class))
- .eq(MsgUserMessage::getReadState, MsgReadStatus.UN_READ.getCode()));
- return R.ok(count);
- }
- @ApiOperation("我的消息-标记全部已读")
- @Override
- public R<Boolean> readAll() {
- Long loginId = AuthorizeUtils.getLoginId(Long.class);
- List<MsgUserMessage> list = this.list(Wrappers.<MsgUserMessage>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<PageBean<MsgUserMessageDto.PageVO>> myMsgPage(MsgUserMessageDto.Page page) {
- page.setUserId(AuthorizeUtils.getLoginId(Long.class));
- PageBean pageBean = page.getPage();
- LambdaQueryWrapper<MsgUserMessage> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, MsgUserMessage.class)
- .ge(MsgUserMessage::getCreateTime, page.getBeginCreateTime())
- .le(MsgUserMessage::getCreateTime, page.getEndCreateTime())
- .build().orderByDesc(MsgUserMessage::getCreateTime);
- IPage<MsgUserMessage> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
- PageBean<MsgUserMessageDto.PageVO> pageVo = toPageBean(MsgUserMessageDto.PageVO.class, iPage);
- List<MsgUserMessageDto.PageVO> records = pageVo.getRecords();
- if (CollUtil.isNotEmpty(records)) {
- List<Integer> msgIds = records.stream().map(MsgUserMessageDto.PageVO::getMsgId).collect(Collectors.toList());
- List<MsgSysMonitorNotice> msgSysMonitorNotices = msgSysMonitorNoticeService.listByIds(msgIds);
- if (CollUtil.isNotEmpty(msgSysMonitorNotices)) {
- Map<Integer, MsgSysMonitorNotice> 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();
- }
- }
|