Merge branch 'dev' into test

yun-zuoyi
wei.peng 6 years ago
commit 5bad12a395

@ -9,6 +9,7 @@ import cn.estsh.i3plus.pojo.platform.bean.SysPosition;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
/**
* @Description :
@ -136,6 +137,15 @@ public interface ICoreTreeService {
@ApiOperation(value = "封装菜单树",notes = "封装当前菜单树")
void findSysMenuChildrenTreePack(SysMenu parent, int step);
@ApiOperation(value = "封装菜单树",notes = "根据角色ID封装当前菜单树")
void findSysMenuChildrenTreeByRoleIdPack(SysMenu parent,Long roleId, int step);
@ApiOperation(value = "封装菜单树",notes = "根据用户ID封装当前菜单树")
void findSysMenuChildrenTreeByUserIdPack(SysMenu parent,Long userId, int step);
@ApiOperation(value = "封装菜单树",notes = "根据用户ID 内存中封装当前菜单树")
void findMemSysMenuChildrenTreeByUserIdPack(SysMenu parent, List<SysMenu> cacheMenuList, int step);
/**
* IDID
* @param menu

@ -78,6 +78,9 @@ public interface ISysMenuService {
@ApiOperation(value = "查询菜单信息",notes = "查询所有菜单信息")
List<SysMenu> findSysMenuAll();
@ApiOperation(value = "查询菜单信息",notes = "根据父节点 ID 查询所有菜单信息")
List<SysMenu> findSysMenuByParentId(Long parentId);
/**
* id
*

@ -1,39 +1,30 @@
package cn.estsh.i3plus.core.apiservice.controller.base;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService;
import cn.estsh.i3plus.core.api.iservice.busi.ICoreTreeService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.core.apiservice.controller.DemoAuthController;
import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.SysLocaleLanguageService;
import cn.estsh.i3plus.platform.common.tool.ServletRequestTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage;
import cn.estsh.i3plus.pojo.platform.bean.SysLogUserLogin;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import cn.estsh.i3plus.pojo.platform.bean.SysUser;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authc.*;
import org.apache.jasper.tagplugins.jstl.core.If;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
@ -48,95 +39,11 @@ import java.util.List;
@RequestMapping(PlatformConstWords.BASE_URL + "/auth")
public class AuthController extends CoreBaseController {
public static final Logger LOGGER = LoggerFactory.getLogger(DemoAuthController.class);
@Autowired
private ISystemLoginService systemLoginService;
@Autowired
private ISysUserService userService;
@Autowired
private ICoreTreeService coreTreeService;
public static final Logger LOGGER = LoggerFactory.getLogger(AuthController.class);
@Autowired
private SysLocaleLanguageService localeLanguageService;
@GetMapping(value="/login")
@ApiOperation(value="登陆",notes="登陆")
public ResultBean login(HttpServletRequest request, String loginName, String loginPwd, String languageCode){
LOGGER.info("用户登陆 loginName:{} loginPwd:{} languageCode:{}",loginName,loginPwd,languageCode);
ResultBean result = null;
try {
ValidatorBean.checkNotNull(loginName,"用户名不能为空");
ValidatorBean.checkNotNull(loginPwd,"密码不能为空");
ValidatorBean.checkNotNull(languageCode,"语言不能为空");
SessionUser user = userService.queryUserLogin(loginName,loginPwd,languageCode);
String redisKey = CommonConstWords.USER_LOGIN_ERROR + "_" + user.getUser().getId();
redisCore.deleteKey(redisKey);
LOGGER.info("会员登陆:{}",user);
AuthUtil.setSessionObject("languageCode",languageCode);
result = new ResultBean(true, AuthUtil.getSession().getId().toString(), AuthUtil.getSessionUser());
result.setUrl("/");
// 记录登录记录
recordSysUserLog(user.getUser().getUserInfoId(), loginName,CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS.getValue(), request);
} catch (IncorrectCredentialsException e) {
// 密码错误
Integer num = systemLoginService.doLoginPasswordError(loginName);
num = CommonConstWords.USER_LOGIN_ERROR_MAX_NUM - num;
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD);
if(num == 0){
result.setErrorMsg("密码输入错误。用户已被锁定请联系管理员!");
}else {
result.setErrorMsg("密码输入错误。再输入错误"+ num +"次,用户将被锁定。");
}
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD.getValue(), request);
} catch (CredentialsException e) {
// 用户名或密码错误
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD.getValue(), request);
} catch (LockedAccountException e) {
// 账号已锁定
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_LOCKING);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.USER_LOGIN_LOCKING.getValue(), request);
} catch (UnknownAccountException e) {
// 用户信息不存在
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_INFO_NULL);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.USER_INFO_NULL.getValue(), request);
} catch (AuthenticationException e) {
// 系统异常
result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
result.setErrorMsg(e.getMessage());
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), request);
} catch (ImppBusiException e) {
result = ResultBean.fail(e);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), request);
} catch (Exception e) {
result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode())
.setErrorMsg(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription());
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), request);
}
return result;
}
/**
*
* @return
@ -187,22 +94,71 @@ public class AuthController extends CoreBaseController {
}
}
@GetMapping(value="/find-menu-tree")
@ApiOperation(value="获取登录用户功能权限信息",notes="获取当前登录用户的权限信息")
public ResultBean getUserMenuTree(){
try {
List<SysMenu> listTree = coreTreeService.findSysMenuTreeByParentId(-1);
@GetMapping(value="/menu/find-home-list")
@ApiOperation(value="获取登录用户功能权限信息",notes="获取首页权限信息")
public ResultBean findHomeList(){
List<SysMenu> list = new ArrayList<>();
SysUser user = getSessionUser().getUser();
if(user != null){
List<SysMenu> menus = user.getMenuList();
if(menus != null){
for (SysMenu menu : menus) {
if(menu.getMenuType().equals(CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue())
&& menu.getParentId().longValue() != -1){
list.add(menu);
}
}
}
}
return ResultBean.success("查询部门树成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(listTree);
}catch(ImppBusiException busExcep){
LOGGER.error(busExcep.getErrorMsg() + "{}",busExcep.getErrorDetail(),busExcep);
return ResultBean.fail(busExcep);
}catch(Exception e){
LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + "{}",e.getMessage(),e);
return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
if(list != null && list.size() > 0){
// 内存排序 Sort 降序 code 升序
list.sort(Comparator.comparing(SysMenu::getMenuSort).reversed().thenComparing(SysMenu::getMenuCode));
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list);
}else {
return ResultBean.fail("操作失败").setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()).setErrorMsg("菜单信息不存在");
}
}
@GetMapping(value="/menu/find-module-list/{parentId}")
@ApiOperation(value="获取登录用户功能权限信息",notes="获取首页权限信息")
public ResultBean findModuleList(@PathVariable("parentId") String parentId){
List<SysMenu> list = new ArrayList<>();
SysUser user = getSessionUser().getUser();
if(user != null){
List<SysMenu> menus = user.getMenuList();
if(menus != null){
// 封装模块信息
for (SysMenu menu : menus) {
if(menu.getMenuType().equals(CommonEnumUtil.METHOD_LEVEL.MODULE.getValue())
&& parentId.equals(menu.getParentId().toString())){
// 封装 功能信息
for (SysMenu sysMenu : menus) {
if(sysMenu.getMenuType().equals(CommonEnumUtil.METHOD_LEVEL.METHOD.getValue())
&& menu.getId().longValue() == sysMenu.getParentId().longValue()){
menu.getChildList().add(sysMenu);
}
}
menu.getChildList().sort(Comparator.comparing(SysMenu::getMenuSort).reversed().thenComparing(SysMenu::getMenuCode));
list.add(menu);
}
}
}
}
if(list != null && list.size() > 0){
// 内存排序 Sort 降序 code 升序
list.sort(Comparator.comparing(SysMenu::getMenuSort).reversed().thenComparing(SysMenu::getMenuCode));
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list);
}else {
return ResultBean.fail("操作失败").setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()).setErrorMsg("菜单信息不存在");
}
}
@PutMapping(value = "/update-language")
@ -226,18 +182,26 @@ public class AuthController extends CoreBaseController {
}
private void recordSysUserLog(Long userId, String username,Integer userLoginStatus,HttpServletRequest request){
SysLogUserLogin log = new SysLogUserLogin();
log.setUserId(userId);
log.setLogLoginName(username);
log.setLogLoginStatus(userLoginStatus);
log.setLogLoginBrowser(ServletRequestTool.getRequestBrowser(request));
log.setLogLoginHost(ServletRequestTool.getRequestHost(request));
log.setLogLoginPlatform(CommonEnumUtil.LOG_LOGIN_PLATFORM.descOf(ServletRequestTool.getRequestOs(request)));
log.setLogLoginDateTime(TimeTool.getNowTime(true));
userService.insertSysLogUserLogin(log);
}
// /**
// * 根据递归获取所有父节点 ID 获取所有 菜单
// * @param list
// * @param parentId
// * @return
// */
// private List<SysMenu> findSysMenuChildList(List<SysMenu> list,Long parentId){
// List<SysMenu> result = new ArrayList<>();
// if(list != null && list.size() > 0){
// for (SysMenu menu : list) {
// if(menu.getParentId().equals(parentId)){
// result.add(menu);
// }
//
// List<SysMenu> childList = findSysMenuChildList(menu.getChildList(), parentId);
// result.addAll( childList);
// }
// }
// return result;
// }
}

@ -0,0 +1,162 @@
package cn.estsh.i3plus.core.apiservice.controller.base;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService;
import cn.estsh.i3plus.core.api.iservice.busi.ICoreTreeService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLocaleLanguageService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.core.apiservice.controller.DemoAuthController;
import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.SysLocaleLanguageService;
import cn.estsh.i3plus.platform.common.tool.ServletRequestTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysLogUserLogin;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
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.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authc.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : Adair Peng
* @CreateDate : 2018-12-19 15:31
* @Modify:
**/
@RestController
@Api(description = "非权限服务")
@RequestMapping("/impp/white")
public class WhiteController extends CoreBaseController {
public static final Logger LOGGER = LoggerFactory.getLogger(WhiteController.class);
@Autowired
private ISysLocaleLanguageService sysLocaleLanguageService;
@Autowired
private ISystemLoginService systemLoginService;
@Autowired
private ISysUserService userService;
@GetMapping(value = "/sys-locale-language/list")
@ApiOperation(value = "查询全部系统语言",notes = "查询全部系统语言")
public ResultBean listSysLocaleLanguage(){
try {
List sysLocaleLanguageList = sysLocaleLanguageService.listSysLocaleLanguage();
return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(sysLocaleLanguageList);
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping(value="/auth/login")
@ApiOperation(value="登陆",notes="登陆")
public ResultBean login(HttpServletRequest request, String loginName, String loginPwd, String languageCode){
LOGGER.info("用户登陆 loginName:{} loginPwd:{} languageCode:{}",loginName,loginPwd,languageCode);
ResultBean result = null;
try {
ValidatorBean.checkNotNull(loginName,"用户名不能为空");
ValidatorBean.checkNotNull(loginPwd,"密码不能为空");
ValidatorBean.checkNotNull(languageCode,"语言不能为空");
SessionUser user = userService.queryUserLogin(loginName,loginPwd,languageCode);
String redisKey = CommonConstWords.USER_LOGIN_ERROR + "_" + user.getUser().getId();
redisCore.deleteKey(redisKey);
LOGGER.info("会员登陆:{}",user);
AuthUtil.setSessionObject("languageCode",languageCode);
result = new ResultBean(true, AuthUtil.getSession().getId().toString(), AuthUtil.getSessionUser());
result.setUrl("/");
// 记录登录记录
recordSysUserLog(user.getUser().getUserInfoId(), loginName,CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS.getValue(), request);
} catch (IncorrectCredentialsException e) {
// 密码错误
Integer num = systemLoginService.doLoginPasswordError(loginName);
num = CommonConstWords.USER_LOGIN_ERROR_MAX_NUM - num;
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD);
if(num == 0){
result.setErrorMsg("密码输入错误。用户已被锁定请联系管理员!");
}else {
result.setErrorMsg("密码输入错误。再输入错误"+ num +"次,用户将被锁定。");
}
// 记录登录记录
recordSysUserLog(null, loginName, CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD.getValue(), request);
} catch (CredentialsException e) {
// 用户名或密码错误
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD.getValue(), request);
} catch (LockedAccountException e) {
// 账号已锁定
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_LOCKING);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.USER_LOGIN_LOCKING.getValue(), request);
} catch (UnknownAccountException e) {
// 用户信息不存在
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_INFO_NULL);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.USER_INFO_NULL.getValue(), request);
} catch (AuthenticationException e) {
// 系统异常
result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
result.setErrorMsg(e.getMessage());
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), request);
} catch (ImppBusiException e) {
result = ResultBean.fail(e);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), request);
} catch (Exception e) {
result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode())
.setErrorMsg(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription());
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), request);
}
return result;
}
private void recordSysUserLog(Long userId, String username,Integer userLoginStatus,HttpServletRequest request){
SysLogUserLogin log = new SysLogUserLogin();
log.setUserId(userId);
log.setLogLoginName(username);
log.setLogLoginStatus(userLoginStatus);
log.setLogLoginBrowser(ServletRequestTool.getRequestBrowser(request));
log.setLogLoginHost(ServletRequestTool.getRequestHost(request));
log.setLogLoginPlatform(CommonEnumUtil.LOG_LOGIN_PLATFORM.descOf(ServletRequestTool.getRequestOs(request)));
log.setLogLoginDateTime(TimeTool.getNowTime(true));
userService.insertSysLogUserLogin(log);
}
}

