package com.qianwen.smartman.modules.resource.builder.sms; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qianwen.core.cache.utils.CacheUtil; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.redis.cache.BladeRedis; import com.qianwen.core.secure.utils.AuthUtil; import com.qianwen.core.sms.SmsTemplate; import com.qianwen.core.sms.enums.SmsEnum; import com.qianwen.core.sms.enums.SmsStatusEnum; import com.qianwen.core.sms.props.SmsProperties; import com.qianwen.core.tool.constant.BladeConstant; import com.qianwen.core.tool.utils.Func; import com.qianwen.core.tool.utils.StringUtil; import com.qianwen.core.tool.utils.WebUtil; import com.qianwen.smartman.common.constant.ExtCacheConstant; import com.qianwen.smartman.modules.resource.entity.Sms; import com.qianwen.smartman.modules.resource.service.ISmsService; /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/resource/builder/sms/SmsBuilder.class */ public class SmsBuilder { public static final String SMS_CODE = "sms:code:"; public static final String SMS_PARAM_KEY = "code"; private final SmsProperties smsProperties; private final ISmsService smsService; private final BladeRedis bladeRedis; private final Map templatePool = new ConcurrentHashMap(); private final Map smsPool = new ConcurrentHashMap(); public SmsBuilder(SmsProperties smsProperties, ISmsService smsService, BladeRedis bladeRedis) { this.smsProperties = smsProperties; this.smsService = smsService; this.bladeRedis = bladeRedis; } public SmsTemplate template() { return template(""); } public SmsTemplate template(String code) { SmsTemplate template; String tenantId = AuthUtil.getTenantId(); Sms sms = getSms(tenantId, code); Sms smsCached = this.smsPool.get(tenantId); SmsTemplate template2 = this.templatePool.get(tenantId); if (!Func.hasEmpty(new Object[]{template2, smsCached}) && sms.getTemplateId().equals(smsCached.getTemplateId()) && sms.getAccessKey().equals(smsCached.getAccessKey())) { return template2; } synchronized (SmsBuilder.class) { template = this.templatePool.get(tenantId); if (Func.hasEmpty(new Object[]{template, smsCached}) || !sms.getTemplateId().equals(smsCached.getTemplateId()) || !sms.getAccessKey().equals(smsCached.getAccessKey())) { if (sms.getCategory().intValue() == SmsEnum.YUNPIAN.getCategory()) { template = YunpianSmsBuilder.template(sms, this.bladeRedis); } else if (sms.getCategory().intValue() == SmsEnum.QINIU.getCategory()) { template = QiniuSmsBuilder.template(sms, this.bladeRedis); } else if (sms.getCategory().intValue() == SmsEnum.ALI.getCategory()) { template = AliSmsBuilder.template(sms, this.bladeRedis); } else if (sms.getCategory().intValue() == SmsEnum.TENCENT.getCategory()) { template = TencentSmsBuilder.template(sms, this.bladeRedis); } this.templatePool.put(tenantId, template); this.smsPool.put(tenantId, sms); } } return template; } public Sms getSms(String tenantId, String code) { String key = tenantId; LambdaQueryWrapper lqw = Wrappers.query().lambda().eq(Sms::getTenantId, tenantId); /* LambdaQueryWrapper lqw = (LambdaQueryWrapper) Wrappers.query().lambda().eq((v0) -> { return v0.getTenantId(); }, tenantId);*/ String smsCode = StringUtil.isBlank(code) ? WebUtil.getParameter("code") : code; if (StringUtil.isNotBlank(smsCode)) { key = key.concat("-").concat(smsCode); lqw.eq((v0) -> { return v0.getSmsCode(); }, smsCode); } else { lqw.eq((v0) -> { return v0.getStatus(); }, Integer.valueOf(SmsStatusEnum.ENABLE.getNum())); } Sms sms = (Sms) CacheUtil.get("blade:resource", SMS_CODE, key, () -> { Sms s = this.smsService.getOne(lqw); if (Func.isEmpty(s)) { Sms defaultSms = new Sms(); defaultSms.setId(BladeConstant.TOP_PARENT_ID); defaultSms.setTemplateId(this.smsProperties.getTemplateId()); defaultSms.setRegionId(this.smsProperties.getRegionId()); defaultSms.setCategory(Integer.valueOf(SmsEnum.of(this.smsProperties.getName()).getCategory())); defaultSms.setAccessKey(this.smsProperties.getAccessKey()); defaultSms.setSecretKey(this.smsProperties.getSecretKey()); defaultSms.setSignName(this.smsProperties.getSignName()); return defaultSms; } return s; }, ExtCacheConstant.TENANT_MODE); if (sms == null || sms.getId() == null) { throw new ServiceException("未获取到对应的短信配置"); } return sms; } }