package com.qianwen.smartman.modules.sync.util; import cn.hutool.core.codec.Base64Encoder; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.qrcode.QrCodeUtil; import cn.hutool.extra.qrcode.QrConfig; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import java.io.File; import java.util.Objects; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.core.redis.cache.BladeRedis; import com.qianwen.core.tool.utils.SpringUtil; import com.qianwen.smartman.modules.sync.constant.QyWechatConstant; /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/sync/util/CodeUtil.class */ public class CodeUtil { private static final Logger log = LoggerFactory.getLogger(CodeUtil.class); public static File generateCode(String url, String fileName) { QrConfig config = new QrConfig(); config.setErrorCorrection(ErrorCorrectionLevel.Q); config.setHeight(300); config.setWidth(300); return QrCodeUtil.generate(url, config, new File(fileName)); } private static Boolean verifyCodeExpire(String cacheKey) { BladeRedis bladeRedis = (BladeRedis) SpringUtil.getBean(BladeRedis.class); Object codeFile = bladeRedis.get(cacheKey); return Boolean.valueOf(Objects.isNull(codeFile)); } public static Boolean verifyLoginCodeExpire(String clientId) { String cacheKey = getLoginCodeCacheKey(clientId); return verifyCodeExpire(cacheKey); } public static Boolean verifyBindCodeExpire(String clientId, Long empId) { String cacheKey = getBindCodeCacheKey(clientId, empId); return verifyCodeExpire(cacheKey); } public static void failureCode(String cacheKey) { BladeRedis bladeRedis = (BladeRedis) SpringUtil.getBean(BladeRedis.class); Object fileObj = bladeRedis.get(cacheKey); if (!Objects.isNull(fileObj)) { bladeRedis.del(cacheKey); log.info("[企业微信二维码].[二维码被使用或过期,删除缓存:cacheKey={}]", cacheKey); } } public static String getCodeLocalFilePath(String fileName) { return QyWechatConstant.TEMP_PATH + fileName + QyWechatConstant.FILE_SUB; } public static String getLoginCodeCacheKey(String fileName) { return QyWechatConstant.CODE_KEY + QyWechatConstant.QY_CODE_LOGIN_TYPE + ":" + fileName; } public static String getBindCodeCacheKey(String fileName, Long empId) { return QyWechatConstant.CODE_KEY + QyWechatConstant.QY_CODE_BIND_TYPE + ":" + fileName + ":" + empId; } public static String codeFileToBase64(File codeFile) { byte[] fileBytes = FileUtil.readBytes(codeFile); String encode = Base64Encoder.encode(fileBytes); return StrUtil.isEmpty(encode) ? "" : encode; } }