refactor: migrate SysUserMessage to manage-notify module
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
package cn.novalon.manage.db.converter;
|
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 cn.novalon.manage.db.entity.SysUserMessageEntity;
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
package cn.novalon.manage.db.repository;
|
package cn.novalon.manage.db.repository;
|
||||||
|
|
||||||
import cn.novalon.manage.sys.core.domain.SysUserMessage;
|
import cn.novalon.manage.notify.core.domain.SysUserMessage;
|
||||||
import cn.novalon.manage.sys.core.repository.ISysUserMessageRepository;
|
import cn.novalon.manage.notify.core.repository.ISysUserMessageRepository;
|
||||||
import cn.novalon.manage.db.converter.SysUserMessageConverter;
|
import cn.novalon.manage.db.converter.SysUserMessageConverter;
|
||||||
import cn.novalon.manage.db.entity.SysUserMessageEntity;
|
import cn.novalon.manage.db.entity.SysUserMessageEntity;
|
||||||
import cn.novalon.manage.db.dao.SysUserMessageDao;
|
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;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户消息领域对象
|
|
||||||
*
|
|
||||||
* @author 张翔
|
|
||||||
* @date 2026-03-13
|
|
||||||
*/
|
|
||||||
public class SysUserMessage {
|
public class SysUserMessage {
|
||||||
|
|
||||||
private Long id;
|
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.Flux;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户消息仓储接口
|
|
||||||
*
|
|
||||||
* @author 张翔
|
|
||||||
* @date 2026-03-13
|
|
||||||
*/
|
|
||||||
public interface ISysUserMessageRepository {
|
public interface ISysUserMessageRepository {
|
||||||
|
|
||||||
Flux<SysUserMessage> findByUserIdOrderByCreateTimeDesc(Long userId);
|
Flux<SysUserMessage> findByUserIdOrderByCreateTimeDesc(Long userId);
|
||||||
@@ -23,4 +17,4 @@ public interface ISysUserMessageRepository {
|
|||||||
Mono<SysUserMessage> findById(Long id);
|
Mono<SysUserMessage> findById(Long id);
|
||||||
|
|
||||||
Mono<Void> deleteById(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