Commit 143d37ee authored by trumansdo's avatar trumansdo
Browse files

更换至beetlsql3最新版本

parent 398a4c6b
package com.ibeetl.admin.core.service; package com.ibeetl.admin.core.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.admin.core.dao.CoreDictDao;
import com.ibeetl.admin.core.entity.CoreDict;
import com.ibeetl.admin.core.util.enums.DelFlagEnum;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import org.beetl.sql.core.mapper.internal.LambdaQueryAmi;
import org.beetl.sql.core.query.LambdaQuery;
import org.beetl.sql.core.query.Query; import org.beetl.sql.core.query.Query;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.ibeetl.admin.core.dao.CoreDictDao;
import com.ibeetl.admin.core.entity.CoreDict;
import com.ibeetl.admin.core.util.enums.DelFlagEnum;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
/** /**
......
package com.ibeetl.admin.core.service; package com.ibeetl.admin.core.service;
import static com.ibeetl.admin.core.util.HttpRequestLocal.ACCESS_CURRENT_ORG;
import static com.ibeetl.admin.core.util.HttpRequestLocal.ACCESS_CURRENT_USER;
import static com.ibeetl.admin.core.util.HttpRequestLocal.ACCESS_USER_ORGS;
import com.ibeetl.admin.core.dao.CoreFunctionDao; import com.ibeetl.admin.core.dao.CoreFunctionDao;
import com.ibeetl.admin.core.dao.CoreMenuDao; import com.ibeetl.admin.core.dao.CoreMenuDao;
...@@ -20,7 +17,7 @@ import com.ibeetl.admin.core.rbac.tree.FunctionItem; ...@@ -20,7 +17,7 @@ import com.ibeetl.admin.core.rbac.tree.FunctionItem;
import com.ibeetl.admin.core.rbac.tree.MenuItem; import com.ibeetl.admin.core.rbac.tree.MenuItem;
import com.ibeetl.admin.core.rbac.tree.OrgItem; import com.ibeetl.admin.core.rbac.tree.OrgItem;
import com.ibeetl.admin.core.util.FunctionBuildUtil; import com.ibeetl.admin.core.util.FunctionBuildUtil;
import com.ibeetl.admin.core.util.HttpRequestLocal; import com.ibeetl.admin.core.util.RequestContextThreadLocal;
import com.ibeetl.admin.core.util.MenuBuildUtil; import com.ibeetl.admin.core.util.MenuBuildUtil;
import com.ibeetl.admin.core.util.OrgBuildUtil; import com.ibeetl.admin.core.util.OrgBuildUtil;
import com.ibeetl.admin.core.util.PlatformException; import com.ibeetl.admin.core.util.PlatformException;
...@@ -34,6 +31,8 @@ import java.util.Set; ...@@ -34,6 +31,8 @@ import java.util.Set;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import org.beetl.sql.core.SQLManager; import org.beetl.sql.core.SQLManager;
import org.beetl.sql.core.engine.SQLPlaceholderST; import org.beetl.sql.core.engine.SQLPlaceholderST;
import org.beetl.sql.core.engine.template.BeetlTemplateEngine;
import org.beetl.sql.core.engine.template.SQLTemplateEngine;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
...@@ -88,9 +87,6 @@ public class CorePlatformService { ...@@ -88,9 +87,6 @@ public class CorePlatformService {
public static final String ACCESS_SUPPER_ADMIN = "admin"; public static final String ACCESS_SUPPER_ADMIN = "admin";
@Autowired
HttpRequestLocal httpRequestLocal;
@Autowired @Autowired
CoreRoleFunctionDao roleFunctionDao; CoreRoleFunctionDao roleFunctionDao;
...@@ -129,15 +125,21 @@ public class CorePlatformService { ...@@ -129,15 +125,21 @@ public class CorePlatformService {
public void init() { public void init() {
SQLPlaceholderST.textFunList.add("function"); SQLPlaceholderST.textFunList.add("function");
// sql语句里带有此函数来判断数据权限 SQLTemplateEngine sqlTemplateEngine = sqlManager.getSqlTemplateEngine();
sqlManager.getBeetl().getGroupTemplate().registerFunction("function", dataAccessFunction); if (sqlTemplateEngine instanceof BeetlTemplateEngine) {
sqlManager.getBeetl().getGroupTemplate().registerFunction("nextDay", new NextDayFunction()); BeetlTemplateEngine beetlTemplateEngine = (BeetlTemplateEngine) sqlTemplateEngine;
// sql语句里带有此函数来判断数据权限
beetlTemplateEngine.getBeetl().getGroupTemplate()
.registerFunction("function", dataAccessFunction);
beetlTemplateEngine.getBeetl().getGroupTemplate()
.registerFunction("nextDay", new NextDayFunction());
}
} }
public CoreUser getCurrentUser() { public CoreUser getCurrentUser() {
checkSession(); checkSession();
CoreUser user = (CoreUser) HttpRequestLocal.getSessionValue(ACCESS_CURRENT_USER); CoreUser user = RequestContextThreadLocal.getCurrentUser();
return user; return user;
} }
...@@ -146,7 +148,7 @@ public class CorePlatformService { ...@@ -146,7 +148,7 @@ public class CorePlatformService {
List<CoreOrg> orgs = this.getCurrentOrgs(); List<CoreOrg> orgs = this.getCurrentOrgs();
for (CoreOrg org : orgs) { for (CoreOrg org : orgs) {
if (org.getId().equals(orgId)) { if (org.getId().equals(orgId)) {
HttpRequestLocal.setSessionValue(ACCESS_CURRENT_ORG, org); RequestContextThreadLocal.setCurrentOrg(org);
} }
} }
} }
...@@ -154,38 +156,31 @@ public class CorePlatformService { ...@@ -154,38 +156,31 @@ public class CorePlatformService {
public Long getCurrentOrgId() { public Long getCurrentOrgId() {
checkSession(); checkSession();
CoreOrg org = (CoreOrg) HttpRequestLocal.getSessionValue(ACCESS_CURRENT_ORG); CoreOrg org = RequestContextThreadLocal.getCurrentOrg();
return org.getId(); return org.getId();
} }
public CoreOrg getCurrentOrg() { public CoreOrg getCurrentOrg() {
checkSession(); checkSession();
CoreOrg org = (CoreOrg) HttpRequestLocal.getSessionValue(ACCESS_CURRENT_ORG); CoreOrg org = RequestContextThreadLocal.getCurrentOrg();
return org; return org;
} }
public List<CoreOrg> getCurrentOrgs() { public List<CoreOrg> getCurrentOrgs() {
List<CoreOrg> orgs = (List<CoreOrg>) HttpRequestLocal.getSessionValue(ACCESS_USER_ORGS); List<CoreOrg> orgs = RequestContextThreadLocal.getUserOrgs();
return orgs; return orgs;
} }
protected void checkSession() { protected void checkSession() {
CoreOrg org = (CoreOrg) HttpRequestLocal.getSessionValue(ACCESS_CURRENT_ORG); CoreOrg org = RequestContextThreadLocal.getCurrentOrg();
if (org == null) { if (org == null) {
throw new PlatformException("会话过期,重新登录"); throw new PlatformException("会话过期,重新登录");
} }
} }
public void setLoginUser(CoreUser user, CoreOrg currentOrg, List<CoreOrg> orgs) {
HttpRequestLocal.setSessionValue(ACCESS_CURRENT_USER, user);
HttpRequestLocal.setSessionValue(ACCESS_CURRENT_ORG, currentOrg);
HttpRequestLocal.setSessionValue(ACCESS_USER_ORGS, orgs);
}
public MenuItem getMenuItem(long userId, long orgId) { public MenuItem getMenuItem(long userId, long orgId) {
CoreUser user = this.sysUserDao.unique(userId); CoreUser user = this.sysUserDao.unique(userId);
......
package com.ibeetl.admin.core.service; package com.ibeetl.admin.core.service;
import cn.hutool.core.lang.Assert;
import com.ibeetl.admin.core.dao.CoreRoleDao; import com.ibeetl.admin.core.dao.CoreRoleDao;
import com.ibeetl.admin.core.entity.CoreRole; import com.ibeetl.admin.core.entity.CoreRole;
import java.util.List; import java.util.List;
import java.util.Objects;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.beetl.sql.core.query.Query; import org.beetl.sql.core.query.Query;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -19,19 +22,25 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -19,19 +22,25 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional @Transactional
public class CoreRoleService extends CoreBaseService<CoreRole> { public class CoreRoleService extends CoreBaseService<CoreRole> {
@Autowired private CoreRoleDao roleDao; @Autowired
private CoreRoleDao roleDao;
/** /**
* * @param type
* @param type : R0 操作角色;R1 是工作流角色 * : R0 操作角色;R1 是工作流角色
*
* @author 一日看尽长安花 * @author 一日看尽长安花
*/ */
public List<CoreRole> getAllRoles(String type) { public List<CoreRole> getAllRoles(String type) {
return roleDao return roleDao
.getSQLManager() .getSQLManager()
.lambdaQuery(CoreRole.class) .lambdaQuery(CoreRole.class)
.andEq(CoreRole::getType, Query.filterEmpty(type)) .andEq(CoreRole::getType, Query.filterEmpty(type))
.select(); .select();
} }
public List<CoreRole> getRoles(Long userId) {
Assert.notNull(userId,"用户角色不能为空");
return roleDao.geRoles(userId);
}
} }
...@@ -5,17 +5,15 @@ import com.ibeetl.admin.core.dao.CoreOrgDao; ...@@ -5,17 +5,15 @@ import com.ibeetl.admin.core.dao.CoreOrgDao;
import com.ibeetl.admin.core.dao.CoreUserDao; import com.ibeetl.admin.core.dao.CoreUserDao;
import com.ibeetl.admin.core.dao.SQLManagerBaseDao; import com.ibeetl.admin.core.dao.SQLManagerBaseDao;
import com.ibeetl.admin.core.entity.CoreOrg; import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreRole;
import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.rbac.UserLoginInfo; import com.ibeetl.admin.core.rbac.UserLoginInfo;
import com.ibeetl.admin.core.service.param.CoreUserParam; import com.ibeetl.admin.core.service.param.CoreUserParam;
import com.ibeetl.admin.core.util.PlatformException; import com.ibeetl.admin.core.util.PlatformException;
import com.ibeetl.admin.core.util.enums.DelFlagEnum; import com.ibeetl.admin.core.util.enums.DelFlagEnum;
import com.ibeetl.admin.core.util.enums.GeneralStateEnum;
import com.ibeetl.admin.core.util.enums.StateTypeEnum; import com.ibeetl.admin.core.util.enums.StateTypeEnum;
import java.util.List; import java.util.List;
import java.util.Optional; import org.beetl.sql.core.page.PageResult;
import javax.validation.constraints.NotNull;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.query.Query; import org.beetl.sql.core.query.Query;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -24,15 +22,23 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -24,15 +22,23 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
@Transactional @Transactional
public class CoreUserService extends CoreBaseService { public class CoreUserService extends CoreBaseService {
@Autowired CoreUserDao userDao;
@Autowired CoreOrgDao orgDao; @Autowired
CoreUserDao userDao;
@Autowired PasswordEncryptService passwordEncryptService; @Autowired
CoreOrgDao orgDao;
@Autowired
CoreRoleService roleService;
@Autowired SQLManagerBaseDao sqlManagerBaseDao; @Autowired
PasswordEncryptService passwordEncryptService;
@Autowired
SQLManagerBaseDao sqlManagerBaseDao;
public UserLoginInfo login(String userName, String password) { public UserLoginInfo login(String userName, String password) {
CoreUser user = CoreUser user =
userDao userDao
.createLambdaQuery() .createLambdaQuery()
...@@ -53,10 +59,14 @@ public class CoreUserService extends CoreBaseService { ...@@ -53,10 +59,14 @@ public class CoreUserService extends CoreBaseService {
UserLoginInfo loginInfo = new UserLoginInfo(); UserLoginInfo loginInfo = new UserLoginInfo();
loginInfo.setOrgs(orgs); loginInfo.setOrgs(orgs);
loginInfo.setUser(user); loginInfo.setUser(user);
List<CoreRole> roles = roleService.getRoles(user.getId());
loginInfo.setRoles(roles);
return loginInfo; return loginInfo;
} }
public List<CoreOrg> getUserOrg(long userId, long orgId) { public List<CoreOrg> getUserOrg(long userId, long orgId) {
List<CoreOrg> orgs = orgDao.queryOrgByUser(userId); List<CoreOrg> orgs = orgDao.queryOrgByUser(userId);
if (orgs.isEmpty()) { if (orgs.isEmpty()) {
// 没有赋值任何角色,默认给一个所在部门 // 没有赋值任何角色,默认给一个所在部门
...@@ -71,8 +81,9 @@ public class CoreUserService extends CoreBaseService { ...@@ -71,8 +81,9 @@ public class CoreUserService extends CoreBaseService {
return userDao.getUserByRole(role); return userDao.getUserByRole(role);
} }
public PageQuery<CoreUser> getAllUsers(CoreUserParam coreUserParam) { public PageResult<CoreUser> getAllUsers(CoreUserParam coreUserParam) {
PageQuery<CoreUser> pageQuery =
PageResult<CoreUser> pageResult =
sqlManagerBaseDao sqlManagerBaseDao
.getSQLManager() .getSQLManager()
.lambdaQuery(CoreUser.class) .lambdaQuery(CoreUser.class)
...@@ -84,28 +95,34 @@ public class CoreUserService extends CoreBaseService { ...@@ -84,28 +95,34 @@ public class CoreUserService extends CoreBaseService {
.andEq(CoreUser::getJobType1, Query.filterNull(coreUserParam.getJobType1())) .andEq(CoreUser::getJobType1, Query.filterNull(coreUserParam.getJobType1()))
.andEq(CoreUser::getState, Query.filterNull(coreUserParam.getState())) .andEq(CoreUser::getState, Query.filterNull(coreUserParam.getState()))
.page(coreUserParam.getPage(), coreUserParam.getLimit()); .page(coreUserParam.getPage(), coreUserParam.getLimit());
return pageQuery; return pageResult;
} }
public CoreUser getUserByCode(String userName) { public CoreUser getUserByCode(String userName) {
CoreUser user = new CoreUser(); CoreUser user = new CoreUser();
user.setCode(userName); user.setCode(userName);
return userDao.templateOne(user); return userDao.templateOne(user);
} }
public void update(CoreUser user) { public void update(CoreUser user) {
userDao.updateById(user); userDao.updateById(user);
} }
public CoreOrg getOrgById(Long orgId) { public CoreOrg getOrgById(Long orgId) {
return orgDao.unique(orgId); return orgDao.unique(orgId);
} }
public CoreUser getUserById(Long userId) { public CoreUser getUserById(Long userId) {
return userDao.unique(userId); return userDao.unique(userId);
} }
public List<String> getOrgCode(List<Long> orgIds) { public List<String> getOrgCode(List<Long> orgIds) {
return orgDao.queryAllOrgCode(orgIds); return orgDao.queryAllOrgCode(orgIds);
} }
} }
package com.ibeetl.admin.core.service; package com.ibeetl.admin.core.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Assert;
import com.ibeetl.admin.core.dao.CoreFunctionDao; import com.ibeetl.admin.core.dao.CoreFunctionDao;
import com.ibeetl.admin.core.dao.CoreRoleDao; import com.ibeetl.admin.core.dao.CoreRoleDao;
import com.ibeetl.admin.core.entity.CoreRoute; import com.ibeetl.admin.core.entity.CoreRoute;
import com.ibeetl.admin.core.entity.CoreUserRole; import com.ibeetl.admin.core.entity.CoreUserRole;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -21,11 +21,14 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -21,11 +21,14 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional @Transactional
public class RoleRoutesElService { public class RoleRoutesElService {
@Autowired private CoreFunctionDao coreFunctionDao; @Autowired
private CoreFunctionDao coreFunctionDao;
@Autowired private CoreRoleDao coreRoleDao; @Autowired
private CoreRoleDao coreRoleDao;
public List<Long> getAllRoleIds(Long userId, Long orgId) { public List<Long> getAllRoleIds(Long userId, Long orgId) {
return coreRoleDao.getSQLManager().lambdaQuery(CoreUserRole.class).andEq("user_id", userId) return coreRoleDao.getSQLManager().lambdaQuery(CoreUserRole.class).andEq("user_id", userId)
.andEq("org_id", orgId).select(Long.class, "role_id").stream() .andEq("org_id", orgId).select(Long.class, "role_id").stream()
.distinct() .distinct()
...@@ -33,54 +36,40 @@ public class RoleRoutesElService { ...@@ -33,54 +36,40 @@ public class RoleRoutesElService {
} }
/** /**
*
* 前端路由映射表中单个路由映射全部具有的信息: * 前端路由映射表中单个路由映射全部具有的信息:
* { <br/> * { <br/>
* "path": "/profile", <br/> * "path": "/profile", <br/>
* "component": "Layout", <br/> * "component": "Layout", <br/>
* "redirect": "/profile/index", <br/> * "redirect": "/profile/index", <br/>
* "hidden": true, <br/> * "hidden": true, <br/>
* "alwaysShow": true, <br/> * "alwaysShow": true, <br/>
* "name": "router-name", <br/> * "name": "router-name", <br/>
* "meta": { <br/> * "meta": { <br/>
* "noCache": true, <br/> * "noCache": true, <br/>
* "affix": true, <br/> * "affix": true, <br/>
* "breadcrumb": false, <br/> * "breadcrumb": false, <br/>
* "activeMenu": "/example/list" <br/> * "activeMenu": "/example/list" <br/>
* }, <br/> * }, <br/>
* "children": [] <br/> * "children": [] <br/>
* } <br/> * } <br/>
* 后端路由表中单个路由应该具有的信息: <br/> * 后端路由表中单个路由应该具有的信息: <br/>
* { <br/> * { <br/>
* "path": "/profile", <br/> * "path": "/profile", <br/>
* "name": "router-name", <br/> * "name": "router-name", <br/>
* "meta": { <br/> * "meta": { <br/>
* "title": "Profile", <br/> * "title": "Profile", <br/>
* "roles": ["admin", "editor"], <br/> * "roles": ["admin", "editor"], <br/>
* "icon": "user" <br/> * "icon": "user" <br/>
* }, <br/> * }, <br/>
* "children": [] <br/> * "children": [] <br/>
* } <br/> * } <br/>
* *
* @return 路由表格式 * @return 路由表格式
* */ */
public List<CoreRoute> getRoutes() { public List<CoreRoute> getRoutes(List<Long> roleIds) {
List<CoreRoute> routesList = coreFunctionDao.getAllRoutes();
/*Map<Long, List<Long>> roleIdList = Assert.notEmpty(roleIds,"角色id不能为空");
routesList.stream() List<CoreRoute> routesList = coreFunctionDao.getAllRoutes(roleIds);
.collect(
Collectors.groupingBy(
CoreRoute::getId,
Collectors.mapping(
coreRoute -> Convert.toLong(coreRoute.getTails().get("roleId")),
Collectors.toList())));
routesList = routesList.stream().distinct().sorted().collect(Collectors.toList());
for (CoreRoute coreRoute : routesList) {
coreRoute
.getMeta()
.getRoles()
.addAll(CollUtil.<Long>removeNull(roleIdList.get(coreRoute.getId())));
}*/
CoreRoute root = new CoreRoute(); CoreRoute root = new CoreRoute();
root.setId(0L); root.setId(0L);
buildRoutesTree(root, routesList); buildRoutesTree(root, routesList);
...@@ -89,12 +78,9 @@ public class RoleRoutesElService { ...@@ -89,12 +78,9 @@ public class RoleRoutesElService {
/** /**
* 深度优先算法递归构建路由表 * 深度优先算法递归构建路由表
*
* @param root
* @param allRoutes
* @return
*/ */
private void buildRoutesTree(CoreRoute root, @NotNull List<CoreRoute> allRoutes) { private void buildRoutesTree(CoreRoute root, @NotNull List<CoreRoute> allRoutes) {
if (CollUtil.isEmpty(allRoutes)) { if (CollUtil.isEmpty(allRoutes)) {
return; return;
} }
...@@ -110,4 +96,5 @@ public class RoleRoutesElService { ...@@ -110,4 +96,5 @@ public class RoleRoutesElService {
buildRoutesTree(rootChildrenList.get(i), allRoutes); buildRoutesTree(rootChildrenList.get(i), allRoutes);
} }
} }
} }
...@@ -5,7 +5,6 @@ import com.ibeetl.admin.core.util.enums.StateTypeEnum; ...@@ -5,7 +5,6 @@ import com.ibeetl.admin.core.util.enums.StateTypeEnum;
import com.ibeetl.admin.core.web.query.PageParam; import com.ibeetl.admin.core.web.query.PageParam;
import java.util.Date; import java.util.Date;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
@Data @Data
public class CoreUserParam extends PageParam { public class CoreUserParam extends PageParam {
......
package com.ibeetl.admin.core.util; package com.ibeetl.admin.core.util;
import org.springframework.core.annotation.AnnotationUtils;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.springframework.core.annotation.AnnotationUtils;
/** /**
* 描述: 获取注解的值 * 描述: 获取注解的值
......
package com.ibeetl.admin.core.util; package com.ibeetl.admin.core.util;
import com.ibeetl.admin.core.conf.RbacAnnotationConfig;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.ibeetl.admin.core.conf.RbacAnnotationConfig;
public class ClassLoaderUtil { public class ClassLoaderUtil {
private ClassLoaderUtil() {} private ClassLoaderUtil() {}
......
...@@ -2,7 +2,6 @@ package com.ibeetl.admin.core.util; ...@@ -2,7 +2,6 @@ package com.ibeetl.admin.core.util;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
public class FileDownloadUtil { public class FileDownloadUtil {
......
package com.ibeetl.admin.core.util; package com.ibeetl.admin.core.util;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
......
...@@ -2,7 +2,6 @@ package com.ibeetl.admin.core.util; ...@@ -2,7 +2,6 @@ package com.ibeetl.admin.core.util;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.springframework.validation.FieldError; import org.springframework.validation.FieldError;
public class FormFieldException extends PlatformException { public class FormFieldException extends PlatformException {
......
package com.ibeetl.admin.core.util; package com.ibeetl.admin.core.util;
import java.util.ArrayList;
import java.util.List;
import com.ibeetl.admin.core.entity.CoreFunction; import com.ibeetl.admin.core.entity.CoreFunction;
import com.ibeetl.admin.core.rbac.tree.FunctionItem; import com.ibeetl.admin.core.rbac.tree.FunctionItem;
import java.util.ArrayList;
import java.util.List;
/** /**
* 创建一个功能树,用于前端选择 * 创建一个功能树,用于前端选择
......
package com.ibeetl.admin.core.util; package com.ibeetl.admin.core.util;
import com.ibeetl.admin.core.entity.CoreMenu;
import com.ibeetl.admin.core.rbac.tree.MenuItem;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import com.ibeetl.admin.core.entity.CoreMenu;
import com.ibeetl.admin.core.rbac.tree.MenuItem;
public class MenuBuildUtil { public class MenuBuildUtil {
private MenuBuildUtil() {} private MenuBuildUtil() {}
......
package com.ibeetl.admin.core.util; package com.ibeetl.admin.core.util;
import java.util.ArrayList;
import java.util.List;
import com.ibeetl.admin.core.entity.CoreOrg; import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.rbac.tree.OrgItem; import com.ibeetl.admin.core.rbac.tree.OrgItem;
import java.util.ArrayList;
import java.util.List;
public class OrgBuildUtil { public class OrgBuildUtil {
private OrgBuildUtil() {} private OrgBuildUtil() {}
......
...@@ -3,85 +3,140 @@ package com.ibeetl.admin.core.util; ...@@ -3,85 +3,140 @@ package com.ibeetl.admin.core.util;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.ibeetl.admin.core.conf.SpringWebMvcConfigurer;
import com.ibeetl.admin.core.entity.CoreOrg; import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreRole;
import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.rbac.UserLoginInfo;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import com.ibeetl.admin.core.conf.SpringWebMvcConfigurer;
/** /**
* 保留用户会话,以方便在业务代码任何地方调用 {@link SpringWebMvcConfigurer} * 保留用户会话,以方便在业务代码任何地方调用 {@link SpringWebMvcConfigurer}
* *
* @author lijiazhi * @author lijiazhi
*/ */
@Component @Slf4j
public final class HttpRequestLocal { public final class RequestContextThreadLocal {
/*当前用户会话*/
public static final String ACCESS_CURRENT_USER = "core:user"; /*当前请求*/
private static final String ACCESS_CURRENT_REQUEST = "request";
/*当前用户*/
private static final String ACCESS_CURRENT_USER = "core:user";
/*当前登录用户所在部门*/ /*当前登录用户所在部门*/
public static final String ACCESS_CURRENT_ORG = "core:currentOrg"; private static final String ACCESS_CURRENT_ORG = "core:currentOrg";
/*用户可选部门*/ /*用户可选部门*/
public static final String ACCESS_USER_ORGS = "core:orgs"; private static final String ACCESS_USER_ORGS = "core:orgs";
/*用户角色*/
private static final String ACCESS_USER_ROLES = "core:roles";
private static final ThreadLocal<Map<String, Object>> CONTEXT =
ThreadLocal.withInitial(HashMap::new);
private static final Cache<Object, UserLoginInfo> CACHE = Caffeine.newBuilder().maximumSize(100)
.expireAfterAccess(10,
TimeUnit.MINUTES).recordStats().build();
public HttpRequestLocal() {} private RequestContextThreadLocal() {
private static final ThreadLocal<HttpServletRequest> requests = }
ThreadLocal.withInitial(() -> null);
public static void setUserRoles(List<CoreRole> roles) {
CONTEXT.get().put(ACCESS_USER_ROLES, roles);
}
public static List<CoreRole> getUserRoles() {
public static void setAccessCurrentOrg(CoreOrg org) { return Convert.toList(CoreRole.class, CONTEXT.get().get(ACCESS_USER_ROLES));
getHttpSession().setAttribute(ACCESS_CURRENT_ORG, org);
} }
public static CoreOrg getAccessCurrentOrg() { public static List<Long> getUserRoleIds() {
return (CoreOrg) getHttpSession().getAttribute(ACCESS_CURRENT_ORG);
return Convert.toList(CoreRole.class, CONTEXT.get().get(ACCESS_USER_ROLES)).stream()
.map(CoreRole::getId).collect(
Collectors.toList());
} }
public static void setAccessUserOrgs(List<CoreOrg> orgs) { public static void setCurrentOrg(CoreOrg org) {
getHttpSession().setAttribute(ACCESS_USER_ORGS, orgs);
CONTEXT.get().put(ACCESS_CURRENT_ORG, org);
} }
public static List<CoreOrg> getAccessUserOrgs() { public static CoreOrg getCurrentOrg() {
return Convert.toList(CoreOrg.class, getHttpSession().getAttribute(ACCESS_USER_ORGS));
return (CoreOrg) CONTEXT.get().get(ACCESS_CURRENT_ORG);
} }
public static void setAccessCurrentUser(CoreUser user) { public static void setUserOrgs(List<CoreOrg> orgs) {
getHttpSession().setAttribute(ACCESS_CURRENT_USER, user);
CONTEXT.get().put(ACCESS_USER_ORGS, orgs);
} }
public static CoreUser getAccessCurrentUser() { public static List<CoreOrg> getUserOrgs() {
return (CoreUser) getHttpSession().getAttribute(ACCESS_CURRENT_USER);
return Convert.toList(CoreOrg.class, CONTEXT.get().get(ACCESS_USER_ORGS));
} }
public static void setLoginerInfo(CoreUser user, CoreOrg org, List<CoreOrg> orgs) { public static void setCurrentUser(CoreUser user) {
setAccessCurrentUser(user);
setAccessCurrentOrg(org); CONTEXT.get().put(ACCESS_CURRENT_USER, user);
setAccessUserOrgs(orgs); }
getHttpSession().setAttribute("clientIP", getIpAddr(get()));
public static CoreUser getCurrentUser() {
return (CoreUser) CONTEXT.get().get(ACCESS_CURRENT_USER);
}
public static void setLoginerInfo(UserLoginInfo loginerInfo) {
CACHE.put(loginerInfo.getUser().getId(), loginerInfo);
setCurrentUser(loginerInfo.getUser());
setCurrentOrg(loginerInfo.getCurrentOrg());
setUserOrgs(loginerInfo.getOrgs());
setUserRoles(loginerInfo.getRoles());
}
public static void reset(Object uid) {
UserLoginInfo loginerInfo = CACHE.getIfPresent(Convert.toLong(uid, null));
if (Objects.isNull(loginerInfo)) {
return;
}
setLoginerInfo(loginerInfo);
} }
public static void clearAllSession() { public static void clearAllSession() {
getHttpSession().removeAttribute(ACCESS_CURRENT_USER);
getHttpSession().removeAttribute(ACCESS_CURRENT_ORG);
getHttpSession().removeAttribute(ACCESS_USER_ORGS);
} }
public static void destory() { public static void destory() {
requests.remove();
CONTEXT.get().clear();
CONTEXT.remove();
} }
public static Cookie getCookieByName(String cookieName) { public static Cookie getCookie(String cookieName) {
Assert.notNull(cookieName); Assert.notNull(cookieName);
Cookie[] cookies = get().getCookies(); Cookie[] cookies = getRequest().getCookies();
return Arrays.stream(cookies) return Arrays.stream(cookies)
.filter(cookie -> StrUtil.equals(cookie.getName(), cookieName)) .filter(cookie -> StrUtil.equals(cookie.getName(), cookieName))
.findFirst() .findFirst()
...@@ -89,54 +144,52 @@ public final class HttpRequestLocal { ...@@ -89,54 +144,52 @@ public final class HttpRequestLocal {
} }
public static Object getSessionValue(String attr) { public static Object getSessionValue(String attr) {
return getHttpSession().getAttribute(attr);
return getSession().getAttribute(attr);
} }
public static void setSessionValue(String attr, Object obj) { public static void setSessionValue(String attr, Object obj) {
get().getSession().setAttribute(attr, obj);
}
public static String getAuthorization() { getRequest().getSession().setAttribute(attr, obj);
return get().getHeader(HttpHeaders.AUTHORIZATION);
} }
public static Object getRequestValue(String attr) { public static String getAuthorization() {
return get().getAttribute(attr);
}
public static void setRequestValue(String attr, Object obj) { return getRequest().getHeader(HttpHeaders.AUTHORIZATION);
get().setAttribute(attr, obj);
} }
/** @return 请求的uri,域名与参数之间的那部分 */ /** @return 请求的uri,域名与参数之间的那部分 */
public static String getRequestURI() { public static String getRequestUri() {
return get().getRequestURI();
return getRequest().getRequestURI();
} }
/** @return 获取客户端ip */ /** @return 获取客户端ip */
public static String getRequestIP() { public static String getRequestIp() {
return getIpAddr(get());
return getIpAddr(getRequest());
} }
public static void set(HttpServletRequest request) { public static void setRequest(HttpServletRequest request) {
requests.set(request);
CONTEXT.get().put(ACCESS_CURRENT_REQUEST, request);
} }
public static HttpServletRequest get() { private static HttpServletRequest getRequest() {
return requests.get();
return (HttpServletRequest) CONTEXT.get().get(ACCESS_CURRENT_REQUEST);
} }
public static HttpSession getHttpSession() { public static HttpSession getSession() {
return get().getSession();
return getRequest().getSession();
} }
/** /**
* 获取当前网络ip * 获取当前网络ip
*
* @param request
* @return
*/ */
public static String getIpAddr(HttpServletRequest request) { public static String getIpAddr(HttpServletRequest request) {
String ipAddress = request.getHeader("x-forwarded-for"); String ipAddress = request.getHeader("x-forwarded-for");
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP"); ipAddress = request.getHeader("Proxy-Client-IP");
...@@ -165,4 +218,5 @@ public final class HttpRequestLocal { ...@@ -165,4 +218,5 @@ public final class HttpRequestLocal {
} }
return ipAddress; return ipAddress;
} }
} }
package com.ibeetl.admin.core.util; package com.ibeetl.admin.core.util;
import org.apache.commons.lang3.time.DateUtils;
import java.text.ParseException; import java.text.ParseException;
import java.util.Date; import java.util.Date;
import org.apache.commons.lang3.time.DateUtils;
/** /**
* 常用工具类方法 * 常用工具类方法
......
package com.ibeetl.admin.core.util.beetl; package com.ibeetl.admin.core.util.beetl;
import com.ibeetl.admin.core.entity.CoreRoleFunction;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.rbac.DataAccess;
import com.ibeetl.admin.core.rbac.DataAccessFactory;
import com.ibeetl.admin.core.rbac.DataAccessResullt;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.util.FunctionLocal;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.beetl.core.Context; import org.beetl.core.Context;
...@@ -12,14 +18,6 @@ import org.beetl.sql.core.engine.SQLParameter; ...@@ -12,14 +18,6 @@ import org.beetl.sql.core.engine.SQLParameter;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ibeetl.admin.core.entity.CoreRoleFunction;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.rbac.DataAccess;
import com.ibeetl.admin.core.rbac.DataAccessFactory;
import com.ibeetl.admin.core.rbac.DataAccessResullt;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.util.FunctionLocal;
/** /**
* 数据权限拼sql,配合DataAccessFactory * 数据权限拼sql,配合DataAccessFactory
* *
......
package com.ibeetl.admin.core.util.beetl; package com.ibeetl.admin.core.util.beetl;
import com.ibeetl.admin.core.entity.CoreDict;
import com.ibeetl.admin.core.service.CoreDictService;
import java.util.List; import java.util.List;
import org.beetl.core.Function;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ibeetl.admin.core.entity.CoreDict;
import com.ibeetl.admin.core.service.CoreDictService;
@Component @Component
public class DictQueryFunction { public class DictQueryFunction {
......
package com.ibeetl.admin.core.util.beetl; package com.ibeetl.admin.core.util.beetl;
import com.ibeetl.admin.core.file.FileItem;
import com.ibeetl.admin.core.file.FileService;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.beetl.core.Context; import org.beetl.core.Context;
import org.beetl.core.Function; import org.beetl.core.Function;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ibeetl.admin.core.file.FileItem;
import com.ibeetl.admin.core.file.FileService;
@Component @Component
public class FileFunction implements Function { public class FileFunction implements Function {
......
package com.ibeetl.admin.core.util.beetl; package com.ibeetl.admin.core.util.beetl;
import com.ibeetl.admin.core.rbac.tree.FunctionItem;
import com.ibeetl.admin.core.service.CorePlatformService;
import org.beetl.core.Context; import org.beetl.core.Context;
import org.beetl.core.Function; import org.beetl.core.Function;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ibeetl.admin.core.rbac.tree.FunctionItem;
import com.ibeetl.admin.core.service.CorePlatformService;
/** 通过functionId获取AccessUrl,从缓存中获取 */ /** 通过functionId获取AccessUrl,从缓存中获取 */
@Component @Component
public class FunAccessUrlFunction implements Function { public class FunAccessUrlFunction implements Function {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment