diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateAddDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateAddDto.java index f5ec196..be9e1d3 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateAddDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateAddDto.java @@ -36,4 +36,9 @@ public class EmailTemplateAddDto { @Schema(name = "type", title = "邮件类型") private String type; + + @Schema(name = "isDefault", title = "是否默认") + @NotNull(message = "是否默认不能为空") + private Boolean isDefault; + } diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateDto.java index 0ae196a..b74ffc1 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateDto.java @@ -24,5 +24,9 @@ public class EmailTemplateDto { @Schema(name = "type", title = "邮件类型") private String type; + + @Schema(name = "isDefault", title = "是否默认") + private Boolean isDefault; + } diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateUpdateDto.java index a21c830..b4ec816 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateUpdateDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/system/email/template/EmailTemplateUpdateDto.java @@ -40,4 +40,9 @@ public class EmailTemplateUpdateDto { @Schema(name = "type", title = "邮件类型") private String type; + + @Schema(name = "isDefault", title = "是否默认") + @NotNull(message = "是否默认不能为空") + private Boolean isDefault; + } \ No newline at end of file diff --git a/dao/src/main/java/cn/bunny/dao/vo/system/email/EmailTemplateVo.java b/dao/src/main/java/cn/bunny/dao/vo/system/email/EmailTemplateVo.java index 6f59fa8..e5327d5 100644 --- a/dao/src/main/java/cn/bunny/dao/vo/system/email/EmailTemplateVo.java +++ b/dao/src/main/java/cn/bunny/dao/vo/system/email/EmailTemplateVo.java @@ -35,6 +35,9 @@ public class EmailTemplateVo extends BaseUserVo { @Schema(name = "type", title = "邮件类型") private String type; + @Schema(name = "summary", title = "邮件类型详情") + private String summary; + @Schema(name = "isDefault", title = "是否默认") private Boolean isDefault; diff --git a/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java index 7c5369f..866a564 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/EmailTemplateServiceImpl.java @@ -11,6 +11,7 @@ import cn.bunny.dao.pojo.result.ResultCodeEnum; import cn.bunny.dao.vo.system.email.EmailTemplateVo; import cn.bunny.services.mapper.EmailTemplateMapper; import cn.bunny.services.service.EmailTemplateService; +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; @@ -18,11 +19,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.validation.Valid; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** *

@@ -33,6 +32,7 @@ import java.util.Map; * @since 2024-10-10 21:24:08 */ @Service +@Transactional public class EmailTemplateServiceImpl extends ServiceImpl implements EmailTemplateService { /** @@ -45,9 +45,22 @@ public class EmailTemplateServiceImpl extends ServiceImpl getEmailTemplateList(Page pageParams, EmailTemplateDto dto) { IPage page = baseMapper.selectListByPage(pageParams, dto); + List emailTemplateVos = page.getRecords().stream() + .map(emailTemplateVo -> { + EmailTemplateVo vo = new EmailTemplateVo(); + BeanUtils.copyProperties(emailTemplateVo, vo); + + // 查找枚举内容并设置详情 + List emailTemplateEnums = Arrays.stream(EmailTemplateEnums.values()) + .filter(enums -> enums.getType().equals(vo.getType())) + .toList(); + vo.setSummary(emailTemplateEnums.get(0).getSummary()); + return vo; + }) + .toList(); return PageResult.builder() - .list(page.getRecords()) + .list(emailTemplateVos) .pageNo(page.getCurrent()) .pageSize(page.getSize()) .total(page.getTotal()) @@ -61,9 +74,28 @@ public class EmailTemplateServiceImpl extends ServiceImpl emailTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>(); + emailTemplateLambdaQueryWrapper.eq(EmailTemplate::getType, type); + emailTemplateLambdaQueryWrapper.eq(EmailTemplate::getIsDefault, Boolean.TRUE); + List emailTemplateList = list(emailTemplateLambdaQueryWrapper); + + // 更新列表 + List updateList = emailTemplateList.stream().map(template -> template.setIsDefault(false)).toList(); + if (!updateList.isEmpty()) { + updateBatchById(updateList); + } save(emailTemplate); } @@ -74,6 +106,8 @@ public class EmailTemplateServiceImpl extends ServiceImpl emailTemplateList = list(Wrappers.lambdaQuery().eq(EmailTemplate::getId, dto.getId())); if (emailTemplateList.isEmpty()) throw new AuthCustomerException(ResultCodeEnum.DATA_NOT_EXIST); @@ -81,7 +115,21 @@ public class EmailTemplateServiceImpl extends ServiceImpl updateList = new ArrayList<>(); + if (dto.getIsDefault()) { + LambdaQueryWrapper emailTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>(); + emailTemplateLambdaQueryWrapper.eq(EmailTemplate::getType, type); + emailTemplateLambdaQueryWrapper.eq(EmailTemplate::getIsDefault, Boolean.TRUE); + + // 更新数据列表 + List checkEmailTemplateList = list(emailTemplateLambdaQueryWrapper); + updateList = new ArrayList<>(checkEmailTemplateList.stream().map(template -> template.setIsDefault(false)).toList()); + } + + updateList.add(emailTemplate); + updateBatchById(updateList); } /** @@ -112,3 +160,4 @@ public class EmailTemplateServiceImpl extends ServiceImpl and template.type like CONCAT('%',#{dto.type},'%') + + and template.isDefault = #{dto.isDefault} +