diff --git a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/MessageReceiverController.java b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/MessageReceiverController.java new file mode 100644 index 0000000..744782a --- /dev/null +++ b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/MessageReceiverController.java @@ -0,0 +1,96 @@ +package com.xunhong.erp.turbo.admin.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import com.alibaba.cola.dto.MultiResponse; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.Response; +import com.alibaba.cola.dto.SingleResponse; +import com.xunhong.erp.turbo.api.biz.api.MessageReceiverServiceI; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverDestroyCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverMarkReadCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverListQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverPageQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverShowQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverUnreadCountQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.MessageReceiverVO; +import com.xunhong.erp.turbo.base.dto.PageDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * @author shenyifei + */ +@Tag(name = "MessageReceiver", description = "消息接收管理") +@RestController("operationMessageReceiverController") +@RequestMapping(value = "/operation") +@RequiredArgsConstructor +public class MessageReceiverController { + + @DubboReference(version = "1.0.0") + private final MessageReceiverServiceI messageReceiverService; + + @SaCheckLogin + @GetMapping("listMessageReceiver") + @Operation(summary = "消息接收列表", method = "GET") + public MultiResponse listMessageReceiver(@ModelAttribute @Validated MessageReceiverListQry messageReceiverListQry) { + return MultiResponse.of(messageReceiverService.list(messageReceiverListQry)); + } + + @SaCheckLogin + @PostMapping("createMessageReceiver") + @Operation(summary = "创建消息接收", method = "POST") + public SingleResponse createMessageReceiver(@RequestBody @Validated MessageReceiverCreateCmd messageReceiverCreateCmd) { + return SingleResponse.of(messageReceiverService.create(messageReceiverCreateCmd)); + } + + @SaCheckLogin + @GetMapping("showMessageReceiver") + @Operation(summary = "消息接收详情", method = "GET") + public SingleResponse showMessageReceiver(@ModelAttribute @Validated MessageReceiverShowQry messageReceiverShowQry) { + return SingleResponse.of(messageReceiverService.show(messageReceiverShowQry)); + } + + @SaCheckLogin + @GetMapping("pageMessageReceiver") + @Operation(summary = "消息接收列表", method = "GET") + public PageResponse pageMessageReceiver(@ModelAttribute @Validated MessageReceiverPageQry messageReceiverPageQry) { + PageDTO page = messageReceiverService.page(messageReceiverPageQry); + return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent()); + } + + @SaCheckLogin + @RequestMapping(value = "updateMessageReceiver", method = {RequestMethod.PATCH, RequestMethod.PUT}) + @Operation(summary = "消息接收更新", method = "PATCH") + public SingleResponse updateMessageReceiver(@RequestBody @Validated MessageReceiverUpdateCmd messageReceiverUpdateCmd) { + return SingleResponse.of(messageReceiverService.update(messageReceiverUpdateCmd)); + } + + @SaCheckLogin + @DeleteMapping("destroyMessageReceiver") + @Operation(summary = "消息接收删除", method = "DELETE") + public Response destroyMessageReceiver(@RequestBody @Validated MessageReceiverDestroyCmd messageReceiverDestroyCmd) { + messageReceiverService.destroy(messageReceiverDestroyCmd); + return Response.buildSuccess(); + } + + @SaCheckLogin + @PostMapping("markReadMessageReceiver") + @Operation(summary = "标记消息已读", method = "POST") + public Response markReadMessageReceiver(@RequestBody @Validated MessageReceiverMarkReadCmd messageReceiverMarkReadCmd) { + messageReceiverService.markRead(messageReceiverMarkReadCmd); + return Response.buildSuccess(); + } + + @SaCheckLogin + @GetMapping("getUnreadCount") + @Operation(summary = "获取未读消息数量", method = "GET") + public SingleResponse getUnreadCount(@ModelAttribute @Validated MessageReceiverUnreadCountQry messageReceiverUnreadCountQry) { + return SingleResponse.of(messageReceiverService.getUnreadCount(messageReceiverUnreadCountQry)); + } +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/MessageReceiverAssembler.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/MessageReceiverAssembler.java new file mode 100644 index 0000000..68c3447 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/MessageReceiverAssembler.java @@ -0,0 +1,17 @@ +package com.xunhong.erp.turbo.biz.app.assembler; + +import com.xunhong.erp.turbo.api.biz.dto.vo.MessageReceiverVO; +import com.xunhong.erp.turbo.biz.domain.entity.MessageReceiver; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.NullValueCheckStrategy; + +/** + * @author shenyifei + */ +@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) +public interface MessageReceiverAssembler { + + @Mapping(target = "messageVO", source = "message") + MessageReceiverVO toMessageReceiverVO(MessageReceiver messageReceiver); +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverCreateCmdExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverCreateCmdExe.java new file mode 100644 index 0000000..ff42104 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverCreateCmdExe.java @@ -0,0 +1,29 @@ +package com.xunhong.erp.turbo.biz.app.executor.cmd; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.vo.MessageReceiverVO; +import com.xunhong.erp.turbo.biz.app.assembler.MessageReceiverAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.MessageReceiver; +import com.xunhong.erp.turbo.biz.domain.gateway.MessageReceiverGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class MessageReceiverCreateCmdExe { + + private final MessageReceiverAssembler messageReceiverAssembler; + private final MessageReceiverGateway messageReceiverGateway; + + public MessageReceiverVO execute(MessageReceiverCreateCmd messageReceiverCreateCmd) { + MessageReceiver messageReceiver = messageReceiverGateway.save(messageReceiverCreateCmd); + + return messageReceiverAssembler.toMessageReceiverVO(messageReceiver); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverDestroyCmdExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverDestroyCmdExe.java new file mode 100644 index 0000000..71bce5c --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverDestroyCmdExe.java @@ -0,0 +1,22 @@ +package com.xunhong.erp.turbo.biz.app.executor.cmd; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverDestroyCmd; +import com.xunhong.erp.turbo.biz.domain.gateway.MessageReceiverGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class MessageReceiverDestroyCmdExe { + private final MessageReceiverGateway messageReceiverGateway; + + public void execute(MessageReceiverDestroyCmd messageReceiverDestroyCmd) { + messageReceiverGateway.destroy(messageReceiverDestroyCmd); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverMarkReadCmdExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverMarkReadCmdExe.java new file mode 100644 index 0000000..d708f03 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverMarkReadCmdExe.java @@ -0,0 +1,21 @@ +package com.xunhong.erp.turbo.biz.app.executor.cmd; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverMarkReadCmd; +import com.xunhong.erp.turbo.biz.domain.gateway.MessageReceiverGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class MessageReceiverMarkReadCmdExe { + private final MessageReceiverGateway messageReceiverGateway; + + public void execute(MessageReceiverMarkReadCmd cmd) { + messageReceiverGateway.markRead(cmd); + } +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverUpdateCmdExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverUpdateCmdExe.java new file mode 100644 index 0000000..f34421f --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/MessageReceiverUpdateCmdExe.java @@ -0,0 +1,27 @@ +package com.xunhong.erp.turbo.biz.app.executor.cmd; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.vo.MessageReceiverVO; +import com.xunhong.erp.turbo.biz.app.assembler.MessageReceiverAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.MessageReceiver; +import com.xunhong.erp.turbo.biz.domain.gateway.MessageReceiverGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class MessageReceiverUpdateCmdExe { + + private final MessageReceiverAssembler messageReceiverAssembler; + private final MessageReceiverGateway messageReceiverGateway; + + public MessageReceiverVO execute(MessageReceiverUpdateCmd messageReceiverUpdateCmd) { + MessageReceiver messageReceiver = messageReceiverGateway.update(messageReceiverUpdateCmd); + return messageReceiverAssembler.toMessageReceiverVO(messageReceiver); + } +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverListQryExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverListQryExe.java new file mode 100644 index 0000000..b238dbe --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverListQryExe.java @@ -0,0 +1,30 @@ +package com.xunhong.erp.turbo.biz.app.executor.query; + +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverListQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.MessageReceiverVO; +import com.xunhong.erp.turbo.biz.app.assembler.MessageReceiverAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.MessageReceiver; +import com.xunhong.erp.turbo.biz.domain.gateway.MessageReceiverGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class MessageReceiverListQryExe { + + private final MessageReceiverGateway messageReceiverGateway; + private final MessageReceiverAssembler messageReceiverAssembler; + + public List execute(MessageReceiverListQry messageReceiverListQry) { + List messageReceiverList = messageReceiverGateway.list(messageReceiverListQry); + return messageReceiverList.stream().map(messageReceiverAssembler::toMessageReceiverVO).toList(); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverPageQryExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverPageQryExe.java new file mode 100644 index 0000000..187c94e --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverPageQryExe.java @@ -0,0 +1,29 @@ +package com.xunhong.erp.turbo.biz.app.executor.query; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverPageQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.MessageReceiverVO; +import com.xunhong.erp.turbo.biz.app.assembler.MessageReceiverAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.MessageReceiver; +import com.xunhong.erp.turbo.biz.domain.gateway.MessageReceiverGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class MessageReceiverPageQryExe { + + private final MessageReceiverGateway messageReceiverGateway; + private final MessageReceiverAssembler messageReceiverAssembler; + + public IPage execute(MessageReceiverPageQry messageReceiverPageQry) { + IPage page = messageReceiverGateway.page(messageReceiverPageQry); + return page.convert(messageReceiverAssembler::toMessageReceiverVO); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverShowQryExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverShowQryExe.java new file mode 100644 index 0000000..c72ebe9 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverShowQryExe.java @@ -0,0 +1,29 @@ +package com.xunhong.erp.turbo.biz.app.executor.query; + +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverShowQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.MessageReceiverVO; +import com.xunhong.erp.turbo.biz.app.assembler.MessageReceiverAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.MessageReceiver; +import com.xunhong.erp.turbo.biz.domain.gateway.MessageReceiverGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class MessageReceiverShowQryExe { + + private final MessageReceiverAssembler messageReceiverAssembler; + private final MessageReceiverGateway messageReceiverGateway; + + public MessageReceiverVO execute(MessageReceiverShowQry messageReceiverShowQry) { + MessageReceiver messageReceiver = messageReceiverGateway.show(messageReceiverShowQry); + + return messageReceiverAssembler.toMessageReceiverVO(messageReceiver); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverUnreadCountQryExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverUnreadCountQryExe.java new file mode 100644 index 0000000..eae0c2c --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/MessageReceiverUnreadCountQryExe.java @@ -0,0 +1,21 @@ +package com.xunhong.erp.turbo.biz.app.executor.query; + +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverUnreadCountQry; +import com.xunhong.erp.turbo.biz.domain.gateway.MessageReceiverGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class MessageReceiverUnreadCountQryExe { + private final MessageReceiverGateway messageReceiverGateway; + + public Integer execute(MessageReceiverUnreadCountQry qry) { + return messageReceiverGateway.getUnreadCount(qry); + } +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/MessageReceiverServiceImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/MessageReceiverServiceImpl.java new file mode 100644 index 0000000..a3064e3 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/MessageReceiverServiceImpl.java @@ -0,0 +1,87 @@ +package com.xunhong.erp.turbo.biz.app.service; + +import com.xunhong.erp.turbo.api.biz.api.MessageReceiverServiceI; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverDestroyCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverMarkReadCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverListQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverPageQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverShowQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverUnreadCountQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.MessageReceiverVO; +import com.xunhong.erp.turbo.base.dto.PageDTO; +import com.xunhong.erp.turbo.biz.app.executor.cmd.MessageReceiverCreateCmdExe; +import com.xunhong.erp.turbo.biz.app.executor.cmd.MessageReceiverDestroyCmdExe; +import com.xunhong.erp.turbo.biz.app.executor.cmd.MessageReceiverMarkReadCmdExe; +import com.xunhong.erp.turbo.biz.app.executor.cmd.MessageReceiverUpdateCmdExe; +import com.xunhong.erp.turbo.biz.app.executor.query.MessageReceiverListQryExe; +import com.xunhong.erp.turbo.biz.app.executor.query.MessageReceiverPageQryExe; +import com.xunhong.erp.turbo.biz.app.executor.query.MessageReceiverShowQryExe; +import com.xunhong.erp.turbo.biz.app.executor.query.MessageReceiverUnreadCountQryExe; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author shenyifei + */ +@Slf4j +@Service +@DubboService(interfaceClass = MessageReceiverServiceI.class, version = "1.0.0") +@RequiredArgsConstructor +public class MessageReceiverServiceImpl implements MessageReceiverServiceI { + + private final MessageReceiverCreateCmdExe messageReceiverCreateCmdExe; + private final MessageReceiverUpdateCmdExe messageReceiverUpdateCmdExe; + private final MessageReceiverPageQryExe messageReceiverPageQryExe; + private final MessageReceiverListQryExe messageReceiverListQryExe; + private final MessageReceiverShowQryExe messageReceiverShowQryExe; + private final MessageReceiverDestroyCmdExe messageReceiverDestroyCmdExe; + private final MessageReceiverMarkReadCmdExe messageReceiverMarkReadCmdExe; + private final MessageReceiverUnreadCountQryExe messageReceiverUnreadCountQryExe; + + @Override + public MessageReceiverVO create(MessageReceiverCreateCmd messageReceiverCreateCmd) { + return messageReceiverCreateCmdExe.execute(messageReceiverCreateCmd); + } + + @Override + public PageDTO page(MessageReceiverPageQry messageReceiverPageQry) { + return PageDTO.of(messageReceiverPageQryExe.execute(messageReceiverPageQry)); + } + + @Override + public List list(MessageReceiverListQry messageReceiverListQry) { + return messageReceiverListQryExe.execute(messageReceiverListQry); + } + + @Override + public MessageReceiverVO update(MessageReceiverUpdateCmd messageReceiverUpdateCmd) { + return messageReceiverUpdateCmdExe.execute(messageReceiverUpdateCmd); + } + + @Override + public MessageReceiverVO show(MessageReceiverShowQry messageReceiverShowQry) { + return messageReceiverShowQryExe.execute(messageReceiverShowQry); + } + + @Override + public void destroy(MessageReceiverDestroyCmd messageReceiverDestroyCmd) { + messageReceiverDestroyCmdExe.execute(messageReceiverDestroyCmd); + } + + @Override + public void markRead(MessageReceiverMarkReadCmd messageReceiverMarkReadCmd) { + messageReceiverMarkReadCmdExe.execute(messageReceiverMarkReadCmd); + } + + @Override + public Integer getUnreadCount(MessageReceiverUnreadCountQry messageReceiverUnreadCountQry) { + return messageReceiverUnreadCountQryExe.execute(messageReceiverUnreadCountQry); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Message.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Message.java new file mode 100644 index 0000000..d62971b --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Message.java @@ -0,0 +1,76 @@ +package com.xunhong.erp.turbo.biz.domain.entity; + +import com.alibaba.cola.domain.Entity; +import com.alibaba.cola.dto.DTO; +import com.xunhong.erp.turbo.api.biz.dto.enums.MessageStateEnum; +import com.xunhong.erp.turbo.api.biz.dto.enums.MessageSubjectTypeEnum; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +/** + * @author shenyifei + */ +@Data +@Entity +@EqualsAndHashCode(callSuper = true) +public class Message extends DTO { + + /** + * 消息ID + */ + private Long messageId; + + /** + * 消息模板ID + */ + private Long messageTemplateId; + + /** + * 消息标题 + */ + private String title; + + /** + * 消息内容 + */ + private String content; + + /** + * 发送状态:0_待发送;1_发送中;2_已发送;3_已取消; + */ + private MessageStateEnum state; + + /** + * 消息对象ID + */ + private Long subjectId; + + /** + * 消息对象类型:1_采购单 + */ + private MessageSubjectTypeEnum subjectType; + + /** + * 定时发送时间 + */ + private LocalDateTime scheduledTime; + + /** + * 实际发送时间 + */ + private LocalDateTime sentAt; + + /** + * 创建人ID + */ + private Long createdBy; + + /** + * 创建人姓名 + */ + private String createdByName; + +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/MessageReceiver.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/MessageReceiver.java new file mode 100644 index 0000000..22d03a6 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/MessageReceiver.java @@ -0,0 +1,51 @@ +package com.xunhong.erp.turbo.biz.domain.entity; + +import com.alibaba.cola.domain.Entity; +import com.alibaba.cola.dto.DTO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +/** + * @author shenyifei + */ +@Data +@Entity +@EqualsAndHashCode(callSuper = true) +public class MessageReceiver extends DTO { + + /** + * 消息接收ID + */ + private Long messageReceiverId; + + /** + * 消息ID + */ + private Long messageId; + + /** + * 接收用户ID + */ + private Long adminId; + + /** + * 是否已读 + */ + private Boolean isRead; + + /** + * 已读时间 + */ + private LocalDateTime readAt; + + /** + * 创建时间 + */ + private LocalDateTime createdAt; + + private Message message; + +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/MessageReceiverGateway.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/MessageReceiverGateway.java new file mode 100644 index 0000000..d4957c6 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/MessageReceiverGateway.java @@ -0,0 +1,42 @@ +package com.xunhong.erp.turbo.biz.domain.gateway; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverDestroyCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverMarkReadCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverListQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverPageQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverShowQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverUnreadCountQry; +import com.xunhong.erp.turbo.biz.domain.entity.MessageReceiver; + +import java.util.List; + +/** + * @author shenyifei + */ +public interface MessageReceiverGateway { + MessageReceiver save(MessageReceiverCreateCmd messageReceiverCreateCmd); + + IPage page(MessageReceiverPageQry messageReceiverPageQry); + + List list(MessageReceiverListQry messageReceiverListQry); + + MessageReceiver update(MessageReceiverUpdateCmd messageReceiverUpdateCmd); + + MessageReceiver show(MessageReceiverShowQry messageReceiverShowQry); + + void destroy(MessageReceiverDestroyCmd messageReceiverDestroyCmd); + + /** + * 标记消息为已读 + */ + void markRead(MessageReceiverMarkReadCmd messageReceiverMarkReadCmd); + + /** + * 获取未读消息数量 + */ + Integer getUnreadCount(MessageReceiverUnreadCountQry messageReceiverUnreadCountQry); +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/MessageReceiverConvert.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/MessageReceiverConvert.java new file mode 100644 index 0000000..b493b82 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/MessageReceiverConvert.java @@ -0,0 +1,36 @@ +package com.xunhong.erp.turbo.biz.infrastructure.convert; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverUpdateCmd; +import com.xunhong.erp.turbo.biz.domain.entity.MessageReceiver; +import com.xunhong.erp.turbo.biz.infrastructure.entity.MessageReceiverDO; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.NullValueCheckStrategy; + +/** + * @author shenyifei + */ +@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) +public interface MessageReceiverConvert { + + @Mapping(target = "message", source = "messageDO") + MessageReceiver toMessageReceiver(MessageReceiverDO messageReceiverDO); + + @Mapping(target = "messageDO", ignore = true) + @Mapping(target = "adminId", ignore = true) + @Mapping(target = "version", ignore = true) + @Mapping(target = "updatedAt", ignore = true) + @Mapping(target = "isDelete", ignore = true) + @Mapping(target = "createdAt", ignore = true) + MessageReceiverDO toMessageReceiverDO(MessageReceiverCreateCmd messageReceiverCreateCmd); + + @Mapping(target = "messageDO", ignore = true) + @Mapping(target = "version", ignore = true) + @Mapping(target = "updatedAt", ignore = true) + @Mapping(target = "isDelete", ignore = true) + @Mapping(target = "createdAt", ignore = true) + void toMessageReceiverDO(@MappingTarget MessageReceiverDO messageReceiverDO, MessageReceiverUpdateCmd messageReceiverUpdateCmd); +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/MessageDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/MessageDO.java new file mode 100644 index 0000000..d3ecc1e --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/MessageDO.java @@ -0,0 +1,90 @@ +package com.xunhong.erp.turbo.biz.infrastructure.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.xunhong.erp.turbo.api.biz.dto.enums.MessageStateEnum; +import com.xunhong.erp.turbo.api.biz.dto.enums.MessageSubjectTypeEnum; +import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +/** + * @author shenyifei + */ +@Data +@TableName(value = "message") +@EqualsAndHashCode(callSuper = true) +public class MessageDO extends BaseDO { + + /** + * 消息ID + */ + @TableId(value = "message_id", type = IdType.ASSIGN_ID) + private Long messageId; + + /** + * 消息模板ID + */ + @TableField(value = "message_template_id") + private Long messageTemplateId; + + /** + * 消息标题 + */ + @TableField(value = "title") + private String title; + + /** + * 消息内容 + */ + @TableField(value = "content") + private String content; + + /** + * 发送状态:0_待发送;1_发送中;2_已发送;3_已取消; + */ + @TableField(value = "state") + private MessageStateEnum state; + + /** + * 消息对象ID + */ + @TableField(value = "subject_id") + private Long subjectId; + + /** + * 消息对象类型:1_采购单 + */ + @TableField(value = "subject_type") + private MessageSubjectTypeEnum subjectType; + + /** + * 定时发送时间 + */ + @TableField(value = "scheduled_time") + private LocalDateTime scheduledTime; + + /** + * 实际发送时间 + */ + @TableField(value = "sent_at") + private LocalDateTime sentAt; + + /** + * 创建人ID + */ + @TableField(value = "created_by") + private Long createdBy; + + /** + * 创建人姓名 + */ + @TableField(value = "created_by_name") + private String createdByName; + +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/MessageReceiverDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/MessageReceiverDO.java new file mode 100644 index 0000000..d94bb24 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/MessageReceiverDO.java @@ -0,0 +1,55 @@ +package com.xunhong.erp.turbo.biz.infrastructure.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +/** + * @author shenyifei + */ +@Data +@TableName(value = "message_receiver") +@EqualsAndHashCode(callSuper = true) +public class MessageReceiverDO extends BaseDO { + + /** + * 消息接收ID + */ + @TableId(value = "message_receiver_id", type = IdType.ASSIGN_ID) + private Long messageReceiverId; + + /** + * 消息ID + */ + @TableField(value = "message_id") + private Long messageId; + + /** + * 接收用户ID + */ + @TableField(value = "admin_id") + private Long adminId; + + /** + * 是否已读 + */ + @TableField(value = "is_read") + private Boolean isRead; + + /** + * 已读时间 + */ + @TableField(value = "read_at") + private LocalDateTime readAt; + + @TableField(exist = false) + private MessageDO messageDO; + +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/AuditGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/AuditGatewayImpl.java index 4a07f4e..f4a0117 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/AuditGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/AuditGatewayImpl.java @@ -6,28 +6,28 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xunhong.erp.turbo.api.biz.dto.cmd.*; -import com.xunhong.erp.turbo.api.biz.dto.enums.AuditStateEnum; -import com.xunhong.erp.turbo.api.biz.dto.enums.AuditSubjectTypeEnum; -import com.xunhong.erp.turbo.api.biz.dto.enums.AuditTypeEnum; +import com.xunhong.erp.turbo.api.biz.dto.enums.*; import com.xunhong.erp.turbo.api.biz.dto.qry.AuditPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.AuditShowQry; import com.xunhong.erp.turbo.api.biz.exception.BizErrorCode; import com.xunhong.erp.turbo.api.biz.exception.BizException; +import com.xunhong.erp.turbo.api.user.api.AdminServiceI; +import com.xunhong.erp.turbo.api.user.api.UserServiceI; +import com.xunhong.erp.turbo.api.user.dto.qry.AdminListQry; +import com.xunhong.erp.turbo.api.user.dto.qry.UserListQry; +import com.xunhong.erp.turbo.api.user.dto.vo.AdminVO; +import com.xunhong.erp.turbo.api.user.dto.vo.UserVO; import com.xunhong.erp.turbo.biz.domain.entity.Audit; import com.xunhong.erp.turbo.biz.domain.gateway.AuditGateway; import com.xunhong.erp.turbo.biz.infrastructure.convert.AuditConvert; -import com.xunhong.erp.turbo.biz.infrastructure.entity.AuditDO; -import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderDO; -import com.xunhong.erp.turbo.biz.infrastructure.mapper.AuditMapper; -import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderMapper; +import com.xunhong.erp.turbo.biz.infrastructure.entity.*; +import com.xunhong.erp.turbo.biz.infrastructure.mapper.*; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -39,8 +39,12 @@ import java.util.stream.Collectors; public class AuditGatewayImpl implements AuditGateway { private final AuditMapper auditMapper; private final AuditConvert auditConvert; - private final OrderMapper orderMapper; + private final MessageMapper messageMapper; + private final MessageReceiverMapper messageReceiverMapper; + private final MessageTemplateMapper messageTemplateMapper; + private final AdminServiceI adminService; + private final UserServiceI userService; @Override public IPage page(AuditPageQry auditPageQry) { @@ -121,6 +125,10 @@ public class AuditGatewayImpl implements AuditGateway { auditMapper.updateById(auditDO); } + // 发送提审消息(待审核消息) + sendAuditNotification(MessageTemplateSceneEnum.WAIT_AUDIT, auditDO.getAuditId(), + orderSubmitReviewCmd.getCreatedBy(), orderSubmitReviewCmd.getCreatedByName()); + return auditConvert.toAudit(auditDO); } @@ -142,6 +150,9 @@ public class AuditGatewayImpl implements AuditGateway { auditDO.setAuditByName(orderWithdrawReviewCmd.getCreatedByName()); auditMapper.updateById(auditDO); } + + // 撤回审核不发送消息通知 + return auditConvert.toAudit(auditDO); } @@ -168,6 +179,11 @@ public class AuditGatewayImpl implements AuditGateway { // 如果审核记录不存在,抛出异常 throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND); } + + // 发送审核驳回消息 + sendAuditNotification(MessageTemplateSceneEnum.AUDIT_REJECT, auditDO.getAuditId(), + orderRejectApproveCmd.getCreatedBy(), orderRejectApproveCmd.getCreatedByName()); + return auditConvert.toAudit(auditDO); } @@ -193,6 +209,11 @@ public class AuditGatewayImpl implements AuditGateway { // 如果审核记录不存在,抛出异常 throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND); } + + // 发送审批通过消息 + sendAuditNotification(MessageTemplateSceneEnum.APPROVE_PASS, auditDO.getAuditId(), + orderFinalApproveCmd.getCreatedBy(), orderFinalApproveCmd.getCreatedByName()); + return auditConvert.toAudit(auditDO); } @@ -219,6 +240,11 @@ public class AuditGatewayImpl implements AuditGateway { // 如果审核记录不存在,抛出异常 throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND); } + + // 发送审批驳回消息 + sendAuditNotification(MessageTemplateSceneEnum.APPROVE_REJECT, auditDO.getAuditId(), + orderRejectFinalCmd.getCreatedBy(), orderRejectFinalCmd.getCreatedByName()); + return auditConvert.toAudit(auditDO); } @@ -256,8 +282,89 @@ public class AuditGatewayImpl implements AuditGateway { auditDO1.setCreatedBy(orderApproveCmd.getCreatedBy()); auditDO1.setCreatedByName(orderApproveCmd.getCreatedByName()); auditMapper.insert(auditDO1); + + // 发送待审批消息 + sendAuditNotification(MessageTemplateSceneEnum.WAIT_APPROVE, auditDO.getAuditId(), + orderApproveCmd.getCreatedBy(), orderApproveCmd.getCreatedByName()); + return auditConvert.toAudit(auditDO1); } + + /** + * 发送审核流程消息通知 + * + * @param sceneEnum 消息场景枚举 + * @param subjectId 关联主体ID(订单ID等) + * @param createdBy 操作人ID + * @param createdByName 操作人名称 + */ + @Transactional(rollbackFor = Exception.class) + private void sendAuditNotification(MessageTemplateSceneEnum sceneEnum, Long subjectId, Long createdBy, String createdByName) { + // 1. 查询启用的消息模板 + LambdaQueryWrapper templateWrapper = Wrappers.lambdaQuery(MessageTemplateDO.class); + templateWrapper.eq(MessageTemplateDO::getTemplateCategory, MessageTemplateCategoryEnum.PURCHASE_ORDER_MESSAGE_TEMPLATE); + templateWrapper.eq(MessageTemplateDO::getTemplateScene, sceneEnum); + templateWrapper.eq(MessageTemplateDO::getStatus, true); + templateWrapper.last("limit 1"); + + MessageTemplateDO template = messageTemplateMapper.selectOne(templateWrapper); + + // 如果没有配置模板,则不发送消息 + if (Objects.isNull(template)) { + return; + } + + // 如果模板没有配置角色,则不发送消息 + if (CollUtil.isEmpty(template.getRoleIds())) { + return; + } + + // 2. 创建消息记录 + MessageDO message = new MessageDO(); + message.setMessageTemplateId(template.getMessageTemplateId()); + message.setTitle(template.getTitleTemplate()); + message.setContent(template.getContentTemplate()); + message.setCreatedBy(createdBy); + message.setCreatedByName(createdByName); + message.setState(MessageStateEnum.SENT); + message.setSubjectId(subjectId); + message.setSubjectType(MessageSubjectTypeEnum.AUDIT); + message.setSentAt(LocalDateTime.now()); + messageMapper.insert(message); + + // 3. 查询所有需要接收消息的用户 + UserListQry userListQry = new UserListQry(); + userListQry.setRoleIdList(template.getRoleIds()); + List userVOList = userService.list(userListQry); + List userIdList = userVOList.stream().map(UserVO::getUserId).toList(); + + if (CollUtil.isEmpty(userIdList)) { + return; + } + + AdminListQry adminListQry = new AdminListQry(); + adminListQry.setUserIdList(userIdList); + List adminVOList = adminService.list(adminListQry); + + if (CollUtil.isEmpty(adminVOList)) { + return; + } + + // 4. 批量创建消息接收记录 + List receiverList = new ArrayList<>(); + for (AdminVO adminVO : adminVOList) { + MessageReceiverDO receiver = new MessageReceiverDO(); + receiver.setMessageId(message.getMessageId()); + receiver.setAdminId(adminVO.getAdminId()); + receiver.setIsRead(false); + receiverList.add(receiver); + } + + // 批量插入消息接收记录 + if (CollUtil.isNotEmpty(receiverList)) { + receiverList.forEach(messageReceiverMapper::insert); + } + } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/MessageReceiverGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/MessageReceiverGatewayImpl.java new file mode 100644 index 0000000..38e30de --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/MessageReceiverGatewayImpl.java @@ -0,0 +1,144 @@ +package com.xunhong.erp.turbo.biz.infrastructure.gateway; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverDestroyCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverMarkReadCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverListQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverPageQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverShowQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverUnreadCountQry; +import com.xunhong.erp.turbo.biz.domain.entity.MessageReceiver; +import com.xunhong.erp.turbo.biz.domain.gateway.MessageReceiverGateway; +import com.xunhong.erp.turbo.biz.infrastructure.convert.MessageReceiverConvert; +import com.xunhong.erp.turbo.biz.infrastructure.entity.MessageDO; +import com.xunhong.erp.turbo.biz.infrastructure.entity.MessageReceiverDO; +import com.xunhong.erp.turbo.biz.infrastructure.mapper.MessageMapper; +import com.xunhong.erp.turbo.biz.infrastructure.mapper.MessageReceiverMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author shenyifei + */ +@Repository +@RequiredArgsConstructor +public class MessageReceiverGatewayImpl implements MessageReceiverGateway { + private final MessageReceiverMapper messageReceiverMapper; + private final MessageReceiverConvert messageReceiverConvert; + + private final MessageMapper messageMapper; + + @Override + public MessageReceiver save(MessageReceiverCreateCmd messageReceiverCreateCmd) { + MessageReceiverDO messageReceiverDO = messageReceiverConvert.toMessageReceiverDO(messageReceiverCreateCmd); + messageReceiverMapper.insert(messageReceiverDO); + + return messageReceiverConvert.toMessageReceiver(messageReceiverDO); + } + + @Override + public IPage page(MessageReceiverPageQry messageReceiverPageQry) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(MessageReceiverDO.class); + queryWrapper.eq(MessageReceiverDO::getAdminId, messageReceiverPageQry.getCreatedBy()); + queryWrapper.orderByDesc(MessageReceiverDO::getCreatedAt); + + IPage page = new Page<>(messageReceiverPageQry.getPageIndex(), messageReceiverPageQry.getPageSize()); + page = messageReceiverMapper.selectPage(page, queryWrapper); + + Set messageIdList = page.getRecords().stream().map(MessageReceiverDO::getMessageId).collect(Collectors.toSet()); + if (CollUtil.isNotEmpty(messageIdList)) { + List messageDOList = messageMapper.selectByIds(messageIdList); + Map messageDOMap = messageDOList.stream().collect(Collectors.toMap(MessageDO::getMessageId, Function.identity())); + page.getRecords().forEach(messageReceiverDO -> { + messageReceiverDO.setMessageDO(messageDOMap.get(messageReceiverDO.getMessageId())); + }); + } + + return page.convert(messageReceiverConvert::toMessageReceiver); + } + + @Override + public List list(MessageReceiverListQry messageReceiverListQry) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(MessageReceiverDO.class); + queryWrapper.eq(MessageReceiverDO::getAdminId, messageReceiverListQry.getCreatedBy()); + List messageReceiverDOList = messageReceiverMapper.selectList(queryWrapper); + return messageReceiverDOList.stream().map(messageReceiverConvert::toMessageReceiver).toList(); + } + + @Override + public MessageReceiver update(MessageReceiverUpdateCmd messageReceiverUpdateCmd) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(MessageReceiverDO.class); + queryWrapper.eq(MessageReceiverDO::getMessageReceiverId, messageReceiverUpdateCmd.getMessageReceiverId()); + queryWrapper.eq(MessageReceiverDO::getAdminId, messageReceiverUpdateCmd.getCreatedBy()); + queryWrapper.last("limit 1"); + + MessageReceiverDO messageReceiverDO = messageReceiverMapper.selectOne(queryWrapper); + + messageReceiverConvert.toMessageReceiverDO(messageReceiverDO, messageReceiverUpdateCmd); + messageReceiverMapper.updateById(messageReceiverDO); + + return messageReceiverConvert.toMessageReceiver(messageReceiverDO); + } + + @Override + public MessageReceiver show(MessageReceiverShowQry messageReceiverShowQry) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(MessageReceiverDO.class); + queryWrapper.eq(MessageReceiverDO::getMessageReceiverId, messageReceiverShowQry.getMessageReceiverId()); + queryWrapper.eq(MessageReceiverDO::getAdminId, messageReceiverShowQry.getCreatedBy()); + queryWrapper.last("limit 1"); + + MessageReceiverDO messageReceiverDO = messageReceiverMapper.selectOne(queryWrapper); + return messageReceiverConvert.toMessageReceiver(messageReceiverDO); + } + + @Override + public void destroy(MessageReceiverDestroyCmd messageReceiverDestroyCmd) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(MessageReceiverDO.class); + queryWrapper.eq(MessageReceiverDO::getMessageReceiverId, messageReceiverDestroyCmd.getMessageReceiverId()); + queryWrapper.eq(MessageReceiverDO::getAdminId, messageReceiverDestroyCmd.getCreatedBy()); + queryWrapper.last("limit 1"); + + MessageReceiverDO messageReceiverDO = messageReceiverMapper.selectOne(queryWrapper); + messageReceiverDO.deleteById(); + } + + @Override + public void markRead(MessageReceiverMarkReadCmd messageReceiverMarkReadCmd) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(MessageReceiverDO.class); + queryWrapper.eq(MessageReceiverDO::getAdminId, messageReceiverMarkReadCmd.getCreatedBy()); + queryWrapper.eq(MessageReceiverDO::getMessageReceiverId, messageReceiverMarkReadCmd.getMessageReceiverId()); + queryWrapper.last("limit 1"); + + MessageReceiverDO messageReceiverDO = messageReceiverMapper.selectOne(queryWrapper); + + if (Objects.nonNull(messageReceiverDO)) { + messageReceiverDO.setIsRead(true); + messageReceiverDO.setReadAt(LocalDateTime.now()); + messageReceiverMapper.updateById(messageReceiverDO); + } + } + + @Override + public Integer getUnreadCount(MessageReceiverUnreadCountQry messageReceiverUnreadCountQry) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(MessageReceiverDO.class); + queryWrapper.eq(MessageReceiverDO::getAdminId, messageReceiverUnreadCountQry.getCreatedBy()); + queryWrapper.eq(MessageReceiverDO::getIsRead, false); + + return Math.toIntExact(messageReceiverMapper.selectCount(queryWrapper)); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java index 39a5a3d..377dc38 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java @@ -1189,7 +1189,7 @@ public class OrderGatewayImpl implements OrderGateway { DealerDO dealerDO = dealerMapper.selectById(lastVehicleNoQry.getDealerId()); Boolean enableInitialTrainNo = dealerDO.getSetting().getEnableInitialTrainNo(); - if (enableInitialTrainNo.equals(Boolean.TRUE)) { + if (Boolean.TRUE.equals(enableInitialTrainNo)) { return dealerDO.getSetting().getInitialTrainNo().toString(); } else { return "0"; diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/MessageMapper.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/MessageMapper.java new file mode 100644 index 0000000..b026904 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/MessageMapper.java @@ -0,0 +1,13 @@ +package com.xunhong.erp.turbo.biz.infrastructure.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xunhong.erp.turbo.biz.infrastructure.entity.MessageDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author shenyifei + */ +@Mapper +public interface MessageMapper extends BaseMapper { +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/MessageReceiverMapper.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/MessageReceiverMapper.java new file mode 100644 index 0000000..090e3e5 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/MessageReceiverMapper.java @@ -0,0 +1,13 @@ +package com.xunhong.erp.turbo.biz.infrastructure.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xunhong.erp.turbo.biz.infrastructure.entity.MessageReceiverDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author shenyifei + */ +@Mapper +public interface MessageReceiverMapper extends BaseMapper { +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/AuditMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/AuditMapper.xml index f926265..da3a195 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/AuditMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/AuditMapper.xml @@ -16,7 +16,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxBrandMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxBrandMapper.xml index 10c5650..74a5a1c 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxBrandMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxBrandMapper.xml @@ -14,7 +14,6 @@ typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/> - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxProductMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxProductMapper.xml index 7463cd0..d6f31eb 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxProductMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxProductMapper.xml @@ -17,7 +17,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxSpecMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxSpecMapper.xml index 052592f..a93c5fe 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxSpecMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/BoxSpecMapper.xml @@ -11,7 +11,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CompanyMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CompanyMapper.xml index f4d3eff..292b4c7 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CompanyMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CompanyMapper.xml @@ -16,7 +16,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CompanyPaymentAccountMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CompanyPaymentAccountMapper.xml index 1c31cb8..ad5eda0 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CompanyPaymentAccountMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CompanyPaymentAccountMapper.xml @@ -18,7 +18,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostItemMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostItemMapper.xml index 4285d3b..ccd3252 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostItemMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostItemMapper.xml @@ -15,7 +15,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostMapper.xml index 1a3fb9e..7b66b29 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostMapper.xml @@ -17,7 +17,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/DealerAccountRecordMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/DealerAccountRecordMapper.xml index 22e115f..b91d3e1 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/DealerAccountRecordMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/DealerAccountRecordMapper.xml @@ -17,7 +17,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseCostMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseCostMapper.xml index 3cb7ee7..5db5ecf 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseCostMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseCostMapper.xml @@ -12,7 +12,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseProvisionMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseProvisionMapper.xml index efce1f9..8671727 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseProvisionMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseProvisionMapper.xml @@ -12,7 +12,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseRecordMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseRecordMapper.xml index d7e2f4c..c631884 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseRecordMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ExpenseRecordMapper.xml @@ -11,7 +11,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/GiftBoxMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/GiftBoxMapper.xml index ba78bbd..9fc914b 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/GiftBoxMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/GiftBoxMapper.xml @@ -13,7 +13,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/MessageMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/MessageMapper.xml new file mode 100644 index 0000000..2222894 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/MessageMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/MessageReceiverMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/MessageReceiverMapper.xml new file mode 100644 index 0000000..d81256b --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/MessageReceiverMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/MessageTemplateMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/MessageTemplateMapper.xml index 8b27cc5..727a13d 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/MessageTemplateMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/MessageTemplateMapper.xml @@ -17,7 +17,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderCompanyMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderCompanyMapper.xml index 89b9711..436b049 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderCompanyMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderCompanyMapper.xml @@ -20,7 +20,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderCostItemMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderCostItemMapper.xml index 5576572..86df9e1 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderCostItemMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderCostItemMapper.xml @@ -16,7 +16,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderDealerMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderDealerMapper.xml index b32580b..91ecd8f 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderDealerMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderDealerMapper.xml @@ -17,7 +17,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderMapper.xml index 6b4457e..e6e00de 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderMapper.xml @@ -18,7 +18,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderPackageMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderPackageMapper.xml index 2cd2f19..a3f5b9a 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderPackageMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderPackageMapper.xml @@ -20,7 +20,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderRebateMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderRebateMapper.xml index 05262d3..c493a4c 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderRebateMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderRebateMapper.xml @@ -16,7 +16,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderShipItemMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderShipItemMapper.xml index 2823e11..8958442 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderShipItemMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderShipItemMapper.xml @@ -16,7 +16,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderShipMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderShipMapper.xml index 69a7b7b..5c12efd 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderShipMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderShipMapper.xml @@ -31,7 +31,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderVehicleMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderVehicleMapper.xml index 441a5ca..633ce90 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderVehicleMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderVehicleMapper.xml @@ -21,7 +21,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ProductMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ProductMapper.xml index aa633bb..9668811 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ProductMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ProductMapper.xml @@ -14,7 +14,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ReconciliationMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ReconciliationMapper.xml index c96c310..4754a83 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ReconciliationMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ReconciliationMapper.xml @@ -17,7 +17,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ReconciliationPaymentMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ReconciliationPaymentMapper.xml index f9dc57d..19be94c 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ReconciliationPaymentMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/ReconciliationPaymentMapper.xml @@ -23,7 +23,6 @@ typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/> - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierMapper.xml index 5297f81..f55d46e 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierMapper.xml @@ -20,7 +20,6 @@ - diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/reconciliationInvoiceMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/reconciliationInvoiceMapper.xml index fa4d6d7..cf53434 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/reconciliationInvoiceMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/reconciliationInvoiceMapper.xml @@ -18,7 +18,6 @@ typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/> - diff --git a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/app/executor/query/AdminListQryExe.java b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/app/executor/query/AdminListQryExe.java new file mode 100644 index 0000000..d90ec0a --- /dev/null +++ b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/app/executor/query/AdminListQryExe.java @@ -0,0 +1,25 @@ +package com.xunhong.erp.turbo.user.app.executor.query; + +import com.xunhong.erp.turbo.api.user.dto.qry.AdminListQry; +import com.xunhong.erp.turbo.api.user.dto.vo.AdminVO; +import com.xunhong.erp.turbo.user.app.assembler.AdminAssembler; +import com.xunhong.erp.turbo.user.domain.entity.Admin; +import com.xunhong.erp.turbo.user.domain.gateway.AdminGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Slf4j +@Component +@RequiredArgsConstructor +public class AdminListQryExe { + private final AdminGateway adminGateway; + private final AdminAssembler adminAssembler; + + public List execute(AdminListQry adminListQry) { + List adminList = adminGateway.list(adminListQry); + return adminList.stream().map(adminAssembler::toAdminVO).toList(); + } +} diff --git a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/app/service/AdminServiceImpl.java b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/app/service/AdminServiceImpl.java index 7f3a82f..7747f19 100644 --- a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/app/service/AdminServiceImpl.java +++ b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/app/service/AdminServiceImpl.java @@ -1,29 +1,33 @@ package com.xunhong.erp.turbo.user.app.service; import com.xunhong.erp.turbo.api.user.api.AdminServiceI; +import com.xunhong.erp.turbo.api.user.dto.qry.AdminListQry; import com.xunhong.erp.turbo.api.user.dto.qry.AdminShowQry; import com.xunhong.erp.turbo.api.user.dto.vo.AdminVO; +import com.xunhong.erp.turbo.user.app.executor.query.AdminListQryExe; import com.xunhong.erp.turbo.user.app.executor.query.AdminShowQryExe; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboService; import org.springframework.stereotype.Service; +import java.util.List; + @Slf4j @Service @DubboService(interfaceClass = AdminServiceI.class, version = "1.0.0") @RequiredArgsConstructor public class AdminServiceImpl implements AdminServiceI { private final AdminShowQryExe adminShowQryExe; -// private final StoreListQryExe storeListQryExe; + private final AdminListQryExe adminListQryExe; @Override public AdminVO show(AdminShowQry adminShowQry) { return adminShowQryExe.execute(adminShowQry); } -// @Override -// public List listStore(StoreListQry storeListQry) { -// return storeListQryExe.execute(storeListQry); -// } + @Override + public List list(AdminListQry adminListQry) { + return adminListQryExe.execute(adminListQry); + } } diff --git a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/domain/gateway/AdminGateway.java b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/domain/gateway/AdminGateway.java index 68109b1..7bb9d1d 100644 --- a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/domain/gateway/AdminGateway.java +++ b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/domain/gateway/AdminGateway.java @@ -1,11 +1,16 @@ package com.xunhong.erp.turbo.user.domain.gateway; import com.xunhong.erp.turbo.api.user.dto.cmd.AdminCreateCmd; +import com.xunhong.erp.turbo.api.user.dto.qry.AdminListQry; import com.xunhong.erp.turbo.api.user.dto.qry.AdminShowQry; import com.xunhong.erp.turbo.user.domain.entity.Admin; +import java.util.List; + public interface AdminGateway { Admin show(AdminShowQry adminShowQry); Admin register(AdminCreateCmd adminCreateCmd); + + List list(AdminListQry adminListQry); } diff --git a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/gateway/AdminGatewayImpl.java b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/gateway/AdminGatewayImpl.java index 23a38fd..1f3f1e7 100644 --- a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/gateway/AdminGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/gateway/AdminGatewayImpl.java @@ -3,6 +3,7 @@ package com.xunhong.erp.turbo.user.infrastructure.gateway; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.xunhong.erp.turbo.api.user.dto.cmd.AdminCreateCmd; +import com.xunhong.erp.turbo.api.user.dto.qry.AdminListQry; import com.xunhong.erp.turbo.api.user.dto.qry.AdminShowQry; import com.xunhong.erp.turbo.user.domain.entity.Admin; import com.xunhong.erp.turbo.user.domain.gateway.AdminGateway; @@ -13,6 +14,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Objects; @Slf4j @@ -39,4 +41,14 @@ public class AdminGatewayImpl implements AdminGateway { adminMapper.insert(adminDO); return adminConvert.toAdmin(adminDO); } + + @Override + public List list(AdminListQry adminListQry) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(AdminDO.class); + queryWrapper.in(Objects.nonNull(adminListQry.getUserIdList()), AdminDO::getUserId, adminListQry.getUserIdList()); + + List adminDOList = adminMapper.selectList(queryWrapper); + return adminDOList.stream().map(adminConvert::toAdmin).toList(); + + } } diff --git a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/gateway/UserGatewayImpl.java b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/gateway/UserGatewayImpl.java index ba73427..f8728ab 100644 --- a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/gateway/UserGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/gateway/UserGatewayImpl.java @@ -176,7 +176,7 @@ public class UserGatewayImpl implements UserGateway { queryWrapper.eq(!StrUtil.isBlankIfStr(userListQry.getName()), UserDO::getName, userListQry.getName()); queryWrapper.select(UserDO::getUserId, UserDO::getName, UserDO::getNickname, UserDO::getAvatar, UserDO::getPhone); - List userDOList = userMapper.selectList(queryWrapper); + List userDOList = userMapper.selectList(queryWrapper, userListQry); return userDOList.stream().map(userConvert::toUser).toList(); } diff --git a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/mapper/UserMapper.java b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/mapper/UserMapper.java index f7f34fd..709cb3f 100644 --- a/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/mapper/UserMapper.java +++ b/erp-turbo-business/erp-turbo-user/src/main/java/com/xunhong/erp/turbo/user/infrastructure/mapper/UserMapper.java @@ -4,15 +4,20 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.xunhong.erp.turbo.api.user.dto.qry.UserListQry; import com.xunhong.erp.turbo.api.user.dto.qry.UserPageQry; import com.xunhong.erp.turbo.user.infrastructure.entity.UserDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author shenyifei */ @Mapper public interface UserMapper extends BaseMapper { IPage selectPage(IPage page, @Param(Constants.WRAPPER) LambdaQueryWrapper queryWrapper, @Param("query") UserPageQry userPageQry); + + List selectList(@Param(Constants.WRAPPER) LambdaQueryWrapper queryWrapper, @Param("query") UserListQry userListQry); } diff --git a/erp-turbo-business/erp-turbo-user/src/main/resources/mapper/UserMapper.xml b/erp-turbo-business/erp-turbo-user/src/main/resources/mapper/UserMapper.xml index a10455b..f42a176 100644 --- a/erp-turbo-business/erp-turbo-user/src/main/resources/mapper/UserMapper.xml +++ b/erp-turbo-business/erp-turbo-user/src/main/resources/mapper/UserMapper.xml @@ -58,4 +58,27 @@ + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/MessageReceiverServiceI.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/MessageReceiverServiceI.java new file mode 100644 index 0000000..d4f391b --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/MessageReceiverServiceI.java @@ -0,0 +1,42 @@ +package com.xunhong.erp.turbo.api.biz.api; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverDestroyCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverMarkReadCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.MessageReceiverUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverListQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverPageQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverShowQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.MessageReceiverUnreadCountQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.MessageReceiverVO; +import com.xunhong.erp.turbo.base.dto.PageDTO; + +import java.util.List; + +/** + * @author shenyifei + */ +public interface MessageReceiverServiceI { + MessageReceiverVO create(MessageReceiverCreateCmd messageReceiverCreateCmd); + + PageDTO page(MessageReceiverPageQry messageReceiverPageQry); + + List list(MessageReceiverListQry messageReceiverListQry); + + MessageReceiverVO update(MessageReceiverUpdateCmd messageReceiverUpdateCmd); + + MessageReceiverVO show(MessageReceiverShowQry messageReceiverShowQry); + + void destroy(MessageReceiverDestroyCmd messageReceiverDestroyCmd); + + /** + * 标记消息为已读 + */ + void markRead(MessageReceiverMarkReadCmd messageReceiverMarkReadCmd); + + /** + * 获取未读消息数量 + */ + Integer getUnreadCount(MessageReceiverUnreadCountQry messageReceiverUnreadCountQry); +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverCreateCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverCreateCmd.java new file mode 100644 index 0000000..0158a2a --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverCreateCmd.java @@ -0,0 +1,55 @@ +package com.xunhong.erp.turbo.api.biz.dto.cmd; + +import com.xunhong.erp.turbo.base.dto.Command; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "消息接收创建") +@EqualsAndHashCode(callSuper = true) +public class MessageReceiverCreateCmd extends Command { + + /** + * 消息接收ID + */ + @Schema(title = "消息接收ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long messageReceiverId; + + /** + * 消息ID + */ + @Schema(title = "消息ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long messageId; + + /** + * 接收用户ID + */ + @Schema(title = "接收用户ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long adminId; + + /** + * 是否已读 + */ + @Schema(title = "是否已读") + private Boolean isRead; + + /** + * 已读时间 + */ + @Schema(title = "已读时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime readAt; + + /** + * 创建时间 + */ + @Schema(title = "创建时间") + private LocalDateTime createdAt; + +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverDestroyCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverDestroyCmd.java new file mode 100644 index 0000000..95243bd --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverDestroyCmd.java @@ -0,0 +1,19 @@ +package com.xunhong.erp.turbo.api.biz.dto.cmd; + +import com.xunhong.erp.turbo.base.dto.Command; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "删除消息接收") +@EqualsAndHashCode(callSuper = true) +public class MessageReceiverDestroyCmd extends Command { + + @Schema(title = "消息接收ID", requiredMode = Schema.RequiredMode.REQUIRED, type = "string") + private Long messageReceiverId; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverMarkReadCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverMarkReadCmd.java new file mode 100644 index 0000000..63fe47d --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverMarkReadCmd.java @@ -0,0 +1,18 @@ +package com.xunhong.erp.turbo.api.biz.dto.cmd; + +import com.xunhong.erp.turbo.base.dto.Command; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "标记消息已读") +@EqualsAndHashCode(callSuper = true) +public class MessageReceiverMarkReadCmd extends Command { + + @Schema(title = "消息接收ID", requiredMode = Schema.RequiredMode.REQUIRED, type = "string") + private Long messageReceiverId; +} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverUpdateCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverUpdateCmd.java new file mode 100644 index 0000000..678511e --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/MessageReceiverUpdateCmd.java @@ -0,0 +1,18 @@ +package com.xunhong.erp.turbo.api.biz.dto.cmd; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "消息接收更新") +@EqualsAndHashCode(callSuper = true) +public class MessageReceiverUpdateCmd extends MessageReceiverCreateCmd { + + @Schema(title = "消息接收ID", requiredMode = Schema.RequiredMode.REQUIRED, type = "string") + private Long messageReceiverId; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/MessageStateEnum.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/MessageStateEnum.java new file mode 100644 index 0000000..0ec2b18 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/MessageStateEnum.java @@ -0,0 +1,23 @@ +package com.xunhong.erp.turbo.api.biz.dto.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum MessageStateEnum { + /** + * 发送状态:0_待发送;1_发送中;2_已发送;3_已取消; + */ + PENDING(0, "待发送"), + SENDING(1, "发送中"), + SENT(2, "已发送"), + CANCELED(3, "已取消"), + ; + + @EnumValue + private final int type; + + private final String message; +} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/MessageSubjectTypeEnum.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/MessageSubjectTypeEnum.java new file mode 100644 index 0000000..b6817c8 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/MessageSubjectTypeEnum.java @@ -0,0 +1,21 @@ +package com.xunhong.erp.turbo.api.biz.dto.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum MessageSubjectTypeEnum { + /** + * 审核对象类型:1_审核;2_采购单 + */ + AUDIT(1, "审核"), + ORDER(2, "采购单"); + ; + + @EnumValue + private final int type; + + private final String message; +} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverListQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverListQry.java new file mode 100644 index 0000000..96fe90f --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverListQry.java @@ -0,0 +1,19 @@ +package com.xunhong.erp.turbo.api.biz.dto.qry; + +import com.xunhong.erp.turbo.base.dto.Query; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "消息接收列表查询") +@EqualsAndHashCode(callSuper = true) +public class MessageReceiverListQry extends Query { + + @Schema(title = "消息接收ID", type = "string") + private Long messageReceiverId; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverPageQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverPageQry.java new file mode 100644 index 0000000..f486255 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverPageQry.java @@ -0,0 +1,19 @@ +package com.xunhong.erp.turbo.api.biz.dto.qry; + +import com.xunhong.erp.turbo.base.dto.PageQuery; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "消息接收分页查询") +@EqualsAndHashCode(callSuper = true) +public class MessageReceiverPageQry extends PageQuery { + + @Schema(title = "消息接收ID", type = "string") + private Long messageReceiverId; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverShowQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverShowQry.java new file mode 100644 index 0000000..9db6951 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverShowQry.java @@ -0,0 +1,19 @@ +package com.xunhong.erp.turbo.api.biz.dto.qry; + +import com.xunhong.erp.turbo.base.dto.Query; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "消息接收查询") +@EqualsAndHashCode(callSuper = true) +public class MessageReceiverShowQry extends Query { + + @Schema(title = "消息接收ID", type = "string") + private Long messageReceiverId; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverUnreadCountQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverUnreadCountQry.java new file mode 100644 index 0000000..cd54c5a --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/MessageReceiverUnreadCountQry.java @@ -0,0 +1,16 @@ +package com.xunhong.erp.turbo.api.biz.dto.qry; + +import com.xunhong.erp.turbo.base.dto.Query; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "未读消息数量查询") +@EqualsAndHashCode(callSuper = true) +public class MessageReceiverUnreadCountQry extends Query { + +} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/MessageReceiverVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/MessageReceiverVO.java new file mode 100644 index 0000000..b0d3795 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/MessageReceiverVO.java @@ -0,0 +1,61 @@ +package com.xunhong.erp.turbo.api.biz.dto.vo; + +import com.alibaba.cola.dto.DTO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "消息接收") +@EqualsAndHashCode(callSuper = true) +public class MessageReceiverVO extends DTO { + + /** + * 消息接收ID + */ + @Schema(title = "消息接收ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long messageReceiverId; + + /** + * 消息ID + */ + @Schema(title = "消息ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long messageId; + + /** + * 接收用户ID + */ + @Schema(title = "接收用户ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long adminId; + + /** + * 是否已读 + */ + @Schema(title = "是否已读") + private Boolean isRead; + + /** + * 已读时间 + */ + @Schema(title = "已读时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime readAt; + + /** + * 创建时间 + */ + @Schema(title = "创建时间") + private LocalDateTime createdAt; + + /** + * 消息 + */ + @Schema(title = "消息") + private MessageVO messageVO; + +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/MessageVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/MessageVO.java new file mode 100644 index 0000000..36d6c36 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/MessageVO.java @@ -0,0 +1,87 @@ +package com.xunhong.erp.turbo.api.biz.dto.vo; + +import com.alibaba.cola.dto.DTO; +import com.xunhong.erp.turbo.api.biz.dto.enums.MessageStateEnum; +import com.xunhong.erp.turbo.api.biz.dto.enums.MessageSubjectTypeEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "消息接收") +@EqualsAndHashCode(callSuper = true) +public class MessageVO extends DTO { + + /** + * 消息ID + */ + @Schema(title = "消息ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long messageId; + + /** + * 消息模板ID + */ + @Schema(title = "消息模板ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long messageTemplateId; + + /** + * 消息标题 + */ + @Schema(title = "消息标题", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private String title; + + /** + * 消息内容 + */ + @Schema(title = "消息内容", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private String content; + + /** + * 发送状态:0_待发送;1_发送中;2_已发送;3_已取消; + */ + @Schema(title = "发送状态:0_待发送;1_发送中;2_已发送;3_已取消;", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private MessageStateEnum state; + + /** + * 消息对象ID + */ + @Schema(title = "消息对象ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long subjectId; + + /** + * 消息对象类型:1_采购单 + */ + @Schema(title = "消息对象类型:1_采购单", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private MessageSubjectTypeEnum subjectType; + + /** + * 定时发送时间 + */ + @Schema(title = "定时发送时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime scheduledTime; + + /** + * 实际发送时间 + */ + @Schema(title = "实际发送时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime sentAt; + + /** + * 创建人ID + */ + @Schema(title = "创建人ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long createdBy; + + /** + * 创建人姓名 + */ + @Schema(title = "创建人姓名", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private String createdByName; + +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/api/AdminServiceI.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/api/AdminServiceI.java index eac8885..5d82458 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/api/AdminServiceI.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/api/AdminServiceI.java @@ -1,11 +1,14 @@ package com.xunhong.erp.turbo.api.user.api; +import com.xunhong.erp.turbo.api.user.dto.qry.AdminListQry; import com.xunhong.erp.turbo.api.user.dto.qry.AdminShowQry; import com.xunhong.erp.turbo.api.user.dto.vo.AdminVO; +import java.util.List; + public interface AdminServiceI { AdminVO show(AdminShowQry adminShowQry); -// List listStore(StoreListQry storeListQry); + List list(AdminListQry adminListQry); } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/dto/qry/AdminListQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/dto/qry/AdminListQry.java new file mode 100644 index 0000000..c9068d3 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/dto/qry/AdminListQry.java @@ -0,0 +1,17 @@ +package com.xunhong.erp.turbo.api.user.dto.qry; + +import com.xunhong.erp.turbo.base.dto.Query; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@Data +@Schema(title = "管理员查询") +@EqualsAndHashCode(callSuper = true) +public class AdminListQry extends Query { + + @Schema(title = "用户ID", type = "string") + private List userIdList; +} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/dto/qry/UserListQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/dto/qry/UserListQry.java index 18798ed..043c66a 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/dto/qry/UserListQry.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/user/dto/qry/UserListQry.java @@ -17,6 +17,12 @@ public class UserListQry extends Query { @Schema(title = "用户ID") private List userIdList; + /** + * 角色ID + */ + @Schema(title = "角色ID") + private List roleIdList; + @Schema(title = "用户名", type = "string") private String name; }