|
|
@ -13,14 +13,12 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
|
|
|
|
import cn.estsh.i3plus.pojo.base.common.Pager;
|
|
|
|
import cn.estsh.i3plus.pojo.base.common.Pager;
|
|
|
|
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
|
|
|
|
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken;
|
|
|
|
import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken;
|
|
|
|
import cn.estsh.i3plus.pojo.base.shirotoken.BaseToken;
|
|
|
|
import cn.estsh.i3plus.pojo.base.shirotoken.BaseToken;
|
|
|
|
import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken;
|
|
|
|
import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken;
|
|
|
|
import cn.estsh.i3plus.pojo.base.shirotoken.UserToken;
|
|
|
|
import cn.estsh.i3plus.pojo.base.shirotoken.UserToken;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.HqlPack;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.HqlPack;
|
|
|
|
import cn.estsh.i3plus.pojo.mdm.sqlpack.DdlMdmBusiPreparedPack;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.bean.*;
|
|
|
|
import cn.estsh.i3plus.pojo.platform.bean.*;
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.SysLogUserLoginRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.SysLogUserLoginRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.SysRefUserDepartmentRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.SysRefUserDepartmentRepository;
|
|
|
@ -30,6 +28,7 @@ import cn.estsh.i3plus.pojo.platform.repository.SysUserInfoRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.SysUserRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.SysUserRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
|
|
|
|
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
|
|
|
|
import cn.estsh.impp.framework.boot.util.ImppRedis;
|
|
|
|
import cn.estsh.impp.framework.boot.util.ImppRedis;
|
|
|
|
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
|
|
|
|
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
|
|
|
@ -129,25 +128,56 @@ public class SysUserService implements ISysUserService {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@ApiOperation(value = "用户登录", notes = "用户登录功能实现")
|
|
|
|
@ApiOperation(value = "用户登录", notes = "用户登录功能实现")
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED)
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED)
|
|
|
|
public SessionUser loginUser(String loginName, String password, String languageCode, Integer loginPlatform, String deviceId) throws AuthenticationException {
|
|
|
|
public ResultBean<SessionUser> loginUser(String loginName, String password, String languageCode, Integer loginPlatform, String deviceId) throws AuthenticationException {
|
|
|
|
LOGGER.debug("平台用户 SYS_USER loginName:{} \t password:{} \t languageCode:{}", loginName, password, languageCode);
|
|
|
|
LOGGER.debug("平台用户 SYS_USER loginName:{} \t password:{} \t languageCode:{}", loginName, password, languageCode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SessionUser sessionUser = null;
|
|
|
|
|
|
|
|
SysUser user = null;
|
|
|
|
|
|
|
|
ResultBean resultBean = ResultBean.fail();
|
|
|
|
|
|
|
|
try {
|
|
|
|
BaseToken token = getToken(loginName, password, languageCode, loginPlatform);
|
|
|
|
BaseToken token = getToken(loginName, password, languageCode, loginPlatform);
|
|
|
|
SessionUser sessionUser = AuthUtil.login(token);
|
|
|
|
user = this.getSysUserByLoginName(loginName);
|
|
|
|
SysUser user = this.getSysUserByLoginName(loginName);
|
|
|
|
|
|
|
|
if (user == null) {
|
|
|
|
if (user == null) {
|
|
|
|
throw new CredentialsException("用户不存在");
|
|
|
|
throw new CredentialsException("用户不存在");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//校验 用户
|
|
|
|
|
|
|
|
ResultBean result = passwordUtil.checkSysUserLogin(user);
|
|
|
|
|
|
|
|
if (!result.isSuccess()) {
|
|
|
|
|
|
|
|
resultBean = result;
|
|
|
|
|
|
|
|
return resultBean;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
sessionUser = AuthUtil.login(token);
|
|
|
|
|
|
|
|
|
|
|
|
// 判断会话模式
|
|
|
|
// 判断会话模式
|
|
|
|
checkSessionMode(loginPlatform, user.getId());
|
|
|
|
checkSessionMode(loginPlatform, user.getId());
|
|
|
|
|
|
|
|
|
|
|
|
packSessionUser(sessionUser, user, user.getUserType(), loginPlatform, languageCode, deviceId);
|
|
|
|
packSessionUser(sessionUser, user, user.getUserType(), loginPlatform, languageCode, deviceId);
|
|
|
|
packConfigSessionUser(sessionUser, user);
|
|
|
|
packConfigSessionUser(sessionUser, user);
|
|
|
|
AuthUtil.setSessionUser(sessionUser);
|
|
|
|
AuthUtil.setSessionUser(sessionUser);
|
|
|
|
refreshUserLoginInformation(user.getId());
|
|
|
|
|
|
|
|
AuthUtil.online(sessionUser);
|
|
|
|
AuthUtil.online(sessionUser);
|
|
|
|
|
|
|
|
resultBean = ResultBean.success().setResultObject(sessionUser);
|
|
|
|
|
|
|
|
} catch (CredentialsException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
resultBean = ResultBean.fail(e);
|
|
|
|
|
|
|
|
} catch (ImppBusiException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
resultBean = ResultBean.fail(e);
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
resultBean = ResultBean.fail(e);
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
//如果登录成功,刷新登录成功次数和上次登录时间
|
|
|
|
|
|
|
|
if (resultBean.isSuccess()){
|
|
|
|
|
|
|
|
this.refreshUserLoginInformation(user.getId());
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
//如果登录不成功,且有这个用户,就只刷新上次用户的登录时间。
|
|
|
|
|
|
|
|
if (!ObjectUtils.isEmpty(user) && !ObjectUtils.isEmpty(user.getId())) {
|
|
|
|
|
|
|
|
this.refreshUserLoginDateTime(user.getId(), user.getUserInfoId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return sessionUser;
|
|
|
|
}
|
|
|
|
|
|
|
|
return resultBean;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void checkSessionMode(Integer loginPlatform, Long userId) {
|
|
|
|
private void checkSessionMode(Integer loginPlatform, Long userId) {
|
|
|
@ -303,6 +333,29 @@ public class SysUserService implements ISysUserService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void updateUserLoginNum(Long userId,Integer loginNum) {
|
|
|
|
|
|
|
|
SysUser user = userRDao.getById(userId);
|
|
|
|
|
|
|
|
user.setUserLoginNum(loginNum);
|
|
|
|
|
|
|
|
userRDao.save(user);
|
|
|
|
|
|
|
|
DdlPackBean userInfoDdlPackBean = DdlPackBean.getDdlPackBean();
|
|
|
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(user.getUserInfoId(), "id", userInfoDdlPackBean);
|
|
|
|
|
|
|
|
sysUserInfoRDao.updateByProperties(new String[]{"userLoginNum"}, new Object[]{loginNum},userInfoDdlPackBean);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void refreshUserLoginDateTime(Long userId, Long userInfoId) {
|
|
|
|
|
|
|
|
DdlPackBean userDdlPackBean = DdlPackBean.getDdlPackBean();
|
|
|
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(userId, "id", userDdlPackBean);
|
|
|
|
|
|
|
|
userRDao.updateByProperties(new String[]{"userLoginLastDateTime"}, new Object[]{TimeTool.getNowTime(true)}, userDdlPackBean);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DdlPackBean userInfoDdlPackBean = DdlPackBean.getDdlPackBean();
|
|
|
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(userInfoId, "id", userInfoDdlPackBean);
|
|
|
|
|
|
|
|
sysUserInfoRDao.updateByProperties(new String[]{"userLoginLastDateTime"}, new Object[]{TimeTool.getNowTime(true)}, userInfoDdlPackBean);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ApiOperation(value = "新增账号", notes = "新增账号信息")
|
|
|
|
@ApiOperation(value = "新增账号", notes = "新增账号信息")
|
|
|
|
public SysUser insertSysUser(SysUser sysUser) throws Exception {
|
|
|
|
public SysUser insertSysUser(SysUser sysUser) throws Exception {
|
|
|
|
LOGGER.debug("平台用户 SYS_USER SysUser:{}", sysUser);
|
|
|
|
LOGGER.debug("平台用户 SYS_USER SysUser:{}", sysUser);
|
|
|
|