From be41d903ed0b359c273d9e70990c5f72db776b1f Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 26 Nov 2025 10:06:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=AC=AC=E4=B8=89=E6=96=B9=E7=A7=81?= =?UTF-8?q?=E8=81=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../third/ThirdFriendController.java | 7 +- .../third/ThirdPrivateMsgController.java | 54 ++++++++++ .../third/ThirdSensitiveController.java | 19 ++++ .../controller/third/ThirdUserController.java | 6 +- ...dFriendDto.java => ThirdAddFriendDTO.java} | 2 +- .../ThirdPrivateMessageCountDTO.java | 15 +++ .../privatemsg/ThirdPrivateMessageDTO.java | 44 ++++++++ .../ThirdPrivateMessageInfoDTO.java | 15 +++ .../mapper/PrivateMessageMapper.java | 13 +++ .../service/third/ThirdFriendService.java | 4 +- .../service/third/ThirdPrivateMsgService.java | 29 +++++ .../service/third/ThirdSensitiveService.java | 5 + .../service/third/ThirdUserService.java | 6 +- .../third/impl/ThirdFriendServiceImpl.java | 4 +- .../impl/ThirdPrivateMsgServiceImpl.java | 102 ++++++++++++++++++ .../third/impl/ThirdSensitiveServiceImpl.java | 19 ++++ .../third/impl/ThirdUserServiceImpl.java | 8 +- .../bx/implatform/vo/third/ThirdTableVO.java | 89 +++++++++++++++ .../privatemsg/ThirdPrivateMessageVO.java | 39 +++++++ .../ThirdGetUserByUserIdVO.java} | 4 +- .../vo/third/{ => user}/ThirdLoginVO.java | 2 +- 21 files changed, 464 insertions(+), 22 deletions(-) create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/third/ThirdPrivateMsgController.java create mode 100644 im-platform/src/main/java/com/bx/implatform/controller/third/ThirdSensitiveController.java rename im-platform/src/main/java/com/bx/implatform/dto/third/friend/{ThirdAddFriendDto.java => ThirdAddFriendDTO.java} (93%) create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageCountDTO.java create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageDTO.java create mode 100644 im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageInfoDTO.java create mode 100644 im-platform/src/main/java/com/bx/implatform/service/third/ThirdPrivateMsgService.java create mode 100644 im-platform/src/main/java/com/bx/implatform/service/third/ThirdSensitiveService.java create mode 100644 im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdPrivateMsgServiceImpl.java create mode 100644 im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdSensitiveServiceImpl.java create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/third/ThirdTableVO.java create mode 100644 im-platform/src/main/java/com/bx/implatform/vo/third/privatemsg/ThirdPrivateMessageVO.java rename im-platform/src/main/java/com/bx/implatform/vo/third/{ThirdGetUserByUserIdVo.java => user/ThirdGetUserByUserIdVO.java} (94%) rename im-platform/src/main/java/com/bx/implatform/vo/third/{ => user}/ThirdLoginVO.java (93%) diff --git a/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdFriendController.java b/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdFriendController.java index 44e000e..04934f9 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdFriendController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdFriendController.java @@ -1,11 +1,10 @@ package com.bx.implatform.controller.third; -import com.bx.implatform.dto.third.friend.ThirdAddFriendDto; -import com.bx.implatform.dto.third.user.ThirdLoginDTO; +import com.bx.implatform.dto.third.friend.ThirdAddFriendDTO; import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.third.ThirdFriendService; -import com.bx.implatform.vo.third.ThirdLoginVO; +import com.bx.implatform.vo.third.user.ThirdLoginVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; @@ -27,7 +26,7 @@ public class ThirdFriendController { @PostMapping("/add") @Operation(summary = "添加好友", description = "添加好友") - public Result addFriend(@Valid @RequestBody ThirdAddFriendDto dto) { + public Result addFriend(@Valid @RequestBody ThirdAddFriendDTO dto) { thirdFriendService.addFriend(dto); return ResultUtils.success(); } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdPrivateMsgController.java b/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdPrivateMsgController.java new file mode 100644 index 0000000..e3db810 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdPrivateMsgController.java @@ -0,0 +1,54 @@ +package com.bx.implatform.controller.third; + +import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageCountDTO; +import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageDTO; +import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageInfoDTO; +import com.bx.implatform.result.Result; +import com.bx.implatform.result.ResultUtils; +import com.bx.implatform.service.third.ThirdPrivateMsgService; +import com.bx.implatform.vo.third.ThirdTableVO; +import com.bx.implatform.vo.third.privatemsg.ThirdPrivateMessageVO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +@Slf4j +@RestController +@RequestMapping("/third/privateMsg") +@Tag(name = "第三方私聊") +@RequiredArgsConstructor +public class ThirdPrivateMsgController { + + private final ThirdPrivateMsgService thirdPrivateMsgService; + + @PostMapping("/page") + @Operation(summary = "查询私聊消息列表", description = "查询私聊消息列表") + public Result> page(@Valid @RequestBody ThirdPrivateMessageDTO dto) { + ThirdTableVO vo = thirdPrivateMsgService.page(dto); + return ResultUtils.success(vo); + } + + @PostMapping("/getById") + @Operation(summary = "获取私聊消息详细信息", description = "获取私聊消息详细信息") + public Result getInfo(@Valid @RequestBody ThirdPrivateMessageInfoDTO dto) { + ThirdPrivateMessageVO vo = thirdPrivateMsgService.getInfo(dto); + return ResultUtils.success(vo); + } + + @PostMapping("/dailyCount") + @Operation(summary = "按天统计私聊消息量", description = "按天统计私聊消息量") + public Result>> getDailyMessageCount(@Valid @RequestBody ThirdPrivateMessageCountDTO dto) { + List> vo = thirdPrivateMsgService.getDailyMessageCount(dto); + return ResultUtils.success(vo); + } + +} diff --git a/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdSensitiveController.java b/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdSensitiveController.java new file mode 100644 index 0000000..1f0a9ff --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdSensitiveController.java @@ -0,0 +1,19 @@ +package com.bx.implatform.controller.third; + +import com.bx.implatform.service.third.ThirdSensitiveService; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequestMapping("/third/sensitive") +@Tag(name = "第三方敏感词") +@RequiredArgsConstructor +public class ThirdSensitiveController { + + private final ThirdSensitiveService thirdSensitiveService; + +} diff --git a/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdUserController.java b/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdUserController.java index d07272b..bc8f684 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdUserController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/third/ThirdUserController.java @@ -6,8 +6,8 @@ import com.bx.implatform.dto.third.user.ThirdLoginDTO; import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.third.ThirdUserService; -import com.bx.implatform.vo.third.ThirdGetUserByUserIdVo; -import com.bx.implatform.vo.third.ThirdLoginVO; +import com.bx.implatform.vo.third.user.ThirdGetUserByUserIdVO; +import com.bx.implatform.vo.third.user.ThirdLoginVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; @@ -33,7 +33,7 @@ public class ThirdUserController { @PostMapping("/getUserByUserId") @Operation(summary = "根据userId查询用户详情", description = "根据userId查询用户详情") - public Result getUserByUserId(@Valid @RequestBody ThirdGetUserByUserIdDTO dto) { + public Result getUserByUserId(@Valid @RequestBody ThirdGetUserByUserIdDTO dto) { return ResultUtils.success(thirdUserService.getUserByUserId(dto)); } diff --git a/im-platform/src/main/java/com/bx/implatform/dto/third/friend/ThirdAddFriendDto.java b/im-platform/src/main/java/com/bx/implatform/dto/third/friend/ThirdAddFriendDTO.java similarity index 93% rename from im-platform/src/main/java/com/bx/implatform/dto/third/friend/ThirdAddFriendDto.java rename to im-platform/src/main/java/com/bx/implatform/dto/third/friend/ThirdAddFriendDTO.java index 2c7449d..fae805d 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/third/friend/ThirdAddFriendDto.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/third/friend/ThirdAddFriendDTO.java @@ -6,7 +6,7 @@ import lombok.Data; @Data @Schema(description = "third添加朋友DTO") -public class ThirdAddFriendDto { +public class ThirdAddFriendDTO { @NotNull(message = "用户id不存在") @Schema(description = "用户id") diff --git a/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageCountDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageCountDTO.java new file mode 100644 index 0000000..cf41559 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageCountDTO.java @@ -0,0 +1,15 @@ +package com.bx.implatform.dto.third.privatemsg; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "third私聊记录DTO") +public class ThirdPrivateMessageCountDTO { + + @NotNull(message = "统计天数不存在") + @Schema(description = "统计天数") + private Integer days; + +} diff --git a/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageDTO.java new file mode 100644 index 0000000..d94e291 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageDTO.java @@ -0,0 +1,44 @@ +package com.bx.implatform.dto.third.privatemsg; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@Data +@Schema(description = "third私聊记录DTO") +public class ThirdPrivateMessageDTO { + + @Schema(description = "分页大小") + private Integer pageSize; + + @Schema(description = "当前页数") + private Integer pageNum; + + @Schema(description = "id") + private Long id; + + @Schema(description = "发送用户id") + private Long sendId; + + @Schema(description = "接收用户id") + private Long recvId; + + @Schema(description = "发送内容") + private String content; + + @Schema(description = "消息类型 0:文字 1:图片 2:文件") + private Long type; + + @Schema(description = "状态 0:未读 1:已读") + private Long status; + + @Schema(description = "发送时间") + private Date sendTime; + + @Schema(description = "请求参数") + private Map params = new HashMap<>(); + +} diff --git a/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageInfoDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageInfoDTO.java new file mode 100644 index 0000000..8bf9c5c --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageInfoDTO.java @@ -0,0 +1,15 @@ +package com.bx.implatform.dto.third.privatemsg; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "third私聊记录详情DTO") +public class ThirdPrivateMessageInfoDTO { + + @NotNull(message = "msgId不存在") + @Schema(description = "msgId") + private Long msgId; + +} diff --git a/im-platform/src/main/java/com/bx/implatform/mapper/PrivateMessageMapper.java b/im-platform/src/main/java/com/bx/implatform/mapper/PrivateMessageMapper.java index 665e331..75abc2f 100644 --- a/im-platform/src/main/java/com/bx/implatform/mapper/PrivateMessageMapper.java +++ b/im-platform/src/main/java/com/bx/implatform/mapper/PrivateMessageMapper.java @@ -2,7 +2,20 @@ package com.bx.implatform.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.bx.implatform.entity.PrivateMessage; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface PrivateMessageMapper extends BaseMapper { + @Select("SELECT DATE(send_time) as date, COUNT(*) as count " + + "FROM im_private_message " + + "WHERE send_time >= DATE_SUB(CURDATE(), INTERVAL #{days} DAY) " + + "GROUP BY DATE(send_time) " + + "ORDER BY date ASC" + ) + List> getDailyMessageCount(@Param("days") Integer days); + } diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/ThirdFriendService.java b/im-platform/src/main/java/com/bx/implatform/service/third/ThirdFriendService.java index 312672d..7f2b366 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/third/ThirdFriendService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/third/ThirdFriendService.java @@ -1,6 +1,6 @@ package com.bx.implatform.service.third; -import com.bx.implatform.dto.third.friend.ThirdAddFriendDto; +import com.bx.implatform.dto.third.friend.ThirdAddFriendDTO; import jakarta.validation.Valid; public interface ThirdFriendService { @@ -8,6 +8,6 @@ public interface ThirdFriendService { /** * 添加好友 */ - void addFriend(@Valid ThirdAddFriendDto dto); + void addFriend(@Valid ThirdAddFriendDTO dto); } diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/ThirdPrivateMsgService.java b/im-platform/src/main/java/com/bx/implatform/service/third/ThirdPrivateMsgService.java new file mode 100644 index 0000000..d5d5bdb --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/service/third/ThirdPrivateMsgService.java @@ -0,0 +1,29 @@ +package com.bx.implatform.service.third; + +import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageCountDTO; +import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageDTO; +import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageInfoDTO; +import com.bx.implatform.vo.third.ThirdTableVO; +import com.bx.implatform.vo.third.privatemsg.ThirdPrivateMessageVO; +import jakarta.validation.Valid; + +import java.util.List; +import java.util.Map; + +public interface ThirdPrivateMsgService { + + /** + * 查询私聊消息列表 + */ + ThirdTableVO page(@Valid ThirdPrivateMessageDTO dto); + + /** + * 获取私聊消息详细信息 + */ + ThirdPrivateMessageVO getInfo(@Valid ThirdPrivateMessageInfoDTO dto); + + /** + * 按天统计私聊消息量 + */ + List> getDailyMessageCount(@Valid ThirdPrivateMessageCountDTO dto); +} diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/ThirdSensitiveService.java b/im-platform/src/main/java/com/bx/implatform/service/third/ThirdSensitiveService.java new file mode 100644 index 0000000..cdf1b54 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/service/third/ThirdSensitiveService.java @@ -0,0 +1,5 @@ +package com.bx.implatform.service.third; + +public interface ThirdSensitiveService { + +} diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/ThirdUserService.java b/im-platform/src/main/java/com/bx/implatform/service/third/ThirdUserService.java index 0888875..79e561d 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/third/ThirdUserService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/third/ThirdUserService.java @@ -5,8 +5,8 @@ import com.bx.implatform.dto.third.user.ThirdCreateOrUpdateUserDTO; import com.bx.implatform.dto.third.user.ThirdGetUserByUserIdDTO; import com.bx.implatform.dto.third.user.ThirdLoginDTO; import com.bx.implatform.entity.User; -import com.bx.implatform.vo.third.ThirdGetUserByUserIdVo; -import com.bx.implatform.vo.third.ThirdLoginVO; +import com.bx.implatform.vo.third.user.ThirdGetUserByUserIdVO; +import com.bx.implatform.vo.third.user.ThirdLoginVO; import jakarta.validation.Valid; public interface ThirdUserService extends IService { @@ -24,5 +24,5 @@ public interface ThirdUserService extends IService { /** * 根据userId查询用户详情 */ - ThirdGetUserByUserIdVo getUserByUserId(@Valid ThirdGetUserByUserIdDTO dto); + ThirdGetUserByUserIdVO getUserByUserId(@Valid ThirdGetUserByUserIdDTO dto); } diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdFriendServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdFriendServiceImpl.java index 7b2f934..4d6a430 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdFriendServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdFriendServiceImpl.java @@ -1,7 +1,7 @@ package com.bx.implatform.service.third.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.bx.implatform.dto.third.friend.ThirdAddFriendDto; +import com.bx.implatform.dto.third.friend.ThirdAddFriendDTO; import com.bx.implatform.entity.Friend; import com.bx.implatform.mapper.FriendMapper; import com.bx.implatform.service.FriendService; @@ -24,7 +24,7 @@ public class ThirdFriendServiceImpl extends ServiceImpl im * 添加好友 */ @Override - public void addFriend(ThirdAddFriendDto dto) { + public void addFriend(ThirdAddFriendDTO dto) { friendService.bindFriend(dto.getUserId(), dto.getTargetUserId()); } diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdPrivateMsgServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdPrivateMsgServiceImpl.java new file mode 100644 index 0000000..e9141bb --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdPrivateMsgServiceImpl.java @@ -0,0 +1,102 @@ +package com.bx.implatform.service.third.impl; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageCountDTO; +import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageDTO; +import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageInfoDTO; +import com.bx.implatform.entity.PrivateMessage; +import com.bx.implatform.mapper.PrivateMessageMapper; +import com.bx.implatform.service.third.ThirdPrivateMsgService; +import com.bx.implatform.vo.third.ThirdTableVO; +import com.bx.implatform.vo.third.privatemsg.ThirdPrivateMessageVO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * 第三方私聊消息 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ThirdPrivateMsgServiceImpl extends ServiceImpl implements ThirdPrivateMsgService { + + /** + * 查询私聊消息列表 + */ + @Override + public ThirdTableVO page(ThirdPrivateMessageDTO dto) { + ThirdTableVO result = new ThirdTableVO(); + + Page page = baseMapper.selectPage(new Page(dto.getPageNum(), dto.getPageSize()), buildQueryWrapper(dto)); + + result.setTotal(page.getTotal()); + if (ObjectUtil.isNotEmpty(page.getRecords())) { + result.setRows(BeanUtil.copyToList(page.getRecords(), ThirdPrivateMessageVO.class)); + } + + return result; + } + + /** + * 获取私聊消息详细信息 + */ + @Override + public ThirdPrivateMessageVO getInfo(ThirdPrivateMessageInfoDTO dto) { + PrivateMessage detail = baseMapper.selectById(dto.getMsgId()); + if (ObjectUtil.isNotEmpty(detail)) { + return BeanUtil.copyProperties(detail, ThirdPrivateMessageVO.class); + } + return null; + } + + /** + * 按天统计私聊消息量 + */ + @Override + public List> getDailyMessageCount(ThirdPrivateMessageCountDTO dto) { + Integer days = dto.getDays(); + if (ObjectUtil.isEmpty(days) || days <= 0) { + days = 7; + } + return baseMapper.getDailyMessageCount(days); + } + + private LambdaQueryWrapper buildQueryWrapper(ThirdPrivateMessageDTO bo) { + Map params = bo.getParams(); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + if (!Objects.isNull(bo.getSendId()) && !Objects.isNull(bo.getRecvId())) { + // 指定了两个用户,返回这两个用户之间的聊天记录 + wrapper.and(wrap -> wrap.and(wp -> wp.eq(PrivateMessage::getSendId, bo.getSendId()) + .eq(PrivateMessage::getRecvId, bo.getRecvId())) + .or(wp -> wp.eq(PrivateMessage::getSendId, bo.getRecvId()) + .eq(PrivateMessage::getRecvId, bo.getSendId()))); + + } else if (!Objects.isNull(bo.getSendId())) { + wrapper.and(wp -> wp.eq(PrivateMessage::getSendId, bo.getSendId()).or() + .eq(PrivateMessage::getRecvId, bo.getSendId())); + } else if (!Objects.isNull(bo.getRecvId())) { + wrapper.and(wp -> wp.eq(PrivateMessage::getSendId, bo.getRecvId()).or() + .eq(PrivateMessage::getRecvId, bo.getRecvId())); + } + wrapper.like(ObjUtil.isNotEmpty(bo.getContent()), PrivateMessage::getContent, bo.getContent()); + wrapper.eq(!Objects.isNull(bo.getType()), PrivateMessage::getType, bo.getType()); + wrapper.eq(!Objects.isNull(bo.getStatus()), PrivateMessage::getStatus, bo.getStatus()); + wrapper.between(params.get("beginTime") != null && params.get("endTime") != null, PrivateMessage::getSendTime, + params.get("beginTime"), params.get("endTime")); + wrapper.orderByDesc(PrivateMessage::getId); + return wrapper; + } + +} diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdSensitiveServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdSensitiveServiceImpl.java new file mode 100644 index 0000000..aca5bc0 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdSensitiveServiceImpl.java @@ -0,0 +1,19 @@ +package com.bx.implatform.service.third.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bx.implatform.entity.SensitiveWord; +import com.bx.implatform.mapper.SensitiveWordMapper; +import com.bx.implatform.service.third.ThirdSensitiveService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * 第三方敏感词 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ThirdSensitiveServiceImpl extends ServiceImpl implements ThirdSensitiveService { + +} diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdUserServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdUserServiceImpl.java index f42bbcb..35fb55a 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdUserServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdUserServiceImpl.java @@ -14,8 +14,8 @@ import com.bx.implatform.mapper.UserMapper; import com.bx.implatform.service.third.ThirdUserService; import com.bx.implatform.session.UserSession; import com.bx.implatform.util.BeanUtils; -import com.bx.implatform.vo.third.ThirdGetUserByUserIdVo; -import com.bx.implatform.vo.third.ThirdLoginVO; +import com.bx.implatform.vo.third.user.ThirdGetUserByUserIdVO; +import com.bx.implatform.vo.third.user.ThirdLoginVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.crypto.password.PasswordEncoder; @@ -85,9 +85,9 @@ public class ThirdUserServiceImpl extends ServiceImpl implemen * 根据userId查询用户详情 */ @Override - public ThirdGetUserByUserIdVo getUserByUserId(ThirdGetUserByUserIdDTO dto) { + public ThirdGetUserByUserIdVO getUserByUserId(ThirdGetUserByUserIdDTO dto) { User user = baseMapper.selectById(dto.getUserId()); - return BeanUtils.copyProperties(user, ThirdGetUserByUserIdVo.class); + return BeanUtils.copyProperties(user, ThirdGetUserByUserIdVO.class); } } diff --git a/im-platform/src/main/java/com/bx/implatform/vo/third/ThirdTableVO.java b/im-platform/src/main/java/com/bx/implatform/vo/third/ThirdTableVO.java new file mode 100644 index 0000000..f1d63f2 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/vo/third/ThirdTableVO.java @@ -0,0 +1,89 @@ +package com.bx.implatform.vo.third; + +import cn.hutool.http.HttpStatus; +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * 表格分页数据对象 + * + * @author Lion Li + */ +@Data +@NoArgsConstructor +public class ThirdTableVO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 总记录数 + */ + private long total; + + /** + * 列表数据 + */ + private List rows; + + /** + * 消息状态码 + */ + private int code; + + /** + * 消息内容 + */ + private String msg; + + /** + * 分页 + * + * @param list 列表数据 + * @param total 总记录数 + */ + public ThirdTableVO(List list, long total) { + this.rows = list; + this.total = total; + } + + /** + * 根据分页对象构建表格分页数据对象 + */ + public static ThirdTableVO build(IPage page) { + ThirdTableVO rspData = new ThirdTableVO<>(); + rspData.setCode(HttpStatus.HTTP_OK); + rspData.setMsg("查询成功"); + rspData.setRows(page.getRecords()); + rspData.setTotal(page.getTotal()); + return rspData; + } + + /** + * 根据数据列表构建表格分页数据对象 + */ + public static ThirdTableVO build(List list) { + ThirdTableVO rspData = new ThirdTableVO<>(); + rspData.setCode(HttpStatus.HTTP_OK); + rspData.setMsg("查询成功"); + rspData.setRows(list); + rspData.setTotal(list.size()); + return rspData; + } + + /** + * 构建表格分页数据对象 + */ + public static ThirdTableVO build() { + ThirdTableVO rspData = new ThirdTableVO<>(); + rspData.setCode(HttpStatus.HTTP_OK); + rspData.setMsg("查询成功"); + return rspData; + } + +} diff --git a/im-platform/src/main/java/com/bx/implatform/vo/third/privatemsg/ThirdPrivateMessageVO.java b/im-platform/src/main/java/com/bx/implatform/vo/third/privatemsg/ThirdPrivateMessageVO.java new file mode 100644 index 0000000..e7af4f8 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/vo/third/privatemsg/ThirdPrivateMessageVO.java @@ -0,0 +1,39 @@ +package com.bx.implatform.vo.third.privatemsg; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "third私聊记录VO") +public class ThirdPrivateMessageVO { + + @Schema(description = "id") + private Long id; + + @Schema(description = "发送用户id") + private Long sendId; + + @Schema(description = "发送用户") + private String sendUserName; + + @Schema(description = "接收用户id") + private Long recvId; + + @Schema(description = "接收用户") + private String recvUserName; + + @Schema(description = "发送内容") + private String content; + + @Schema(description = "消息类型") + private Long type; + + @Schema(description = "状态") + private Long status; + + @Schema(description = "发送时间") + private Date sendTime; + +} diff --git a/im-platform/src/main/java/com/bx/implatform/vo/third/ThirdGetUserByUserIdVo.java b/im-platform/src/main/java/com/bx/implatform/vo/third/user/ThirdGetUserByUserIdVO.java similarity index 94% rename from im-platform/src/main/java/com/bx/implatform/vo/third/ThirdGetUserByUserIdVo.java rename to im-platform/src/main/java/com/bx/implatform/vo/third/user/ThirdGetUserByUserIdVO.java index e1c7d56..90fd2f2 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/third/ThirdGetUserByUserIdVo.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/third/user/ThirdGetUserByUserIdVO.java @@ -1,4 +1,4 @@ -package com.bx.implatform.vo.third; +package com.bx.implatform.vo.third.user; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; @@ -8,7 +8,7 @@ import org.hibernate.validator.constraints.Length; @Data @Schema(description = "third根据userId查询用户详情VO") -public class ThirdGetUserByUserIdVo { +public class ThirdGetUserByUserIdVO { @NotNull(message = "用户id不能为空") @Schema(description = "id") diff --git a/im-platform/src/main/java/com/bx/implatform/vo/third/ThirdLoginVO.java b/im-platform/src/main/java/com/bx/implatform/vo/third/user/ThirdLoginVO.java similarity index 93% rename from im-platform/src/main/java/com/bx/implatform/vo/third/ThirdLoginVO.java rename to im-platform/src/main/java/com/bx/implatform/vo/third/user/ThirdLoginVO.java index fbcfd70..5e43492 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/third/ThirdLoginVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/third/user/ThirdLoginVO.java @@ -1,4 +1,4 @@ -package com.bx.implatform.vo.third; +package com.bx.implatform.vo.third.user; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data;