|
|
|
@ -1,16 +1,22 @@
|
|
|
|
|
package com.baiye.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.text.CharSequenceUtil;
|
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import com.baiye.core.base.api.Result;
|
|
|
|
|
import com.baiye.core.constant.DefaultNumberConstants;
|
|
|
|
|
import com.baiye.dao.TiktokVideoCommentMapper;
|
|
|
|
|
import com.baiye.dto.CommentMessageRecordDTO;
|
|
|
|
|
import com.baiye.dto.SaveSopCommentDTO;
|
|
|
|
|
import com.baiye.dto.SelectGroupDTO;
|
|
|
|
|
import com.baiye.dto.TiktokMemberDTO;
|
|
|
|
|
import com.baiye.entity.TiktokEquipmentEntity;
|
|
|
|
|
import com.baiye.entity.TiktokMember;
|
|
|
|
|
import com.baiye.entity.TiktokVideoComment;
|
|
|
|
|
import com.baiye.handler.TiktokSocketServerHandler;
|
|
|
|
|
import com.baiye.mapstruct.TiktokVideoCommentStruct;
|
|
|
|
|
import com.baiye.query.CommentRecordQuery;
|
|
|
|
|
import com.baiye.service.TiktokEquipmentService;
|
|
|
|
@ -28,6 +34,7 @@ import com.google.common.collect.Lists;
|
|
|
|
|
import com.google.common.collect.Maps;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
@ -47,6 +54,11 @@ import static java.util.Comparator.comparing;
|
|
|
|
|
public class TiktokVideoCommentServiceImpl extends
|
|
|
|
|
ServiceImpl<TiktokVideoCommentMapper, TiktokVideoComment> implements TiktokVideoCommentService {
|
|
|
|
|
|
|
|
|
|
@Value("${snowflake.workerId}")
|
|
|
|
|
private int workerId;
|
|
|
|
|
|
|
|
|
|
@Value("${snowflake.datacenterId}")
|
|
|
|
|
private int datacenterId;
|
|
|
|
|
|
|
|
|
|
private final GetVendorIdUtil vendorIdUtil;
|
|
|
|
|
|
|
|
|
@ -59,6 +71,9 @@ public class TiktokVideoCommentServiceImpl extends
|
|
|
|
|
private final TiktokVideoCommentMapper tiktokVideoCommentMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final TiktokSocketServerHandler tiktokSocketServerHandler;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<CommentMessageRecordDTO> commentPage(Pageable pageable, Long currentUserId) {
|
|
|
|
|
|
|
|
|
@ -76,9 +91,9 @@ public class TiktokVideoCommentServiceImpl extends
|
|
|
|
|
// 查询未读数量
|
|
|
|
|
int count = this.count
|
|
|
|
|
(new LambdaQueryWrapper<TiktokVideoComment>().
|
|
|
|
|
eq(TiktokVideoComment::getUserId, dto.getMemberId()).
|
|
|
|
|
eq(TiktokVideoComment::getUserId, dto.getMemberId()).
|
|
|
|
|
eq(TiktokVideoComment::getVideoId, dto.getVideoId()).
|
|
|
|
|
eq(TiktokVideoComment::getIsRead, Boolean.FALSE));
|
|
|
|
|
eq(TiktokVideoComment::getIsRead, Boolean.FALSE));
|
|
|
|
|
|
|
|
|
|
// 查询用户
|
|
|
|
|
TiktokMemberDTO user =
|
|
|
|
@ -102,7 +117,7 @@ public class TiktokVideoCommentServiceImpl extends
|
|
|
|
|
messageRecord.sort
|
|
|
|
|
(comparing(CommentMessageRecordDTO::getIsRead)
|
|
|
|
|
.thenComparing(CommentMessageRecordDTO::getLastMessageTime).reversed()
|
|
|
|
|
.thenComparing(CommentMessageRecordDTO::getLastUpdateTime));
|
|
|
|
|
.thenComparing(CommentMessageRecordDTO::getLastUpdateTime));
|
|
|
|
|
return messageRecord;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -110,7 +125,7 @@ public class TiktokVideoCommentServiceImpl extends
|
|
|
|
|
public void readComment(Long memberId) {
|
|
|
|
|
this.update(new LambdaUpdateWrapper<TiktokVideoComment>().
|
|
|
|
|
eq(TiktokVideoComment::getMemberId, memberId).
|
|
|
|
|
set(TiktokVideoComment::getIsRead, Boolean.TRUE));
|
|
|
|
|
set(TiktokVideoComment::getIsRead, Boolean.TRUE));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -126,16 +141,16 @@ public class TiktokVideoCommentServiceImpl extends
|
|
|
|
|
Page<TiktokVideoComment> page = PageUtils.startPageAndSort(pageable);
|
|
|
|
|
Wrapper<TiktokVideoComment> queryWrapper =
|
|
|
|
|
new LambdaQueryWrapper<TiktokVideoComment>().eq
|
|
|
|
|
(TiktokVideoComment::getTiktokId,
|
|
|
|
|
commentRecordQuery.getTiktokId()).
|
|
|
|
|
eq(TiktokVideoComment::getVideoId, commentRecordQuery.getVideoId());
|
|
|
|
|
(TiktokVideoComment::getTiktokId,
|
|
|
|
|
commentRecordQuery.getTiktokId()).
|
|
|
|
|
eq(TiktokVideoComment::getVideoId, commentRecordQuery.getVideoId());
|
|
|
|
|
Page<TiktokVideoComment> selectPage = this.page(page, queryWrapper);
|
|
|
|
|
Collections.reverse(selectPage.getRecords());
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(selectPage.getRecords())) {
|
|
|
|
|
String belongTiktokId = selectPage.getRecords().get
|
|
|
|
|
(selectPage.getRecords().size() -
|
|
|
|
|
DefaultNumberConstants.ONE_NUMBER).getBelongTiktokId();
|
|
|
|
|
(selectPage.getRecords().size() -
|
|
|
|
|
DefaultNumberConstants.ONE_NUMBER).getBelongTiktokId();
|
|
|
|
|
if (CharSequenceUtil.isNotBlank(belongTiktokId)) {
|
|
|
|
|
TiktokEquipmentEntity equipment =
|
|
|
|
|
tiktokEquipmentService.getOne
|
|
|
|
@ -164,7 +179,6 @@ public class TiktokVideoCommentServiceImpl extends
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Result<TiktokEquipmentEntity> getEquipmentByOrganizeId(Long organizeId) {
|
|
|
|
|
|
|
|
|
@ -191,4 +205,121 @@ public class TiktokVideoCommentServiceImpl extends
|
|
|
|
|
public void saveBatchComment(List<TiktokVideoComment> commentsList) {
|
|
|
|
|
this.baseMapper.batchInsert(commentsList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean saveComment(List<SaveSopCommentDTO> dtoList) {
|
|
|
|
|
List<TiktokVideoComment> commentsList = Lists.newArrayList();
|
|
|
|
|
if (CollUtil.isNotEmpty(dtoList)) {
|
|
|
|
|
for (SaveSopCommentDTO dto : dtoList) {
|
|
|
|
|
if (CollUtil.isNotEmpty(dto.getDtoList())) {
|
|
|
|
|
// 视频查询评论列表
|
|
|
|
|
List<Long> longs = tiktokVideoCommentMapper.selectCommentByVideoId(dto.getAwemeId());
|
|
|
|
|
for (SaveSopCommentDTO.TiktokSopCommentVideoDTO commentVideoDTO : dto.getDtoList()) {
|
|
|
|
|
|
|
|
|
|
// 评论别人
|
|
|
|
|
if (ObjectUtil.isNotNull(commentVideoDTO.getIsCommentOther())) {
|
|
|
|
|
// 判断是否包含评论
|
|
|
|
|
if (!longs.contains(commentVideoDTO.getChildCommentId()) &&
|
|
|
|
|
!longs.contains(commentVideoDTO.getParentCommentId())) {
|
|
|
|
|
|
|
|
|
|
if (Boolean.TRUE.equals(commentVideoDTO.getIsCommentOther())) {
|
|
|
|
|
TiktokMemberDTO member = tiktokMemberService.
|
|
|
|
|
saveTiktokMemberByTiktok(commentVideoDTO.getChildTiktokId());
|
|
|
|
|
if (ObjectUtil.isNotNull(member) && ObjectUtil.isNotNull(member.getId())) {
|
|
|
|
|
// 构建父类评论
|
|
|
|
|
TiktokVideoComment parentComment = buildComment
|
|
|
|
|
(Boolean.FALSE, commentVideoDTO.getDyVendorId(),
|
|
|
|
|
dto.getAwemeId(), commentVideoDTO.getParentTiktokId(),
|
|
|
|
|
commentVideoDTO.getParentCommentId(),
|
|
|
|
|
commentVideoDTO.getParentCommentContent(), Long.parseLong(member.getId()));
|
|
|
|
|
// 构建子类评论
|
|
|
|
|
TiktokVideoComment childComment = buildComment
|
|
|
|
|
(Boolean.TRUE, commentVideoDTO.getDyVendorId(),
|
|
|
|
|
dto.getAwemeId(), commentVideoDTO.getChildTiktokId(),
|
|
|
|
|
commentVideoDTO.getChildCommentId(),
|
|
|
|
|
commentVideoDTO.getChildContent(), Long.parseLong(member.getId()));
|
|
|
|
|
commentsList.add(parentComment);
|
|
|
|
|
commentsList.add(childComment);
|
|
|
|
|
sendMessage(dto, commentVideoDTO, member);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (Boolean.FALSE.equals(commentVideoDTO.getIsCommentOther())) {
|
|
|
|
|
TiktokMemberDTO member = tiktokMemberService.
|
|
|
|
|
saveTiktokMemberByTiktok(commentVideoDTO.getChildTiktokId());
|
|
|
|
|
if (ObjectUtil.isNotNull(member) && ObjectUtil.isNotNull(member.getId())) {
|
|
|
|
|
if (!longs.contains(commentVideoDTO.getParentCommentId())) {
|
|
|
|
|
// 构建父类评论
|
|
|
|
|
TiktokVideoComment parentComment = buildComment
|
|
|
|
|
(Boolean.TRUE, commentVideoDTO.getDyVendorId(),
|
|
|
|
|
dto.getAwemeId(), commentVideoDTO.getParentTiktokId(),
|
|
|
|
|
commentVideoDTO.getParentCommentId(),
|
|
|
|
|
commentVideoDTO.getParentCommentContent(), Long.parseLong(member.getId()));
|
|
|
|
|
commentsList.add(parentComment);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 判断是否包含评论
|
|
|
|
|
if (!longs.contains(commentVideoDTO.getChildCommentId())) {
|
|
|
|
|
// 构建子类评论
|
|
|
|
|
TiktokVideoComment childComment = buildComment
|
|
|
|
|
(Boolean.FALSE, commentVideoDTO.getDyVendorId(),
|
|
|
|
|
dto.getAwemeId(), commentVideoDTO.getChildTiktokId(),
|
|
|
|
|
commentVideoDTO.getChildCommentId(),
|
|
|
|
|
commentVideoDTO.getChildContent(), Long.parseLong(member.getId()));
|
|
|
|
|
commentsList.add(childComment);
|
|
|
|
|
}
|
|
|
|
|
// 发送消息
|
|
|
|
|
sendMessage(dto, commentVideoDTO, member);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 批量插入评论
|
|
|
|
|
tiktokVideoCommentMapper.batchInsert(commentsList);
|
|
|
|
|
}
|
|
|
|
|
return Boolean.FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void sendMessage(SaveSopCommentDTO dto, SaveSopCommentDTO.TiktokSopCommentVideoDTO commentVideoDTO, TiktokMemberDTO member) {
|
|
|
|
|
CommentMessageRecordDTO recordDTO = new CommentMessageRecordDTO();
|
|
|
|
|
// 查询未读数量
|
|
|
|
|
recordDTO.setTiktokMember(member);
|
|
|
|
|
recordDTO.setIsRead(Boolean.TRUE);
|
|
|
|
|
recordDTO.setIsStar(member.getIsStar());
|
|
|
|
|
recordDTO.setLastMessageTime(DateUtil.date());
|
|
|
|
|
recordDTO.setLastUpdateTime(member.getUpdateTime());
|
|
|
|
|
member.setVideoId(String.valueOf(dto.getAwemeId()));
|
|
|
|
|
recordDTO.setTiktokVideoComments(Lists.newArrayList());
|
|
|
|
|
recordDTO.setMsgType(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
recordDTO.setNotReadNum(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
recordDTO.setLastComment(commentVideoDTO.getChildContent());
|
|
|
|
|
// 发送消息
|
|
|
|
|
tiktokSocketServerHandler.sendMessage
|
|
|
|
|
(String.valueOf(DefaultNumberConstants.ONE_NUMBER), BeanUtil.beanToMap(recordDTO));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private TiktokVideoComment buildComment(Boolean flag,
|
|
|
|
|
String dyVendorId, Long videoId,
|
|
|
|
|
String tiktokId, Long commentId,
|
|
|
|
|
String content, Long memberId) {
|
|
|
|
|
Long nextId = IdUtil.getSnowflake
|
|
|
|
|
(workerId, datacenterId).nextId();
|
|
|
|
|
TiktokVideoComment comment = new TiktokVideoComment();
|
|
|
|
|
comment.setId(nextId);
|
|
|
|
|
comment.setMsg(content);
|
|
|
|
|
comment.setMsgFlag(flag);
|
|
|
|
|
comment.setVideoId(videoId);
|
|
|
|
|
comment.setMemberId(memberId);
|
|
|
|
|
comment.setTiktokId(tiktokId);
|
|
|
|
|
comment.setCommentId(commentId);
|
|
|
|
|
comment.setBelongTiktokId(dyVendorId);
|
|
|
|
|
comment.setStatus(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
comment.setIsRead(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
return comment;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|