diff --git a/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/mapper/NotifyRecipientMapper.java b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/mapper/NotifyRecipientMapper.java new file mode 100644 index 000000000..f41bd9be3 --- /dev/null +++ b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/mapper/NotifyRecipientMapper.java @@ -0,0 +1,18 @@ +package com.aizuda.snailjob.template.datasource.persistence.mapper; + +import com.aizuda.snailjob.template.datasource.persistence.po.NotifyRecipient; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 告警通知接收人 Mapper 接口 + *

+ * + * @author opensnail + * @since 2024-04-17 + */ +@Mapper +public interface NotifyRecipientMapper extends BaseMapper { + +} diff --git a/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/NotifyRecipient.java b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/NotifyRecipient.java new file mode 100644 index 000000000..7d0416350 --- /dev/null +++ b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/NotifyRecipient.java @@ -0,0 +1,74 @@ +package com.aizuda.snailjob.template.datasource.persistence.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 告警通知接收人 + *

+ * + * @author opensnail + * @since 2024-04-17 + */ +@Getter +@Setter +@TableName("sj_notify_recipient") +public class NotifyRecipient implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 命名空间id + */ + private String namespaceId; + + /** + * 组名称 + */ + private String groupName; + + /** + * 接收人名称 + */ + private String recipientName; + + /** + * 通知类型 1、钉钉 2、邮件 3、企业微信 4 飞书 + */ + private Integer notifyType; + + /** + * 配置属性 + */ + private String notifyAttribute; + + /** + * 描述 + */ + private String description; + + /** + * 创建时间 + */ + private LocalDateTime createDt; + + /** + * 修改时间 + */ + private LocalDateTime updateDt; +} diff --git a/snail-job-datasource/snail-job-datasource-template/src/main/resources/template/mapper/NotifyRecipientMapper.xml b/snail-job-datasource/snail-job-datasource-template/src/main/resources/template/mapper/NotifyRecipientMapper.xml new file mode 100644 index 000000000..585ff9d2b --- /dev/null +++ b/snail-job-datasource/snail-job-datasource-template/src/main/resources/template/mapper/NotifyRecipientMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyConfigController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyConfigController.java index 76c495eee..f1b05bffc 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyConfigController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyConfigController.java @@ -11,6 +11,7 @@ import com.aizuda.snailjob.server.web.model.base.PageResult; import com.aizuda.snailjob.server.web.model.request.NotifyConfigQueryVO; import com.aizuda.snailjob.server.web.model.request.NotifyConfigRequestVO; import com.aizuda.snailjob.server.web.model.response.NotifyConfigResponseVO; +import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -25,10 +26,9 @@ import java.util.List; */ @RestController @RequestMapping("/notify-config") +@RequiredArgsConstructor public class NotifyConfigController { - - @Autowired - private NotifyConfigService notifyConfigService; + private final NotifyConfigService notifyConfigService; @LoginRequired @GetMapping("list") diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyRecipientController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyRecipientController.java new file mode 100644 index 000000000..152cf4dc8 --- /dev/null +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/NotifyRecipientController.java @@ -0,0 +1,42 @@ +package com.aizuda.snailjob.server.web.controller; + +import com.aizuda.snailjob.server.web.model.base.PageResult; +import com.aizuda.snailjob.server.web.model.request.NotifyRecipientQueryVO; +import com.aizuda.snailjob.server.web.model.request.NotifyRecipientRequestVO; +import com.aizuda.snailjob.server.web.model.response.NotifyRecipientResponseVO; +import com.aizuda.snailjob.server.web.service.NotifyRecipientService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + *

+ * 告警通知接收人 前端控制器 + *

+ * + * @author xiaowoniu + * @since 2024-04-17 + */ +@RestController +@RequestMapping("/notify-recipient") +@RequiredArgsConstructor +public class NotifyRecipientController { + private final NotifyRecipientService notifyRecipientService; + + @PostMapping + public Boolean saveNotifyRecipient(@RequestBody @Validated NotifyRecipientRequestVO requestVO) { + return notifyRecipientService.saveNotifyRecipient(requestVO); + } + + @PutMapping + public Boolean updateNotifyRecipient(@RequestBody @Validated NotifyRecipientRequestVO requestVO) { + return notifyRecipientService.updateNotifyRecipient(requestVO); + } + + @GetMapping("/page/list") + public PageResult> getNotifyRecipientList(NotifyRecipientQueryVO queryVO) { + return notifyRecipientService.getNotifyRecipientList(queryVO); + } +} diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/NotifyRecipientQueryVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/NotifyRecipientQueryVO.java new file mode 100644 index 000000000..d86f7edbf --- /dev/null +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/NotifyRecipientQueryVO.java @@ -0,0 +1,11 @@ +package com.aizuda.snailjob.server.web.model.request; + +import com.aizuda.snailjob.server.web.model.base.BaseQueryVO; + +/** + * @author opensnail + * @date 2024-04-17 21:26:22 + * @since sj_1.0.0 + */ +public class NotifyRecipientQueryVO extends BaseQueryVO { +} diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/NotifyRecipientRequestVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/NotifyRecipientRequestVO.java new file mode 100644 index 000000000..fe62b7f6b --- /dev/null +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/NotifyRecipientRequestVO.java @@ -0,0 +1,9 @@ +package com.aizuda.snailjob.server.web.model.request; + +/** + * @author opensnail + * @date 2024-04-17 22:03:33 + * @since sj_1.0.0 + */ +public class NotifyRecipientRequestVO { +} diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/NotifyRecipientResponseVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/NotifyRecipientResponseVO.java new file mode 100644 index 000000000..a3b68a039 --- /dev/null +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/response/NotifyRecipientResponseVO.java @@ -0,0 +1,52 @@ +package com.aizuda.snailjob.server.web.model.response; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author opensnail + * @date 2024-04-17 21:27:07 + * @since sj_1.0.0 + */ +@Data +public class NotifyRecipientResponseVO { + + private Long id; + + /** + * 命名空间id + */ + private String namespaceId; + + /** + * 组名称 + */ + private String groupName; + + /** + * 接收人名称 + */ + private String recipientName; + + /** + * 通知类型 1、钉钉 2、邮件 3、企业微信 4 飞书 + */ + private Integer notifyType; + + /** + * 配置属性 + */ + private String notifyAttribute; + + /** + * 描述 + */ + private String description; + + /** + * 创建时间 + */ + private LocalDateTime createDt; + +} diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyRecipientService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyRecipientService.java new file mode 100644 index 000000000..ce285873d --- /dev/null +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/NotifyRecipientService.java @@ -0,0 +1,23 @@ +package com.aizuda.snailjob.server.web.service; + +import com.aizuda.snailjob.server.web.model.base.PageResult; +import com.aizuda.snailjob.server.web.model.request.NotifyRecipientQueryVO; +import com.aizuda.snailjob.server.web.model.request.NotifyRecipientRequestVO; +import com.aizuda.snailjob.server.web.model.response.NotifyRecipientResponseVO; + +import java.util.List; + +/** + * @author opensnail + * @date 2024-04-17 21:24:21 + * @since sj_1.0.0 + */ +public interface NotifyRecipientService { + + PageResult> getNotifyRecipientList(NotifyRecipientQueryVO queryVO); + + Boolean saveNotifyRecipient(NotifyRecipientRequestVO requestVO); + + Boolean updateNotifyRecipient(NotifyRecipientRequestVO requestVO); + +} diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/NotifyRecipientResponseVOConverter.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/NotifyRecipientResponseVOConverter.java new file mode 100644 index 000000000..c867517d7 --- /dev/null +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/convert/NotifyRecipientResponseVOConverter.java @@ -0,0 +1,22 @@ +package com.aizuda.snailjob.server.web.service.convert; + +import com.aizuda.snailjob.server.web.model.response.NotifyRecipientResponseVO; +import com.aizuda.snailjob.template.datasource.persistence.po.NotifyRecipient; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * @author opensnail + * @date 2024-04-17 22:00:41 + * @since sj_1.0.0 + */ +@Mapper +public interface NotifyRecipientResponseVOConverter { + + NotifyRecipientResponseVOConverter INSTANCE = Mappers.getMapper(NotifyRecipientResponseVOConverter.class); + + List toNotifyRecipientResponseVOs(List notifyRecipients); + +} diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyRecipientServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyRecipientServiceImpl.java new file mode 100644 index 000000000..aa15f2fce --- /dev/null +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyRecipientServiceImpl.java @@ -0,0 +1,46 @@ +package com.aizuda.snailjob.server.web.service.impl; + +import com.aizuda.snailjob.server.web.model.base.PageResult; +import com.aizuda.snailjob.server.web.model.request.NotifyRecipientQueryVO; +import com.aizuda.snailjob.server.web.model.request.NotifyRecipientRequestVO; +import com.aizuda.snailjob.server.web.model.response.NotifyRecipientResponseVO; +import com.aizuda.snailjob.server.web.service.NotifyRecipientService; +import com.aizuda.snailjob.server.web.service.convert.NotifyRecipientResponseVOConverter; +import com.aizuda.snailjob.template.datasource.persistence.mapper.NotifyRecipientMapper; +import com.aizuda.snailjob.template.datasource.persistence.po.NotifyRecipient; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author opensnail + * @date 2024-04-17 21:24:51 + * @since sj_1.0.0 + */ +@Service +@RequiredArgsConstructor +public class NotifyRecipientServiceImpl implements NotifyRecipientService { + private final NotifyRecipientMapper notifyRecipientMapper; + + @Override + public PageResult> getNotifyRecipientList(NotifyRecipientQueryVO queryVO) { + PageDTO pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize()); + + PageDTO notifyRecipientPageDTO = notifyRecipientMapper.selectPage(pageDTO, new LambdaQueryWrapper<>()); + + return new PageResult<>(pageDTO, NotifyRecipientResponseVOConverter.INSTANCE.toNotifyRecipientResponseVOs(notifyRecipientPageDTO.getRecords())); + } + + @Override + public Boolean saveNotifyRecipient(NotifyRecipientRequestVO requestVO) { + return null; + } + + @Override + public Boolean updateNotifyRecipient(NotifyRecipientRequestVO requestVO) { + return null; + } +}