package com.ks.app.service.manager; import com.ks.app.entity.SystemEnum; import com.ks.app.entity.config.SystemConfigKey; import com.ks.app.service.inter.config.SystemConfigService; import com.ks.app.utils.Constant; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.yeshi.utils.StringUtil; import javax.annotation.Resource; import java.util.concurrent.TimeUnit; /** * @author hxh * @title: VerifyCodeManager * @description: 验证码管理 * @date 2021/11/15 18:38 */ @Component public class VerifyCodeManager { @Resource private RedisTemplate redisTemplate; @Resource private SystemConfigService systemConfigService; /** * @return void * @author hxh * @description 发送电话验证码 * @date 18:40 2021/11/15 * @param: phone * @param: msg 变量为:{验证码} **/ public void sendSMSSuccess(SystemEnum system, String phone, String code) { redisTemplate.opsForValue().set(String.format("vcp-%s-%s", system.name(), phone), code, 120, TimeUnit.SECONDS); } /** * @return void * @author hxh * @description 发送邮箱验证码 * @date 18:41 2021/11/15 * @param: email * @param: title * @param: content **/ public void sendEmailCodeSuccess(String email, String code) { redisTemplate.opsForValue().set("v-c-e-" + StringUtil.Md5(email), code, 120, TimeUnit.SECONDS); } /** * @return boolean * @author hxh * @description 电话验证码是否正确 * @date 19:05 2021/11/15 * @param: phone * @param: code **/ public boolean isPhoneCodeRight(SystemEnum system, String phone, String code) { if (!Constant.VERIFY_VCODE) { return true; } String value = systemConfigService.getValueCache(system, SystemConfigKey.testAccount); //测试账号 if (!StringUtil.isNullOrEmpty(value)) { String[] sts = value.split("#"); if (sts.length > 1 && sts[0].equalsIgnoreCase(phone) && sts[1].equalsIgnoreCase(code)) { return true; } } String oldCode = redisTemplate.opsForValue().get(String.format("vcp-%s-%s", system.name(), phone)); return oldCode != null && oldCode.equalsIgnoreCase(code); } /** * @return boolean * @author hxh * @description /邮箱验证码是否正确 * @date 19:05 2021/11/15 * @param: email * @param: code **/ public boolean isEMailCodeRight(String email, String code) { Object oldCode = redisTemplate.opsForValue().get("v-c-e-" + StringUtil.Md5(email)); return oldCode != null && oldCode.toString().equalsIgnoreCase(code); } }