refactor: 邮件和站内信模板更新api

This commit is contained in:
caiyuchao
2025-08-01 10:34:44 +08:00
parent 44353d1da2
commit dcb6af43f5
6 changed files with 192 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
package org.agt.module.system.api.mail;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.agt.framework.common.pojo.CommonResult;
import org.agt.module.system.api.mail.dto.MailTemplateSaveReqDTO;
import org.agt.module.system.enums.ApiConstants;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿fallbackFactory =
@Tag(name = "RPC 服务 - 邮件")
public interface MailTemplateApi {
String PREFIX = ApiConstants.PREFIX + "/mail/template";
@PostMapping(PREFIX + "/update-template")
@Operation(summary = "更新单条邮件模板", description = "在 mail 为空时,使用 userId 加载对应 Admin 的邮箱")
CommonResult<Boolean> updateMailTemplate(@Valid @RequestBody MailTemplateSaveReqDTO reqDTO);
}

View File

@@ -0,0 +1,46 @@
package org.agt.module.system.api.mail.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@Schema(description = "管理后台 - 邮件模版创建/修改 Request DTO")
@Data
public class MailTemplateSaveReqDTO {
@Schema(description = "编号", example = "1024")
private Long id;
@Schema(description = "模版名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试名字")
@NotNull(message = "名称不能为空")
private String name;
@Schema(description = "模版编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "test")
@NotNull(message = "模版编号不能为空")
private String code;
@Schema(description = "发送的邮箱账号编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "发送的邮箱账号编号不能为空")
private Long accountId;
@Schema(description = "发送人名称", example = "芋头")
private String nickname;
@Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "注册成功")
@NotEmpty(message = "标题不能为空")
private String title;
@Schema(description = "内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "你好,注册成功啦")
@NotEmpty(message = "内容不能为空")
private String content;
@Schema(description = "状态,参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "状态不能为空")
private Integer status;
@Schema(description = "备注", example = "奥特曼")
private String remark;
}

View File

@@ -0,0 +1,22 @@
package org.agt.module.system.api.notify;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.agt.framework.common.pojo.CommonResult;
import org.agt.module.system.api.notify.dto.NotifyTemplateSaveReqDTO;
import org.agt.module.system.enums.ApiConstants;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿fallbackFactory =
@Tag(name = "RPC 服务 - 站内信")
public interface NotifyTemplateApi {
String PREFIX = ApiConstants.PREFIX + "/notify/template";
@PostMapping(PREFIX + "/update-template")
@Operation(summary = "更新单条站内信模板")
CommonResult<Boolean> updateNotifyTemplate(@Valid @RequestBody NotifyTemplateSaveReqDTO reqDTO);
}

View File

@@ -0,0 +1,46 @@
package org.agt.module.system.api.notify.dto;
import org.agt.framework.common.enums.CommonStatusEnum;
import org.agt.framework.common.validation.InEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@Schema(description = "管理后台 - 站内信模版创建/修改 Request DTO")
@Data
public class NotifyTemplateSaveReqDTO {
@Schema(description = "ID", example = "1024")
private Long id;
@Schema(description = "模版名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试模版")
@NotEmpty(message = "模版名称不能为空")
private String name;
@Schema(description = "模版编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "SEND_TEST")
@NotNull(message = "模版编码不能为空")
private String code;
@Schema(description = "模版类型,对应 system_notify_template_type 字典", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "模版类型不能为空")
private Integer type;
@Schema(description = "发送人名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "土豆")
@NotEmpty(message = "发送人名称不能为空")
private String nickname;
@Schema(description = "模版内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是模版内容")
@NotEmpty(message = "模版内容不能为空")
private String content;
@Schema(description = "状态,参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "状态不能为空")
@InEnum(value = CommonStatusEnum.class, message = "状态必须是 {value}")
private Integer status;
@Schema(description = "备注", example = "我是备注")
private String remark;
}

View File

@@ -0,0 +1,28 @@
package org.agt.module.system.api.mail;
import jakarta.annotation.Resource;
import org.agt.framework.common.pojo.CommonResult;
import org.agt.framework.common.util.object.BeanUtils;
import org.agt.module.system.api.mail.dto.MailTemplateSaveReqDTO;
import org.agt.module.system.controller.admin.mail.vo.template.MailTemplateSaveReqVO;
import org.agt.module.system.service.mail.MailTemplateService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import static org.agt.framework.common.pojo.CommonResult.success;
@RestController // 提供 RESTful API 接口,给 Feign 调用
@Validated
public class MailTemplateApiImpl implements MailTemplateApi {
@Resource
private MailTemplateService mailTemplateService;
@Override
public CommonResult<Boolean> updateMailTemplate(MailTemplateSaveReqDTO reqDTO) {
MailTemplateSaveReqVO reqVO = BeanUtils.toBean(reqDTO, MailTemplateSaveReqVO.class);
mailTemplateService.updateMailTemplate(reqVO);
return success(true);
}
}

View File

@@ -0,0 +1,27 @@
package org.agt.module.system.api.notify;
import jakarta.annotation.Resource;
import org.agt.framework.common.pojo.CommonResult;
import org.agt.framework.common.util.object.BeanUtils;
import org.agt.module.system.api.notify.dto.NotifyTemplateSaveReqDTO;
import org.agt.module.system.controller.admin.notify.vo.template.NotifyTemplateSaveReqVO;
import org.agt.module.system.service.notify.NotifyTemplateService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import static org.agt.framework.common.pojo.CommonResult.success;
@RestController // 提供 RESTful API 接口,给 Feign 调用
@Validated
public class NotifyTemplateApiImpl implements NotifyTemplateApi {
@Resource
private NotifyTemplateService notifyTemplateService;
@Override
public CommonResult<Boolean> updateNotifyTemplate(NotifyTemplateSaveReqDTO reqDTO) {
notifyTemplateService.updateNotifyTemplate(BeanUtils.toBean(reqDTO, NotifyTemplateSaveReqVO.class));
return success(true);
}
}