|
@@ -4,21 +4,24 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.usky.common.core.constants.Constants;
|
|
|
-import com.usky.common.core.util.IpUtils;
|
|
|
-import com.usky.common.core.util.ServletUtils;
|
|
|
+import com.usky.common.core.util.*;
|
|
|
import com.usky.common.redis.core.RedisHelper;
|
|
|
import com.usky.common.security.utils.SecurityUtils;
|
|
|
import com.usky.common.core.exception.BusinessException;
|
|
|
-import com.usky.common.core.util.BeanMapperUtils;
|
|
|
-import com.usky.common.core.util.StringUtils;
|
|
|
+import com.usky.system.RuoYiSystemApplication;
|
|
|
import com.usky.system.domain.*;
|
|
|
import com.usky.system.domain.constants.UserConstants;
|
|
|
import com.usky.system.model.LoginUser;
|
|
|
import com.usky.system.service.enums.UserStatus;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
|
import java.util.List;
|
|
|
+import java.util.Random;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* 登录校验方法
|
|
@@ -43,6 +46,11 @@ public class SysLoginService {
|
|
|
@Autowired
|
|
|
private SysTenantService sysTenantService;
|
|
|
|
|
|
+
|
|
|
+ public final String LOGIN_QRCODE_VERIFY ="login_qrcode_verify";
|
|
|
+
|
|
|
+ private static final Logger LOGGER = LoggerFactory.getLogger(SysLoginService.class);
|
|
|
+
|
|
|
/**
|
|
|
* 登录
|
|
|
*/
|
|
@@ -109,7 +117,7 @@ public class SysLoginService {
|
|
|
|
|
|
public SysUser appLogin(String username, String password, Integer tenantId, String phone, String verify) {
|
|
|
SysUser loginUser = new SysUser();
|
|
|
- if (!StringUtils.isBlank(username)) {
|
|
|
+ if (!StringUtils.isBlank(username) && !StringUtils.isBlank(password)) {
|
|
|
// 用户名或密码为空 错误
|
|
|
if (StringUtils.isAnyBlank(username, password)) {
|
|
|
recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写");
|
|
@@ -137,7 +145,8 @@ public class SysLoginService {
|
|
|
recordLogininfor(username, Constants.LOGIN_FAIL, "用户密码错误");
|
|
|
throw new BusinessException("用户不存在/密码错误");
|
|
|
}
|
|
|
- } else {
|
|
|
+ } else if(!StringUtils.isBlank(phone) && !StringUtils.isBlank(verify)) {
|
|
|
+ //手机验证码登录
|
|
|
if (StringUtils.isBlank(verify)) {
|
|
|
throw new BusinessException("验证码不能为空");
|
|
|
}
|
|
@@ -148,6 +157,16 @@ public class SysLoginService {
|
|
|
throw new BusinessException("用户名或手机号不能为空");
|
|
|
}
|
|
|
loginUser = sysUserService.getAppUserInfo(null, tenantId, phone);
|
|
|
+ } else if(!StringUtils.isBlank(username) && !StringUtils.isBlank(verify)) {
|
|
|
+ LOGGER.info("二维码验证码登录");
|
|
|
+ if (StringUtils.isBlank(username)) {
|
|
|
+ throw new BusinessException("用户名不能为空");
|
|
|
+ }
|
|
|
+ String qrCode_verify = LOGIN_QRCODE_VERIFY+":"+username;
|
|
|
+ if (!verify.equals(redisHelper.get(qrCode_verify))) {
|
|
|
+ throw new BusinessException("扫码验证码失败");
|
|
|
+ }
|
|
|
+ loginUser = sysUserService.getAppUserInfo(username, tenantId, null);
|
|
|
}
|
|
|
|
|
|
if (UserStatus.DELETED.getCode().equals(loginUser.getDelFlag())) {
|
|
@@ -213,8 +232,29 @@ public class SysLoginService {
|
|
|
} else if (Constants.LOGIN_FAIL.equals(status)) {
|
|
|
logininfor.setStatus(Constants.LOGIN_FAIL_STATUS);
|
|
|
}
|
|
|
+ LOGGER.debug(JsonUtils.toJson(logininfor));
|
|
|
sysLogininforService.insertLogininfor(BeanMapperUtils.map(logininfor, SysLogininfor.class));
|
|
|
}
|
|
|
|
|
|
|
|
|
+ public String getQrCodeResult(@RequestParam String qrCode){
|
|
|
+ Object o = redisHelper.get("login_qrcode_verify:" + qrCode);
|
|
|
+ if(null !=o) {
|
|
|
+ String result = String.valueOf(o);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void qrCodeSend(@RequestParam String userName, @RequestParam String qrCode, @RequestParam Integer tenantId) {
|
|
|
+ if(StringUtils.isBlank(userName)){
|
|
|
+ throw new BusinessException("用户名不能为空");
|
|
|
+ }
|
|
|
+ SysUser sysUser = sysUserService.selectUserByUserNameOne(userName,tenantId);
|
|
|
+ String code = String.valueOf(new Random().nextInt(1000000));
|
|
|
+ redisHelper.set(LOGIN_QRCODE_VERIFY+":"+userName,code);
|
|
|
+ redisHelper.set(LOGIN_QRCODE_VERIFY+":"+qrCode,userName+":"+code,30, TimeUnit.SECONDS);
|
|
|
+ }
|
|
|
+
|
|
|
}
|