单点登录完成

yun-zuoyi
wynne1005 4 years ago
parent 1f2b304968
commit 4193e956ab

@ -66,6 +66,30 @@ public interface ISystemLoginService {
*/
@ApiOperation(value = "封装用户", notes = "封装超级管理员信息")
SessionUser queryCheckSaAdminLogin(SaAdminToken authenticationToken);
/**
* E9
*
* @param userToken token
* @return
*/
@ApiOperation(value = "封装用户", notes = "封装普通用户信息")
SessionUser queryCheckE9UserLogin(UserToken userToken);
/**
* E9Admin
*
* @param adminToken admin token
* @return
*/
@ApiOperation(value = "封装用户", notes = "封装管理员信息")
SessionUser queryCheckE9AdminLogin(AdminToken adminToken);
/**
* E9 SA
* @param saAdminToken sa token
* @return
*/
@ApiOperation(value = "封装用户", notes = "封装超级管理员信息")
SessionUser queryCheckE9SaAdminLogin(SaAdminToken saAdminToken);
/**
*

@ -20,123 +20,137 @@ public interface ISysUserService {
/**
*
* @param loginName
* @param password
* @param languageCode
*
* @param loginName
* @param password
* @param languageCode
* @return
*/
@ApiOperation(value = "账号登录",notes = "普通账号登录功能")
SessionUser queryUserLogin(String loginName, String password, String languageCode,Integer loginPlatform,String deviceId) throws AuthenticationException;
@ApiOperation(value = "账号登录", notes = "普通账号登录功能")
SessionUser loginUser(String loginName, String password, String languageCode, Integer loginPlatform, String deviceId) throws AuthenticationException;
@ApiOperation(value = "获取Token",notes = "根据登录名判断是否是管理员")
BaseToken getToken(String loginName, String password, String languageCode,Integer loginPlatform);
@ApiOperation(value = "获取Token", notes = "根据登录名判断是否是管理员")
BaseToken getToken(String loginName, String password, String languageCode, Integer loginPlatform);
/**
*
* @param id
* @param status
* @param user
*
* @param id
* @param status
* @param user
* @return
*/
@ApiOperation(value = "修改状态",notes = "修改指定账号状态")
@ApiOperation(value = "修改状态", notes = "修改指定账号状态")
void updateSysUserStatus(Long id, int status, SessionUser user);
@ApiOperation(value = "锁定用户",notes = "锁定用户")
@ApiOperation(value = "锁定用户", notes = "锁定用户")
void doLockSysUserById(Long id);
/**
*
*
* @param ids
* @param status
* @param user
*/
@ApiOperation(value = "修改状态",notes = "批量修改指定账号状态")
@ApiOperation(value = "修改状态", notes = "批量修改指定账号状态")
void updateBatchSysUserStatus(Long[] ids, int status, SessionUser user);
/**
*
*
* @param sysUser
*/
@ApiOperation(value = "修改账号信息",notes = "修改账号信息")
@ApiOperation(value = "修改账号信息", notes = "修改账号信息")
void updateSysUser(SysUser sysUser);
/**
*
* @param userId ID
* @param password
* @param newPwd
*
* @param userId ID
* @param password
* @param newPwd
*/
@ApiOperation(value = "修改号密码",notes = "修改账号的密码信息")
void updateSysUserPassword(Long userId,String password,String newPwd) throws Exception;
@ApiOperation(value = "修改号密码", notes = "修改账号的密码信息")
void updateSysUserPassword(Long userId, String password, String newPwd) throws Exception;
/**
*
*
* @param userId
*/
@ApiOperation(value = "刷新账号",notes = "刷新账号登录信息")
@ApiOperation(value = "刷新账号", notes = "刷新账号登录信息")
void refreshUserLoginInformation(Long userId);
/**
*
*
* @param sysUser
* @return
*/
@ApiOperation(value = "新增账号",notes = "新增账号信息")
SysUser insertSysUser(SysUser sysUser)throws Exception;
@ApiOperation(value = "新增账号", notes = "新增账号信息")
SysUser insertSysUser(SysUser sysUser) throws Exception;
/**
*
*
* @param sysLogUserLogin
* @return
*/
@ApiOperation(value = "新增登录日志",notes = "新增登录日志信息")
@ApiOperation(value = "新增登录日志", notes = "新增登录日志信息")
SysLogUserLogin insertSysLogUserLogin(SysLogUserLogin sysLogUserLogin);
/**
*
*
* @param sysUser
* @param roleIds
* @param userName
*/
@ApiOperation(value = "刷新账号",notes = "刷新账号角色关系")
void refreshSysRefUserRole(SysUser sysUser, Long[] roleIds , String userName);
@ApiOperation(value = "刷新账号", notes = "刷新账号角色关系")
void refreshSysRefUserRole(SysUser sysUser, Long[] roleIds, String userName);
/**
* Key
*
* @param id
* @return
*/
@ApiOperation(value = "删除账号",notes = "根据ID 删除张哈信息")
@ApiOperation(value = "删除账号", notes = "根据ID 删除张哈信息")
void deleteSysUserById(Long id);
/**
*
* @param ids ID
* @param user
*
* @param ids ID
* @param user
*/
@ApiOperation(value = "删除账号",notes = "根据ID 批量删除张哈信息")
@ApiOperation(value = "删除账号", notes = "根据ID 批量删除张哈信息")
void deleteBatchSysUserById(Long[] ids, SessionUser user);
/**
*
*
* @return
*/
@ApiOperation(value = "查询所有",notes = "查询所有账号信息")
@ApiOperation(value = "查询所有", notes = "查询所有账号信息")
List<SysUser> list();
/**
*
*
* @return
*/
@ApiOperation(value = "查询所有",notes = "查询所有账号信息")
@ApiOperation(value = "查询所有", notes = "查询所有账号信息")
List<SysUser> listByUserOrganizeCode();
/**
*
*
* @param roleId ID
* @return ID
*/
@ApiOperation(value = "查询用户ID 集合",notes = "根据角色Id 查询用户ID集合")
@ApiOperation(value = "查询用户ID 集合", notes = "根据角色Id 查询用户ID集合")
List<Long> findSysUserIdListByRoleId(Long roleId);
/***
@ -144,105 +158,117 @@ public interface ISysUserService {
* @param idList
* @return ID
*/
@ApiOperation(value = "查询用户ID 集合",notes = "根据部门Id 查询用户ID集合")
@ApiOperation(value = "查询用户ID 集合", notes = "根据部门Id 查询用户ID集合")
List<Long> findSysUserIdListByDepartmentId(List<Long> idList);
/**
*
*
* @param user
* @param pager
* @return
*/
@ApiOperation(value = "账号查询",notes = "查询账号信息-复杂查询")
@ApiOperation(value = "账号查询", notes = "查询账号信息-复杂查询")
ListPager<SysUser> querySysUserByPager(SysUser user, Pager pager);
@ApiOperation(value = "账号查询",notes = "查询账号信息-复杂查询")
ListPager<SysUser> querySysUserByPager(SysUser user,List<Long> idList, Pager pager);
@ApiOperation(value = "账号查询", notes = "查询账号信息-复杂查询")
ListPager<SysUser> querySysUserByPager(SysUser user, List<Long> idList, Pager pager);
/**
* id
*
* @param id
* @return
*/
@ApiOperation(value = "账号查询",notes = "查询账号信息-根据ID查询")
@ApiOperation(value = "账号查询", notes = "查询账号信息-根据ID查询")
SysUser getSysUserById(Long id);
/**
*
*
* @param id
* @return
*/
@ApiOperation(value = "获取用户信息",notes = "查询用户信息-根据ID查询")
@ApiOperation(value = "获取用户信息", notes = "查询用户信息-根据ID查询")
SysUserInfo getSysUserInfoById(Long id);
/**
*
*
* @param loginName
* @return
*/
@ApiOperation(value = "获取账号信息",notes = "查询用户信息-根据登录名称查询")
@ApiOperation(value = "获取账号信息", notes = "查询用户信息-根据登录名称查询")
SysUser getSysUserByLoginName(String loginName);
/**
*
*
* @param email
* @return
*/
@ApiOperation(value = "获取账号信息",notes = "查询用户信息-根据邮箱查询")
@ApiOperation(value = "获取账号信息", notes = "查询用户信息-根据邮箱查询")
SysUser getSysUserByEmail(String email);
/**
*
*
*
* @param phone
* @return
*/
@ApiOperation(value = "获取账号信息",notes = "查询用户信息-根据手机查询")
@ApiOperation(value = "获取账号信息", notes = "查询用户信息-根据手机查询")
SysUser getSysUserByPhone(String phone);
/**
*
*
* @param userId
* @return
*/
@ApiOperation(value = "获取用户角色信息",notes = "获取指定账号的所有角色信息")
@ApiOperation(value = "获取用户角色信息", notes = "获取指定账号的所有角色信息")
List<SysRefUserRole> findSysRefUserRoleByUserId(Long userId);
/**
*
*
* @param userLoginName
* @param id
* @return
*/
@ApiOperation(value = "账号检查",notes = "检查账号的登录名是否重复")
@ApiOperation(value = "账号检查", notes = "检查账号的登录名是否重复")
boolean checkSysUserLoginName(String userLoginName, long id);
/**
*
*
* @param email
* @param id
* @return
*/
@ApiOperation(value = "账号检查",notes = "检查账号的邮箱是否重复")
boolean checkSysUserEmail(String email,long id);
@ApiOperation(value = "账号检查", notes = "检查账号的邮箱是否重复")
boolean checkSysUserEmail(String email, long id);
/**
*
*
* @param phone
* @param id
* @return
*/
@ApiOperation(value = "账号检查",notes = "检查账号的手机号是否重复")
boolean checkSysUserPhone(String phone,long id);
@ApiOperation(value = "账号检查", notes = "检查账号的手机号是否重复")
boolean checkSysUserPhone(String phone, long id);
/**
*
*
* @param user
*/
@ApiOperation(value = "账号检查",notes = "检查账号信息唯一(登录名、邮箱、手机号)")
@ApiOperation(value = "账号检查", notes = "检查账号信息唯一(登录名、邮箱、手机号)")
void checkSysUserOnly(SysUser user);
/**
*
*
* @return
*/
@ApiOperation(value = "查询账户数量")
@ -250,23 +276,25 @@ public interface ISysUserService {
/**
*
*
* @param sessionUser
* @param user
* @param userType
* @param languageCode
* @return
*/
@ApiOperation(value = "封装用户信息",notes = "封装登录完成后的用户信息(角色、权限、部门、组织、岗位)")
SessionUser packSessionUser(SessionUser sessionUser, SysUser user, Integer userType,Integer loginPlatform, String languageCode, String deviceId);
@ApiOperation(value = "封装用户信息", notes = "封装登录完成后的用户信息(角色、权限、部门、组织、岗位)")
SessionUser packSessionUser(SessionUser sessionUser, SysUser user, Integer userType, Integer loginPlatform, String languageCode, String deviceId);
@ApiOperation(value = "封装用户信息",notes = "封装用户列表分页信息")
@ApiOperation(value = "封装用户信息", notes = "封装用户列表分页信息")
SessionUser packPageSessionUser(SessionUser sessionUser, SysUser user);
@ApiOperation(value = "封装用户信息",notes = "封装用户系统配置信息")
@ApiOperation(value = "封装用户信息", notes = "封装用户系统配置信息")
SessionUser packConfigSessionUser(SessionUser sessionUser, SysUser user);
/**
* id
*
* @param ids id
* @return
*/

@ -225,6 +225,12 @@
<artifactId>elasticsearch</artifactId>
<version>7.5.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.4.2</version>
</dependency>
</dependencies>
<build>

@ -4,8 +4,13 @@ import cn.estsh.i3plus.core.apiservice.auth.realm.AdminAuthRealm;
import cn.estsh.i3plus.core.apiservice.auth.realm.DefaultModularRealm;
import cn.estsh.i3plus.core.apiservice.auth.realm.SaAuthRealm;
import cn.estsh.i3plus.core.apiservice.auth.realm.UserAuthRealm;
import cn.estsh.i3plus.core.apiservice.auth.realm.strategy.e9.E9AdminAuthRealm;
import cn.estsh.i3plus.core.apiservice.auth.realm.strategy.e9.E9SaAuthRealm;
import cn.estsh.i3plus.core.apiservice.auth.realm.strategy.e9.E9UserAuthRealm;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.model.platform.RoleRealmModel;
import cn.estsh.impp.framework.boot.auth.filter.AdminFilter;
import cn.estsh.impp.framework.boot.auth.filter.SaAdminFilter;
import cn.estsh.impp.framework.boot.auth.filter.UserFilter;
@ -26,9 +31,13 @@ import org.springframework.context.annotation.Configuration;
import javax.annotation.Resource;
import javax.servlet.Filter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Description : shiro
@ -69,41 +78,72 @@ public class ShiroAuthConfiguration {
private DefaultWebSessionManager getSessionManage;
@Bean
public AdminAuthRealm adminAuthRealm(){
public AdminAuthRealm adminAuthRealm() {
return new AdminAuthRealm();
}
@Bean
public SaAuthRealm saAuthRealm(){
public SaAuthRealm saAuthRealm() {
return new SaAuthRealm();
}
@Bean
public UserAuthRealm userAuthRealm(){
public UserAuthRealm userAuthRealm() {
return new UserAuthRealm();
}
public Map<String,Realm> supportRealmMap(){
@Bean
public E9AdminAuthRealm e9AdminAuthRealm() {
return new E9AdminAuthRealm();
}
@Bean
public E9SaAuthRealm e9SaAuthRealm() {
return new E9SaAuthRealm();
}
@Bean
public E9UserAuthRealm e9UserAuthRealm() {
return new E9UserAuthRealm();
}
public Map<String, RoleRealmModel> supportRealmMap() {
//支持的授权规则
Map<String,Realm> realms = new HashMap(8);
realms.put(CommonEnumUtil.USER_TYPE.USER.getCode(),userAuthRealm());
realms.put(CommonEnumUtil.USER_TYPE.ADMIN.getCode(),adminAuthRealm());
realms.put(CommonEnumUtil.USER_TYPE.SA.getCode(),saAuthRealm());
Map<String, RoleRealmModel> realms = new HashMap(8);
RoleRealmModel defaultRoleRealmModel = RoleRealmModel.builder()
.userRealm(userAuthRealm())
.adminRealm(adminAuthRealm())
.saRealm(saAuthRealm()).build();
realms.put(ImppEnumUtil.AUTH_LOGIN_STRATEGY.ACCOUNT.getCode(), defaultRoleRealmModel);
RoleRealmModel e9RoleRealmModel = RoleRealmModel.builder()
.userRealm(e9UserAuthRealm())
.adminRealm(e9AdminAuthRealm())
.saRealm(e9SaAuthRealm()).build();
realms.put(ImppEnumUtil.AUTH_LOGIN_STRATEGY.E9.getCode(), e9RoleRealmModel);
return realms;
}
@Bean
public ModularRealmAuthenticator modularRealmAuthenticator(){
return new DefaultModularRealm(supportRealmMap());
public ModularRealmAuthenticator modularRealmAuthenticator() {
return new DefaultModularRealm(supportRealmMap());
}
@Bean
public SecurityManager securityManager(){
public SecurityManager securityManager() {
LOGGER.info("【app-shiro-加载securityManager】");
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setAuthenticator(modularRealmAuthenticator());
securityManager.setRealms(supportRealmMap().values());
List<Realm> allRealmBeans = new ArrayList<>();
supportRealmMap().values().forEach(d -> {
allRealmBeans.add(d.getUserRealm());
allRealmBeans.add(d.getAdminRealm());
allRealmBeans.add(d.getSaRealm());
});
securityManager.setRealms(allRealmBeans);
securityManager.setCacheManager(getEhCacheManage); //缓存管理
securityManager.setSessionManager(getSessionManage); //会话管理
//securityManager.setRememberMeManager(getRememberManager());
@ -138,7 +178,7 @@ public class ShiroAuthConfiguration {
return factoryBean;
}
/** 缓存等配置在impp平台中设置 **/
/** 缓存等配置在impp平台中设置 **/
// /**
// * 缓存管理
// * @return

@ -2,10 +2,12 @@ package cn.estsh.i3plus.core.apiservice.auth.realm;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseThreadLocal;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken;
import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken;
import cn.estsh.i3plus.pojo.base.shirotoken.UserToken;
import cn.estsh.i3plus.pojo.model.platform.RoleRealmModel;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
@ -26,9 +28,10 @@ import java.util.Map;
**/
public class DefaultModularRealm extends ModularRealmAuthenticator {
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultModularRealm.class);
private Map<String, Realm> definedRealms;
public DefaultModularRealm(Map<String, Realm> definedRealms) {
private Map<String, RoleRealmModel> definedRealms;
public DefaultModularRealm(Map<String, RoleRealmModel> definedRealms) {
this.definedRealms = definedRealms;
}
@ -37,38 +40,40 @@ public class DefaultModularRealm extends ModularRealmAuthenticator {
return super.doMultiRealmAuthentication(realms, token);
}
public Map<String, Realm> getDefinedRealms() {
return this.definedRealms;
}
public void setDefinedRealms(Map<String, Realm> definedRealms) {
this.definedRealms = definedRealms;
}
@Override
protected AuthenticationInfo doAuthenticate(AuthenticationToken token) throws AuthenticationException {
Realm realm;
String realmStrategy = (String) BaseThreadLocal.getData(PlatformConstWords.AUTH_REALM_CHOOSE);
// if (!StringUtils.isEmpty(realmStrategy)) {
// realm = (Realm) SpringContextsUtil.getBean(realmStrategy);
// } else {
if (token instanceof SaAdminToken) {
//超级管理员
realm = (Realm) this.definedRealms.get(CommonEnumUtil.USER_TYPE.SA.getCode());
} else if (token instanceof AdminToken) {
//管理员
realm = (Realm) this.definedRealms.get(CommonEnumUtil.USER_TYPE.ADMIN.getCode());
} else if (token instanceof UserToken) {
//用户
realm = (Realm) this.definedRealms.get(CommonEnumUtil.USER_TYPE.USER.getCode());
} else {
throw new AuthenticationException("不存在TOKEN请联系管理员" + token + "");
}
// }
RoleRealmModel roleRealmModel;
String realmStrategy = (String) BaseThreadLocal.getData(PlatformConstWords.AUTH_LOGIN_STRATEGY);
if (StringUtils.isEmpty(realmStrategy)) {
roleRealmModel = this.definedRealms.get(ImppEnumUtil.AUTH_LOGIN_STRATEGY.ACCOUNT.getCode());
} else {
roleRealmModel = this.definedRealms.get(realmStrategy);
}
realm = chooseRealmByUserType(token, roleRealmModel);
return this.doSingleRealmAuthentication(realm, token);
}
private Realm chooseRealmByUserType(AuthenticationToken token, RoleRealmModel roleRealmModel) {
Realm realm;
if (token instanceof SaAdminToken) {
//超级管理员
realm = roleRealmModel.getSaRealm();
} else if (token instanceof AdminToken) {
//管理员
realm = roleRealmModel.getAdminRealm();
} else if (token instanceof UserToken) {
//用户
realm = roleRealmModel.getUserRealm();
} else {
throw new AuthenticationException("不存在TOKEN请联系管理员" + token + "");
}
return realm;
}
@Override
protected AuthenticationInfo doSingleRealmAuthentication(Realm realm, AuthenticationToken token) {
if (!realm.supports(token)) {

@ -1,7 +1,9 @@
package cn.estsh.i3plus.core.apiservice.auth.realm.strategy;
package cn.estsh.i3plus.core.apiservice.auth.realm.strategy.e9;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService;
import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
@ -12,33 +14,42 @@ import org.apache.shiro.subject.PrincipalCollection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author Wynne.Lu
* @date 2021/1/18 2:32
* @desc
*/
@Component
public class E9AuthRealm extends AuthorizingRealm {
public static final Logger LOGGER = LoggerFactory.getLogger(E9AuthRealm.class);
* @Description :
* @Reference :
* @Author : alwaysfrin
* @CreateDate : 2018-10-13 14:04
* @Modify:
**/
public class E9AdminAuthRealm extends AuthorizingRealm {
public static final Logger LOGGER = LoggerFactory.getLogger(E9AdminAuthRealm.class);
@Autowired
private ISystemLoginService systemLoginService;
public E9AuthRealm(){
public E9AdminAuthRealm() {
//添加支持的token
this.setAuthenticationTokenClass(AdminToken.class);
}
//权限验证
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
return new SimpleAuthorizationInfo();
}
//令牌确认
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) {
return new SimpleAuthenticationInfo();
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
try {
//管理员令牌
SessionUser sessionUser = systemLoginService.queryCheckE9AdminLogin((AdminToken) authenticationToken);
LOGGER.info("管理员令牌验证:{}", sessionUser);
return new SimpleAuthenticationInfo(sessionUser, ((AdminToken) authenticationToken).getLoginName(), this.getName());
} catch (Exception e) {
e.printStackTrace();
throw new AuthenticationException(e.getMessage());
}
}
}

@ -0,0 +1,50 @@
package cn.estsh.i3plus.core.apiservice.auth.realm.strategy.e9;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService;
import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @Description :
* @Reference :
* @Author : alwaysfrin
* @CreateDate : 2018-10-13 14:04
* @Modify:
**/
public class E9SaAuthRealm extends AuthorizingRealm {
public static final Logger LOGGER = LoggerFactory.getLogger(E9SaAuthRealm.class);
@Autowired
private ISystemLoginService systemLoginService;
public E9SaAuthRealm() {
//添加支持的token
this.setAuthenticationTokenClass(SaAdminToken.class);
}
//权限验证
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
return new SimpleAuthorizationInfo();
}
//令牌确认
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
//管理员令牌
SessionUser sessionUser = systemLoginService.queryCheckE9SaAdminLogin((SaAdminToken) authenticationToken);
LOGGER.info("超级管理员令牌验证:{}", sessionUser);
return new SimpleAuthenticationInfo(sessionUser, ((SaAdminToken) authenticationToken).getLoginName(), this.getName());
}
}

@ -0,0 +1,57 @@
package cn.estsh.i3plus.core.apiservice.auth.realm.strategy.e9;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService;
import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken;
import cn.estsh.i3plus.pojo.base.shirotoken.UserToken;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Description :
* @Reference :-
* @Author : alwaysfrin
* @CreateDate : 2018-10-13 14:04
* @Modify:
**/
public class E9UserAuthRealm extends AuthorizingRealm {
public static final Logger LOGGER = LoggerFactory.getLogger(E9UserAuthRealm.class);
@Autowired
private ISystemLoginService systemLoginService;
public E9UserAuthRealm() {
//添加支持的token
this.setAuthenticationTokenClass(UserToken.class);
}
//权限验证
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
return new SimpleAuthorizationInfo();
}
//令牌确认
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
try {
//管理员令牌
SessionUser sessionUser = systemLoginService.queryCheckE9UserLogin((UserToken) authenticationToken);
LOGGER.info("用户令牌验证:{}", sessionUser);
return new SimpleAuthenticationInfo(sessionUser, ((UserToken) authenticationToken).getLoginName(), this.getName());
} catch (Exception e) {
e.printStackTrace();
throw new AuthenticationException(e.getMessage());
}
}
}

@ -49,8 +49,10 @@ import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.CredentialsException;
import org.apache.shiro.authc.IncorrectCredentialsException;
@ -78,6 +80,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.function.BiFunction;
import java.util.stream.Collectors;
@ -193,27 +196,57 @@ public class WhiteController extends CoreBaseController {
}
}
@GetMapping(value = "/auth/oss-login")
@GetMapping(value = "/auth/{loginStrategy}/sso-login")
@ApiOperation(value = "登录", notes = "登录")
public ResultBean ossLogin(HttpServletRequest request, SystemLoginModel loginModel) throws NoSuchFieldException {
public ResultBean ssoLogin(HttpServletRequest request, @PathVariable(name = "loginStrategy") String loginStrategy) throws NoSuchFieldException {
String fieldMapping = RedisCacheTool.getSysConfigStrVal(PlatformConstWords.SSO_REQUEST_MAPPING);
if (StringUtils.isEmpty(fieldMapping)) {
return ResultBean.fail("请在平台数据库中配置表添加字段映射配置");
}
SystemLoginModel loginModel = assembleLoginModelByRequest(request, fieldMapping);
loginModel.setLoginStrategy(loginStrategy);
ValidatorBean.beginValid(loginModel)
.notNull("loginStrategy", loginModel.getLoginStrategy())
.notNull("loginName", loginModel.getLoginName());
String beanName = ImppEnumUtil.AUTH_LOGIN_STRATEGY.codeOfStrategyName(loginModel.getLoginStrategy());
ISystemLoginStrategyService loginStrategyService = (ISystemLoginStrategyService) SpringContextsUtil.getBean(beanName);
BaseThreadLocal.setData(PlatformConstWords.IS_OSS_LOGIN, true);
BaseThreadLocal.setData(PlatformConstWords.IS_SSO_LOGIN, true);
return loginByStrategy(request, loginModel, loginStrategyService.login());
}
private SystemLoginModel assembleLoginModelByRequest(HttpServletRequest request, String fieldMapping) {
JSONObject mappingObject = (JSONObject) JSONObject.parse(fieldMapping);
SystemLoginModel loginModel = new SystemLoginModel();
getJsonObjectParameterFromRequest("loginName", request, mappingObject).ifPresent(d -> loginModel.setLoginName(d.toString()));
getJsonObjectParameterFromRequest("loginPwd", request, mappingObject).ifPresent(d -> loginModel.setLoginPwd(d.toString()));
getJsonObjectParameterFromRequest("appId", request, mappingObject).ifPresent(d -> loginModel.setAppId(d.toString()));
getJsonObjectParameterFromRequest("languageCode", request, mappingObject).ifPresent(d -> loginModel.setLanguageCode(d.toString()));
getJsonObjectParameterFromRequest("deviceId", request, mappingObject).ifPresent(d -> loginModel.setDeviceId(d.toString()));
return loginModel;
}
private Optional<Object> getJsonObjectParameterFromRequest(String key, HttpServletRequest request, JSONObject mappingObject) {
Object data = request.getParameter(mappingObject.get(key) == null ? "" : mappingObject.get(key).toString());
return Optional.ofNullable(data);
}
@GetMapping(value = "/auth/login")
@ApiOperation(value = "登录", notes = "登录")
public ResultBean login(HttpServletRequest request, String loginName, String loginPwd,
@RequestParam(required = false) String languageCode,
@RequestParam(required = false) String deviceId) {
SystemLoginModel loginModel = new SystemLoginModel(loginName, loginPwd, languageCode, deviceId, ImppEnumUtil.AUTH_LOGIN_STRATEGY.ACCOUNT.getCode());
SystemLoginModel loginModel = SystemLoginModel.builder()
.loginName(loginName)
.loginPwd(loginPwd)
.languageCode(languageCode)
.deviceId(deviceId)
.loginStrategy(ImppEnumUtil.AUTH_LOGIN_STRATEGY.ACCOUNT.getCode()).build();
String beanName = ImppEnumUtil.AUTH_LOGIN_STRATEGY.codeOfStrategyName(loginModel.getLoginStrategy());
ISystemLoginStrategyService loginStrategyService = (ISystemLoginStrategyService) SpringContextsUtil.getBean(beanName);
@ -230,7 +263,7 @@ public class WhiteController extends CoreBaseController {
CommonEnumUtil.USER_LOGIN_STATUS userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS;
try {
loginStrategy.apply(request, loginModel);
result = loginStrategy.apply(request, loginModel);
} catch (IncorrectCredentialsException e) {
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD);
userPasswordUtil.checkLoginErrorNumber(loginModel.getLoginName(), result, e);

@ -108,6 +108,32 @@ public class SystemLoginService implements ISystemLoginService {
}
@Override
@ApiOperation(value = "封装用户", notes = "封装普通用户信息")
public SessionUser queryCheckE9UserLogin(UserToken userToken) {
//验证用户
SysUser user = getUserLoginInfo(userToken.getLoginName());
LOGGER.info("【验证用户checkUserLogin】{}", user);
//用户单地登录
return packSessionUser(user, CommonEnumUtil.USER_TYPE.USER.getCode(), userToken.getLanguageCode());
}
@Override
@ApiOperation(value = "封装用户", notes = "封装管理员信息")
public SessionUser queryCheckE9AdminLogin(AdminToken adminToken) {
//验证用户
SysUser user = getUserLoginInfo(adminToken.getLoginName());
//未抛异常,封装用户
return packSessionUser(user, CommonEnumUtil.USER_TYPE.ADMIN.getCode(), adminToken.getLanguageCode());
}
@Override
@ApiOperation(value = "封装用户", notes = "封装超级管理员信息")
public SessionUser queryCheckE9SaAdminLogin(SaAdminToken saAdminToken) {
SysUser user = getUserLoginInfo(saAdminToken.getLoginName());
return packSessionUser(user, CommonEnumUtil.USER_TYPE.SA.getCode(), saAdminToken.getLanguageCode());
}
@Override
@ApiOperation(value = "登录密码错误", notes = "登录密码错误记录错误次数功能")
public Integer doLoginPasswordError(String loginName, String sessionId) {
SysUser user = sysUserRDao.getByProperty(new String[]{"userLoginName", "isValid"},
@ -164,17 +190,7 @@ public class SystemLoginService implements ISystemLoginService {
* @return
*/
public SysUser getUserLoginInfo(String loginName, String pwd) {
SysUser user = sysUserRDao.getByProperty(
new String[]{"userLoginName", "isValid"},
new Object[]{loginName, CommonEnumUtil.IS_VAILD.VAILD.getValue()});
if (user == null) { //用户不存在
throw new CredentialsException("用户不存在");
}
if (user.getUserStatus() != CommonEnumUtil.USER_STATUS.ENABLE.getValue()) {
throw new LockedAccountException("账号已被锁定");
}
SysUser user = getValidUserByName(loginName);
// 登录AD 域检查
if (ImppSwitchUtil.isLoginActiveDirectory()) {
@ -218,6 +234,34 @@ public class SystemLoginService implements ISystemLoginService {
throw new IncorrectCredentialsException("登陆密码错误");
}
public SysUser getUserLoginInfo(String loginName) {
SysUser user = getValidUserByName(loginName);
// 登录AD 域检查
if (ImppSwitchUtil.isLoginActiveDirectory()) {
userPasswordUtil.checkActiveDirectory(user);
return user;
}
userPasswordUtil.checkSysUserLogin(user);
return user;
}
public SysUser getValidUserByName(String loginName) {
SysUser user = sysUserRDao.getByProperty(
new String[]{"userLoginName", "isValid"},
new Object[]{loginName, CommonEnumUtil.IS_VAILD.VAILD.getValue()});
if (user == null) {
throw new CredentialsException("用户不存在");
}
if (user.getUserStatus() != CommonEnumUtil.USER_STATUS.ENABLE.getValue()) {
throw new LockedAccountException("账号已被锁定");
}
return user;
}
/**
*
*

@ -66,7 +66,7 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService {
AuthUtil.logout();
}
SessionUser user = userService.queryUserLogin(
SessionUser user = userService.loginUser(
loginModel.getLoginName().trim(),
loginModel.getLoginPwd().trim(),
loginModel.getLanguageCode(),

@ -67,16 +67,16 @@ public class E9LoginStrategy implements ISystemLoginStrategyService {
// 设置语言代码
BaseThreadLocal.setData(BaseThreadLocal.LANGUAGE_CODE, loginModel.getLanguageCode());
BaseThreadLocal.setData(PlatformConstWords.AUTH_REALM_CHOOSE, ImppEnumUtil.AUTH_REALM_STRATEGY.PANASONIC.getStrategyName());
BaseThreadLocal.setData(PlatformConstWords.AUTH_LOGIN_STRATEGY, ImppEnumUtil.AUTH_LOGIN_STRATEGY.E9.getCode());
int sessionMode = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_SESSION_MODE, CommonConstWords.CONFIG_SESSION_MODE_DEFAULT);
if (sessionMode != CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) {
AuthUtil.logout();
}
SessionUser user = userService.queryUserLogin(
SessionUser user = userService.loginUser(
loginModel.getLoginName().trim(),
loginModel.getLoginName().trim(),
loginModel.getLoginPwd() == null ? null : loginModel.getLoginPwd().trim(),
loginModel.getLanguageCode(),
loginService.getLoginPlatform(request).getValue(),
loginModel.getDeviceId()
@ -90,13 +90,13 @@ public class E9LoginStrategy implements ISystemLoginStrategyService {
AuthUtil.setOrganize(user.getUser().getOrganize());
return null;
return result;
};
}
private boolean validateHost(HttpServletRequest request) {
final String delimiter = ",";
String hostsConfig = RedisCacheTool.getSysConfigStrVal(PlatformConstWords.OSS_REQUEST_HOST);
String hostsConfig = RedisCacheTool.getSysConfigStrVal(PlatformConstWords.SSO_REQUEST_HOST);
String[] hosts = hostsConfig.split(delimiter);
String requestHost = ServletRequestTool.getRequestHost(request);
return Arrays.stream(hosts).anyMatch(d -> requestHost.equals(d));

@ -65,15 +65,6 @@ public class SysUserService implements ISysUserService {
private SysUserInfoRepository sysUserInfoRDao;
@Autowired
private IUserPermissionDao userPermissionDao;
// @Autowired
// private SysOrganizeRepository organizeRDao;
//
// @Autowired
// private SysRoleRepository sysRoleRDao;
@Autowired
private SysRefUserRoleRepository refUserRoleRDao;
@Autowired
@ -83,15 +74,6 @@ public class SysUserService implements ISysUserService {
private SysRefUserPositionRepository refUserPositionRDao;
@Autowired
private SysFileRepository sysFileRDao;
//
// @Autowired
// private SysDepartmentRepository departmentRDao;
//
// @Autowired
// private SysPositionRepository sysPositionRDao;
@Autowired
private ISysUserInfoService sysUserInfoService;
@Autowired
@ -119,42 +101,37 @@ public class SysUserService implements ISysUserService {
private ISysMenuService menuService;
@Autowired
private ICoreMemTreeService memTreeService;
@Autowired
private ISysFileService fileService;
@Autowired
private SysUserPasswordUtil passwordUtil;
@Autowired ISysUserPasswordService userPasswordService;
@Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
@Autowired
ISysUserPasswordService userPasswordService;
/**
*
*/
@Resource(name= CommonConstWords.IMPP_REDIS_SESSION)
@Resource(name = CommonConstWords.IMPP_REDIS_SESSION)
private ImppRedis redisSession;
@Override
@ApiOperation(value = "用户登录", notes = "用户登录功能实现")
@Transactional(propagation = Propagation.REQUIRED)
public SessionUser queryUserLogin(String loginName, String password, String languageCode,Integer loginPlatform,String deviceId) throws AuthenticationException {
public 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);
BaseToken token = getToken(loginName, password, languageCode, loginPlatform);
SessionUser sessionUser = AuthUtil.login(token);
SysUser user = this.getSysUserByLoginName(loginName);
if(user == null){
if (user == null) {
throw new CredentialsException("用户不存在");
}
// 判断会话模式
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);
AuthUtil.setSessionUser(sessionUser);
refreshUserLoginInformation(user.getId());
@ -163,12 +140,12 @@ public class SysUserService implements ISysUserService {
return sessionUser;
}
private void checkSessionMode(Integer loginPlatform,Long userId){
int sessionMode = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_SESSION_MODE,CommonConstWords.CONFIG_SESSION_MODE_DEFAULT);
private void checkSessionMode(Integer loginPlatform, Long userId) {
int sessionMode = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_SESSION_MODE, CommonConstWords.CONFIG_SESSION_MODE_DEFAULT);
String redisKey;
if (sessionMode == CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) {
redisKey = CommonConstWords.SESSION_USER + ":*_" + userId;
}else {
} else {
return;
}
@ -186,15 +163,15 @@ public class SysUserService implements ISysUserService {
@Override
public BaseToken getToken(String loginName, String password, String languageCode, Integer loginPlatform) {
SysUser user = this.getSysUserByLoginName(loginName);
if(user != null){
if(user.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN.getValue())){
return new AdminToken(loginName,password,languageCode,loginPlatform);
}else if(user.getUserType().equals(CommonEnumUtil.USER_TYPE.SA.getValue())){
return new SaAdminToken(loginName,password,languageCode,loginPlatform);
}else {
return new UserToken(loginName,password,languageCode,loginPlatform);
if (user != null) {
if (user.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN.getValue())) {
return new AdminToken(loginName, password, languageCode, loginPlatform);
} else if (user.getUserType().equals(CommonEnumUtil.USER_TYPE.SA.getValue())) {
return new SaAdminToken(loginName, password, languageCode, loginPlatform);
} else {
return new UserToken(loginName, password, languageCode, loginPlatform);
}
}else {
} else {
throw new CredentialsException("用户不存在");
}
}
@ -212,7 +189,7 @@ public class SysUserService implements ISysUserService {
@Override
public void doLockSysUserById(Long id) {
SysUser user = userRDao.getById(id);
if(Objects.nonNull(user)){
if (Objects.nonNull(user)) {
user.setUserStatus(CommonEnumUtil.USER_STATUS.LOCKING.getValue());
userRDao.save(user);
}
@ -221,15 +198,15 @@ public class SysUserService implements ISysUserService {
@Override
@ApiOperation(value = "修改账号", notes = "批量修改账号状态")
public void updateBatchSysUserStatus(Long[] ids, int status, SessionUser user) {
LOGGER.debug("平台用户 SYS_USER DELETE By ids :{} status:{}, SessionUser :{}", ids,status,user);
LOGGER.debug("平台用户 SYS_USER DELETE By ids :{} status:{}, SessionUser :{}", ids, status, user);
String where = CoreHqlPack.packHqlIds("id", ids);
List<SysUser> list = userRDao.findByHqlWhere(where);
if(null != list && list.size() > 0){
if (null != list && list.size() > 0) {
for (SysUser sysUser : list) {
sysUser.setUserStatus(status);
sysUser.setIsValid(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
ConvertBean.modelUpdate(sysUser,user);
ConvertBean.modelUpdate(sysUser, user);
}
userRDao.saveAll(list);
}
@ -245,9 +222,9 @@ public class SysUserService implements ISysUserService {
@Override
@ApiOperation(value = "修改账号", notes = "修改账号登录密码")
public void updateSysUserPassword(Long userId, String password, String newPwd) throws Exception {
LOGGER.debug("平台用户 SYS_USER Override:{} password:{} newPwd:{}", userId,password,newPwd);
LOGGER.debug("平台用户 SYS_USER Override:{} password:{} newPwd:{}", userId, password, newPwd);
SysUser user = userRDao.getById(userId);
ValidatorBean.checkNotNull(user,"用户不存在");
ValidatorBean.checkNotNull(user, "用户不存在");
user.setUserLoginPassword(newPwd);
passwordUtil.checkPasswordSave(user);
@ -294,7 +271,7 @@ public class SysUserService implements ISysUserService {
@Override
@ApiOperation(value = "新增账号", notes = "新增账号信息")
public SysUser insertSysUser(SysUser sysUser)throws Exception {
public SysUser insertSysUser(SysUser sysUser) throws Exception {
LOGGER.debug("平台用户 SYS_USER SysUser:{}", sysUser);
SysUser loginUser = getSysUserByLoginName(sysUser.getUserLoginName());
@ -314,7 +291,7 @@ public class SysUserService implements ISysUserService {
}
@Override
@ApiOperation(value = "新增登录日志",notes = "新增登录日志信息")
@ApiOperation(value = "新增登录日志", notes = "新增登录日志信息")
public SysLogUserLogin insertSysLogUserLogin(SysLogUserLogin sysLogUserLogin) {
LOGGER.debug("平台用户登录记录 SysLogUserLogin sysLogUserLogin:{}", sysLogUserLogin);
return logUserLoginRDao.insert(sysLogUserLogin);
@ -332,7 +309,7 @@ public class SysUserService implements ISysUserService {
// 删除角色关系信息
refUserRoleRDao.deleteByProperty("userId", sysUser.getId()); // 删除用户角色关系
if(null != list && list.size() > 0){
if (null != list && list.size() > 0) {
// 新增用户角色关系
List<SysRefUserRole> refUserRoles = new ArrayList<>();
List<String> roleNameList = new ArrayList<>();
@ -380,19 +357,19 @@ public class SysUserService implements ISysUserService {
@Override
@ApiOperation(value = "删除账号", notes = "批量删除账号信息,逻辑删除,账号关系业务物理删除")
public void deleteBatchSysUserById(Long[] ids,SessionUser user) {
public void deleteBatchSysUserById(Long[] ids, SessionUser user) {
LOGGER.debug("平台用户 SYS_USER DELETE By ids :{}", ids);
// 标记用户已删除
String where = CoreHqlPack.packHqlIds("id", ids);
List<SysUser> list = userRDao.findByHqlWhere(where);
if(null != list && list.size() > 0){
if (null != list && list.size() > 0) {
for (SysUser sysUser : list) {
sysUser.setIsValid(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
}
userRDao.saveAll(list);
refUserRoleRDao.deleteByPropertyIn("userId",ids);
refUserRoleRDao.deleteByPropertyIn("userId", ids);
}
}
@ -401,7 +378,7 @@ public class SysUserService implements ISysUserService {
public List<SysUser> list() {
LOGGER.debug("平台用户 SYS_USER find All");
return userRDao.findByProperty(
new String[]{"isDeleted","isValid"},
new String[]{"isDeleted", "isValid"},
new Object[]{
CommonEnumUtil.IS_DEAL.NO.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue()
@ -417,7 +394,7 @@ public class SysUserService implements ISysUserService {
public List<SysUser> listByUserOrganizeCode() {
LOGGER.debug("平台用户 SYS_USER listByUserOrganizeCode");
return userRDao.findByProperty(
new String[]{"isDeleted","isValid","organizeCode"},
new String[]{"isDeleted", "isValid", "organizeCode"},
new Object[]{
CommonEnumUtil.IS_DEAL.NO.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue(),
@ -426,14 +403,14 @@ public class SysUserService implements ISysUserService {
}
@Override
@ApiOperation(value = "查询用户ID 集合",notes = "根据角色Id 查询用户ID集合")
@ApiOperation(value = "查询用户ID 集合", notes = "根据角色Id 查询用户ID集合")
public List<Long> findSysUserIdListByRoleId(Long roleId) {
List<Long> result = new ArrayList<>();
if(roleId != null){
if (roleId != null) {
List<SysRefUserRole> list = refUserRoleRDao.findByProperty(
new String[]{"roleId","isValid"},
new Object[]{roleId,CommonEnumUtil.IS_VAILD.VAILD.getValue()});
if(list != null && list.size() > 0){
new String[]{"roleId", "isValid"},
new Object[]{roleId, CommonEnumUtil.IS_VAILD.VAILD.getValue()});
if (list != null && list.size() > 0) {
for (SysRefUserRole ref : list) {
result.add(ref.getUserId());
}
@ -443,14 +420,14 @@ public class SysUserService implements ISysUserService {
}
@Override
@ApiOperation(value = "查询用户ID 集合",notes = "根据部门Id 查询用户ID集合")
@ApiOperation(value = "查询用户ID 集合", notes = "根据部门Id 查询用户ID集合")
public List<Long> findSysUserIdListByDepartmentId(List<Long> idList) {
List<Long> result = new ArrayList<>();
if(idList != null && idList.size() > 0){
if (idList != null && idList.size() > 0) {
StringBuffer hqlWhere = new StringBuffer();
HqlPack.getInPack(StringUtils.join(idList, ","), "departmentId", hqlWhere);
List<SysRefUserDepartment> list = refUserDepartmentRDao.findByHqlWhere(hqlWhere.toString());
if(list != null && list.size() > 0){
if (list != null && list.size() > 0) {
for (SysRefUserDepartment ref : list) {
result.add(ref.getUserId());
}
@ -465,20 +442,20 @@ public class SysUserService implements ISysUserService {
LOGGER.debug("系统用户 SysUser find user :{} page :{}", user, pager);
// 角色查询
if(user.getRoleId() != null){
if (user.getRoleId() != null) {
List<Long> ids = findSysUserIdListByRoleId(user.getRoleId());
user.setRoleIdList(StringTool.getListString(ids));
}
List<Long> departmentIdList = new ArrayList<>();
if(user.getOrganizeId() != null){
if (user.getOrganizeId() != null) {
// 查出所有组织 ID 集合
SysOrganize parent = coreTreeService.getSysOrganizeTreeById(user.getOrganizeId());
List<Long> childIds = coreTreeService.findSysOrganizeChildIds(parent);
// 查询所有部门 ID 集合
if(childIds != null && childIds.size() > 0){
if (childIds != null && childIds.size() > 0) {
for (Long organizeId : childIds) {
List<Long> ids = coreTreeService.findSysDepartmentIdByOrganizeId(organizeId);
departmentIdList.addAll(ids);
@ -487,7 +464,7 @@ public class SysUserService implements ISysUserService {
}
// 封装部门 ID 信息
if(user.getDepartmentId() != null){
if (user.getDepartmentId() != null) {
SysDepartment department = departmentService.get(user.getDepartmentId());
departmentIdList.addAll(coreTreeService.findSysDepartmentChildIds(department));
}
@ -518,7 +495,7 @@ public class SysUserService implements ISysUserService {
@Override
@ApiOperation(value = "用户查询", notes = "根据ID 查询用户信息")
public SysUserInfo getSysUserInfoById(Long id) {
return sysUserInfoRDao.getByProperty("id",id);
return sysUserInfoRDao.getByProperty("id", id);
}
@Override
@ -547,63 +524,63 @@ public class SysUserService implements ISysUserService {
@Override
@ApiOperation(value = "账号角色", notes = "根据账号ID查询账号角色关系")
public List<SysRefUserRole> findSysRefUserRoleByUserId(Long userId) {
return refUserRoleRDao.findByProperty("userId",userId);
return refUserRoleRDao.findByProperty("userId", userId);
}
@Override
@ApiOperation(value = "检查-账号登录名", notes = "判断账号是否存在")
public boolean checkSysUserLoginName(String userLoginName, long id) {
int count = 0;
if(id > 0){
if (id > 0) {
StringBuffer sw = new StringBuffer();
HqlPack.getStringEqualPack(userLoginName,"userLoginName",sw);
HqlPack.getNumNOEqualPack(id,"id",sw);
HqlPack.getStringEqualPack(userLoginName, "userLoginName", sw);
HqlPack.getNumNOEqualPack(id, "id", sw);
count = userRDao.findByHqlWhereCount(sw.toString());
}else{
count = userRDao.findByPropertyCount("userLoginName",userLoginName);
} else {
count = userRDao.findByPropertyCount("userLoginName", userLoginName);
}
return count <= 0 ;
return count <= 0;
}
@Override
@ApiOperation(value = "检查-账号邮箱", notes = "判断邮箱是否存在")
public boolean checkSysUserEmail(String email, long id) {
int count;
if(id > 0){
if (id > 0) {
StringBuffer sw = new StringBuffer();
HqlPack.getStringEqualPack(email,"userEmail",sw);
HqlPack.getNumNOEqualPack(id,"id",sw);
HqlPack.getStringEqualPack(email, "userEmail", sw);
HqlPack.getNumNOEqualPack(id, "id", sw);
count = userRDao.findByHqlWhereCount(sw.toString());
}else{
count = userRDao.findByPropertyCount("userEmail",email);
} else {
count = userRDao.findByPropertyCount("userEmail", email);
}
return count <= 0 ;
return count <= 0;
}
@Override
@ApiOperation(value = "检查-账号手机", notes = "判断手机是否存在")
public boolean checkSysUserPhone(String phone, long id) {
int count;
if(id > 0){
if (id > 0) {
StringBuffer sw = new StringBuffer();
HqlPack.getStringEqualPack(phone,"userPhone",sw);
HqlPack.getNumNOEqualPack(id,"id",sw);
HqlPack.getStringEqualPack(phone, "userPhone", sw);
HqlPack.getNumNOEqualPack(id, "id", sw);
count = userRDao.findByHqlWhereCount(sw.toString());
}else{
count = userRDao.findByPropertyCount("userPhone",phone);
} else {
count = userRDao.findByPropertyCount("userPhone", phone);
}
return count <= 0 ;
return count <= 0;
}
@Override
@ApiOperation(value = "检查-账号唯一", notes = "账号唯一性校验")
public void checkSysUserOnly(SysUser user) {
if(user != null){
if (user != null) {
// 登录名唯一教研
if(!checkSysUserLoginName(user.getUserLoginName(), user.getId() == null ? 0 : user.getId())){
if (!checkSysUserLoginName(user.getUserLoginName(), user.getId() == null ? 0 : user.getId())) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
@ -613,7 +590,7 @@ public class SysUserService implements ISysUserService {
}
// 登录名唯一教研
if(!checkSysUserEmail(user.getUserEmail(),user.getId() == null ? 0 : user.getId())){
if (!checkSysUserEmail(user.getUserEmail(), user.getId() == null ? 0 : user.getId())) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
@ -623,7 +600,7 @@ public class SysUserService implements ISysUserService {
}
// 登录名唯一教研
if(!checkSysUserPhone(user.getUserPhone(),user.getId() == null ? 0 : user.getId())){
if (!checkSysUserPhone(user.getUserPhone(), user.getId() == null ? 0 : user.getId())) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
@ -650,12 +627,12 @@ public class SysUserService implements ISysUserService {
* @return
*/
@Override
@ApiOperation(value = "封装用户信息",notes = "封装登录完成后的用户信息(角色、权限、部门、组织、岗位)")
public SessionUser packSessionUser(SessionUser sessionUser, SysUser user,Integer userType,Integer loginPlatform, String languageCode, String deviceId) {
@ApiOperation(value = "封装用户信息", notes = "封装登录完成后的用户信息(角色、权限、部门、组织、岗位)")
public SessionUser packSessionUser(SessionUser sessionUser, SysUser user, Integer userType, Integer loginPlatform, String languageCode, String deviceId) {
LOGGER.debug("平台用户 SYS_USER user id :{}", user.getId());
SysUserInfo userInfo = sysUserInfoRDao.getById(user.getUserInfoId());
if(userInfo == null){
if (userInfo == null) {
throw new UnknownAccountException("用户信息不存在");
}
@ -692,27 +669,27 @@ public class SysUserService implements ISysUserService {
public SessionUser packPageSessionUser(SessionUser sessionUser, SysUser user) {
SysConfig configPageList = RedisCacheTool.getSysConfigByConfigCode(CommonConstWords.CONFIG_PAGE_SIZE_LIST);
try {
if(configPageList != null && StringUtils.isNotBlank(configPageList.getConfigValue())){
if (configPageList != null && StringUtils.isNotBlank(configPageList.getConfigValue())) {
String[] split = configPageList.getConfigValue().split(",");
int[] ints = Arrays.stream(split).mapToInt(Integer::parseInt).toArray();
sessionUser.setPageSizeArray(Arrays.stream(ints).boxed().toArray(Integer[]::new));
}
}catch (Exception e){
} catch (Exception e) {
}
if(sessionUser.getPageSizeArray() == null){
if (sessionUser.getPageSizeArray() == null) {
sessionUser.setPageSizeArray(CommonConstWords.CONFIG_PAGE_SIZE_LIST_DEFAULT);
}
SysConfig configPageSize = RedisCacheTool.getSysConfigByConfigCode(CommonConstWords.CONFIG_PAGE_DEFAULT_SIZE);
try {
if(configPageSize != null && StringUtils.isNotBlank(configPageSize.getConfigValue())){
if (configPageSize != null && StringUtils.isNotBlank(configPageSize.getConfigValue())) {
sessionUser.setPageDefaultSize(Integer.parseInt(configPageSize.getConfigValue()));
}
}catch (Exception ignored){
} catch (Exception ignored) {
}
if(sessionUser.getPageDefaultSize() == null || sessionUser.getPageDefaultSize() <= 0){
if (sessionUser.getPageDefaultSize() == null || sessionUser.getPageDefaultSize() <= 0) {
sessionUser.setPageDefaultSize(CommonConstWords.CONFIG_PAGE_DEFAULT);
}
@ -737,50 +714,52 @@ public class SysUserService implements ISysUserService {
/**
*
*
* +
*
*
*
* +
*
*
*
* @param user
*/
public void packSysUserSort(SysUser user){
if(user != null){
public void packSysUserSort(SysUser user) {
if (user != null) {
// 创建时间升序
if(user.getRoleList() != null){
if (user.getRoleList() != null) {
user.getRoleList().sort(Comparator.comparing(SysRole::getCreateDatetime));
}
if(user.getMenuList() != null){
if (user.getMenuList() != null) {
user.getMenuList().sort(Comparator.comparing(SysMenu::getMenuSort).reversed() // 倒序
.thenComparing(SysMenu::getMenuCode)); //升序
.thenComparing(SysMenu::getMenuCode)); //升序
}
if(user.getOrganizeList() != null){
if (user.getOrganizeList() != null) {
user.getOrganizeList().sort(Comparator.comparing(SysOrganize::getCreateDatetime));
}
if(user.getDepartmentList() != null){
if (user.getDepartmentList() != null) {
user.getDepartmentList().sort(Comparator.comparing(SysDepartment::getCreateDatetime));
}
}
}
/**
*
*
*
*
*
*
*
*
*
* @param info
*/
public void packSysUserInfoSort(SysUserInfo info){
if(info != null){
if(info.getPositionList() != null){
public void packSysUserInfoSort(SysUserInfo info) {
if (info != null) {
if (info.getPositionList() != null) {
info.getPositionList().sort(Comparator.comparing(SysPosition::getCreateDatetime));
}
if(info.getDepartmentList() != null){
if (info.getDepartmentList() != null) {
info.getDepartmentList().sort(Comparator.comparing(SysDepartment::getCreateDatetime));
}
if(info.getOrganizeList() != null){
if (info.getOrganizeList() != null) {
info.getOrganizeList().sort(Comparator.comparing(SysOrganize::getCreateDatetime));
}
}
@ -788,15 +767,16 @@ public class SysUserService implements ISysUserService {
/**
*
*
* @param user
* @return
*/
public void packSysUserRole(SysUser user){
public void packSysUserRole(SysUser user) {
SysRefUserRole refUserRole = new SysRefUserRole();
refUserRole.setUserId(user.getId());
List<SysRefUserRole> refUserRoleList = refUserRoleRDao.findByHqlWhere(CoreHqlPack.packDdlBeanSysRefUserRole(refUserRole));
if(Objects.nonNull(refUserRoleList)){
if (Objects.nonNull(refUserRoleList)) {
List<Long> idList = new ArrayList<>();
refUserRoleList.forEach(ref -> idList.add(ref.getRoleId()));
user.setRoleList(roleService.findByIdList(idList));
@ -805,14 +785,15 @@ public class SysUserService implements ISysUserService {
/**
*
*
* @param user
* @return
*/
public void packSysUserMenu(SysUser user){
public void packSysUserMenu(SysUser user) {
List<SysMenu> list = new ArrayList<>();
try {
LOGGER.info("平台用户 SYS_USER user id :{}", user.getUserInfoId());
if(user.getRoleList() != null && user.getRoleList().size() > 0){
if (user.getRoleList() != null && user.getRoleList().size() > 0) {
List<Long> ids = new ArrayList<>();
Set<Long> menuIdList = new HashSet<>();
user.getRoleList().forEach(role -> {
@ -826,17 +807,17 @@ public class SysUserService implements ISysUserService {
}
});
List<SysMenu> menuList = menuService.findByIdList(new ArrayList<>(menuIdList));
if(CollectionUtils.isNotEmpty(menuList)){
if (CollectionUtils.isNotEmpty(menuList)) {
for (SysMenu menu : menuList) {
if(CommonConstWords.SYSTEM_MENU_ROOT_ID.equals(menu.getParentId())){
if (CommonConstWords.SYSTEM_MENU_ROOT_ID.equals(menu.getParentId())) {
menu.getChildList().clear();
list.add(menu);
}
}
}
}
}catch (Exception e){
LOGGER.error(" SysUser Peck Menu information Error userId : {} Exception Message : {} " ,user.getUserInfoId(),e.getMessage());
} catch (Exception e) {
LOGGER.error(" SysUser Peck Menu information Error userId : {} Exception Message : {} ", user.getUserInfoId(), e.getMessage());
e.printStackTrace();
}
@ -872,141 +853,150 @@ public class SysUserService implements ISysUserService {
/**
*
*
* @param userInfo
* @return
*/
public void packSysUserInfoDepartment(SysUserInfo userInfo){
public void packSysUserInfoDepartment(SysUserInfo userInfo) {
try {
LOGGER.debug("平台用户 SYS_USER user id :{}", userInfo.getId());
personnelService.findSysRefUserInfoDepartmentById(userInfo.id);
personnelService.findSysRefUserInfoDepartmentById(userInfo.id);
userInfo.setDepartment(departmentService.get(userInfo.getDepartmentId()));
userInfo.setDepartmentList(personnelService.findSysUserInfoDepartmentByInfoId(userInfo.getId()));
}catch (Exception e){
LOGGER.error(" SysUser Peck Department information Error userId : {} Exception Message : {} " ,userInfo.getId(),e.getMessage());
} catch (Exception e) {
LOGGER.error(" SysUser Peck Department information Error userId : {} Exception Message : {} ", userInfo.getId(), e.getMessage());
e.printStackTrace();
}
}
/**
*
*
* @param user
* @return
*/
public void packSysUserDepartment(SysUser user){
public void packSysUserDepartment(SysUser user) {
try {
LOGGER.debug("平台用户 SYS_USER user id :{}", user.getId());
user.setDepartment(departmentService.get(user.getDepartmentId()));
user.setDepartmentList(personnelService.findSysUserDepartmentByInfoId(user.id));
}catch (Exception e){
LOGGER.error(" SysUser Peck Department information Error userId : {} Exception Message : {} " ,user.getId(),e.getMessage());
} catch (Exception e) {
LOGGER.error(" SysUser Peck Department information Error userId : {} Exception Message : {} ", user.getId(), e.getMessage());
e.printStackTrace();
}
}
/**
*
*
*
* @param userInfo
* @return
*/
public void packSysUserInfoPosition(SysUserInfo userInfo){
public void packSysUserInfoPosition(SysUserInfo userInfo) {
try {
LOGGER.debug("平台用户 SYS_USER user id :{}", userInfo.getId());
SysRefUserPosition refUserPosition = new SysRefUserPosition();
refUserPosition.setUserId(userInfo.getId());
List<SysRefUserPosition> refUserPositionList = refUserPositionRDao.findByHqlWhere(CoreHqlPack.packHqlSysRefUserPosition(refUserPosition));
if(CollectionUtils.isNotEmpty(refUserPositionList)){
if (CollectionUtils.isNotEmpty(refUserPositionList)) {
List<Long> idList = new ArrayList<>();
refUserPositionList.forEach(ref -> idList.add(ref.getPositionId()));
userInfo.setPositionList(positionService.findByIdList(idList));
}
userInfo.setPosition(positionService.get(userInfo.getPositionId()));
}catch (Exception e){
LOGGER.error(" SysUser Peck Position information Error userId : {} Exception Message : {} " ,userInfo.getId(),e.getMessage());
} catch (Exception e) {
LOGGER.error(" SysUser Peck Position information Error userId : {} Exception Message : {} ", userInfo.getId(), e.getMessage());
}
}
/**
*
*
*
* @param userInfo
* @return
*/
public void packSysUserInfoOrganize(SysUserInfo userInfo){
public void packSysUserInfoOrganize(SysUserInfo userInfo) {
try {
LOGGER.debug("平台用户 SYS_USER user id :{}", userInfo.getId());
userInfo.setOrganize(organizeService.get(userInfo.getOrganizeId()));
userInfo.setOrganizeList(personnelService.findSysUserInfoOrganize(userInfo.getId()));;
}catch (Exception e){
LOGGER.error(" SysUser Peck Organize information Error userId : {} Exception Message : {} " ,userInfo.getId(),e.getMessage());
userInfo.setOrganizeList(personnelService.findSysUserInfoOrganize(userInfo.getId()));
;
} catch (Exception e) {
LOGGER.error(" SysUser Peck Organize information Error userId : {} Exception Message : {} ", userInfo.getId(), e.getMessage());
}
}
/**
*
*
*
* @param userInfo
* @return
*/
public void packSysUserInfoImage(SysUserInfo userInfo){
public void packSysUserInfoImage(SysUserInfo userInfo) {
try {
LOGGER.debug("平台用户 SYS_USER user id :{}", userInfo.getId());
if(Objects.nonNull(userInfo.getUserImageId())){
if (Objects.nonNull(userInfo.getUserImageId())) {
SysFile file = fileService.getSysFileById(userInfo.getUserImageId());
if(Objects.nonNull(file)){
if (Objects.nonNull(file)) {
userInfo.setImageFileUrl(file.getFilePath());
}
}
}catch (Exception e){
LOGGER.error(" SysUser Peck Organize information Error userId : {} Exception Message : {} " ,userInfo.getId(),e.getMessage());
} catch (Exception e) {
LOGGER.error(" SysUser Peck Organize information Error userId : {} Exception Message : {} ", userInfo.getId(), e.getMessage());
}
}
/**
*
*
*
* @param user
* @return
*/
public void packSysUserOrganize(SysUser user){
public void packSysUserOrganize(SysUser user) {
try {
LOGGER.debug("平台用户 SYS_USER user id :{}", user.getId());
user.setOrganize(organizeService.get(user.getOrganizeId()));
user.setOrganizeList(personnelService.findSysUserOrganize(user.getId()));;
}catch (Exception e){
LOGGER.error(" SysUser Peck Organize information Error userId : {} Exception Message : {} " ,user.getId(),e.getMessage());
user.setOrganizeList(personnelService.findSysUserOrganize(user.getId()));
;
} catch (Exception e) {
LOGGER.error(" SysUser Peck Organize information Error userId : {} Exception Message : {} ", user.getId(), e.getMessage());
}
}
/**
* Root Id
*
* @param menus
* @return
*/
private List<SysMenu> getSysMenuRootIds(List<SysMenu> menus){
Map<Long,SysMenu> map = new HashMap<>();
private List<SysMenu> getSysMenuRootIds(List<SysMenu> menus) {
Map<Long, SysMenu> map = new HashMap<>();
List<SysMenu> result = new ArrayList<>();
SysMenu parentMenu = null;
// 获取所有顶级节点 ParentId 不存在的对象
for (SysMenu menu : menus) {
parentMenu = map.get(menu.getParentId());
if(parentMenu == null){
if (parentMenu == null) {
for (SysMenu sysMenu : menus) {
if(sysMenu.getId().longValue() == menu.getParentId().longValue()){
if (sysMenu.getId().longValue() == menu.getParentId().longValue()) {
parentMenu = sysMenu;
}
}
}
map.put(menu.getParentId(),parentMenu);
map.put(menu.getParentId(), parentMenu);
}
// 封装返回对象
for (Long parentId : map.keySet()) {
if(map.get(parentId) == null){
if (map.get(parentId) == null) {
for (SysMenu sysMenu : menus) {
if(sysMenu.getParentId().longValue() == parentId.longValue()){
if (sysMenu.getParentId().longValue() == parentId.longValue()) {
result.add(sysMenu);
}
}

@ -1,5 +1,5 @@
#\u672C\u673Aip
impp.server.ip=192.168.1.56
impp.server.ip=192.168.3.97
#\u9879\u76EE\u7AEF\u53E3
server.port=8100
#\u94FE\u8DEF\u8FFD\u8E2Azipkin\u63A7\u5236\u53F0ip\u5730\u5740

@ -1,5 +1,5 @@
#\u4F7F\u7528\u914D\u7F6E
spring.profiles.active=docker
spring.profiles.active=dev
#\u9879\u76EE\u63CF\u8FF0\u4FE1\u606F\uFF08swagger\u4E2D\u663E\u5F0F\uFF09\uFF0C\u4E2D\u6587\u4F7F\u7528uncode\u8F6C\u7801
desc.application.name=\u6838\u5FC3\u7BA1\u7406\u540E\u53F0

@ -199,6 +199,13 @@
<version>12.2.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.4.2</version>
</dependency>
<!-- sqlserver -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>

Loading…
Cancel
Save