邮箱-后台-登录验证码

This commit is contained in:
khalil
2025-03-17 18:04:54 +08:00
parent 73ef2d241f
commit 3946a30444
3 changed files with 46 additions and 0 deletions

View File

@@ -18,8 +18,10 @@ import com.accompany.common.utils.BlankUtil;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.common.utils.RandomUtil;
import com.accompany.common.utils.StringUtils;
import com.accompany.core.exception.AdminServiceException;
import com.accompany.core.service.SysConfService;
import com.accompany.core.util.MD5;
import com.accompany.email.service.EmailService;
import com.accompany.sms.service.SmsService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@@ -48,6 +50,8 @@ public class AdminUserService extends BaseService {
@Autowired
private AdminLoginRecordMapper adminLoginRecordMapper;
@Autowired
private EmailService emailService;
/**
@@ -154,6 +158,7 @@ public class AdminUserService extends BaseService {
return adminUserMapper.deleteByPrimaryKey(id);
}
@Deprecated
public BusiResult<Void> sendSmsCode(String account, String realIpAddress) {
logger.info("getUserByName");
AdminUser adminUser = getUserByName(account);
@@ -192,6 +197,23 @@ public class AdminUserService extends BaseService {
setUseOldSmsCode(account, smsCode);
}
public void sendEmailCode(String account, String realIpAddress) {
logger.info("getUserByName");
AdminUser adminUser = getUserByName(account);
if (adminUser == null) {
jedisService.setex(RedisKey.admin_account_not_exist.getKey(account), 10, account);
throw new AdminServiceException(BusiStatus.USERNOTEXISTS);
}
if (BlankUtil.isBlank(adminUser.getEmail())) {
throw new AdminServiceException(BusiStatus.ADMIN_EMAIL_NO_BIND);
}
String code = String.format("%d", RandomUtil.getFiveRandomNumber());
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.setApp("admin");
emailService.sendEmailCode(adminUser.getEmail(), SmsTypeEnum.SUPER_ADMIN_LOGIN.value, deviceInfo, realIpAddress, code, false);
saveSmsCode(adminUser, code, realIpAddress);
}
private void setUseOldSmsCode(String account, String smsCode) {
String key = RedisKey.admin_use_old_sms_code.getKey(account);
if (!jedisService.exits(key)) {
@@ -358,4 +380,5 @@ public class AdminUserService extends BaseService {
}
return adminUsers.stream().collect(Collectors.toMap(AdminUser::getId, au->au));
}
}

View File

@@ -204,4 +204,25 @@ public class LoginController extends BaseController {
}
return adminUserService.sendSmsCode(account, realIpAddress);
}
@RequestMapping("/login/sendEmailCode")
@ResponseBody
public BusiResult<Void> sendEmailCode(String account, HttpServletRequest request) {
String realIpAddress = IPUtils.getRealIpAddress(request);
logger.info("admin getEmailCode account:{},ip:{}", account, realIpAddress);
if (BlankUtil.isBlank(accountFilter(account))) {
return new BusiResult<>(BusiStatus.ALERT_PARAMETER_ILLEGAL);
}
if (jedisService.exits(RedisKey.admin_account_not_exist.getKey(account))) {
return new BusiResult<>(BusiStatus.USERNOTEXISTS);
}
if (jedisService.exits(RedisKey.admin_sent_sms.getKey(account))) {
return new BusiResult<>(BusiStatus.SMS_NOT_EXPIRED3);
}
if (adminUserService.checkSendCodeLimit(account)) {
return new BusiResult<>(BusiStatus.EMAIL_SENDING_FREQUENCY_TOO_HIGH);
}
adminUserService.sendEmailCode(account, realIpAddress);
return BusiResult.success();
}
}

View File

@@ -357,6 +357,7 @@ public enum BusiStatus {
PHONE_NO_BIND(30001, "未綁定手機號"),
ADMIN_PHONE_NO_BIND(30001, "您未綁定手機號,請聯繫管理員"),
ADMIN_EMAIL_NO_BIND(30001, "您未綁定邮箱,請聯繫管理員"),
USER_NO_CERTIFY(30002, "未實名認證"),
FANS_COUNT_INSUFFICIENT(30003, "粉絲數量不達標"),
SKILL_NO_ACTIVATE(30004, "當前標籤未激活"),
@@ -393,6 +394,7 @@ public enum BusiStatus {
SMS_SENDING_FREQUENCY_TOO_HIGH(200390, "短信發送頻率過高,請稍後再試"),
EMAIL_SENDING_FREQUENCY_TOO_HIGH(200390, "邮件验证码發送頻率過高,請稍後再試"),
NOT_SUPER_USER(18004, "非超級管理員"),
SUPER_USER_DISALLOW_OPEN_ROOM(18005, "超級管理員不允許開房"),