| | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | 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.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.dao.OtcOrderDao; |
| | | import com.xcong.excoin.modules.otc.dto.*; |
| | | 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.ChatOrderVo; |
| | | 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.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Service |
| | |
| | | |
| | | private final OtcMsgUserListDao otcMsgUserListDao; |
| | | private final OtcMsgHistoryDao otcMsgHistoryDao; |
| | | private final OtcOrderDao otcOrderDao; |
| | | |
| | | private final MemberSettingDao memberSettingDao; |
| | | private final MemberDao memberDao; |
| | |
| | | MemberEntity member = LoginUserUtils.getAppLoginUser(); |
| | | Long memberId = member.getId(); |
| | | // Long memberId = 444L; |
| | | // MemberEntity member = memberDao.selectById(memberId); |
| | | |
| | | Page<MsgListVo> page = new Page<>(msgListDto.getPageNum(), msgListDto.getPageSize()); |
| | | |
| | | OtcMsgUserListEntity otcMsgUserListEntity = new OtcMsgUserListEntity(); |
| | | otcMsgUserListEntity.setMemberId(memberId); |
| | | return otcMsgUserListDao.getMsgList(otcMsgUserListEntity, page); |
| | | otcMsgUserListEntity.setNickname(msgListDto.getNickname()); |
| | | IPage<MsgListVo> msgList = otcMsgUserListDao.getMsgList(otcMsgUserListEntity, page); |
| | | List<MsgListVo> records = msgList.getRecords(); |
| | | //更新最外层的消息提醒 |
| | | boolean flag = true; |
| | | if(CollUtil.isNotEmpty(records)){ |
| | | for(MsgListVo msgListVo : records){ |
| | | long targetId = msgListVo.getTargetId(); |
| | | // MemberEntity memberEntity = memberDao.selectById(targetId); |
| | | // msgListVo.setNickname(memberEntity.getName()); |
| | | |
| | | ChatOrderVo chatOrderVo = new ChatOrderVo(); |
| | | List<ChatOrderVo> chatOrderVos = otcOrderDao.selectOneByMemberIdAndTargetId(memberId,targetId); |
| | | if(CollUtil.isNotEmpty(chatOrderVos)){ |
| | | for(ChatOrderVo chatOrderVodone : chatOrderVos){ |
| | | Long memberIdDone = chatOrderVodone.getMemberId(); |
| | | if(memberId.equals(memberIdDone) || memberId == memberIdDone){ |
| | | chatOrderVo = chatOrderVodone; |
| | | } |
| | | } |
| | | } |
| | | msgListVo.setChatOrderVo(chatOrderVo); |
| | | |
| | | Integer isRead = msgListVo.getIsRead(); |
| | | if(OtcMsgUserListEntity.ISREAD_ONE == isRead){ |
| | | flag = false; |
| | | } |
| | | } |
| | | if(flag){ |
| | | MemberSettingEntity memberSettingEntity = memberSettingDao.selectMemberSettingByMemberId(member.getId()); |
| | | memberSettingEntity.setMessageReminder(0); |
| | | memberSettingDao.updateById(memberSettingEntity); |
| | | } |
| | | } |
| | | return msgList; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public Result getChatBox(ChatBoxDto chatBoxDto) { |
| | | MemberEntity member = LoginUserUtils.getAppLoginUser(); |
| | | // MemberEntity member = memberDao.selectById(443L); |
| | | //对话是否存在 |
| | | long id = chatBoxDto.getId(); |
| | | if(ObjectUtil.isEmpty(id)){ |
| | |
| | | public Result sendMsg(SendMsgDto sendMsgDto) { |
| | | MemberEntity member = LoginUserUtils.getAppLoginUser(); |
| | | Long memberId = member.getId(); |
| | | // Long memberId = 445L; |
| | | // Long memberId = 449L; |
| | | long targetId = sendMsgDto.getTargetId(); |
| | | if(ObjectUtil.isEmpty(targetId)){ |
| | | return Result.fail("对话用户不存在"); |
| | |
| | | if(ObjectUtil.isEmpty(msgType)){ |
| | | return Result.fail("请输入发送消息"); |
| | | } |
| | | /** |
| | | * 是否有记录 |
| | | * 有就更新,没有就新增 |
| | | * 在消息列表中增加一条记录 |
| | | * 在历史记录中增加一条记录 |
| | | * 增加一个提醒的 |
| | | */ |
| | | // QueryWrapper<OtcMsgHistoryEntity> objectQueryWrapper = new QueryWrapper<>(); |
| | | // objectQueryWrapper.eq("member_id",memberId); |
| | | // objectQueryWrapper.eq("target_id",targetId); |
| | | // OtcMsgUserListEntity otcMsgUserListEntity = otcMsgUserListDao.selectById(objectQueryWrapper); |
| | | List<OtcMsgUserListEntity> otcMsgUserListEntitys = otcMsgUserListDao.selectListByMemberIdAndTargetId(memberId,targetId); |
| | | if(CollUtil.isEmpty(otcMsgUserListEntitys)){ |
| | | //发送方 |
| | | List<OtcMsgUserListEntity> otcMsgUserListEntityFrom = otcMsgUserListDao.selectListByMemberIdAndTargetId(memberId,targetId); |
| | | if(CollUtil.isEmpty(otcMsgUserListEntityFrom)){ |
| | | OtcMsgUserListEntity otcMsgUserListEntity = new OtcMsgUserListEntity(); |
| | | otcMsgUserListEntity.setMemberId(memberId); |
| | | otcMsgUserListEntity.setTargetId(targetId); |
| | | otcMsgUserListEntity.setIsRead(OtcMsgUserListEntity.ISREAD_TWO); |
| | | otcMsgUserListEntity.setLastMsgTime(DateUtil.date()); |
| | | otcMsgUserListDao.insert(otcMsgUserListEntity); |
| | | }else{ |
| | | OtcMsgUserListEntity otcMsgUserListEntity = otcMsgUserListEntityFrom.get(0); |
| | | otcMsgUserListEntity.setMemberId(memberId); |
| | | otcMsgUserListEntity.setTargetId(targetId); |
| | | otcMsgUserListEntity.setIsRead(OtcMsgUserListEntity.ISREAD_TWO); |
| | | otcMsgUserListEntity.setLastMsgTime(DateUtil.date()); |
| | | otcMsgUserListDao.updateById(otcMsgUserListEntity); |
| | | } |
| | | //历史消息中增加新纪录 |
| | | OtcMsgHistoryEntity otcMsgHistoryEntityFrom = new OtcMsgHistoryEntity(); |
| | | otcMsgHistoryEntityFrom.setMemberId(memberId); |
| | | otcMsgHistoryEntityFrom.setFromMemberId(memberId); |
| | | otcMsgHistoryEntityFrom.setTargetId(targetId); |
| | | otcMsgHistoryEntityFrom.setMsg(msg); |
| | | otcMsgHistoryEntityFrom.setMsgType(msgType); |
| | | otcMsgHistoryEntityFrom.setIsSelf(OtcMsgHistoryEntity.ISSELF_ONE); |
| | | otcMsgHistoryDao.insert(otcMsgHistoryEntityFrom); |
| | | //接受方 |
| | | List<OtcMsgUserListEntity> otcMsgUserListEntityTo = otcMsgUserListDao.selectListByMemberIdAndTargetId(targetId,memberId); |
| | | if(CollUtil.isEmpty(otcMsgUserListEntityTo)){ |
| | | OtcMsgUserListEntity otcMsgUserListEntity = new OtcMsgUserListEntity(); |
| | | otcMsgUserListEntity.setMemberId(targetId); |
| | | otcMsgUserListEntity.setTargetId(memberId); |
| | | 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 otcMsgUserListEntity = otcMsgUserListEntityTo.get(0); |
| | | otcMsgUserListEntity.setMemberId(targetId); |
| | | otcMsgUserListEntity.setTargetId(memberId); |
| | | 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); |
| | | OtcMsgHistoryEntity otcMsgHistoryEntityTo = new OtcMsgHistoryEntity(); |
| | | otcMsgHistoryEntityTo.setMemberId(targetId); |
| | | otcMsgHistoryEntityTo.setFromMemberId(memberId); |
| | | otcMsgHistoryEntityTo.setTargetId(targetId); |
| | | otcMsgHistoryEntityTo.setMsg(msg); |
| | | otcMsgHistoryEntityTo.setMsgType(msgType); |
| | | otcMsgHistoryEntityTo.setIsSelf(OtcMsgHistoryEntity.ISSELF_TWO); |
| | | otcMsgHistoryDao.insert(otcMsgHistoryEntityTo); |
| | | |
| | | //增加一个提醒的 |
| | | MemberSettingEntity memberSettingEntity = memberSettingDao.selectMemberSettingByMemberId(targetId); |
| | |
| | | return Result.ok("发送成功"); |
| | | } |
| | | |
| | | @Override |
| | | public Result getChatBoxConnect(ConnectDto connectDto) { |
| | | |
| | | MemberEntity member = LoginUserUtils.getAppLoginUser(); |
| | | Long memberId = member.getId(); |
| | | // Long memberId = 443L; |
| | | long targetId = connectDto.getTargetId(); |
| | | if(ObjectUtil.isEmpty(targetId)){ |
| | | return Result.fail("请返回重试"); |
| | | } |
| | | IPage<ChatBoxVo> chatBoxVos= new Page<>(); |
| | | List<OtcMsgUserListEntity> otcMsgUserListEntitys = otcMsgUserListDao.selectListByMemberIdAndTargetId(memberId,targetId); |
| | | if(CollUtil.isNotEmpty(otcMsgUserListEntitys)){ |
| | | Page<ChatBoxVo> page = new Page<>(connectDto.getPageNum(), connectDto.getPageSize()); |
| | | OtcMsgHistoryEntity otcMsgHistoryEntity = new OtcMsgHistoryEntity(); |
| | | otcMsgHistoryEntity.setMemberId(memberId); |
| | | otcMsgHistoryEntity.setTargetId(targetId); |
| | | chatBoxVos = otcMsgHistoryDao.getChatBoxMsgList(page,otcMsgHistoryEntity); |
| | | } |
| | | return Result.ok(chatBoxVos); |
| | | } |
| | | |
| | | @Override |
| | | public Result getChatOrder(ChatOrderDto chatOrderDto) { |
| | | |
| | | MemberEntity member = LoginUserUtils.getAppLoginUser(); |
| | | Long memberId = member.getId(); |
| | | // Long memberId = 443L; |
| | | |
| | | long targetId = chatOrderDto.getTargetId(); |
| | | if(ObjectUtil.isEmpty(targetId)){ |
| | | return Result.fail("请返回重试"); |
| | | } |
| | | ArrayList<ChatOrderVo> chatOrderVoList = new ArrayList<>(); |
| | | List<ChatOrderVo> chatOrderVos = otcOrderDao.selectByMemberIdAndTargetId(memberId,targetId); |
| | | if(CollUtil.isNotEmpty(chatOrderVos)){ |
| | | for(ChatOrderVo chatOrderVo : chatOrderVos){ |
| | | Long memberIdDone = chatOrderVo.getMemberId(); |
| | | if(memberId.equals(memberIdDone) || memberId == memberIdDone){ |
| | | chatOrderVoList.add(chatOrderVo); |
| | | } |
| | | } |
| | | } |
| | | return Result.ok(chatOrderVoList); |
| | | } |
| | | |
| | | |
| | | } |