From 7f7e28b3ea95d268a64a07934d2b3aa13adc9cd9 Mon Sep 17 00:00:00 2001 From: zhanglei Date: Thu, 16 Jul 2026 10:28:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/web/SafetyMessageController.java | 66 ++++++++++++++ .../convertor/SafetyMessageCmdConvertor.java | 33 +++++++ .../app/executor/SafetyMessageExecutor.java | 86 +++++++++++++++++++ .../client/api/SafetyMessageApi.java | 30 +++++++ .../safetyeval/client/co/SafetyMessageCO.java | 42 +++++++++ .../client/dto/SafetyMessageAddCmd.java | 34 ++++++++ .../client/dto/SafetyMessageModifyCmd.java | 37 ++++++++ .../client/dto/SafetyMessagePageQuery.java | 27 ++++++ .../domain/entity/SafetyMessageEntity.java | 24 ++++++ .../domain/exception/ErrorCode.java | 2 + .../domain/gateway/SafetyMessageGateway.java | 23 +++++ .../domain/query/SafetyMessageQuery.java | 19 ++++ .../service/SafetyMessageDomainService.java | 58 +++++++++++++ .../convertor/SafetyMessageDoConvertor.java | 22 +++++ .../dataobject/SafetyMessageDO.java | 37 ++++++++ .../gatewayimpl/SafetyMessageGatewayImpl.java | 86 +++++++++++++++++++ .../mapper/SafetyMessageMapper.java | 9 ++ 17 files changed, 635 insertions(+) create mode 100644 safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/SafetyMessageController.java create mode 100644 safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/SafetyMessageCmdConvertor.java create mode 100644 safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/SafetyMessageExecutor.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/SafetyMessageApi.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/SafetyMessageCO.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessageAddCmd.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessageModifyCmd.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessagePageQuery.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/SafetyMessageEntity.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/SafetyMessageGateway.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/SafetyMessageQuery.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/SafetyMessageDomainService.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/SafetyMessageDoConvertor.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/SafetyMessageDO.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/SafetyMessageGatewayImpl.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/SafetyMessageMapper.java diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/SafetyMessageController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/SafetyMessageController.java new file mode 100644 index 0000000..8039ce5 --- /dev/null +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/SafetyMessageController.java @@ -0,0 +1,66 @@ +package org.qinan.safetyeval.adapter.web; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.qinan.safetyeval.client.api.SafetyMessageApi; +import org.qinan.safetyeval.client.co.SafetyMessageCO; +import org.qinan.safetyeval.client.dto.*; +import org.qinan.safetyeval.infrastructure.dataobject.base.Req; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 消息中心适配层(Controller) + * + * @author safety-eval + */ +@Slf4j +@Api(tags = "消息中心") +@RestController +@RequestMapping("/safetyEval/safetyMessage") +public class SafetyMessageController { + + @Resource + private SafetyMessageApi safetyMessageApi; + + @ApiOperation("新增消息") + @PostMapping("/save") + public SingleResponse add(@Validated @RequestBody SafetyMessageAddCmd cmd) { + return safetyMessageApi.add(cmd); + } + + @ApiOperation("查询消息详情") + @GetMapping("/get") + public SingleResponse get(@ApiParam("主键ID") @RequestParam Long id) { + return safetyMessageApi.get(id); + } + + @ApiOperation("修改消息") + @PostMapping("/modify") + public SingleResponse modify(@Validated @RequestBody SafetyMessageModifyCmd cmd) { + return safetyMessageApi.modify(cmd); + } + + @ApiOperation("批量标为已读") + @PostMapping("/batchMarkedAsRead") + public SingleResponse batchMarkedAsRead(@ApiParam("主键IDj集合") @RequestBody Req> req) { + return safetyMessageApi.batchMarkedAsRead(req.getData()); + } + + @ApiOperation("删除消息") + @PostMapping("/delete") + public SingleResponse delete(@ApiParam("主键ID") @RequestBody Req req) { + return safetyMessageApi.delete(req.getData()); + } + + @ApiOperation("分页查询消息") + @GetMapping("/page") + public PageResponse page(@Validated SafetyMessagePageQuery query) { + return safetyMessageApi.page(query); + } +} diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/SafetyMessageCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/SafetyMessageCmdConvertor.java new file mode 100644 index 0000000..f9be47e --- /dev/null +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/SafetyMessageCmdConvertor.java @@ -0,0 +1,33 @@ +package org.qinan.safetyeval.app.convertor; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.qinan.safetyeval.client.co.SafetyMessageCO; +import org.qinan.safetyeval.client.dto.SafetyMessageAddCmd; +import org.qinan.safetyeval.client.dto.SafetyMessageModifyCmd; +import org.qinan.safetyeval.client.dto.SafetyMessagePageQuery; +import org.qinan.safetyeval.domain.entity.SafetyMessageEntity; +import org.qinan.safetyeval.domain.query.SafetyMessageQuery; + +import java.util.List; + +/** + * 消息中心命令转换 + * + * @author safety-eval + */ +@Mapper(componentModel = "spring") +public interface SafetyMessageCmdConvertor { + + SafetyMessageEntity convertAddCmdToE(SafetyMessageAddCmd cmd); + + SafetyMessageEntity convertModifyCmdToE(SafetyMessageModifyCmd cmd); + + @Mapping(target = "pageNum", source = "current") + @Mapping(target = "pageSize", source = "size") + SafetyMessageQuery convertPageQueryToQ(SafetyMessagePageQuery query); + + SafetyMessageCO convertEToCO(SafetyMessageEntity entity); + + List convertEListToCOList(List list); +} diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/SafetyMessageExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/SafetyMessageExecutor.java new file mode 100644 index 0000000..4ef7f1c --- /dev/null +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/SafetyMessageExecutor.java @@ -0,0 +1,86 @@ +package org.qinan.safetyeval.app.executor; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.qinan.safetyeval.app.convertor.SafetyMessageCmdConvertor; +import org.qinan.safetyeval.client.api.SafetyMessageApi; +import org.qinan.safetyeval.client.co.SafetyMessageCO; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.SafetyMessageAddCmd; +import org.qinan.safetyeval.client.dto.SafetyMessageModifyCmd; +import org.qinan.safetyeval.client.dto.SafetyMessagePageQuery; +import org.qinan.safetyeval.client.dto.SingleResponse; +import org.qinan.safetyeval.domain.entity.SafetyMessageEntity; +import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.query.SafetyMessageQuery; +import org.qinan.safetyeval.domain.service.SafetyMessageDomainService; +import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; +import org.qinan.safetyeval.infrastructure.dataobject.SafetyMessageDO; +import org.qinan.safetyeval.infrastructure.mapper.SafetyMessageMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 消息中心执行器(App层) + * + * @author safety-eval + */ +@Service +public class SafetyMessageExecutor implements SafetyMessageApi { + + @Resource + private SafetyMessageDomainService safetyMessageDomainService; + @Resource + private SafetyMessageCmdConvertor safetyMessageCmdConvertor; + @Autowired + private SafetyMessageMapper safetyMessageMapper; + + @Override + public SingleResponse add(SafetyMessageAddCmd cmd) { + SafetyMessageEntity entity = safetyMessageCmdConvertor.convertAddCmdToE(cmd); + SafetyMessageEntity result = safetyMessageDomainService.add(entity); + return SingleResponse.success(safetyMessageCmdConvertor.convertEToCO(result)); + } + + @Override + public SingleResponse get(Long id) { + SafetyMessageEntity entity = safetyMessageDomainService.get(id); + return SingleResponse.success(safetyMessageCmdConvertor.convertEToCO(entity)); + } + + @Override + public SingleResponse modify(SafetyMessageModifyCmd cmd) { + SafetyMessageEntity entity = safetyMessageCmdConvertor.convertModifyCmdToE(cmd); + SafetyMessageEntity result = safetyMessageDomainService.modify(entity); + return SingleResponse.success(safetyMessageCmdConvertor.convertEToCO(result)); + } + + @Override + public SingleResponse delete(Long id) { + safetyMessageDomainService.delete(id); + return SingleResponse.success(); + } + + @Override + public PageResponse page(SafetyMessagePageQuery query) { + SafetyMessageQuery domainQuery = safetyMessageCmdConvertor.convertPageQueryToQ(query); + if (domainQuery.getOrgId() == null) { + domainQuery.setOrgId(ThreadLocalUserInfoAdapter.get()); + } + PageResult pageResult = safetyMessageDomainService.page(domainQuery); + return PageResponse.of( + safetyMessageCmdConvertor.convertEListToCOList(pageResult.getRecords()), + pageResult.getTotal()); + } + + @Override + public SingleResponse batchMarkedAsRead(List data) { + safetyMessageMapper.update(new LambdaUpdateWrapper() + .in(SafetyMessageDO::getId, data) + .set(SafetyMessageDO::getSendState, 1) + ); + return SingleResponse.success(true); + } +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/SafetyMessageApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/SafetyMessageApi.java new file mode 100644 index 0000000..010b5af --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/SafetyMessageApi.java @@ -0,0 +1,30 @@ +package org.qinan.safetyeval.client.api; + +import org.qinan.safetyeval.client.co.SafetyMessageCO; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.SafetyMessageAddCmd; +import org.qinan.safetyeval.client.dto.SafetyMessageModifyCmd; +import org.qinan.safetyeval.client.dto.SafetyMessagePageQuery; +import org.qinan.safetyeval.client.dto.SingleResponse; + +import java.util.List; + +/** + * 消息中心接口定义(Client层) + * + * @author safety-eval + */ +public interface SafetyMessageApi { + + SingleResponse add(SafetyMessageAddCmd cmd); + + SingleResponse get(Long id); + + SingleResponse modify(SafetyMessageModifyCmd cmd); + + SingleResponse delete(Long id); + + PageResponse page(SafetyMessagePageQuery query); + + SingleResponse batchMarkedAsRead(List data); +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/SafetyMessageCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/SafetyMessageCO.java new file mode 100644 index 0000000..b7e6d56 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/SafetyMessageCO.java @@ -0,0 +1,42 @@ +package org.qinan.safetyeval.client.co; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 消息中心 CO + * + * @author safety-eval + */ +@Data +public class SafetyMessageCO { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "机构id") + private Long orgId; + + @ApiModelProperty(value = "发送者姓名") + private String sendName; + + @ApiModelProperty(value = "发送者id") + private Long sendId; + + @ApiModelProperty(value = "发送类型") + private String sendType; + + @ApiModelProperty(value = "发送内容: json格式(暂定: {\"content\":\"text\"})}") + private String sendContent; + + @ApiModelProperty(value = "接收人id") + private Long receiveId; + + @ApiModelProperty(value = "发送状态 0-未读, 1-已读") + private Integer sendState; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessageAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessageAddCmd.java new file mode 100644 index 0000000..c31f567 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessageAddCmd.java @@ -0,0 +1,34 @@ +package org.qinan.safetyeval.client.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 消息中心新增命令 + * + * @author safety-eval + */ +@Data +public class SafetyMessageAddCmd { + + @ApiModelProperty(value = "机构id") + private Long orgId; + + @ApiModelProperty(value = "发送者姓名") + private String sendName; + + @ApiModelProperty(value = "发送者id") + private Long sendId; + + @ApiModelProperty(value = "发送类型") + private String sendType; + + @ApiModelProperty(value = "发送内容: json格式") + private String sendContent; + + @ApiModelProperty(value = "接收人id") + private Long receiveId; + + @ApiModelProperty(value = "发送状态 0-未读, 1-已读") + private Integer sendState; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessageModifyCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessageModifyCmd.java new file mode 100644 index 0000000..b9eb22a --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessageModifyCmd.java @@ -0,0 +1,37 @@ +package org.qinan.safetyeval.client.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 消息中心修改命令 + * + * @author safety-eval + */ +@Data +public class SafetyMessageModifyCmd { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "机构id") + private Long orgId; + + @ApiModelProperty(value = "发送者姓名") + private String sendName; + + @ApiModelProperty(value = "发送者id") + private Long sendId; + + @ApiModelProperty(value = "发送类型") + private String sendType; + + @ApiModelProperty(value = "发送内容: json格式") + private String sendContent; + + @ApiModelProperty(value = "接收人id") + private Long receiveId; + + @ApiModelProperty(value = "发送状态 0-未读, 1-已读") + private Integer sendState; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessagePageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessagePageQuery.java new file mode 100644 index 0000000..75380e1 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SafetyMessagePageQuery.java @@ -0,0 +1,27 @@ +package org.qinan.safetyeval.client.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 消息中心分页查询参数 + * + * @author safety-eval + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class SafetyMessagePageQuery extends BasePageQuery { + + @ApiModelProperty(value = "机构id") + private Long orgId; + + @ApiModelProperty(value = "接收人id") + private Long receiveId; + + @ApiModelProperty(value = "发送类型") + private String sendType; + + @ApiModelProperty(value = "发送状态 0-未读, 1-已读") + private Integer sendState; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/SafetyMessageEntity.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/SafetyMessageEntity.java new file mode 100644 index 0000000..e1e60a2 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/SafetyMessageEntity.java @@ -0,0 +1,24 @@ +package org.qinan.safetyeval.domain.entity; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 消息中心领域实体 + * + * @author safety-eval + */ +@Data +public class SafetyMessageEntity { + + private Long id; + private Long orgId; + private String sendName; + private Long sendId; + private String sendType; + private String sendContent; + private Long receiveId; + private Integer sendState; + private LocalDateTime createTime; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java index 067e0a4..05878a3 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java @@ -106,6 +106,8 @@ public enum ErrorCode { GBS_USER_ERROR("04-01-001", "gbs用户未登录"), GBS_USER_SYNC_ERROR("04-01-002", "gbs用户同步错误"), + // ---- 消息中心 ---- + SAFETY_MESSAGE_NOT_FOUND("05-01-001", "消息不存在"), /** * 未知错误 diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/SafetyMessageGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/SafetyMessageGateway.java new file mode 100644 index 0000000..9a56f15 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/SafetyMessageGateway.java @@ -0,0 +1,23 @@ +package org.qinan.safetyeval.domain.gateway; + +import org.qinan.safetyeval.domain.entity.SafetyMessageEntity; +import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.query.SafetyMessageQuery; + +/** + * 消息中心 Gateway + * + * @author safety-eval + */ +public interface SafetyMessageGateway { + + SafetyMessageEntity save(SafetyMessageEntity entity); + + SafetyMessageEntity get(Long id); + + SafetyMessageEntity modify(SafetyMessageEntity entity); + + void delete(Long id); + + PageResult page(SafetyMessageQuery query); +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/SafetyMessageQuery.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/SafetyMessageQuery.java new file mode 100644 index 0000000..1e18c52 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/SafetyMessageQuery.java @@ -0,0 +1,19 @@ +package org.qinan.safetyeval.domain.query; + +import lombok.Data; + +/** + * 消息中心领域查询对象 + * + * @author safety-eval + */ +@Data +public class SafetyMessageQuery { + + private Long pageNum; + private Long pageSize; + private Long orgId; + private Long receiveId; + private String sendType; + private Integer sendState; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/SafetyMessageDomainService.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/SafetyMessageDomainService.java new file mode 100644 index 0000000..1ae523c --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/SafetyMessageDomainService.java @@ -0,0 +1,58 @@ +package org.qinan.safetyeval.domain.service; + +import org.qinan.safetyeval.domain.entity.SafetyMessageEntity; +import org.qinan.safetyeval.domain.exception.BizException; +import org.qinan.safetyeval.domain.exception.ErrorCode; +import org.qinan.safetyeval.domain.gateway.SafetyMessageGateway; +import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.query.SafetyMessageQuery; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 消息中心领域服务 + * + * @author safety-eval + */ +@Service +public class SafetyMessageDomainService { + + @Resource + private SafetyMessageGateway safetyMessageGateway; + + public SafetyMessageEntity add(SafetyMessageEntity entity) { + if (entity.getSendState() == null) { + entity.setSendState(0); + } + return safetyMessageGateway.save(entity); + } + + public SafetyMessageEntity get(Long id) { + SafetyMessageEntity entity = safetyMessageGateway.get(id); + if (entity == null) { + throw new BizException(ErrorCode.SAFETY_MESSAGE_NOT_FOUND); + } + return entity; + } + + public SafetyMessageEntity modify(SafetyMessageEntity entity) { + SafetyMessageEntity existing = safetyMessageGateway.get(entity.getId()); + if (existing == null) { + throw new BizException(ErrorCode.SAFETY_MESSAGE_NOT_FOUND); + } + return safetyMessageGateway.modify(entity); + } + + public void delete(Long id) { + SafetyMessageEntity existing = safetyMessageGateway.get(id); + if (existing == null) { + throw new BizException(ErrorCode.SAFETY_MESSAGE_NOT_FOUND); + } + safetyMessageGateway.delete(id); + } + + public PageResult page(SafetyMessageQuery query) { + return safetyMessageGateway.page(query); + } +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/SafetyMessageDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/SafetyMessageDoConvertor.java new file mode 100644 index 0000000..09973ed --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/SafetyMessageDoConvertor.java @@ -0,0 +1,22 @@ +package org.qinan.safetyeval.infrastructure.convertor; + +import org.mapstruct.Mapper; +import org.qinan.safetyeval.domain.entity.SafetyMessageEntity; +import org.qinan.safetyeval.infrastructure.dataobject.SafetyMessageDO; + +import java.util.List; + +/** + * 消息中心 DO 转换 + * + * @author safety-eval + */ +@Mapper(componentModel = "spring") +public interface SafetyMessageDoConvertor { + + SafetyMessageDO convertEToDo(SafetyMessageEntity entity); + + SafetyMessageEntity convertDoToE(SafetyMessageDO dataObject); + + List convertDoListToEList(List list); +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/SafetyMessageDO.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/SafetyMessageDO.java new file mode 100644 index 0000000..92d0f73 --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/SafetyMessageDO.java @@ -0,0 +1,37 @@ +package org.qinan.safetyeval.infrastructure.dataobject; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 消息中心数据对象 + * + * @author safety-eval + */ +@Data +@TableName("safety_message") +public class SafetyMessageDO { + + private Long id; + private Long orgId; + private String sendName; + private Long sendId; + private String sendType; + private String sendContent; + private Long receiveId; + private Integer sendState; + + private String deleteEnum; + private String remarks; + private String createName; + private String updateName; + private Long tenantId; + private Integer version; + private LocalDateTime createTime; + private LocalDateTime updateTime; + private Long createId; + private Long updateId; + private String env; +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/SafetyMessageGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/SafetyMessageGatewayImpl.java new file mode 100644 index 0000000..494a0b8 --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/SafetyMessageGatewayImpl.java @@ -0,0 +1,86 @@ +package org.qinan.safetyeval.infrastructure.gatewayimpl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.qinan.safetyeval.domain.entity.SafetyMessageEntity; +import org.qinan.safetyeval.domain.gateway.SafetyMessageGateway; +import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.query.SafetyMessageQuery; +import org.qinan.safetyeval.infrastructure.convertor.SafetyMessageDoConvertor; +import org.qinan.safetyeval.infrastructure.dataobject.SafetyMessageDO; +import org.qinan.safetyeval.infrastructure.mapper.SafetyMessageMapper; +import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; + +/** + * 消息中心 Gateway 实现 + * + * @author safety-eval + */ +@Component +public class SafetyMessageGatewayImpl implements SafetyMessageGateway { + + @Resource + private SafetyMessageMapper safetyMessageMapper; + @Resource + private SafetyMessageDoConvertor safetyMessageDoConvertor; + + @Override + public SafetyMessageEntity save(SafetyMessageEntity entity) { + SafetyMessageDO dataObject = safetyMessageDoConvertor.convertEToDo(entity); + InsertFieldDefaults.apply(dataObject); + safetyMessageMapper.insert(dataObject); + return safetyMessageDoConvertor.convertDoToE(dataObject); + } + + @Override + public SafetyMessageEntity get(Long id) { + SafetyMessageDO dataObject = safetyMessageMapper.selectById(id); + return safetyMessageDoConvertor.convertDoToE(dataObject); + } + + @Override + public SafetyMessageEntity modify(SafetyMessageEntity entity) { + SafetyMessageDO dataObject = safetyMessageDoConvertor.convertEToDo(entity); + dataObject.setId(entity.getId()); + InsertFieldDefaults.applyForUpdate(dataObject); + safetyMessageMapper.updateById(dataObject); + return get(entity.getId()); + } + + @Override + public void delete(Long id) { + safetyMessageMapper.deleteById(id); + } + + @Override + public PageResult page(SafetyMessageQuery query) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SafetyMessageDO::getDeleteEnum, "false"); + if (query.getOrgId() != null) { + wrapper.eq(SafetyMessageDO::getOrgId, query.getOrgId()); + } + if (query.getReceiveId() != null) { + wrapper.eq(SafetyMessageDO::getReceiveId, query.getReceiveId()); + } + if (StringUtils.hasText(query.getSendType())) { + wrapper.eq(SafetyMessageDO::getSendType, query.getSendType()); + } + if (query.getSendState() != null) { + wrapper.eq(SafetyMessageDO::getSendState, query.getSendState()); + } + wrapper.orderByDesc(SafetyMessageDO::getCreateTime); + + Page page = new Page<>(query.getPageNum(), query.getPageSize()); + IPage result = safetyMessageMapper.selectPage(page, wrapper); + return PageResult.of( + safetyMessageDoConvertor.convertDoListToEList(result.getRecords()), + result.getTotal(), + result.getCurrent(), + result.getSize()); + } +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/SafetyMessageMapper.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/SafetyMessageMapper.java new file mode 100644 index 0000000..4eda8c5 --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/SafetyMessageMapper.java @@ -0,0 +1,9 @@ +package org.qinan.safetyeval.infrastructure.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.qinan.safetyeval.infrastructure.dataobject.SafetyMessageDO; + +@Mapper +public interface SafetyMessageMapper extends BaseMapper { +}