引用同一个模板类型的邮件模板 只能有一个是启用的

/**
 * 引用同一个模板类型的邮件模板  只能有一个是启用的
 *
 * @param templateId
 * @param available
 * @return
 */
@ApiOperation("修改模板启用状态")
@PutMapping("/available")
public CommonResponse changeAvailable(
        @ApiParam(value = "模板Id") @RequestParam(value = "id", required = false) String templateId,
        @ApiParam(value = "模板类型Id") @RequestParam(value = "typeId", required = false) String typeId,
        @ApiParam(value = "启用状态 1:启用 0 :关闭",required = true) @RequestParam(value = "available") String available) {
    ELEmailTemplate emailTemplate = new ELEmailTemplate();
    emailTemplate.setDelFlag(DomainConstants.DEL_FLAG_NORMAL);
    // 如果typeId不为空 表示判断该属性是否有启用的模板了
    if (StringUtils.isNotBlank(typeId)) {
        emailTemplate.setTypeId(typeId);
        if (available.equalsIgnoreCase(DomainConstants.DEL_TEMPLATE_NORMAL)) {
            emailTemplate.setAvailable(DomainConstants.DEL_TEMPLATE_NORMAL);
            Example example = Example.of(emailTemplate);
            List templateList = mailTemplateService.findAll(example);
            if (CollectionUtils.isNotEmpty(templateList)) {
                return CommonResponse.createCustomCommonResponse("10000", "已存在");
            }
        } else {
            return CommonResponse.createCustomCommonResponse("10001", "不存在");
        }
    }
    if (StringUtils.isNotBlank(templateId)) {
        ELEmailTemplate template = mailTemplateService.findOne(templateId);
        if (Objects.isNull(template)) {
            return CommonResponse.createNotExistCommonResponse();
        }
        // 如果available=0 表示关闭 直接修改状态
        if (available.equalsIgnoreCase(DomainConstants.DEL_TEMPLATE_DELETE)) {
            template.setAvailable(DomainConstants.DEL_TEMPLATE_DELETE);
            mailTemplateService.update(template);
        } else if (available.equalsIgnoreCase(DomainConstants.DEL_TEMPLATE_NORMAL)) {
            // 如果available=1 表示关闭 查询所有的相同类型的邮件模板
            String type = template.getTypeId();
            if (StringUtils.isBlank(typeId)) {
                return CommonResponse.createNotExistCommonResponse("模板类型为空");
            }
            emailTemplate.setTypeId(type);
            Example example = Example.of(emailTemplate);
            List templateList = mailTemplateService.findAll(example);
            if (CollectionUtils.isNotEmpty(templateList)) {
                templateList.forEach(t -> t.setAvailable(DomainConstants.DEL_TEMPLATE_DELETE));
                mailTemplateService.updateBatch(templateList);
                template.setAvailable(DomainConstants.DEL_TEMPLATE_NORMAL);
                mailTemplateService.update(template);
            }
        }
    }
    return CommonResponse.createCommonResponse();
}

你可能感兴趣的:(引用同一个模板类型的邮件模板 只能有一个是启用的)