refactor: migrate SysUserMessage to manage-notify module
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
||||
package cn.novalon.manage.db.converter;
|
||||
|
||||
import cn.novalon.manage.sys.core.domain.SysUserMessage;
|
||||
import cn.novalon.manage.notify.core.domain.SysUserMessage;
|
||||
import cn.novalon.manage.db.entity.SysUserMessageEntity;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package cn.novalon.manage.db.repository;
|
||||
|
||||
import cn.novalon.manage.sys.core.domain.SysUserMessage;
|
||||
import cn.novalon.manage.sys.core.repository.ISysUserMessageRepository;
|
||||
import cn.novalon.manage.notify.core.domain.SysUserMessage;
|
||||
import cn.novalon.manage.notify.core.repository.ISysUserMessageRepository;
|
||||
import cn.novalon.manage.db.converter.SysUserMessageConverter;
|
||||
import cn.novalon.manage.db.entity.SysUserMessageEntity;
|
||||
import cn.novalon.manage.db.dao.SysUserMessageDao;
|
||||
|
||||
+1
-7
@@ -1,13 +1,7 @@
|
||||
package cn.novalon.manage.sys.core.domain;
|
||||
package cn.novalon.manage.notify.core.domain;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 用户消息领域对象
|
||||
*
|
||||
* @author 张翔
|
||||
* @date 2026-03-13
|
||||
*/
|
||||
public class SysUserMessage {
|
||||
|
||||
private Long id;
|
||||
+3
-9
@@ -1,15 +1,9 @@
|
||||
package cn.novalon.manage.sys.core.repository;
|
||||
package cn.novalon.manage.notify.core.repository;
|
||||
|
||||
import cn.novalon.manage.sys.core.domain.SysUserMessage;
|
||||
import cn.novalon.manage.notify.core.domain.SysUserMessage;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
/**
|
||||
* 用户消息仓储接口
|
||||
*
|
||||
* @author 张翔
|
||||
* @date 2026-03-13
|
||||
*/
|
||||
public interface ISysUserMessageRepository {
|
||||
|
||||
Flux<SysUserMessage> findByUserIdOrderByCreateTimeDesc(Long userId);
|
||||
@@ -23,4 +17,4 @@ public interface ISysUserMessageRepository {
|
||||
Mono<SysUserMessage> findById(Long id);
|
||||
|
||||
Mono<Void> deleteById(Long id);
|
||||
}
|
||||
}
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
package cn.novalon.manage.sys.core.service;
|
||||
|
||||
import cn.novalon.manage.sys.core.domain.SysUserMessage;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
public interface ISysUserMessageService {
|
||||
Flux<SysUserMessage> findByUserId(Long userId);
|
||||
Flux<SysUserMessage> findByUserIdAndIsRead(Long userId, String isRead);
|
||||
Mono<Long> countUnread(Long userId);
|
||||
Mono<SysUserMessage> save(SysUserMessage message);
|
||||
Mono<Void> markAsRead(Long id);
|
||||
Mono<Void> deleteById(Long id);
|
||||
}
|
||||
-69
@@ -1,69 +0,0 @@
|
||||
package cn.novalon.manage.sys.core.service.impl;
|
||||
|
||||
import cn.novalon.manage.sys.core.domain.SysUserMessage;
|
||||
import cn.novalon.manage.sys.core.repository.ISysUserMessageRepository;
|
||||
import cn.novalon.manage.sys.core.service.ISysUserMessageService;
|
||||
import cn.novalon.manage.sys.core.service.IWebSocketService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
/**
|
||||
* 用户消息服务实现类
|
||||
*
|
||||
* @author 张翔
|
||||
* @date 2026-03-14
|
||||
*/
|
||||
@Service
|
||||
public class SysUserMessageService implements ISysUserMessageService {
|
||||
|
||||
private final ISysUserMessageRepository repository;
|
||||
private final IWebSocketService webSocketService;
|
||||
|
||||
public SysUserMessageService(ISysUserMessageRepository repository,
|
||||
IWebSocketService webSocketService) {
|
||||
this.repository = repository;
|
||||
this.webSocketService = webSocketService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Flux<SysUserMessage> findByUserId(Long userId) {
|
||||
return repository.findByUserIdOrderByCreateTimeDesc(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Flux<SysUserMessage> findByUserIdAndIsRead(Long userId, String isRead) {
|
||||
return repository.findByUserIdAndIsReadOrderByCreateTimeDesc(userId, isRead);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<Long> countUnread(Long userId) {
|
||||
return repository.countByUserIdAndIsRead(userId, "0");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<SysUserMessage> save(SysUserMessage message) {
|
||||
return repository.save(message)
|
||||
.flatMap(savedMessage -> {
|
||||
return webSocketService.notifyNewMessage(
|
||||
savedMessage.getUserId(),
|
||||
savedMessage.getTitle(),
|
||||
savedMessage.getContent()).thenReturn(savedMessage);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<Void> markAsRead(Long id) {
|
||||
return repository.findById(id)
|
||||
.flatMap(entity -> {
|
||||
entity.setIsRead("1");
|
||||
return repository.save(entity);
|
||||
})
|
||||
.then();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<Void> deleteById(Long id) {
|
||||
return repository.deleteById(id);
|
||||
}
|
||||
}
|
||||
-55
@@ -1,55 +0,0 @@
|
||||
package cn.novalon.manage.sys.handler.message;
|
||||
|
||||
import cn.novalon.manage.sys.core.domain.SysUserMessage;
|
||||
import cn.novalon.manage.sys.core.service.ISysUserMessageService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.reactive.function.server.ServerRequest;
|
||||
import org.springframework.web.reactive.function.server.ServerResponse;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
@Component
|
||||
public class SysUserMessageHandler {
|
||||
|
||||
private final ISysUserMessageService messageService;
|
||||
|
||||
public SysUserMessageHandler(ISysUserMessageService messageService) {
|
||||
this.messageService = messageService;
|
||||
}
|
||||
|
||||
public Mono<ServerResponse> getMessagesByUser(ServerRequest request) {
|
||||
Long userId = Long.valueOf(request.pathVariable("userId"));
|
||||
return ServerResponse.ok()
|
||||
.body(messageService.findByUserId(userId), SysUserMessage.class);
|
||||
}
|
||||
|
||||
public Mono<ServerResponse> getUnreadCount(ServerRequest request) {
|
||||
Long userId = Long.valueOf(request.pathVariable("userId"));
|
||||
return messageService.countUnread(userId)
|
||||
.flatMap(count -> ServerResponse.ok().bodyValue(count));
|
||||
}
|
||||
|
||||
public Mono<ServerResponse> getUnreadList(ServerRequest request) {
|
||||
Long userId = Long.valueOf(request.pathVariable("userId"));
|
||||
return ServerResponse.ok()
|
||||
.body(messageService.findByUserIdAndIsRead(userId, "0"), SysUserMessage.class);
|
||||
}
|
||||
|
||||
public Mono<ServerResponse> createMessage(ServerRequest request) {
|
||||
return request.bodyToMono(SysUserMessage.class)
|
||||
.flatMap(messageService::save)
|
||||
.flatMap(message -> ServerResponse.status(HttpStatus.CREATED).bodyValue(message));
|
||||
}
|
||||
|
||||
public Mono<ServerResponse> markAsRead(ServerRequest request) {
|
||||
Long id = Long.valueOf(request.pathVariable("id"));
|
||||
return messageService.markAsRead(id)
|
||||
.then(ServerResponse.ok().build());
|
||||
}
|
||||
|
||||
public Mono<ServerResponse> deleteMessage(ServerRequest request) {
|
||||
Long id = Long.valueOf(request.pathVariable("id"));
|
||||
return messageService.deleteById(id)
|
||||
.then(ServerResponse.noContent().build());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user