This commit is contained in:
future
2026-06-23 22:47:35 +08:00
parent 8da58a8f51
commit 3586a7d74b
65 changed files with 2694 additions and 82 deletions
@@ -1,5 +1,7 @@
package cn.novalon.gym.manage.notify.core.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;
public class SysUserMessage {
@@ -10,6 +12,8 @@ public class SysUserMessage {
private String content;
private String messageType;
private String isRead;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
public Long getId() { return id; }
@@ -1,5 +1,7 @@
package cn.novalon.gym.manage.notify.core.repository;
import cn.novalon.gym.manage.common.dto.PageRequest;
import cn.novalon.gym.manage.common.dto.PageResponse;
import cn.novalon.gym.manage.notify.core.domain.SysUserMessage;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -12,6 +14,12 @@ public interface ISysUserMessageRepository {
Mono<Long> countByUserIdAndIsRead(Long userId, String isRead);
Mono<PageResponse<SysUserMessage>> findByUserIdPage(Long userId, PageRequest pageRequest);
Mono<PageResponse<SysUserMessage>> findByUserIdAndIsReadPage(Long userId, String isRead, PageRequest pageRequest);
Mono<Long> markAllAsReadByUserId(Long userId);
Mono<SysUserMessage> save(SysUserMessage message);
Mono<SysUserMessage> findById(Long id);
@@ -1,5 +1,7 @@
package cn.novalon.gym.manage.notify.core.service;
import cn.novalon.gym.manage.common.dto.PageRequest;
import cn.novalon.gym.manage.common.dto.PageResponse;
import cn.novalon.gym.manage.notify.core.domain.SysUserMessage;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -12,6 +14,12 @@ public interface ISysUserMessageService {
Flux<SysUserMessage> getUnreadMessages(Long userId);
Mono<PageResponse<SysUserMessage>> getMessagesByUserPage(Long userId, PageRequest pageRequest);
Mono<PageResponse<SysUserMessage>> getUnreadMessagesPage(Long userId, PageRequest pageRequest);
Mono<Long> markAllAsRead(Long userId);
Mono<SysUserMessage> createMessage(SysUserMessage message);
Mono<SysUserMessage> markAsRead(Long id);
@@ -1,5 +1,7 @@
package cn.novalon.gym.manage.notify.core.service.impl;
import cn.novalon.gym.manage.common.dto.PageRequest;
import cn.novalon.gym.manage.common.dto.PageResponse;
import cn.novalon.gym.manage.notify.core.domain.SysUserMessage;
import cn.novalon.gym.manage.notify.core.repository.ISysUserMessageRepository;
import cn.novalon.gym.manage.notify.core.service.ISysUserMessageService;
@@ -33,6 +35,16 @@ public class SysUserMessageServiceImpl implements ISysUserMessageService {
return messageRepository.findByUserIdAndIsReadOrderByCreateTimeDesc(userId, "0");
}
@Override
public Mono<PageResponse<SysUserMessage>> getMessagesByUserPage(Long userId, PageRequest pageRequest) {
return messageRepository.findByUserIdPage(userId, pageRequest);
}
@Override
public Mono<PageResponse<SysUserMessage>> getUnreadMessagesPage(Long userId, PageRequest pageRequest) {
return messageRepository.findByUserIdAndIsReadPage(userId, "0", pageRequest);
}
@Override
public Mono<SysUserMessage> createMessage(SysUserMessage message) {
message.setCreateTime(LocalDateTime.now());
@@ -40,6 +52,11 @@ public class SysUserMessageServiceImpl implements ISysUserMessageService {
return messageRepository.save(message);
}
@Override
public Mono<Long> markAllAsRead(Long userId) {
return messageRepository.markAllAsReadByUserId(userId);
}
@Override
public Mono<SysUserMessage> markAsRead(Long id) {
return messageRepository.findById(id)
@@ -1,5 +1,6 @@
package cn.novalon.gym.manage.notify.handler;
import cn.novalon.gym.manage.common.dto.PageRequest;
import cn.novalon.gym.manage.notify.core.domain.SysUserMessage;
import cn.novalon.gym.manage.notify.core.service.ISysUserMessageService;
import org.springframework.stereotype.Component;
@@ -23,6 +24,24 @@ public class SysUserMessageHandler {
return ServerResponse.ok().body(messages, SysUserMessage.class);
}
public Mono<ServerResponse> getMessagesByUserPage(ServerRequest request) {
Long userId = Long.parseLong(request.pathVariable("userId"));
int page = Integer.parseInt(request.queryParam("page").orElse("0"));
int size = Integer.parseInt(request.queryParam("size").orElse("10"));
String sort = request.queryParam("sort").orElse("createTime");
String order = request.queryParam("order").orElse("desc");
PageRequest pageRequest = new PageRequest();
pageRequest.setPage(page);
pageRequest.setSize(size);
pageRequest.setSort(sort);
pageRequest.setOrder(order);
return messageService.getMessagesByUserPage(userId, pageRequest)
.flatMap(pageResponse -> ServerResponse.ok().bodyValue(pageResponse));
}
public Mono<ServerResponse> getUnreadCount(ServerRequest request) {
Long userId = Long.parseLong(request.pathVariable("userId"));
return messageService.getUnreadCount(userId)
@@ -35,6 +54,24 @@ public class SysUserMessageHandler {
return ServerResponse.ok().body(messages, SysUserMessage.class);
}
public Mono<ServerResponse> getUnreadMessagesPage(ServerRequest request) {
Long userId = Long.parseLong(request.pathVariable("userId"));
int page = Integer.parseInt(request.queryParam("page").orElse("0"));
int size = Integer.parseInt(request.queryParam("size").orElse("10"));
String sort = request.queryParam("sort").orElse("createTime");
String order = request.queryParam("order").orElse("desc");
PageRequest pageRequest = new PageRequest();
pageRequest.setPage(page);
pageRequest.setSize(size);
pageRequest.setSort(sort);
pageRequest.setOrder(order);
return messageService.getUnreadMessagesPage(userId, pageRequest)
.flatMap(pageResponse -> ServerResponse.ok().bodyValue(pageResponse));
}
public Mono<ServerResponse> createMessage(ServerRequest request) {
return request.bodyToMono(SysUserMessage.class)
.flatMap(messageService::createMessage)
@@ -48,6 +85,12 @@ public class SysUserMessageHandler {
.switchIfEmpty(ServerResponse.notFound().build());
}
public Mono<ServerResponse> markAllAsRead(ServerRequest request) {
Long userId = Long.parseLong(request.pathVariable("userId"));
return messageService.markAllAsRead(userId)
.flatMap(count -> ServerResponse.ok().bodyValue(count));
}
public Mono<ServerResponse> deleteMessage(ServerRequest request) {
Long id = Long.parseLong(request.pathVariable("id"));
return messageService.deleteMessage(id)