From 634fe23e7d7e8eaf38045aeb3ecf3063e396c701 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Sat, 15 Jan 2022 16:31:04 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=95=99=E8=A8=80?= =?UTF-8?q?=E6=9D=BF=EF=BC=9A=E5=B9=B3=E5=8F=B0=E6=9F=A5=E7=9C=8B=E5=93=AA?= =?UTF-8?q?=E4=BA=9B=E7=94=A8=E6=88=B7=E7=BB=99=E5=AE=83=E5=8F=91=E9=80=81?= =?UTF-8?q?=E4=BA=86=E6=B6=88=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../XhpcMessageBoardController.java | 2 +- .../board/domain/QueryUserListRequest.java | 3 ++ .../XhpcMessageBoardReceiveUserMapper.java | 25 +++++++++++++++ .../service/XhpcMessageBoardService.java | 3 +- .../impl/XhpcMessageBoardServiceImpl.java | 32 +++++++++++++++++-- .../XhpcMessageBoardReceiveUserMapper.xml | 20 ++++++++++++ 6 files changed, 80 insertions(+), 5 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 d22962d2..8597fc5d 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 @@ -48,7 +48,7 @@ public class XhpcMessageBoardController { * @since version-1.0 */ @GetMapping("/user/list") - public AjaxResult queryUserList(QueryUserListRequest param) { + public AjaxResult queryUserList(QueryUserListRequest param) throws Exception { QueryUserListResponse queryUserListResponse = xhpcMessageBoardService.queryUserList(param); 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 2e250e6f..cc087a3f 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 @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import lombok.NoArgsConstructor; +import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -34,6 +35,7 @@ public class QueryUserListRequest { @JsonProperty("currentPage") @NotNull(message = "currentPage的参数名不正确或者currentPage的值为空,检查传入参数") @NotBlank(message = "currentPage的参数为''字符串,请检查传入参数") + @Min(value = 1, message = "分页参数最小为1") private Integer currentPage; /** * items @@ -41,6 +43,7 @@ public class QueryUserListRequest { @JsonProperty("items") @NotNull(message = "items的参数名不正确或者items的值为空,检查传入参数") @NotBlank(message = "items的参数为''字符串,请检查传入参数") + @Min(value = 1, message = "每页显示至少1条数据") private Integer items; /** * tenantId diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java index 54ae11b7..1ef5ad74 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java @@ -1,8 +1,11 @@ package com.xhpc.board.mapper; +import com.xhpc.board.domain.QueryUserListRequest; import com.xhpc.board.domain.SendMessageToPlatformRequest; import com.xhpc.board.pojo.XhpcMessageBoardReceiveUser; +import java.util.List; + /** * the mapper of the xhpc_message_board_receive_user * @@ -37,4 +40,26 @@ public interface XhpcMessageBoardReceiveUserMapper { */ void updateHaveNewInfoFiledByUserCondition(SendMessageToPlatformRequest userMessage); + /** + * 查询给平台发消息的用户列表 + * + * @param param 租户查询条件 + * @return 返回一个装着所有发送过信息的用户列表 + * @author WH + * @date 2022/1/14 16:45 + * @since version-1.0 + */ + List findAllBy(QueryUserListRequest param); + + /** + * 查询给平台发消息的用户总数 + * + * @param param 租户查询条件 + * @return 给平台发消息的用户总数 + * @author WH + * @date 2022/1/15 15:44 + * @since version-1.0 + */ + Long totalUserNumber(QueryUserListRequest param); + } \ No newline at end of file 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 ab3f12cb..152b1b87 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 @@ -59,11 +59,12 @@ public interface XhpcMessageBoardService { * * @param param query list condition * @return 发了信息的用户列表 + * @throws Exception 当出现空指针异常时,抛出此异常 * @author WH * @date 2022/1/14 11:25 * @since version-1.0 */ - QueryUserListResponse queryUserList(QueryUserListRequest param); + QueryUserListResponse queryUserList(QueryUserListRequest param) throws Exception; } 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 bdbdfdaa..cd852bb2 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 @@ -13,6 +13,7 @@ import com.xhpc.common.core.utils.bean.BeanUtils; import com.xhpc.common.redis.service.RedisService; import com.xhpc.common.security.service.TokenService; import com.xhpc.common.util.DateUtil; +import com.xhpc.common.util.MyPagingUtil; import com.xhpc.system.api.domain.SysUser; import com.xhpc.system.api.model.LoginUser; import org.springframework.stereotype.Service; @@ -251,9 +252,34 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { * @since version-1.0 */ @Override - public QueryUserListResponse queryUserList(QueryUserListRequest param) { - - return null; + public QueryUserListResponse queryUserList(QueryUserListRequest param) throws Exception { + //计算分页索引 + int startIndex = MyPagingUtil.calculateStartIndex(param.getCurrentPage(), param.getItems()); + param.setCurrentPage(startIndex); + //查询用户列表 + SysUser receiverInfo = tokenService.getLoginUser().getSysUser(); + if (receiverInfo == null) { + throw new Exception("查询不到指定的租户,receiver为null,请检查传递的参数"); + } + QueryUserListResponse queryUserListResponse = new QueryUserListResponse(); + //查询出该租户拥有的所有用户列表 + List userList = xhpcMessageBoardReceiveUserMapper.findAllBy(param); + if (userList.size() == 0) { + return queryUserListResponse; + } + List dataDtoList = new ArrayList<>(); + for (XhpcMessageBoardReceiveUser receiveUser : userList) { + QueryUserListResponse.DataDTO dataDTO = new QueryUserListResponse.DataDTO(); + BeanUtils.copyProperties(receiveUser, dataDTO); + dataDTO.setUserAccount(receiveUser.getSenderAccount()); + dataDTO.setUserType(receiveUser.getSenderType()); + dataDtoList.add(dataDTO); + } + queryUserListResponse.setData(dataDtoList); + //获取该租户总共有多少个用户给他发送了留言 + Long totalUserNumber = xhpcMessageBoardReceiveUserMapper.totalUserNumber(param); + queryUserListResponse.setTotalItems(totalUserNumber); + return queryUserListResponse; } } 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 4a24934c..0cc56c48 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 @@ -99,4 +99,24 @@ AND sender_type = #{senderType} AND del_flag IS NULL + + \ No newline at end of file From 32e76be85bfd14a2ce0dfc9d7baeefff92ca5345 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Sat, 15 Jan 2022 16:32:52 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=87=AA=E5=B7=B1?= =?UTF-8?q?=E4=BA=8C=E6=AC=A1=E5=B0=81=E8=A3=85=E7=9A=84util=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xhpc/common/util/MyDateUtil.java | 76 +++++++++++++++++++ .../com/xhpc/common/util/MyPagingUtil.java | 34 +++++++++ 2 files changed, 110 insertions(+) create mode 100644 xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/util/MyDateUtil.java create mode 100644 xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/util/MyPagingUtil.java diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/util/MyDateUtil.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/util/MyDateUtil.java new file mode 100644 index 00000000..a910ddb0 --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/util/MyDateUtil.java @@ -0,0 +1,76 @@ +package com.xhpc.common.util; + +import cn.hutool.core.date.DateTime; + +import java.util.Calendar; +import java.util.Date; + +/** + * 进行日期处理的工具类 + * + * @author WH + * @date 2022/1/15 15:59 + * @since version-1.0 + */ +@SuppressWarnings("all") +public class MyDateUtil { + + public static void main(String[] args) { + + System.out.println(getCurrentDateStr()); + } + + /** + * 以xxxx年x月xx日 星期x的字符串格式展示当前时间 + * + * @author WH + * @date 2022/1/15 16:15 + * @since version-1.0 + */ + public static String getCurrentDateStr() { + + Calendar now = Calendar.getInstance(); + int year = now.get(Calendar.YEAR); + int month = now.get(Calendar.MONTH) + 1; + int day = now.get(Calendar.DAY_OF_MONTH); + String dayNames[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; + int dayOfWeek = now.get(Calendar.DAY_OF_WEEK) - 1; + if (dayOfWeek < 0) dayOfWeek = 0; + String week = dayNames[dayOfWeek]; + String nowDateStr = year + "年" + month + "月" + day + "日 " + week; + + return nowDateStr; + + } + + public static final String DATE_FORMAT_DATE_TIME = "yyyy-MM-dd HH:mm:ss"; + + /** + * 获取表示所传入的Date对象的Calendar对象 + * + * @param date 要转换的Date对象 + * @return 表示所传入的Date对象的Calendar对象 + * @author WH + * @date 2022/1/15 16:11 + * @since version-1.0 + */ + public static Calendar getCalendar(Date date) { + + Calendar c = Calendar.getInstance(); + c.setTime(date); + return c; + } + + /** + * 获取一个yyyy-MM-dd HH:mm:ss格式的当前时间字符串 + * + * @author WH + * @date 2022/1/15 16:04 + * @since version-1.0 + */ + public static String getCurrentDateStrInYyyyMmDdHhMmSsFormat() { + + return DateTime.now().toString(DATE_FORMAT_DATE_TIME); + } + +} diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/util/MyPagingUtil.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/util/MyPagingUtil.java new file mode 100644 index 00000000..7ddeb358 --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/util/MyPagingUtil.java @@ -0,0 +1,34 @@ +package com.xhpc.common.util; + +/** + * 用于进行分页的工具类 + * + * @author WH + * @date 2022/1/15 15:25 + * @since version-1.0 + */ +public class MyPagingUtil { + + /** + * 用于计算MySQL数据库中的limit子句的startIndex值 + * + * @param currentPage 当前要显示的记录的页数 + * @param items 当前页要显示多少条记录 + * @return 返回MySQL数据库中的limit子句的startIndex值 + * @throws IllegalArgumentException 传入的参数不符合要求,发生此异常 + * @author WH + * @date 2022/1/15 15:27 + * @since version-1.0 + */ + public static int calculateStartIndex(int currentPage, int items) throws IllegalArgumentException { + + if ((currentPage - 1) < 0) { + throw new IllegalArgumentException("当前页数最小为1"); + } + if (items < 1) { + throw new IllegalArgumentException("当前页要显示的记录数最小为1"); + } + return (currentPage - 1) * items; + } + +} From 32c51c1f6207920a5de64a9152aaefa609dc0e79 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Sat, 15 Jan 2022 16:51:09 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E7=A5=A8=E6=97=B6=E9=97=B4=E5=A4=AA=E9=95=BF=E5=AF=BC=E8=87=B4?= =?UTF-8?q?redis=E4=B8=8D=E8=83=BD=E5=9B=9E=E6=BB=9A=E6=9C=AA=E8=AF=BB?= =?UTF-8?q?=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../invoice/service/impl/XhpcInvoiceServiceImpl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java index 2528d3e7..b27b1735 100644 --- a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java @@ -391,9 +391,15 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { if (xhpcInvoice.getIsRead().equals(IsReadStatusConst.READED)) { return specificInvoicedResponse; } - //一旦调了详情接口,就去掉该已开发票的未读状态,同时redis中的未读数量数据-1 + //一旦调了详情接口,就去掉该已开发票的未读状态,同时再次查询用户未读的数量,并将其设置到redis当中 xhpcInvoiceMapper.updateByInvoiceId(invoiceId); - reduceNoReadInvoiceCount(xhpcInvoice); + Long notReadCount = xhpcInvoiceMapper.findNotReadCount(xhpcInvoice.getCreatorId(), xhpcInvoice.getCreatorType()); + String redisKey = generateRedisKey(xhpcInvoice); + if (notReadCount == 0) { + redisService.deleteObject(redisKey); + } else { + redisService.setCacheObject(redisKey, notReadCount); + } return specificInvoicedResponse; } From a419b3d405ee1a66d344c1d885aa1ea0a3cf8f9a Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Sat, 15 Jan 2022 18:21:51 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8DJSR380=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../board/controller/XhpcMessageBoardController.java | 3 ++- .../com/xhpc/board/domain/QueryUserListRequest.java | 12 +++++------- 2 files changed, 7 insertions(+), 8 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 8597fc5d..e44333fb 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 @@ -6,6 +6,7 @@ import com.xhpc.board.domain.QueryUserListResponse; import com.xhpc.board.service.XhpcMessageBoardService; import com.xhpc.common.core.web.domain.AjaxResult; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -48,7 +49,7 @@ public class XhpcMessageBoardController { * @since version-1.0 */ @GetMapping("/user/list") - public AjaxResult queryUserList(QueryUserListRequest param) throws Exception { + public AjaxResult queryUserList(@Validated QueryUserListRequest param) throws Exception { QueryUserListResponse queryUserListResponse = xhpcMessageBoardService.queryUserList(param); 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 cc087a3f..d9d0623b 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,6 +17,7 @@ import javax.validation.constraints.NotNull; */ @NoArgsConstructor @Data + public class QueryUserListRequest { /** @@ -33,31 +34,28 @@ public class QueryUserListRequest { * currentPage */ @JsonProperty("currentPage") - @NotNull(message = "currentPage的参数名不正确或者currentPage的值为空,检查传入参数") - @NotBlank(message = "currentPage的参数为''字符串,请检查传入参数") + @NotNull(message = "currentPage的参数名不正确或者currentPage的值为空,请检查传入参数") @Min(value = 1, message = "分页参数最小为1") private Integer currentPage; /** * items */ @JsonProperty("items") - @NotNull(message = "items的参数名不正确或者items的值为空,检查传入参数") - @NotBlank(message = "items的参数为''字符串,请检查传入参数") + @NotNull(message = "items的参数名不正确或者items的值为空,请检查传入参数") @Min(value = 1, message = "每页显示至少1条数据") private Integer items; /** * tenantId */ @JsonProperty("tenantId") - @NotNull(message = "tenantId的参数名不正确或者tenantId的值为空,检查传入参数") + @NotNull(message = "tenantId的参数名不正确或者tenantId的值为空,请检查传入参数") @NotBlank(message = "tenantId的参数为''字符串,请检查传入参数") private String tenantId; /** * tenantType */ @JsonProperty("tenantType") - @NotNull(message = "tenantType的参数名不正确或者tenantType的值为空,检查传入参数") - @NotBlank(message = "tenantType的参数为''字符串,请检查传入参数") + @NotNull(message = "tenantType的参数名不正确或者tenantType的值为空,请检查传入参数") private Integer tenantType; } 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 5/8] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8C=87=E5=AE=9A=E7=94=A8=E6=88=B7=E5=8F=91?= =?UTF-8?q?=E9=80=81=E8=BF=87=E7=9A=84=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=20=E4=BD=BF=E6=9F=A5=E8=AF=A2=E7=BB=99=E7=A7=9F?= =?UTF-8?q?=E6=88=B7=E5=8F=91=E9=80=81=E4=BF=A1=E6=81=AF=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E4=BD=BF=E5=85=B6=E5=8F=AF=E4=BB=A5=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E6=9D=A1=E4=BB=B6=E6=9F=A5=E8=AF=A2=EF=BC=8C=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96bug=EF=BC=8C=E6=8F=92=E5=85=A5=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=90=8E=EF=BC=8C=E6=9C=AA=E6=B7=BB=E5=8A=A0have=5Fne?= =?UTF-8?q?w=5Finfo=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 From 7731bcd6cb718cbd876a938fc06f8246d59ec4d5 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Sun, 16 Jan 2022 20:03:25 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E5=89=8D=E5=8F=B0=E6=98=BE=E7=A4=BA=E7=A7=9F=E6=88=B7?= =?UTF-8?q?=E5=8F=91=E9=80=81=E7=9A=84=E6=9C=AA=E8=AF=BB=E6=B6=88=E6=81=AF?= =?UTF-8?q?=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xhpc/board/service/XhpcMessageBoardService.java | 2 +- .../service/impl/XhpcMessageBoardServiceImpl.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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 9d7a7010..089173e7 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 @@ -68,7 +68,7 @@ public interface XhpcMessageBoardService { QueryUserListResponse queryUserList(QueryUserListRequest param) throws Exception; /** - * 平台查询用户发送过来的信息,与用户查看它自己的信息一致 + * 平台查询用户发送过来的信息,与用户查看它自己的信息逻辑是一致的 * * @param userQueryCondition 要查询的用户的信息 * @return 返回用户与平台用户的一个月的聊天记录 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 a0c7558a..74c13b8e 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 @@ -154,7 +154,15 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { platformRequest.setTenantId(sysUser.getTenantId()); platformRequest.setTenantType(0); messageBoardMapper.insertPlatformMessage(platformRequest); - + //往Redis中放置用户未读数量 + String userNotReadCount = "userNotReadMessageCount:" + platformRequest.getSenderType() + ":" + platformRequest.getSenderAccount() + ":" + "0:" + sysUser.getTenantId(); + Object cacheObject1 = redisService.getCacheObject(userNotReadCount); + if (cacheObject1 == null) { + redisService.setCacheObject(userNotReadCount, 1); + } else { + Integer userNotReadNum = (Integer) cacheObject1 + 1; + redisService.setCacheObject(userNotReadCount, userNotReadNum); + } } /** From f123c8b01b68297d8fbc49a5c5388269b66dafd1 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Sun, 16 Jan 2022 20:22:11 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBug=EF=BC=8C=E4=BD=BF?= =?UTF-8?q?=E7=95=99=E8=A8=80=E6=9D=BF=E7=BA=A2=E7=82=B9=E8=83=BD=E5=A4=9F?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E6=B6=88=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/XhpcMessageBoardReceiveUserMapper.java | 11 +++++++++++ .../service/impl/XhpcMessageBoardServiceImpl.java | 4 +++- .../mapper/XhpcMessageBoardReceiveUserMapper.xml | 9 +++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java index 1ef5ad74..5ea339f4 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java @@ -2,6 +2,7 @@ package com.xhpc.board.mapper; import com.xhpc.board.domain.QueryUserListRequest; import com.xhpc.board.domain.SendMessageToPlatformRequest; +import com.xhpc.board.domain.UserQueryCondition; import com.xhpc.board.pojo.XhpcMessageBoardReceiveUser; import java.util.List; @@ -62,4 +63,14 @@ public interface XhpcMessageBoardReceiveUserMapper { */ Long totalUserNumber(QueryUserListRequest param); + /** + * 消除留言板对应用户的红点 + * + * @param userQueryCondition 用户信息 + * @author WH + * @date 2022/1/16 20:13 + * @since version-1.0 + */ + void updateHaveNewInfoIsNull(UserQueryCondition userQueryCondition); + } \ No newline at end of file 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 74c13b8e..73047a9e 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 @@ -346,9 +346,11 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { Long messageId = aMonthRecords.get(index).getMessageId(); messageIdList.add(messageId); } - //设置查询出来的记录为已读状态,然后再查询,保证查询出来的是否有新信息状态被改变 + //设置查询出来的记录为已读状态,然后再查询,保证查询出来的信息状态被改变 messageBoardMapper.setUserReadedStatus(messageIdList); aMonthRecords = messageBoardMapper.selectBy(userQueryCondition, nextTimeStr); + //消除后台留言板红点 + xhpcMessageBoardReceiveUserMapper.updateHaveNewInfoIsNull(userQueryCondition); //封装数据 ArrayList dataDTOS = new ArrayList<>(); for (XhpcMessageBoard aMonthRecord : aMonthRecords) { 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 0e15c7f5..dc5b5ff2 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 @@ -87,6 +87,15 @@ AND sender_type = #{senderType} AND del_flag IS NULL; + + UPDATE xhpc_message_board_receive_user + SET have_new_info = null + WHERE tenant_type = #{tenantType} + AND tenant_id = #{tenantId} + AND sender_account = #{senderAccount} + AND sender_type = #{senderType} + AND del_flag IS NULL; +