package com.qianwen.smartman.modules.resource.builder.sms; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import java.lang.invoke.SerializedLambda; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import com.qianwen.smartman.common.constant.ExtCacheConstant; 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.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(); private static /* synthetic */ Object $deserializeLambda$(SerializedLambda lambda) { String implMethodName = lambda.getImplMethodName(); boolean z = true; switch (implMethodName.hashCode()) { case -1045510480: if (implMethodName.equals("getSmsCode")) { z = true; break; } break; case 771206363: if (implMethodName.equals("getTenantId")) { z = false; break; } break; case 803533544: if (implMethodName.equals("getStatus")) { z = true; break; } break; } switch (z) { case false: if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/core/tenant/mp/TenantEntity") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) { return (v0) -> { return v0.getTenantId(); }; } break; case true: if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/core/mp/base/BaseEntity") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) { return (v0) -> { return v0.getStatus(); }; } break; case true: if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/resource/entity/Sms") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) { return (v0) -> { return v0.getSmsCode(); }; } break; } throw new IllegalArgumentException("Invalid lambda deserialization"); } 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 = (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 = (Sms) 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; } }