package com.xcong.excoin.modules.otc.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.excoin.common.LoginUserUtils; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.member.dao.MemberDao; import com.xcong.excoin.modules.member.dao.MemberSettingDao; import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.entity.MemberSettingEntity; import com.xcong.excoin.modules.otc.dao.OtcMsgHistoryDao; import com.xcong.excoin.modules.otc.dao.OtcMsgUserListDao; import com.xcong.excoin.modules.otc.dto.ChatBoxDto; import com.xcong.excoin.modules.otc.dto.MsgListDto; import com.xcong.excoin.modules.otc.dto.SendMsgDto; import com.xcong.excoin.modules.otc.entity.OtcMsgHistoryEntity; import com.xcong.excoin.modules.otc.entity.OtcMsgUserListEntity; import com.xcong.excoin.modules.otc.service.OtcMsgService; import com.xcong.excoin.modules.otc.vo.ChatBoxVo; import com.xcong.excoin.modules.otc.vo.MsgListVo; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @Service @RequiredArgsConstructor public class OtcMsgServiceImpl extends ServiceImpl implements OtcMsgService { private final OtcMsgUserListDao otcMsgUserListDao; private final OtcMsgHistoryDao otcMsgHistoryDao; private final MemberSettingDao memberSettingDao; private final MemberDao memberDao; @Override public IPage getMsgList(MsgListDto msgListDto) { MemberEntity member = LoginUserUtils.getAppLoginUser(); Long memberId = member.getId(); // Long memberId = 444L; Page page = new Page<>(msgListDto.getPageNum(), msgListDto.getPageSize()); OtcMsgUserListEntity otcMsgUserListEntity = new OtcMsgUserListEntity(); otcMsgUserListEntity.setMemberId(memberId); return otcMsgUserListDao.getMsgList(otcMsgUserListEntity, page); } @Override @Transactional public Result getChatBox(ChatBoxDto chatBoxDto) { MemberEntity member = LoginUserUtils.getAppLoginUser(); //对话是否存在 long id = chatBoxDto.getId(); if(ObjectUtil.isEmpty(id)){ return Result.fail("请下拉刷新"); } OtcMsgUserListEntity otcMsgUserListEntity = otcMsgUserListDao.selectById(id); if(ObjectUtil.isEmpty(otcMsgUserListEntity)){ return Result.fail("请下拉刷新"); } //更新为已读 otcMsgUserListEntity.setIsRead(OtcMsgUserListEntity.ISREAD_TWO); otcMsgUserListDao.updateById(otcMsgUserListEntity); long memberId = otcMsgUserListEntity.getMemberId(); long targetId = otcMsgUserListEntity.getTargetId(); Page page = new Page<>(chatBoxDto.getPageNum(), chatBoxDto.getPageSize()); OtcMsgHistoryEntity otcMsgHistoryEntity = new OtcMsgHistoryEntity(); otcMsgHistoryEntity.setMemberId(memberId); otcMsgHistoryEntity.setTargetId(targetId); IPage chatBoxVos= otcMsgHistoryDao.getChatBoxMsgList(page,otcMsgHistoryEntity); return Result.ok(chatBoxVos); } @Override @Transactional public Result sendMsg(SendMsgDto sendMsgDto) { MemberEntity member = LoginUserUtils.getAppLoginUser(); Long memberId = member.getId(); // Long memberId = 445L; long targetId = sendMsgDto.getTargetId(); if(ObjectUtil.isEmpty(targetId)){ return Result.fail("对话用户不存在"); } MemberEntity memberEntity = memberDao.selectById(targetId); if(ObjectUtil.isEmpty(memberEntity)){ return Result.fail("对话用户不存在"); } String msg = sendMsgDto.getMsg(); if(StrUtil.isEmpty(msg)){ return Result.fail("请输入发送消息"); } Integer msgType = sendMsgDto.getMsgType(); if(ObjectUtil.isEmpty(msgType)){ return Result.fail("请输入发送消息"); } /** * 是否有记录 * 有就更新,没有就新增 * 在消息列表中增加一条记录 * 在历史记录中增加一条记录 * 增加一个提醒的 */ // QueryWrapper objectQueryWrapper = new QueryWrapper<>(); // objectQueryWrapper.eq("member_id",memberId); // objectQueryWrapper.eq("target_id",targetId); // OtcMsgUserListEntity otcMsgUserListEntity = otcMsgUserListDao.selectById(objectQueryWrapper); List otcMsgUserListEntitys = otcMsgUserListDao.selectListByMemberIdAndTargetId(memberId,targetId); if(CollUtil.isEmpty(otcMsgUserListEntitys)){ OtcMsgUserListEntity otcMsgUserListEntity = new OtcMsgUserListEntity(); otcMsgUserListEntity.setMemberId(memberId); otcMsgUserListEntity.setTargetId(targetId); otcMsgUserListEntity.setIsRead(OtcMsgUserListEntity.ISREAD_ONE); otcMsgUserListEntity.setLastMsgTime(DateUtil.date()); otcMsgUserListDao.insert(otcMsgUserListEntity); }else{ OtcMsgUserListEntity otcMsgUserListEntity = otcMsgUserListEntitys.get(0); otcMsgUserListEntity.setMemberId(memberId); otcMsgUserListEntity.setTargetId(targetId); otcMsgUserListEntity.setIsRead(OtcMsgUserListEntity.ISREAD_ONE); otcMsgUserListEntity.setLastMsgTime(DateUtil.date()); otcMsgUserListDao.updateById(otcMsgUserListEntity); } //历史消息中增加新纪录 OtcMsgHistoryEntity otcMsgHistoryEntity = new OtcMsgHistoryEntity(); otcMsgHistoryEntity.setMemberId(memberId); otcMsgHistoryEntity.setTargetId(targetId); otcMsgHistoryEntity.setMsg(msg); otcMsgHistoryEntity.setMsgType(msgType); otcMsgHistoryDao.insert(otcMsgHistoryEntity); //增加一个提醒的 MemberSettingEntity memberSettingEntity = memberSettingDao.selectMemberSettingByMemberId(targetId); memberSettingEntity.setMessageReminder(1); memberSettingDao.updateById(memberSettingEntity); return Result.ok("发送成功"); } }