feat(message): 添加消息接收功能模块
- 创建 MessageReceiverController 提供消息接收的 CRUD 和标记已读接口 - 定义 MessageReceiverServiceI 接口规范消息接收服务 - 实现 MessageReceiverServiceImpl 业务逻辑处理 - 添加 MessageReceiverCreateCmd、UpdateCmd、DestroyCmd 等命令 DTO - 创建 MessageReceiverListQry、PageQry、ShowQry 等查询 DTO - 设计 MessageReceiverVO、MessageVO 数据传输对象 - 定义 MessageStateEnum、MessageSubjectTypeEnum 枚举类型 - 实现 MessageReceiverAssembler、Convert 数据转换器 - 添加消息接收领域实体和数据访问网关 - 扩展 AdminServiceI 添加管理员列表查询方法 - 更新 UserListQry 添加角色 ID 查询条件
This commit is contained in:
parent
8121f5cc5b
commit
ed6a5f6ed9
@ -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<MessageReceiverVO> listMessageReceiver(@ModelAttribute @Validated MessageReceiverListQry messageReceiverListQry) {
|
||||||
|
return MultiResponse.of(messageReceiverService.list(messageReceiverListQry));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SaCheckLogin
|
||||||
|
@PostMapping("createMessageReceiver")
|
||||||
|
@Operation(summary = "创建消息接收", method = "POST")
|
||||||
|
public SingleResponse<MessageReceiverVO> createMessageReceiver(@RequestBody @Validated MessageReceiverCreateCmd messageReceiverCreateCmd) {
|
||||||
|
return SingleResponse.of(messageReceiverService.create(messageReceiverCreateCmd));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SaCheckLogin
|
||||||
|
@GetMapping("showMessageReceiver")
|
||||||
|
@Operation(summary = "消息接收详情", method = "GET")
|
||||||
|
public SingleResponse<MessageReceiverVO> showMessageReceiver(@ModelAttribute @Validated MessageReceiverShowQry messageReceiverShowQry) {
|
||||||
|
return SingleResponse.of(messageReceiverService.show(messageReceiverShowQry));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SaCheckLogin
|
||||||
|
@GetMapping("pageMessageReceiver")
|
||||||
|
@Operation(summary = "消息接收列表", method = "GET")
|
||||||
|
public PageResponse<MessageReceiverVO> pageMessageReceiver(@ModelAttribute @Validated MessageReceiverPageQry messageReceiverPageQry) {
|
||||||
|
PageDTO<MessageReceiverVO> 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<MessageReceiverVO> 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<Integer> getUnreadCount(@ModelAttribute @Validated MessageReceiverUnreadCountQry messageReceiverUnreadCountQry) {
|
||||||
|
return SingleResponse.of(messageReceiverService.getUnreadCount(messageReceiverUnreadCountQry));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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<MessageReceiverVO> execute(MessageReceiverListQry messageReceiverListQry) {
|
||||||
|
List<MessageReceiver> messageReceiverList = messageReceiverGateway.list(messageReceiverListQry);
|
||||||
|
return messageReceiverList.stream().map(messageReceiverAssembler::toMessageReceiverVO).toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -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<MessageReceiverVO> execute(MessageReceiverPageQry messageReceiverPageQry) {
|
||||||
|
IPage<MessageReceiver> page = messageReceiverGateway.page(messageReceiverPageQry);
|
||||||
|
return page.convert(messageReceiverAssembler::toMessageReceiverVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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<MessageReceiverVO> page(MessageReceiverPageQry messageReceiverPageQry) {
|
||||||
|
return PageDTO.of(messageReceiverPageQryExe.execute(messageReceiverPageQry));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<MessageReceiverVO> 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -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<MessageReceiver> page(MessageReceiverPageQry messageReceiverPageQry);
|
||||||
|
|
||||||
|
List<MessageReceiver> list(MessageReceiverListQry messageReceiverListQry);
|
||||||
|
|
||||||
|
MessageReceiver update(MessageReceiverUpdateCmd messageReceiverUpdateCmd);
|
||||||
|
|
||||||
|
MessageReceiver show(MessageReceiverShowQry messageReceiverShowQry);
|
||||||
|
|
||||||
|
void destroy(MessageReceiverDestroyCmd messageReceiverDestroyCmd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标记消息为已读
|
||||||
|
*/
|
||||||
|
void markRead(MessageReceiverMarkReadCmd messageReceiverMarkReadCmd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取未读消息数量
|
||||||
|
*/
|
||||||
|
Integer getUnreadCount(MessageReceiverUnreadCountQry messageReceiverUnreadCountQry);
|
||||||
|
}
|
||||||
|
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
@ -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<MessageDO> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 消息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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -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<MessageReceiverDO> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 消息接收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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -6,28 +6,28 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.cmd.*;
|
||||||
import com.xunhong.erp.turbo.api.biz.dto.enums.AuditStateEnum;
|
import com.xunhong.erp.turbo.api.biz.dto.enums.*;
|
||||||
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.qry.AuditPageQry;
|
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.dto.qry.AuditShowQry;
|
||||||
import com.xunhong.erp.turbo.api.biz.exception.BizErrorCode;
|
import com.xunhong.erp.turbo.api.biz.exception.BizErrorCode;
|
||||||
import com.xunhong.erp.turbo.api.biz.exception.BizException;
|
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.entity.Audit;
|
||||||
import com.xunhong.erp.turbo.biz.domain.gateway.AuditGateway;
|
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.convert.AuditConvert;
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.AuditDO;
|
import com.xunhong.erp.turbo.biz.infrastructure.entity.*;
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderDO;
|
import com.xunhong.erp.turbo.biz.infrastructure.mapper.*;
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.AuditMapper;
|
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderMapper;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -39,8 +39,12 @@ import java.util.stream.Collectors;
|
|||||||
public class AuditGatewayImpl implements AuditGateway {
|
public class AuditGatewayImpl implements AuditGateway {
|
||||||
private final AuditMapper auditMapper;
|
private final AuditMapper auditMapper;
|
||||||
private final AuditConvert auditConvert;
|
private final AuditConvert auditConvert;
|
||||||
|
|
||||||
private final OrderMapper orderMapper;
|
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
|
@Override
|
||||||
public IPage<Audit> page(AuditPageQry auditPageQry) {
|
public IPage<Audit> page(AuditPageQry auditPageQry) {
|
||||||
@ -121,6 +125,10 @@ public class AuditGatewayImpl implements AuditGateway {
|
|||||||
auditMapper.updateById(auditDO);
|
auditMapper.updateById(auditDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发送提审消息(待审核消息)
|
||||||
|
sendAuditNotification(MessageTemplateSceneEnum.WAIT_AUDIT, auditDO.getAuditId(),
|
||||||
|
orderSubmitReviewCmd.getCreatedBy(), orderSubmitReviewCmd.getCreatedByName());
|
||||||
|
|
||||||
return auditConvert.toAudit(auditDO);
|
return auditConvert.toAudit(auditDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,6 +150,9 @@ public class AuditGatewayImpl implements AuditGateway {
|
|||||||
auditDO.setAuditByName(orderWithdrawReviewCmd.getCreatedByName());
|
auditDO.setAuditByName(orderWithdrawReviewCmd.getCreatedByName());
|
||||||
auditMapper.updateById(auditDO);
|
auditMapper.updateById(auditDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 撤回审核不发送消息通知
|
||||||
|
|
||||||
return auditConvert.toAudit(auditDO);
|
return auditConvert.toAudit(auditDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,6 +179,11 @@ public class AuditGatewayImpl implements AuditGateway {
|
|||||||
// 如果审核记录不存在,抛出异常
|
// 如果审核记录不存在,抛出异常
|
||||||
throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND);
|
throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发送审核驳回消息
|
||||||
|
sendAuditNotification(MessageTemplateSceneEnum.AUDIT_REJECT, auditDO.getAuditId(),
|
||||||
|
orderRejectApproveCmd.getCreatedBy(), orderRejectApproveCmd.getCreatedByName());
|
||||||
|
|
||||||
return auditConvert.toAudit(auditDO);
|
return auditConvert.toAudit(auditDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,6 +209,11 @@ public class AuditGatewayImpl implements AuditGateway {
|
|||||||
// 如果审核记录不存在,抛出异常
|
// 如果审核记录不存在,抛出异常
|
||||||
throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND);
|
throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发送审批通过消息
|
||||||
|
sendAuditNotification(MessageTemplateSceneEnum.APPROVE_PASS, auditDO.getAuditId(),
|
||||||
|
orderFinalApproveCmd.getCreatedBy(), orderFinalApproveCmd.getCreatedByName());
|
||||||
|
|
||||||
return auditConvert.toAudit(auditDO);
|
return auditConvert.toAudit(auditDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,6 +240,11 @@ public class AuditGatewayImpl implements AuditGateway {
|
|||||||
// 如果审核记录不存在,抛出异常
|
// 如果审核记录不存在,抛出异常
|
||||||
throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND);
|
throw new BizException(BizErrorCode.B_BIZ_AUDIT_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发送审批驳回消息
|
||||||
|
sendAuditNotification(MessageTemplateSceneEnum.APPROVE_REJECT, auditDO.getAuditId(),
|
||||||
|
orderRejectFinalCmd.getCreatedBy(), orderRejectFinalCmd.getCreatedByName());
|
||||||
|
|
||||||
return auditConvert.toAudit(auditDO);
|
return auditConvert.toAudit(auditDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,8 +282,89 @@ public class AuditGatewayImpl implements AuditGateway {
|
|||||||
auditDO1.setCreatedBy(orderApproveCmd.getCreatedBy());
|
auditDO1.setCreatedBy(orderApproveCmd.getCreatedBy());
|
||||||
auditDO1.setCreatedByName(orderApproveCmd.getCreatedByName());
|
auditDO1.setCreatedByName(orderApproveCmd.getCreatedByName());
|
||||||
auditMapper.insert(auditDO1);
|
auditMapper.insert(auditDO1);
|
||||||
|
|
||||||
|
// 发送待审批消息
|
||||||
|
sendAuditNotification(MessageTemplateSceneEnum.WAIT_APPROVE, auditDO.getAuditId(),
|
||||||
|
orderApproveCmd.getCreatedBy(), orderApproveCmd.getCreatedByName());
|
||||||
|
|
||||||
return auditConvert.toAudit(auditDO1);
|
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<MessageTemplateDO> 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<UserVO> userVOList = userService.list(userListQry);
|
||||||
|
List<Long> userIdList = userVOList.stream().map(UserVO::getUserId).toList();
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(userIdList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
AdminListQry adminListQry = new AdminListQry();
|
||||||
|
adminListQry.setUserIdList(userIdList);
|
||||||
|
List<AdminVO> adminVOList = adminService.list(adminListQry);
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(adminVOList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 批量创建消息接收记录
|
||||||
|
List<MessageReceiverDO> 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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<MessageReceiver> page(MessageReceiverPageQry messageReceiverPageQry) {
|
||||||
|
LambdaQueryWrapper<MessageReceiverDO> queryWrapper = Wrappers.lambdaQuery(MessageReceiverDO.class);
|
||||||
|
queryWrapper.eq(MessageReceiverDO::getAdminId, messageReceiverPageQry.getCreatedBy());
|
||||||
|
queryWrapper.orderByDesc(MessageReceiverDO::getCreatedAt);
|
||||||
|
|
||||||
|
IPage<MessageReceiverDO> page = new Page<>(messageReceiverPageQry.getPageIndex(), messageReceiverPageQry.getPageSize());
|
||||||
|
page = messageReceiverMapper.selectPage(page, queryWrapper);
|
||||||
|
|
||||||
|
Set<Long> messageIdList = page.getRecords().stream().map(MessageReceiverDO::getMessageId).collect(Collectors.toSet());
|
||||||
|
if (CollUtil.isNotEmpty(messageIdList)) {
|
||||||
|
List<MessageDO> messageDOList = messageMapper.selectByIds(messageIdList);
|
||||||
|
Map<Long, MessageDO> 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<MessageReceiver> list(MessageReceiverListQry messageReceiverListQry) {
|
||||||
|
LambdaQueryWrapper<MessageReceiverDO> queryWrapper = Wrappers.lambdaQuery(MessageReceiverDO.class);
|
||||||
|
queryWrapper.eq(MessageReceiverDO::getAdminId, messageReceiverListQry.getCreatedBy());
|
||||||
|
List<MessageReceiverDO> messageReceiverDOList = messageReceiverMapper.selectList(queryWrapper);
|
||||||
|
return messageReceiverDOList.stream().map(messageReceiverConvert::toMessageReceiver).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MessageReceiver update(MessageReceiverUpdateCmd messageReceiverUpdateCmd) {
|
||||||
|
LambdaQueryWrapper<MessageReceiverDO> 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<MessageReceiverDO> 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<MessageReceiverDO> 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<MessageReceiverDO> 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<MessageReceiverDO> queryWrapper = Wrappers.lambdaQuery(MessageReceiverDO.class);
|
||||||
|
queryWrapper.eq(MessageReceiverDO::getAdminId, messageReceiverUnreadCountQry.getCreatedBy());
|
||||||
|
queryWrapper.eq(MessageReceiverDO::getIsRead, false);
|
||||||
|
|
||||||
|
return Math.toIntExact(messageReceiverMapper.selectCount(queryWrapper));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -1189,7 +1189,7 @@ public class OrderGatewayImpl implements OrderGateway {
|
|||||||
DealerDO dealerDO = dealerMapper.selectById(lastVehicleNoQry.getDealerId());
|
DealerDO dealerDO = dealerMapper.selectById(lastVehicleNoQry.getDealerId());
|
||||||
|
|
||||||
Boolean enableInitialTrainNo = dealerDO.getSetting().getEnableInitialTrainNo();
|
Boolean enableInitialTrainNo = dealerDO.getSetting().getEnableInitialTrainNo();
|
||||||
if (enableInitialTrainNo.equals(Boolean.TRUE)) {
|
if (Boolean.TRUE.equals(enableInitialTrainNo)) {
|
||||||
return dealerDO.getSetting().getInitialTrainNo().toString();
|
return dealerDO.getSetting().getInitialTrainNo().toString();
|
||||||
} else {
|
} else {
|
||||||
return "0";
|
return "0";
|
||||||
|
|||||||
@ -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<MessageDO> {
|
||||||
|
}
|
||||||
|
|
||||||
@ -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<MessageReceiverDO> {
|
||||||
|
}
|
||||||
|
|
||||||
@ -16,7 +16,6 @@
|
|||||||
<result property="createdBy" column="created_by"/>
|
<result property="createdBy" column="created_by"/>
|
||||||
<result property="createdByName" column="created_by_name"/>
|
<result property="createdByName" column="created_by_name"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -14,7 +14,6 @@
|
|||||||
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -17,7 +17,6 @@
|
|||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -11,7 +11,6 @@
|
|||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -16,7 +16,6 @@
|
|||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -18,7 +18,6 @@
|
|||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -15,7 +15,6 @@
|
|||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -17,7 +17,6 @@
|
|||||||
<result property="sort" column="sort"/>
|
<result property="sort" column="sort"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -17,7 +17,6 @@
|
|||||||
<result property="afterAmount" column="after_amount"/>
|
<result property="afterAmount" column="after_amount"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -12,7 +12,6 @@
|
|||||||
<result property="expenseAmount" column="expense_amount"/>
|
<result property="expenseAmount" column="expense_amount"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -12,7 +12,6 @@
|
|||||||
<result property="provisionAmount" column="provision_amount"/>
|
<result property="provisionAmount" column="provision_amount"/>
|
||||||
<result property="orderId" column="order_id"/>
|
<result property="orderId" column="order_id"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -11,7 +11,6 @@
|
|||||||
<result property="totalExpense" column="total_expense"/>
|
<result property="totalExpense" column="total_expense"/>
|
||||||
<result property="dailyProfit" column="daily_profit"/>
|
<result property="dailyProfit" column="daily_profit"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -13,7 +13,6 @@
|
|||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.xunhong.erp.turbo.biz.infrastructure.mapper.MessageMapper">
|
||||||
|
<resultMap id="BaseResultMap" type="com.xunhong.erp.turbo.biz.infrastructure.entity.MessageDO">
|
||||||
|
<result property="messageId" column="message_id"/>
|
||||||
|
<result property="messageTemplateId" column="message_template_id"/>
|
||||||
|
<result property="title" column="title"/>
|
||||||
|
<result property="content" column="content"/>
|
||||||
|
<result property="state" column="state"/>
|
||||||
|
<result property="subjectId" column="subject_id"/>
|
||||||
|
<result property="subjectType" column="subject_type"/>
|
||||||
|
<result property="scheduledTime" column="scheduled_time"/>
|
||||||
|
<result property="sentAt" column="sent_at"/>
|
||||||
|
<result property="createdBy" column="created_by"/>
|
||||||
|
<result property="createdByName" column="created_by_name"/>
|
||||||
|
<result property="createdAt" column="created_at"/>
|
||||||
|
<result property="updatedAt" column="updated_at"/>
|
||||||
|
<result property="isDelete" column="is_delete"/>
|
||||||
|
<result property="version" column="version"/>
|
||||||
|
</resultMap>
|
||||||
|
</mapper>
|
||||||
|
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.xunhong.erp.turbo.biz.infrastructure.mapper.MessageReceiverMapper">
|
||||||
|
<resultMap id="BaseResultMap" type="com.xunhong.erp.turbo.biz.infrastructure.entity.MessageReceiverDO">
|
||||||
|
<result property="messageReceiverId" column="message_receiver_id"/>
|
||||||
|
<result property="messageId" column="message_id"/>
|
||||||
|
<result property="isRead" column="is_read"/>
|
||||||
|
<result property="readAt" column="read_at"/>
|
||||||
|
<result property="adminId" column="admin_id"/>
|
||||||
|
<result property="createdAt" column="created_at"/>
|
||||||
|
<result property="updatedAt" column="updated_at"/>
|
||||||
|
<result property="isDelete" column="is_delete"/>
|
||||||
|
<result property="version" column="version"/>
|
||||||
|
</resultMap>
|
||||||
|
</mapper>
|
||||||
|
|
||||||
@ -17,7 +17,6 @@
|
|||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -20,7 +20,6 @@
|
|||||||
<result property="accountName" column="account_name"/>
|
<result property="accountName" column="account_name"/>
|
||||||
<result property="accountNumber" column="account_number"/>
|
<result property="accountNumber" column="account_number"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -16,7 +16,6 @@
|
|||||||
<result property="rule" column="rule"/>
|
<result property="rule" column="rule"/>
|
||||||
<result property="type" column="type"/>
|
<result property="type" column="type"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -17,7 +17,6 @@
|
|||||||
<result property="setting" column="setting"
|
<result property="setting" column="setting"
|
||||||
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -18,7 +18,6 @@
|
|||||||
<result property="createdBy" column="created_by"/>
|
<result property="createdBy" column="created_by"/>
|
||||||
<result property="createdByName" column="created_by_name"/>
|
<result property="createdByName" column="created_by_name"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -20,7 +20,6 @@
|
|||||||
<result property="boxSalePrice" column="box_sale_price"/>
|
<result property="boxSalePrice" column="box_sale_price"/>
|
||||||
<result property="boxType" column="box_type"/>
|
<result property="boxType" column="box_type"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -16,7 +16,6 @@
|
|||||||
<result property="isPaid" column="is_paid"/>
|
<result property="isPaid" column="is_paid"/>
|
||||||
<result property="poState" column="po_state"/>
|
<result property="poState" column="po_state"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -16,7 +16,6 @@
|
|||||||
<result property="totalAmount" column="total_amount"/>
|
<result property="totalAmount" column="total_amount"/>
|
||||||
<result property="watermelonGrade" column="watermelon_grade"/>
|
<result property="watermelonGrade" column="watermelon_grade"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -31,7 +31,6 @@
|
|||||||
<result property="createdBy" column="created_by"/>
|
<result property="createdBy" column="created_by"/>
|
||||||
<result property="createdByName" column="created_by_name"/>
|
<result property="createdByName" column="created_by_name"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -21,7 +21,6 @@
|
|||||||
<result property="strawCurtainPrice" column="straw_curtain_price"/>
|
<result property="strawCurtainPrice" column="straw_curtain_price"/>
|
||||||
<result property="deliveryTime" column="delivery_time"/>
|
<result property="deliveryTime" column="delivery_time"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -14,7 +14,6 @@
|
|||||||
<result property="sort" column="sort"/>
|
<result property="sort" column="sort"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -17,7 +17,6 @@
|
|||||||
<result property="state" column="state"/>
|
<result property="state" column="state"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -23,7 +23,6 @@
|
|||||||
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -20,7 +20,6 @@
|
|||||||
<result property="createdBy" column="created_by"/>
|
<result property="createdBy" column="created_by"/>
|
||||||
<result property="createdByName" column="created_by_name"/>
|
<result property="createdByName" column="created_by_name"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -18,7 +18,6 @@
|
|||||||
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
|
|||||||
@ -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<AdminVO> execute(AdminListQry adminListQry) {
|
||||||
|
List<Admin> adminList = adminGateway.list(adminListQry);
|
||||||
|
return adminList.stream().map(adminAssembler::toAdminVO).toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,29 +1,33 @@
|
|||||||
package com.xunhong.erp.turbo.user.app.service;
|
package com.xunhong.erp.turbo.user.app.service;
|
||||||
|
|
||||||
import com.xunhong.erp.turbo.api.user.api.AdminServiceI;
|
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.qry.AdminShowQry;
|
||||||
import com.xunhong.erp.turbo.api.user.dto.vo.AdminVO;
|
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 com.xunhong.erp.turbo.user.app.executor.query.AdminShowQryExe;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@DubboService(interfaceClass = AdminServiceI.class, version = "1.0.0")
|
@DubboService(interfaceClass = AdminServiceI.class, version = "1.0.0")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class AdminServiceImpl implements AdminServiceI {
|
public class AdminServiceImpl implements AdminServiceI {
|
||||||
private final AdminShowQryExe adminShowQryExe;
|
private final AdminShowQryExe adminShowQryExe;
|
||||||
// private final StoreListQryExe storeListQryExe;
|
private final AdminListQryExe adminListQryExe;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AdminVO show(AdminShowQry adminShowQry) {
|
public AdminVO show(AdminShowQry adminShowQry) {
|
||||||
return adminShowQryExe.execute(adminShowQry);
|
return adminShowQryExe.execute(adminShowQry);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Override
|
@Override
|
||||||
// public List<StoreVO> listStore(StoreListQry storeListQry) {
|
public List<AdminVO> list(AdminListQry adminListQry) {
|
||||||
// return storeListQryExe.execute(storeListQry);
|
return adminListQryExe.execute(adminListQry);
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,16 @@
|
|||||||
package com.xunhong.erp.turbo.user.domain.gateway;
|
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.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.api.user.dto.qry.AdminShowQry;
|
||||||
import com.xunhong.erp.turbo.user.domain.entity.Admin;
|
import com.xunhong.erp.turbo.user.domain.entity.Admin;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface AdminGateway {
|
public interface AdminGateway {
|
||||||
Admin show(AdminShowQry adminShowQry);
|
Admin show(AdminShowQry adminShowQry);
|
||||||
|
|
||||||
Admin register(AdminCreateCmd adminCreateCmd);
|
Admin register(AdminCreateCmd adminCreateCmd);
|
||||||
|
|
||||||
|
List<Admin> list(AdminListQry adminListQry);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
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.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.api.user.dto.qry.AdminShowQry;
|
||||||
import com.xunhong.erp.turbo.user.domain.entity.Admin;
|
import com.xunhong.erp.turbo.user.domain.entity.Admin;
|
||||||
import com.xunhong.erp.turbo.user.domain.gateway.AdminGateway;
|
import com.xunhong.erp.turbo.user.domain.gateway.AdminGateway;
|
||||||
@ -13,6 +14,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -39,4 +41,14 @@ public class AdminGatewayImpl implements AdminGateway {
|
|||||||
adminMapper.insert(adminDO);
|
adminMapper.insert(adminDO);
|
||||||
return adminConvert.toAdmin(adminDO);
|
return adminConvert.toAdmin(adminDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Admin> list(AdminListQry adminListQry) {
|
||||||
|
LambdaQueryWrapper<AdminDO> queryWrapper = Wrappers.lambdaQuery(AdminDO.class);
|
||||||
|
queryWrapper.in(Objects.nonNull(adminListQry.getUserIdList()), AdminDO::getUserId, adminListQry.getUserIdList());
|
||||||
|
|
||||||
|
List<AdminDO> adminDOList = adminMapper.selectList(queryWrapper);
|
||||||
|
return adminDOList.stream().map(adminConvert::toAdmin).toList();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -176,7 +176,7 @@ public class UserGatewayImpl implements UserGateway {
|
|||||||
queryWrapper.eq(!StrUtil.isBlankIfStr(userListQry.getName()), UserDO::getName, userListQry.getName());
|
queryWrapper.eq(!StrUtil.isBlankIfStr(userListQry.getName()), UserDO::getName, userListQry.getName());
|
||||||
queryWrapper.select(UserDO::getUserId, UserDO::getName, UserDO::getNickname, UserDO::getAvatar, UserDO::getPhone);
|
queryWrapper.select(UserDO::getUserId, UserDO::getName, UserDO::getNickname, UserDO::getAvatar, UserDO::getPhone);
|
||||||
|
|
||||||
List<UserDO> userDOList = userMapper.selectList(queryWrapper);
|
List<UserDO> userDOList = userMapper.selectList(queryWrapper, userListQry);
|
||||||
return userDOList.stream().map(userConvert::toUser).toList();
|
return userDOList.stream().map(userConvert::toUser).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,15 +4,20 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
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.api.user.dto.qry.UserPageQry;
|
||||||
import com.xunhong.erp.turbo.user.infrastructure.entity.UserDO;
|
import com.xunhong.erp.turbo.user.infrastructure.entity.UserDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author shenyifei
|
* @author shenyifei
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface UserMapper extends BaseMapper<UserDO> {
|
public interface UserMapper extends BaseMapper<UserDO> {
|
||||||
IPage<UserDO> selectPage(IPage<UserDO> page, @Param(Constants.WRAPPER) LambdaQueryWrapper<UserDO> queryWrapper, @Param("query") UserPageQry userPageQry);
|
IPage<UserDO> selectPage(IPage<UserDO> page, @Param(Constants.WRAPPER) LambdaQueryWrapper<UserDO> queryWrapper, @Param("query") UserPageQry userPageQry);
|
||||||
|
|
||||||
|
List<UserDO> selectList(@Param(Constants.WRAPPER) LambdaQueryWrapper<UserDO> queryWrapper, @Param("query") UserListQry userListQry);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,4 +58,27 @@
|
|||||||
|
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
<select id="selectList" resultType="com.xunhong.erp.turbo.user.infrastructure.entity.UserDO"
|
||||||
|
resultMap="BaseResultMap">
|
||||||
|
SELECT u.*
|
||||||
|
FROM user u
|
||||||
|
LEFT JOIN user_role ur ON u.user_id = ur.user_id
|
||||||
|
<where>
|
||||||
|
u.is_delete = 0
|
||||||
|
<if test="query.roleIdList != null and query.roleIdList.size() > 0">
|
||||||
|
and ur.role_id in
|
||||||
|
<foreach collection="query.roleIdList" item="roleId"
|
||||||
|
open="(" separator="," close=")">
|
||||||
|
#{roleId}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test="ew != null">
|
||||||
|
<if test="ew.nonEmptyOfWhere">
|
||||||
|
AND
|
||||||
|
</if>
|
||||||
|
${ew.sqlSegment}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@ -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<MessageReceiverVO> page(MessageReceiverPageQry messageReceiverPageQry);
|
||||||
|
|
||||||
|
List<MessageReceiverVO> list(MessageReceiverListQry messageReceiverListQry);
|
||||||
|
|
||||||
|
MessageReceiverVO update(MessageReceiverUpdateCmd messageReceiverUpdateCmd);
|
||||||
|
|
||||||
|
MessageReceiverVO show(MessageReceiverShowQry messageReceiverShowQry);
|
||||||
|
|
||||||
|
void destroy(MessageReceiverDestroyCmd messageReceiverDestroyCmd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标记消息为已读
|
||||||
|
*/
|
||||||
|
void markRead(MessageReceiverMarkReadCmd messageReceiverMarkReadCmd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取未读消息数量
|
||||||
|
*/
|
||||||
|
Integer getUnreadCount(MessageReceiverUnreadCountQry messageReceiverUnreadCountQry);
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
@ -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 {
|
||||||
|
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -1,11 +1,14 @@
|
|||||||
package com.xunhong.erp.turbo.api.user.api;
|
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.qry.AdminShowQry;
|
||||||
import com.xunhong.erp.turbo.api.user.dto.vo.AdminVO;
|
import com.xunhong.erp.turbo.api.user.dto.vo.AdminVO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface AdminServiceI {
|
public interface AdminServiceI {
|
||||||
AdminVO show(AdminShowQry adminShowQry);
|
AdminVO show(AdminShowQry adminShowQry);
|
||||||
|
|
||||||
// List<StoreVO> listStore(StoreListQry storeListQry);
|
List<AdminVO> list(AdminListQry adminListQry);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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<Long> userIdList;
|
||||||
|
}
|
||||||
@ -17,6 +17,12 @@ public class UserListQry extends Query {
|
|||||||
@Schema(title = "用户ID")
|
@Schema(title = "用户ID")
|
||||||
private List<Long> userIdList;
|
private List<Long> userIdList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色ID
|
||||||
|
*/
|
||||||
|
@Schema(title = "角色ID")
|
||||||
|
private List<Long> roleIdList;
|
||||||
|
|
||||||
@Schema(title = "用户名", type = "string")
|
@Schema(title = "用户名", type = "string")
|
||||||
private String name;
|
private String name;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user