From 80c41b4662ad7eec1264cab356326970a3b49c69 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Sun, 16 Jan 2022 18:07:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B9=B3=E5=8F=B0=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8C=87=E5=AE=9A=E7=94=A8=E6=88=B7=E5=8F=91=E9=80=81?= =?UTF-8?q?=E8=BF=87=E7=9A=84=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=20=E4=BD=BF=E6=9F=A5=E8=AF=A2=E7=BB=99=E7=A7=9F=E6=88=B7?= =?UTF-8?q?=E5=8F=91=E9=80=81=E4=BF=A1=E6=81=AF=E7=9A=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E5=85=B6=E5=8F=AF=E4=BB=A5=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E6=9F=A5=E8=AF=A2=EF=BC=8C=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96bug=EF=BC=8C=E6=8F=92=E5=85=A5=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E6=9C=AA=E6=B7=BB=E5=8A=A0have=5Fnew=5Finfo?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E4=B8=BA0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../XhpcMessageBoardController.java | 20 ++++- .../board/domain/QueryUserListRequest.java | 3 +- .../service/XhpcMessageBoardService.java | 11 +++ .../impl/XhpcMessageBoardServiceImpl.java | 80 ++++++++++++++++++- .../mapper/XhpcMessageBoardMapper.xml | 8 +- .../XhpcMessageBoardReceiveUserMapper.xml | 18 ++++- 6 files changed, 125 insertions(+), 15 deletions(-) diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java index e44333fb..ab141e6d 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java @@ -1,8 +1,6 @@ package com.xhpc.board.controller; -import com.xhpc.board.domain.PlatformSendMessageToUserRequest; -import com.xhpc.board.domain.QueryUserListRequest; -import com.xhpc.board.domain.QueryUserListResponse; +import com.xhpc.board.domain.*; import com.xhpc.board.service.XhpcMessageBoardService; import com.xhpc.common.core.web.domain.AjaxResult; import lombok.extern.slf4j.Slf4j; @@ -57,4 +55,20 @@ public class XhpcMessageBoardController { } + /** + * 平台查询指定用户消息 + * + * @author WH + * @date 2022/1/15 18:47 + * @since version-1.0 + */ + @GetMapping("/user/message") + public AjaxResult platformQueryMessage(UserQueryCondition userQueryCondition) throws Exception { + + QueryUserMassageResponse queryUserMassageResponse = xhpcMessageBoardService.platformQueryMessage(userQueryCondition); + + return AjaxResult.success(queryUserMassageResponse); + + } + } diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/QueryUserListRequest.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/QueryUserListRequest.java index d9d0623b..0a54adb1 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/QueryUserListRequest.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/QueryUserListRequest.java @@ -17,7 +17,6 @@ import javax.validation.constraints.NotNull; */ @NoArgsConstructor @Data - public class QueryUserListRequest { /** @@ -42,7 +41,7 @@ public class QueryUserListRequest { */ @JsonProperty("items") @NotNull(message = "items的参数名不正确或者items的值为空,请检查传入参数") - @Min(value = 1, message = "每页显示至少1条数据") + @Min(value = 1, message = "每页至少需要显示1条数据") private Integer items; /** * tenantId diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java index 152b1b87..9d7a7010 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java @@ -36,6 +36,7 @@ public interface XhpcMessageBoardService { * * @param userQueryCondition 用户传入的条件 * @return 用户在数据库中发送的记录 + * * @author WH * @date 2022/1/12 15:30 * @since version-1.0 @@ -66,5 +67,15 @@ public interface XhpcMessageBoardService { */ QueryUserListResponse queryUserList(QueryUserListRequest param) throws Exception; + /** + * 平台查询用户发送过来的信息,与用户查看它自己的信息一致 + * + * @param userQueryCondition 要查询的用户的信息 + * @return 返回用户与平台用户的一个月的聊天记录 + * @author WH + * @date 2022/1/16 15:39 + * @since version-1.0 + */ + QueryUserMassageResponse platformQueryMessage(UserQueryCondition userQueryCondition); } diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java index cd852bb2..a0c7558a 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java @@ -161,11 +161,13 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { * 根据用户条件,查询指定的数据库中的记录 * * @param userQueryCondition 用户传入的条件 + * @return 用户在数据库中发送的记录 * @author WH * @date 2022/1/12 15:30 * @since version-1.0 */ @Override + @Transactional(rollbackFor = Exception.class) public QueryUserMassageResponse queryUserMessage(UserQueryCondition userQueryCondition) { //完善条件集合 LoginUser loginUser = tokenService.getLoginUser(); @@ -209,8 +211,9 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { Long messageId = aMonthRecords.get(index).getMessageId(); messageIdList.add(messageId); } - //设置查询出来的记录为已读状态 + //设置查询出来的记录为已读状态,然后再查询,保证查询出来的是否有新信息状态被改变 messageBoardMapper.setUserReadedStatus(messageIdList); + aMonthRecords = messageBoardMapper.selectBy(userQueryCondition, nextTimeStr); //封装数据 ArrayList dataDTOS = new ArrayList<>(); for (XhpcMessageBoard aMonthRecord : aMonthRecords) { @@ -220,7 +223,6 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { dataDTOS.add(dataDTO); } //处理下次查询时间 - //todo 截取时间 response.setNextQueryTime(nextTimeStr); response.setData(dataDTOS); return response; @@ -259,7 +261,7 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { //查询用户列表 SysUser receiverInfo = tokenService.getLoginUser().getSysUser(); if (receiverInfo == null) { - throw new Exception("查询不到指定的租户,receiver为null,请检查传递的参数"); + throw new Exception("查询不到指定的租户,receiverInfo为null,请检查传递的参数"); } QueryUserListResponse queryUserListResponse = new QueryUserListResponse(); //查询出该租户拥有的所有用户列表 @@ -282,4 +284,76 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { return queryUserListResponse; } + /** + * 平台查询用户发送过来的信息,与用户查看它自己的信息的代码逻辑一致 + * + * @param userQueryCondition 要查询的用户的信息 + * @return 返回用户与平台用户的一个月的聊天记录 + * @author WH + * @date 2022/1/16 15:39 + * @since version-1.0 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public QueryUserMassageResponse platformQueryMessage(UserQueryCondition userQueryCondition) { + //完善条件集合 + SysUser sysUser = tokenService.getLoginUser().getSysUser(); + userQueryCondition.setTenantId(sysUser.getTenantId()); + userQueryCondition.setTenantType(0); + String nextTimeStr = null; + if ("".equals(userQueryCondition.getSendMessageTime()) || userQueryCondition.getSendMessageTime() == null || "null".equals(userQueryCondition.getSendMessageTime())) { + userQueryCondition.setSendMessageTime(DateUtil.getYyyyMmDdHhMmSs()); + //查询用户是否有数据,即查询该用户的所有时间记录(有时间记录表示该用户发送过信息) + List allTimeRecords = messageBoardMapper.selectTimeRecords(userQueryCondition); + QueryUserMassageResponse queryUserMassageResponse = new QueryUserMassageResponse(); + if (allTimeRecords.size() == 0) { + return queryUserMassageResponse; + } + //获取最后一个时间记录,将其减去一个月,放入查询条件中 + XhpcMessageBoard xhpcMessageBoard = allTimeRecords.get(allTimeRecords.size() - 1); + Date finalTime = xhpcMessageBoard.getSendMessageTime(); + userQueryCondition.setSendMessageTime(DateUtils.parseDateToStr(finalTime)); + Calendar finalTimeCalendar = DateUtil.getCalendar(finalTime); + finalTimeCalendar.add(Calendar.MONTH, -1); + Date nextTime = finalTimeCalendar.getTime(); + nextTimeStr = DateUtils.parseDateToStr(nextTime); + } else { + //如果有值过来,说明有之前的记录,计算上一个月的值,作为查询条件,并返回 + String sendMessageTimeStr = userQueryCondition.getSendMessageTime(); + Date sendMessageTimeDate = DateUtils.parseDate(sendMessageTimeStr); + Calendar nextTimeCalendar = DateUtil.getCalendar(sendMessageTimeDate); + nextTimeCalendar.add(Calendar.MONTH, -1); + Date nextTime = nextTimeCalendar.getTime(); + nextTimeStr = DateUtils.parseDateToStr(nextTime); + } + //根据用户信息中所保存的时间,与上个月时间进行区间查询 + List aMonthRecords = messageBoardMapper.selectBy(userQueryCondition, nextTimeStr); + //如果没有数据,则返回空实体类对象 + QueryUserMassageResponse response = new QueryUserMassageResponse(); + if (aMonthRecords.size() == 0) { + return response; + } + List messageIdList = new ArrayList<>(); + for (int index = 0; index <= aMonthRecords.size() - 1; index++) { + Long messageId = aMonthRecords.get(index).getMessageId(); + messageIdList.add(messageId); + } + //设置查询出来的记录为已读状态,然后再查询,保证查询出来的是否有新信息状态被改变 + messageBoardMapper.setUserReadedStatus(messageIdList); + aMonthRecords = messageBoardMapper.selectBy(userQueryCondition, nextTimeStr); + //封装数据 + ArrayList dataDTOS = new ArrayList<>(); + for (XhpcMessageBoard aMonthRecord : aMonthRecords) { + QueryUserMassageResponse.DataDTO dataDTO = new QueryUserMassageResponse.DataDTO(); + BeanUtils.copyProperties(aMonthRecord, dataDTO); + dataDTO.setSendMessageTime(DateUtils.parseDateToStr(aMonthRecord.getSendMessageTime())); + dataDTOS.add(dataDTO); + } + //处理下次查询时间 + //todo 截取时间 + response.setNextQueryTime(nextTimeStr); + response.setData(dataDTOS); + return response; + } + } diff --git a/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardMapper.xml b/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardMapper.xml index 0f2c01bf..3becbd5a 100644 --- a/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardMapper.xml +++ b/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardMapper.xml @@ -131,8 +131,8 @@ insert into xhpc_message_board - (sender_type, sender_account, send_message_time, tenant_type, tenant_id, sender) - values (#{senderType}, #{senderAccount}, #{sendMessageTime}, #{tenantType}, #{tenantId}, 1) + (sender_type, sender_account, send_message_time, tenant_type, tenant_id, have_new_info, sender) + values (#{senderType}, #{senderAccount}, #{sendMessageTime}, #{tenantType}, #{tenantId}, 0, 1) insert into xhpc_message_board @@ -230,8 +230,8 @@ insert into xhpc_message_board - (sender_type, sender_account, send_message_time, tenant_type, tenant_id, sender) - values (#{senderType}, #{senderAccount}, #{sendMessageTime}, #{tenantType}, #{tenantId}, 1) + (sender_type, sender_account, send_message_time, tenant_type, tenant_id, have_new_info, sender) + values (#{senderType}, #{senderAccount}, #{sendMessageTime}, #{tenantType}, #{tenantId}, 0, 1) update xhpc_message_board diff --git a/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardReceiveUserMapper.xml b/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardReceiveUserMapper.xml index 0cc56c48..0e15c7f5 100644 --- a/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardReceiveUserMapper.xml +++ b/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardReceiveUserMapper.xml @@ -109,14 +109,26 @@ AND tenant_type = #{tenantType} AND del_flag IS NULL AND have_new_info = 0 + + AND sender_type = #{userType} + + + AND sender_account = #{senderAccount} + LIMIT #{currentPage},#{items} \ No newline at end of file