@ -146,11 +146,14 @@ public class SysDepartmentController extends CoreBaseController {
SysDepartment department = departmentService.getSysDepartmentById(Long.parseLong(id));
ValidatorBean.beginValid(department);
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultObject(department);
if(department != null){
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(department);
}else {
return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode());
}
} catch (ImppBusiException busExcep) {
LOGGER.error(busExcep.getErrorMsg() + "{}", busExcep.getErrorDetail(), busExcep);
return ResultBean.fail(busExcep);

@ -150,11 +150,13 @@ public class SysMenuController extends CoreBaseController {
// 数据校验
ValidatorBean.checkNotNull(id, "功能id 不能为空");
SysMenu sysMenu = sysMenuService.getSysMenuById(Long.parseLong(id));
SysMenu menu = sysMenuService.getSysMenuById(Long.parseLong(id));
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultObject(sysMenu);
if(menu != null){
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(menu);
}else {
return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode());
}
} catch (ImppBusiException busExcep) {
LOGGER.error(busExcep.getErrorMsg() + "{}", busExcep.getErrorDetail(), busExcep);
return ResultBean.fail(busExcep);

@ -117,7 +117,7 @@ public class SysRoleController extends CoreBaseController{
} catch (ImppBusiException busExcep) {
LOGGER.error(busExcep.getErrorMsg() + "{}", busExcep.getErrorDetail(), busExcep);
return ResultBean.fail(busExcep);
} catch (Exception e) {
} catch (Exception e) {
LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + "{}", e.getMessage(), e);
return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
}
@ -168,9 +168,11 @@ public class SysRoleController extends CoreBaseController{
SysRole role = sysRoleService.getSysRoleById(Long.parseLong(id));
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultObject(role);
if(role != null){
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(role);
}else {
return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode());
}
} catch (ImppBusiException busExcep) {
LOGGER.error(busExcep.getErrorMsg() + "{}", busExcep.getErrorDetail(), busExcep);
return ResultBean.fail(busExcep);

@ -187,13 +187,15 @@ public class SysUserInfoController extends CoreBaseController{
try{
ValidatorBean.checkIsNumber(id, "id 不能为空");
SysUserInfo SysUserInfo = sysUserInfoService.getSysUserInfoById(Long.parseLong(id));
ValidatorBean.beginValid(SysUserInfo)
.notNull("id",SysUserInfo.getId());
SysUserInfo userInfo = sysUserInfoService.getSysUserInfoById(Long.parseLong(id));
ValidatorBean.beginValid(userInfo)
.notNull("id",userInfo.getId());
return ResultBean.success("查询成功")
.setResultObject(SysUserInfo)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
if(userInfo != null){
return ResultBean.success("查询成功").setResultObject(userInfo).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}else {
return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode());
}
}catch(ImppBusiException busExcep){
LOGGER.error(busExcep.getErrorMsg() + "{}",busExcep.getErrorDetail(),busExcep);
return ResultBean.fail(busExcep);

@ -0,0 +1,56 @@
package cn.estsh.i3plus.core.apiservice.dao;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : Adair Peng
* @CreateDate : 2018-12-18 13:38
* @Modify:
**/
public interface ISysMenuDao {
/**
* ID
* HQL:
* select sm.*
* from sys_menu as sm
* left join sys_ref_role_menu as srrm on sm.id = srrm.menu_id and role_id = 200001
* where sm.parent_id = 100003
* @param parentId
* @param roleId
* @return
*/
// @Modifying
// @Query(" select sm from SysMenu as sm " +
// "left join SysRefRoleMenu as srrm on sm.id = srrm.menuId and srrm.roleId =:roleId " +
// "where sm.parentId =:parentId")
List<SysMenu> findByParentIdAndRoleId(Long parentId, Long roleId);
/**
* ID
* HQL:
* select sm.*
* from sys_menu as sm
* left join sys_ref_role_menu as srrm on sm.id = srrm.menu_id
* left join sys_ref_user_role as srur on srur.role_id = srrm.role_id and srur.user_id = 400001
* where sm.parent_id = 100003
* @param parentId
* @param userId
* @return
*/
// @Query(" select sm from SysMenu as sm " +
// "left join SysRefRoleMenu as srrm on sm.id = srrm.menuId " +
// "left join SysRefUserRole as srur on sm.roleId = srrm.roleId and srur.userId =:userId " +
// "where sm.parentId =:parentId")
List<SysMenu> findByParentIdAndUserId(Long parentId, Long userId);
}

@ -35,6 +35,13 @@ public interface IUserPermissionDao {
List<SysMenu> findSysMenuByUser(SysUser user);
/**
* Tree
* @param user
* @return
*/
List<SysMenu> findSysMenuByUserTree(SysUser user);
/**
*
* @param userInfo
* @return

@ -0,0 +1,55 @@
package cn.estsh.i3plus.core.apiservice.daoimpl;
import cn.estsh.i3plus.core.apiservice.dao.ISysMenuDao;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : Adair Peng
* @CreateDate : 2018-12-18 15:39
* @Modify:
**/
@Service
public class SysMenuDaoImpl implements ISysMenuDao {
public static final Logger LOGGER = LoggerFactory.getLogger(SysMenuDaoImpl.class);
@Autowired
private EntityManager entityManager;
@Override
public List<SysMenu> findByParentIdAndRoleId(Long parentId, Long roleId) {
LOGGER.info(" 根据角色ID 查询权限 parentId:{} roleId:{}",parentId,roleId);
String hql = " select sm from SysMenu as sm " +
"left join SysRefRoleMenu as srrm on sm.id = srrm.menuId and srrm.roleId =:roleId " +
"where sm.parentId =:parentId";
return entityManager.createQuery(hql)
.setParameter("parentId", parentId)
.setParameter("roleId", roleId)
.getResultList();
}
@Override
public List<SysMenu> findByParentIdAndUserId(Long parentId, Long userId) {
LOGGER.info(" 根据账号ID 查询权限 parentId:{} userId:{}",parentId,userId);
String hql = " select sm from SysMenu as sm " +
"left join SysRefRoleMenu as srrm on srrm.menuId = sm.id " +
"left join SysRefUserRole as srur on srur.roleId = srrm.roleId and srur.userId =:userId " +
"where sm.parentId =:parentId";
return entityManager.createQuery(hql)
.setParameter("parentId", parentId)
.setParameter("userId", userId)
.getResultList();
}
}

@ -66,6 +66,11 @@ public class UserPermissionDaoImpl implements IUserPermissionDao {
}
@Override
public List<SysMenu> findSysMenuByUserTree(SysUser user) {
return null;
}
@Override
public List<SysPosition> findPositionByUser(SysUserInfo userInfo) {
LOGGER.info(" 查询用户所有岗位 user id:{}", userInfo.getId());
String hql = "select p from SysRefUserPosition as rup " +

@ -1,6 +1,7 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ICoreTreeService;
import cn.estsh.i3plus.core.apiservice.dao.ISysMenuDao;
import cn.estsh.i3plus.pojo.base.bean.BaseBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ModelEnumUtil;
@ -25,6 +26,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @Description : Core
@ -50,6 +52,9 @@ public class CoreTreeService implements ICoreTreeService {
@Autowired
private SysMenuRepository menuRDao;
@Autowired
private ISysMenuDao sysMenuDao;
@Override
@ApiOperation(value = "获取岗位树",notes = "根据父节点获取岗位树集合")
public List<SysPosition> findSysPositionTreeByParentId(long parentId) {
@ -257,82 +262,62 @@ public class CoreTreeService implements ICoreTreeService {
}
@Override
@ApiOperation(value = "父节点检查",notes = "检查菜单的父节点是否是当前节点的子节点")
public void doValidatorSysMenuParentId(SysMenu menu) {
findSysMenuChildrenTreePack(menu,0);
validatorSysMenuParentId(menu.getChildList(),menu.getParentId());
}
private void validatorSysPositionParentId(List<SysPosition> list, Long parentId){
if(list != null && list.size() > 0){
for (SysPosition position : list) {
// 判断子集的ID 是否是 父节点ID
if(position.getId().equals(parentId) || position.getId().equals(position.getParentId())){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上级岗位不能为子岗位")
.setErrorSolution("请重新操作")
.build();
}
public void findSysMenuChildrenTreeByRoleIdPack(SysMenu parent, Long roleId, int step) {
++step;
List<SysMenu> childList = sysMenuDao.findByParentIdAndRoleId(parent.getId(),roleId);
validatorSysPositionParentId(position.getChildList(),parentId);
if (childList.size() > 0) { //说明有子集
for (SysMenu child : childList) {
findSysMenuChildrenTreeByRoleIdPack(child, roleId,step);
}
}
LOGGER.info("【{}】包含子集:{},步长:{}", parent.getName(), childList.size(), step);
parent.setChildList(childList);
}
private void validatorSysDepartmentParentId(List<SysDepartment> list, Long parentId){
if(list != null && list.size() > 0){
for (SysDepartment department : list) {
// 判断子集的ID 是否是 父节点ID
if(department.getId().equals(parentId) || department.getId().equals(department.getParentId())){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上级部门不能为子部门")
.setErrorSolution("请重新操作")
.build();
}
@Override
public void findSysMenuChildrenTreeByUserIdPack(SysMenu parent, Long userId, int step) {
++step;
List<SysMenu> childList = sysMenuDao.findByParentIdAndUserId(parent.getId(),userId);
validatorSysDepartmentParentId(department.getChildList(),parentId);
if (childList.size() > 0) { //说明有子集
for (SysMenu child : childList) {
findSysMenuChildrenTreeByUserIdPack(child, userId,step);
}
}
LOGGER.info("【{}】包含子集:{},步长:{}", parent.getName(), childList.size(), step);
parent.setChildList(childList);
}
private void validatorSysOrganizeParentId(List<SysOrganize> list, Long parentId){
if(list != null && list.size() > 0){
for (SysOrganize organize : list) {
// 判断子集的ID 是否是 父节点ID
if(organize.getId().equals(parentId) || organize.getId().equals(organize.getParentId())){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上级部门不能为子部门")
.setErrorSolution("请重新操作")
.build();
@Override
public void findMemSysMenuChildrenTreeByUserIdPack(SysMenu parent,List<SysMenu> cacheMenuList, int step) {
++step;
List<SysMenu> childList = new ArrayList<>();
if(cacheMenuList != null && cacheMenuList.size() > 0){
for (SysMenu menu : cacheMenuList) {
if(menu.getParentId().equals(parent.getId())){
childList.add(menu);
}
validatorSysOrganizeParentId(organize.getChildList(),parentId);
}
}
}
private void validatorSysMenuParentId(List<SysMenu> list, Long parentId){
if(list != null && list.size() > 0){
for (SysMenu menu : list) {
// 判断子集的ID 是否是 父节点ID
if(menu.getId().equals(parentId) || menu.getId().equals(menu.getParentId())){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上级部门不能为子部门")
.setErrorSolution("请重新操作")
.build();
}
validatorSysMenuParentId(menu.getChildList(),parentId);
if (childList.size() > 0) { //说明有子集
for (SysMenu child : childList) {
findMemSysMenuChildrenTreeByUserIdPack(child,cacheMenuList,step);
}
}
LOGGER.info("【{}】包含子集:{},步长:{}", parent.getName(), childList.size(), step);
parent.setChildList(childList);
}
@Override
@ApiOperation(value = "父节点检查",notes = "检查菜单的父节点是否是当前节点的子节点")
public void doValidatorSysMenuParentId(SysMenu menu) {
findSysMenuChildrenTreePack(menu,0);
validatorSysMenuParentId(menu.getChildList(),menu.getParentId());
}
@Override
@ -448,4 +433,77 @@ public class CoreTreeService implements ICoreTreeService {
parent.setChildList(childList);
}
}
private void validatorSysPositionParentId(List<SysPosition> list, Long parentId){
if(list != null && list.size() > 0){
for (SysPosition position : list) {
// 判断子集的ID 是否是 父节点ID
if(position.getId().equals(parentId) || position.getId().equals(position.getParentId())){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上级岗位不能为子岗位")
.setErrorSolution("请重新操作")
.build();
}
validatorSysPositionParentId(position.getChildList(),parentId);
}
}
}
private void validatorSysDepartmentParentId(List<SysDepartment> list, Long parentId){
if(list != null && list.size() > 0){
for (SysDepartment department : list) {
// 判断子集的ID 是否是 父节点ID
if(department.getId().equals(parentId) || department.getId().equals(department.getParentId())){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上级部门不能为子部门")
.setErrorSolution("请重新操作")
.build();
}
validatorSysDepartmentParentId(department.getChildList(),parentId);
}
}
}
private void validatorSysOrganizeParentId(List<SysOrganize> list, Long parentId){
if(list != null && list.size() > 0){
for (SysOrganize organize : list) {
// 判断子集的ID 是否是 父节点ID
if(organize.getId().equals(parentId) || organize.getId().equals(organize.getParentId())){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上级部门不能为子部门")
.setErrorSolution("请重新操作")
.build();
}
validatorSysOrganizeParentId(organize.getChildList(),parentId);
}
}
}
private void validatorSysMenuParentId(List<SysMenu> list, Long parentId){
if(list != null && list.size() > 0){
for (SysMenu menu : list) {
// 判断子集的ID 是否是 父节点ID
if(menu.getId().equals(parentId) || menu.getId().equals(menu.getParentId())){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上级部门不能为子部门")
.setErrorSolution("请重新操作")
.build();
}
validatorSysMenuParentId(menu.getChildList(),parentId);
}
}
}
}

@ -176,6 +176,12 @@ public class SysMenuService implements ISysMenuService {
}
@Override
@ApiOperation(value = "查询菜单信息",notes = "根据父节点 ID 查询所有菜单信息")
public List<SysMenu> findSysMenuByParentId(Long parentId) {
return sysMenuRDao.findByProperty(new String[]{"parentId"},new Object[]{parentId});
}
@Override
@ApiOperation(value = "查询菜单信息",notes = "根据ID查询菜单信息")
public SysMenu getSysMenuById(Long id) {
LOGGER.info("系统功能 SYS_MENU find id:{}", id);

@ -1,10 +1,12 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ICoreTreeService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserInfoService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.EncryptTool;
import cn.estsh.i3plus.platform.common.tool.SerializeTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -30,8 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
/**
* @Description :
@ -84,6 +85,12 @@ public class SysUserService implements ISysUserService {
@Autowired
private SysLogUserLoginRepository logUserLoginRDao;
@Autowired
private SysMenuRepository sysMenuRDao;
@Autowired
private ICoreTreeService coreTreeService;
@Override
@ApiOperation(value = "用户登录", notes = "用户登录功能实现")
public SessionUser queryUserLogin(String loginName, String password, String languageCode) throws AuthenticationException {
@ -454,6 +461,7 @@ public class SysUserService implements ISysUserService {
packSysUserRole(sessionUser,user); //封装用户角色信息
packSysUserMenu(sessionUser,user); //封装用户功能信息
// packSysUserMenuTree(sessionUser, user); //封装用户功能Tree信息
packSysUserDepartment(sessionUser,userInfo); //封装用户部门信息
packSysUserPosition(sessionUser,userInfo); //封装用户岗位信息
@ -514,6 +522,33 @@ public class SysUserService implements ISysUserService {
sessionUser.setUser(user);
}
// /**
// * 封装用户 菜单信息
// * @param sessionUser
// * @param user
// * @return
// */
// public List<SysMenu> packSysUserMenuTree(SessionUser sessionUser, SysUser user){
// List<SysMenu> list = null;
// try {
// LOGGER.debug("平台用户 SYS_USER user id :{}", user.getUserInfoId());
// list = getSysMenuRootIds(user.getMenuList());
// List<SysMenu> copyList = (List<SysMenu>) SerializeTool.deserialization(SerializeTool.serialization(user.getMenuList()));
//
// if(list != null && list.size() > 0){
// for (SysMenu menu : list) {
// coreTreeService.findMemSysMenuChildrenTreeByUserIdPack(menu,copyList,0);
//// coreTreeService.findSysMenuChildrenTreeByUserIdPack(menu,user.getId(),0);
// }
// }
// }catch (Exception e){
// LOGGER.error(" SysUser Peck Menu Tree information Error userId : {} Exception Message : {} " ,user.getUserInfoId(),e.getMessage());
// e.printStackTrace();
// }
//
// return list;
// }
/**
*
* @param sessionUser
@ -574,4 +609,41 @@ public class SysUserService implements ISysUserService {
}
}
/**
* Root Id
* @param menus
* @return
*/
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){
for (SysMenu sysMenu : menus) {
if(sysMenu.getId().longValue() == menu.getParentId().longValue()){
parentMenu = sysMenu;
}
}
}
map.put(menu.getParentId(),parentMenu);
}
// 封装返回对象
for (Long parentId : map.keySet()) {
if(map.get(parentId) == null){
for (SysMenu sysMenu : menus) {
if(sysMenu.getParentId().longValue() == parentId.longValue()){
result.add(sysMenu);
}
}
}
}
return result;
}
}

@ -26,7 +26,7 @@ filter.shiro.admin.loginuri = /salogin
filter.shiro.saadmin.loginuri = /salogin
#用户授权过滤路径
filter.shiro.user.filteruri = /operate/*
filter.shiro.user.filteruri = /impp/operate/**
#用户授权过滤路径
filter.shiro.admin.filteruri = /adoperate/*
#用户授权过滤路径

@ -21,7 +21,7 @@ filter.shiro.admin.loginuri = /salogin
filter.shiro.saadmin.loginuri = /salogin
#用户授权过滤路径
filter.shiro.user.filteruri = /operate/*
filter.shiro.user.filteruri = /impp/**
#用户授权过滤路径
filter.shiro.admin.filteruri = /adoperate/*
#用户授权过滤路径

@ -26,7 +26,7 @@ filter.shiro.admin.loginuri = /salogin
filter.shiro.saadmin.loginuri = /salogin
#用户授权过滤路径
filter.shiro.user.filteruri = /operate/*
filter.shiro.user.filteruri = /impp/**
#用户授权过滤路径
filter.shiro.admin.filteruri = /adoperate/*
#用户授权过滤路径

Loading…
Cancel
Save