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<OtcMsgUserListDao, OtcMsgUserListEntity> implements OtcMsgService {
|
|
private final OtcMsgUserListDao otcMsgUserListDao;
|
private final OtcMsgHistoryDao otcMsgHistoryDao;
|
|
private final MemberSettingDao memberSettingDao;
|
private final MemberDao memberDao;
|
|
|
@Override
|
public IPage<MsgListVo> getMsgList(MsgListDto msgListDto) {
|
MemberEntity member = LoginUserUtils.getAppLoginUser();
|
Long memberId = member.getId();
|
// Long memberId = 444L;
|
Page<MsgListVo> 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<ChatBoxVo> page = new Page<>(chatBoxDto.getPageNum(), chatBoxDto.getPageSize());
|
OtcMsgHistoryEntity otcMsgHistoryEntity = new OtcMsgHistoryEntity();
|
otcMsgHistoryEntity.setMemberId(memberId);
|
otcMsgHistoryEntity.setTargetId(targetId);
|
IPage<ChatBoxVo> 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<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)){
|
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("发送成功");
|
}
|
|
|
}
|