|
|
@@ -1,7 +1,6 @@
|
|
|
package com.sckw.auth.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
-import com.sckw.auth.model.vo.req.EntAuthenticationReqVo;
|
|
|
import com.sckw.auth.model.vo.req.ForgetPasswordReqVo;
|
|
|
import com.sckw.auth.model.vo.req.LoginReqVo;
|
|
|
import com.sckw.auth.model.vo.req.RegisterReqVo;
|
|
|
@@ -9,9 +8,8 @@ import com.sckw.auth.model.vo.res.DeptInfoResVo;
|
|
|
import com.sckw.auth.model.vo.res.EntInfoResVo;
|
|
|
import com.sckw.auth.model.vo.res.LoginResVo;
|
|
|
import com.sckw.auth.util.AsyncFactory;
|
|
|
-import com.sckw.core.model.enums.SystemTypeEnum;
|
|
|
+import com.sckw.core.utils.StringUtils;
|
|
|
import com.sckw.core.web.context.LoginUserHolder;
|
|
|
-import com.sckw.system.api.model.dto.req.EntAuthenticationReqDto;
|
|
|
import com.sckw.system.api.model.dto.req.ForgetPasswordReqDto;
|
|
|
import com.sckw.system.api.model.dto.req.UserLoginReqDto;
|
|
|
import com.sckw.system.api.model.dto.res.KwsRoleResDto;
|
|
|
@@ -51,10 +49,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
@Override
|
|
|
public LoginResVo login(LoginReqVo reqDto) {
|
|
|
/*1、根据账号密码或者手机号校验码登录, 手机号后面处理*/
|
|
|
- List<KwsUserResDto> kwsUsers = remoteUserService.checkUserBase(reqDto.getAccount(), reqDto.getSystemType());
|
|
|
- KwsUserResDto kwsUser = kwsUsers.get(0);
|
|
|
- //密码校验
|
|
|
- remoteUserService.checkPassword(reqDto.getPassword(), kwsUser.getPassword());
|
|
|
+ KwsUserResDto kwsUser = checkLogin(reqDto);
|
|
|
LoginResVo loginResVo = new LoginResVo();
|
|
|
BeanUtils.copyProperties(kwsUser, loginResVo);
|
|
|
|
|
|
@@ -100,6 +95,23 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
return loginResVo;
|
|
|
}
|
|
|
|
|
|
+ private KwsUserResDto checkLogin(LoginReqVo reqDto) {
|
|
|
+ List<KwsUserResDto> kwsUsers = remoteUserService.checkUserBase(reqDto.getAccount(), reqDto.getSystemType());
|
|
|
+ KwsUserResDto kwsUser = kwsUsers.get(0);
|
|
|
+ //密码校验、验证码
|
|
|
+ if (StringUtils.isNotBlank(reqDto.getPassword())) {
|
|
|
+ remoteUserService.checkPassword(reqDto.getPassword(), kwsUser.getPassword());
|
|
|
+ } else {
|
|
|
+ String key = Global.USER_LOGIN_CAPTCHA + reqDto.getSystemType() + Global.COLON + kwsUser.getAccount();
|
|
|
+ String captcha = RedissonUtils.getString(key);
|
|
|
+ if (StringUtils.isBlank(captcha) || StringUtils.isBlank(reqDto.getCaptcha()) || !reqDto.getCaptcha().equals(captcha)){
|
|
|
+ throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.CAPCHA_ERROR);
|
|
|
+ }
|
|
|
+ RedissonUtils.delete(key);
|
|
|
+ }
|
|
|
+ return kwsUser;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @param loginResVo 登录的返参
|
|
|
* @desc: 生成token,存redis
|
|
|
@@ -111,11 +123,11 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
String id = String.valueOf(loginResVo.getId());
|
|
|
String token = EncryUtil.encry(Global.PRI_KEY, id);
|
|
|
loginResVo.setToken(token);
|
|
|
- RedissonUtils.add(Global.REDIS_USER_PREFIX + LoginUserHolder.getClientType() + Global.COLON + id, JSON.toJSONString(loginResVo));
|
|
|
+ RedissonUtils.add(Global.REDIS_USER_PREFIX + loginResVo.getSystemType() + Global.COLON + id, JSON.toJSONString(loginResVo));
|
|
|
|
|
|
//异步存redis
|
|
|
AsyncFactory.execute(new SaveMenuInfo(loginResVo.getId()));
|
|
|
- AsyncFactory.execute(new SaveLoginInfo(loginResVo, LoginUserHolder.getClientType()));
|
|
|
+ AsyncFactory.execute(new SaveLoginInfo(loginResVo, String.valueOf(loginResVo.getSystemType()), remoteUserService));
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
throw new SystemException(HttpStatus.GLOBAL_EXCEPTION_CODE, HttpStatus.GLOBAL_EXCEPTION_MESSAGE);
|
|
|
@@ -164,7 +176,10 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
|
|
|
List<String> menus = new ArrayList<>();
|
|
|
for (UserAccessMenuInfoResDto userAccessMenuInfoResDto : userAccessMenuInfo) {
|
|
|
- menus.addAll(Arrays.asList(userAccessMenuInfoResDto.getLinks().split(",")));
|
|
|
+ String links = userAccessMenuInfoResDto.getLinks();
|
|
|
+ if (StringUtils.isNotBlank(links)) {
|
|
|
+ menus.addAll(Arrays.asList(userAccessMenuInfoResDto.getLinks().split(",")));
|
|
|
+ }
|
|
|
}
|
|
|
RedissonUtils.putSet(Global.REDIS_SYS_MENU_PREFIX + id, menus);
|
|
|
}
|
|
|
@@ -176,12 +191,12 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
|
|
|
private final String clientType;
|
|
|
|
|
|
- @DubboReference(version = "2.0.0", group = "design", check = false)
|
|
|
- private RemoteUserService remoteUserService;
|
|
|
+ private final RemoteUserService remoteUserService;
|
|
|
|
|
|
- public SaveLoginInfo(LoginResVo loginResVo, String clientType) {
|
|
|
+ public SaveLoginInfo(LoginResVo loginResVo, String clientType, RemoteUserService remoteUserService) {
|
|
|
this.loginResVo = loginResVo;
|
|
|
this.clientType = clientType;
|
|
|
+ this.remoteUserService = remoteUserService;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -189,7 +204,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
long userId = loginResVo.getId();
|
|
|
UserLoginReqDto currentDayLogin = remoteUserService.currentDayLogin(userId);
|
|
|
UserLoginReqDto userLoginReqDto = new UserLoginReqDto();
|
|
|
- userLoginReqDto.setPid(Objects.isNull(currentDayLogin) ? "" : String.valueOf(currentDayLogin.getUserId()));
|
|
|
+ userLoginReqDto.setPid(Objects.isNull(currentDayLogin) ? "" : String.valueOf(currentDayLogin.getId()));
|
|
|
userLoginReqDto.setIp("");
|
|
|
userLoginReqDto.setUserAgent("");
|
|
|
userLoginReqDto.setUserId(loginResVo.getId());
|