| | |
| | | public class RouterService extends AbstractBaseService { |
| | | |
| | | |
| | | @Autowired |
| | | BaseDao baseDao; |
| | | /** |
| | | * 路由缓存key |
| | | */ |
| | | private final String ALL_ROUTER_CACHE_KEY = "system-cache:router"; |
| | | @Autowired |
| | | BaseDao baseDao; |
| | | /** |
| | | * 路由缓存key |
| | | */ |
| | | private final String ALL_ROUTER_CACHE_KEY = "system-cache:router"; |
| | | |
| | | /** |
| | | * 初始化路由 |
| | | */ |
| | | public synchronized void refreshRouter() { |
| | | DataTableEntity dt = baseDao.listTable("product_sys_router_v"); |
| | | //所有的角色信息 |
| | | if (!BaseUtil.dataTableIsEmpty(dt)) { |
| | | //根据按钮&功能 分组记录路由信息 |
| | | RouterEntity routerEntity = new RouterEntity(dt); |
| | | setRouterEntity(routerEntity); |
| | | } |
| | | } |
| | | /** |
| | | * 初始化路由 |
| | | */ |
| | | public synchronized void refreshRouter() { |
| | | DataTableEntity dt = baseDao.listTable("product_sys_router_v"); |
| | | //所有的角色信息 |
| | | if (!BaseUtil.dataTableIsEmpty(dt)) { |
| | | //根据按钮&功能 分组记录路由信息 |
| | | RouterEntity routerEntity = new RouterEntity(dt); |
| | | setRouterEntity(routerEntity); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 刷新路由根据按钮 |
| | | * |
| | | * @param button_uuid |
| | | */ |
| | | public synchronized void refreshRouter(String button_uuid) { |
| | | //查询按钮所属功能 |
| | | FieldSetEntity fse = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_FUNCTION_BUTTONS, new String[]{"uuid,function_uuid"}, button_uuid, false); |
| | | if (fse != null && !StringUtils.isEmpty(fse.getUUID())) { |
| | | DataTableEntity roles = baseDao.listTable("product_sys_function_permission", "concat(',',button_uuid,',') like concat('%,',?,',%')", new Object[]{button_uuid}, new Object[]{"role_uuid uuid"}); |
| | | //根据功能刷新路由 |
| | | updateRouter(fse.getString(CmnConst.FUNCTION_UUID)); |
| | | updateLoginUserInfoService.updateUserInfoByUpdateRole(roles.getUuids(), true); |
| | | } |
| | | } |
| | | /** |
| | | * 刷新路由根据按钮 |
| | | * |
| | | * @param button_uuid |
| | | */ |
| | | public synchronized void refreshRouter(String button_uuid) { |
| | | //查询按钮所属功能 |
| | | FieldSetEntity fse = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_FUNCTION_BUTTONS, new String[]{"uuid,function_uuid"}, button_uuid, false); |
| | | if (fse != null && !StringUtils.isEmpty(fse.getUUID())) { |
| | | DataTableEntity roles = baseDao.listTable("product_sys_function_permission", "concat(',',button_uuid,',') like concat('%,',?,',%')", new Object[]{button_uuid}, new Object[]{"role_uuid uuid"}); |
| | | //根据功能刷新路由 |
| | | updateRouter(fse.getString(CmnConst.FUNCTION_UUID)); |
| | | updateLoginUserInfoService.updateUserInfoByUpdateRole(roles.getUuids(), true); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 更新路由根据角色uuid |
| | | * |
| | | * @param role_uuid |
| | | */ |
| | | public void updateRouter(String[] role_uuid) { |
| | | RouterEntity routerEntity = getRouterEntity(); |
| | | if (routerEntity != null) { |
| | | routerEntity.updateRouter(role_uuid); |
| | | setRouterEntity(routerEntity); |
| | | } |
| | | /** |
| | | * 更新路由根据角色uuid |
| | | * |
| | | * @param role_uuid |
| | | */ |
| | | public void updateRouter(String[] role_uuid) { |
| | | RouterEntity routerEntity = getRouterEntity(); |
| | | if (routerEntity != null) { |
| | | routerEntity.updateRouter(role_uuid); |
| | | setRouterEntity(routerEntity); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | @Autowired |
| | | UpdateLoginUserInfoService updateLoginUserInfoService; |
| | | @Autowired |
| | | UpdateLoginUserInfoService updateLoginUserInfoService; |
| | | |
| | | /** |
| | | * 更新路由根据功能 |
| | | * |
| | | * @param function_uuid |
| | | */ |
| | | public void updateRouter(String function_uuid) { |
| | | if (!StringUtils.isEmpty(function_uuid)) { |
| | | RouterEntity routerEntity = getRouterEntity(); |
| | | if (routerEntity != null) { |
| | | routerEntity.updateRouter(function_uuid, baseDao.listTable("product_sys_router_v", "`group`=?", new Object[]{function_uuid})); |
| | | setRouterEntity(routerEntity); |
| | | } |
| | | } |
| | | } |
| | | /** |
| | | * 更新路由根据功能 |
| | | * |
| | | * @param function_uuid |
| | | */ |
| | | public void updateRouter(String function_uuid) { |
| | | if (!StringUtils.isEmpty(function_uuid)) { |
| | | RouterEntity routerEntity = getRouterEntity(); |
| | | if (routerEntity != null) { |
| | | routerEntity.updateRouter(function_uuid, baseDao.listTable("product_sys_router_v", "`group`=?", new Object[]{function_uuid})); |
| | | setRouterEntity(routerEntity); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取路由信息 |
| | | * |
| | | * @return |
| | | */ |
| | | public RouterEntity getRouterEntity() { |
| | | return (RouterEntity) RedisUtil.get(ALL_ROUTER_CACHE_KEY); |
| | | } |
| | | /** |
| | | * 获取路由信息 |
| | | * |
| | | * @return |
| | | */ |
| | | public RouterEntity getRouterEntity() { |
| | | return (RouterEntity) RedisUtil.get(ALL_ROUTER_CACHE_KEY); |
| | | } |
| | | |
| | | /** |
| | | * 获取路由(手机端) |
| | | * |
| | | * @return |
| | | */ |
| | | public DataTableEntity getMobileRouter() { |
| | | SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); |
| | | StringBuilder sql = new StringBuilder(); |
| | | /** |
| | | * 获取路由(手机端) |
| | | * |
| | | * @return |
| | | */ |
| | | public DataTableEntity getMobileRouter() { |
| | | SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); |
| | | StringBuilder sql = new StringBuilder(); |
| | | |
| | | sql.append(" SELECT "); |
| | | sql.append(" concat( '/', d.uuid ) path, "); |
| | | sql.append(" d.route_name `name`,d.uuid button_uuid, "); |
| | | sql.append(" nav.nav_bar_name, "); |
| | | sql.append(" page_url component, "); |
| | | sql.append(" b.function_uuid `group`, "); |
| | | sql.append(" c.uuid mvc_page_uuid, "); |
| | | sql.append(" page_name title, "); |
| | | sql.append(" d.button_icon icon, "); |
| | | sql.append(" page_type, "); |
| | | sql.append(" c.face_uuid,c.face_number "); |
| | | sql.append(" d.uuid button_uuid, "); |
| | | sql.append(" d.button_name, "); |
| | | sql.append(" d.client_type_uuid "); |
| | | sql.append(" FROM "); |
| | | sql.append(" product_sys_app_nav_bar nav "); |
| | | sql.append(" JOIN product_sys_functions ff on nav.function_uuid=ff.uuid and concat(',',ff.client_type_uuid,',') like '%,App,%' "); |
| | | sql.append(" JOIN product_sys_link b ON b.function_uuid = ff.uuid "); |
| | | sql.append(" AND ff.status_uuid = 1 "); |
| | | sql.append(" AND ff.data_type = 1 "); |
| | | sql.append(" JOIN product_sys_mvc_page c ON b.`line_to` = c.uuid "); |
| | | sql.append(" JOIN product_sys_function_buttons d ON b.line_from = d.uuid and d.client_type_uuid='App' "); |
| | | sql.append(" WHERE "); |
| | | sql.append(" page_url IS NOT NULL "); |
| | | sql.append(" AND page_url != '' "); |
| | | sql.append(" and nav.is_used=1 AND "); |
| | | sql.append(" nav.function_uuid in (select function_uuid from product_sys_function_permission where "); |
| | | sql.append(BaseUtil.buildQuestionMarkFilter("role_uuid", currentUser.getRoles().split(","), true)).append(" ) "); |
| | | sql.append(" GROUP BY "); |
| | | sql.append(" b.function_uuid, "); |
| | | sql.append(" d.uuid, "); |
| | | sql.append(" page_name, "); |
| | | sql.append(" page_url, "); |
| | | sql.append(" c.uuid,nav_bar_name, "); |
| | | sql.append(" PAGE_type "); |
| | | sql.append(" SELECT "); |
| | | sql.append(" concat( '/', d.uuid ) path, "); |
| | | sql.append(" d.route_name `name`,d.uuid button_uuid, "); |
| | | sql.append(" nav.nav_bar_name, "); |
| | | sql.append(" page_url component, "); |
| | | sql.append(" b.function_uuid `group`, "); |
| | | sql.append(" c.uuid mvc_page_uuid, "); |
| | | sql.append(" page_name title, "); |
| | | sql.append(" d.button_icon icon, "); |
| | | sql.append(" page_type, "); |
| | | sql.append(" c.face_uuid,c.face_number, "); |
| | | sql.append(" d.uuid button_uuid, "); |
| | | sql.append(" d.button_name, "); |
| | | sql.append(" d.client_type_uuid "); |
| | | sql.append(" FROM "); |
| | | sql.append(" product_sys_app_nav_bar nav "); |
| | | sql.append(" JOIN product_sys_functions ff on nav.function_uuid=ff.uuid and concat(',',ff.client_type_uuid,',') like '%,App,%' "); |
| | | sql.append(" JOIN product_sys_link b ON b.function_uuid = ff.uuid "); |
| | | sql.append(" AND ff.status_uuid = 1 "); |
| | | sql.append(" AND ff.data_type = 1 "); |
| | | sql.append(" JOIN product_sys_mvc_page c ON b.`line_to` = c.uuid "); |
| | | sql.append(" JOIN product_sys_function_buttons d ON b.line_from = d.uuid and d.client_type_uuid='App' "); |
| | | sql.append(" WHERE "); |
| | | sql.append(" page_url IS NOT NULL "); |
| | | sql.append(" AND page_url != '' "); |
| | | sql.append(" and nav.is_used=1 AND "); |
| | | sql.append(" nav.function_uuid in (select function_uuid from product_sys_function_permission where "); |
| | | sql.append(BaseUtil.buildQuestionMarkFilter("role_uuid", currentUser.getRoles().split(","), true)).append(" ) "); |
| | | sql.append(" GROUP BY "); |
| | | sql.append(" b.function_uuid, "); |
| | | sql.append(" d.uuid, "); |
| | | sql.append(" page_name, "); |
| | | sql.append(" page_url, "); |
| | | sql.append(" c.uuid,nav_bar_name, "); |
| | | sql.append(" PAGE_type "); |
| | | |
| | | DataTableEntity dt = getBaseDao().listTable(sql.toString(), new Object[]{}); |
| | | return dt; |
| | | } |
| | | DataTableEntity dt = getBaseDao().listTable(sql.toString(), new Object[]{}); |
| | | return dt; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取路由信息 |
| | | * |
| | | * @return |
| | | */ |
| | | public void setRouterEntity(RouterEntity routerEntity) { |
| | | RedisUtil.set(ALL_ROUTER_CACHE_KEY, routerEntity); |
| | | } |
| | | /** |
| | | * 获取路由信息 |
| | | * |
| | | * @return |
| | | */ |
| | | public void setRouterEntity(RouterEntity routerEntity) { |
| | | RedisUtil.set(ALL_ROUTER_CACHE_KEY, routerEntity); |
| | | } |
| | | |
| | | /** |
| | | * 根据功能和按钮uuid 获取跳转路由 |
| | | * |
| | | * @param functionUuid |
| | | * @param button_uuid |
| | | * @return |
| | | */ |
| | | public String functionSkipByButtonUuid(String functionUuid, String button_uuid) { |
| | | SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); |
| | | if (StringUtils.isEmpty(functionUuid) || StringUtils.isEmpty(button_uuid) || currentUser == null || currentUser.getRoles() == null) { |
| | | return null; |
| | | } |
| | | /** |
| | | * 根据功能和按钮uuid 获取跳转路由 |
| | | * |
| | | * @param functionUuid |
| | | * @param button_uuid |
| | | * @return |
| | | */ |
| | | public String functionSkipByButtonUuid(String functionUuid, String button_uuid) { |
| | | SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); |
| | | if (StringUtils.isEmpty(functionUuid) || StringUtils.isEmpty(button_uuid) || currentUser == null || currentUser.getRoles() == null) { |
| | | return null; |
| | | } |
| | | |
| | | RouterEntity routerEntity = getRouterEntity(); |
| | | if (routerEntity != null) { |
| | | return routerEntity.getRouteNameByUuid(functionUuid, button_uuid, currentUser.getRoles().split(",")); |
| | | } |
| | | return null; |
| | | } |
| | | RouterEntity routerEntity = getRouterEntity(); |
| | | if (routerEntity != null) { |
| | | return routerEntity.getRouteNameByUuid(functionUuid, button_uuid, currentUser.getRoles().split(",")); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据功能和按钮标识 获取跳转路由 |
| | | * |
| | | * @param functionUuid |
| | | * @param button_name |
| | | * @return |
| | | */ |
| | | public String functionSkip(String functionUuid, String button_name) { |
| | | SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); |
| | | if (StringUtils.isEmpty(functionUuid) || StringUtils.isEmpty(button_name) || currentUser == null || currentUser.getRoles() == null) { |
| | | return null; |
| | | } |
| | | RouterEntity routerEntity = getRouterEntity(); |
| | | if (routerEntity != null) { |
| | | return routerEntity.getRouteNameByName(functionUuid, button_name, currentUser.getRoles().split(",")); |
| | | } |
| | | return null; |
| | | } |
| | | /** |
| | | * 根据功能和按钮标识 获取跳转路由 |
| | | * |
| | | * @param functionUuid |
| | | * @param button_name |
| | | * @return |
| | | */ |
| | | public String functionSkip(String functionUuid, String button_name) { |
| | | SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); |
| | | if (StringUtils.isEmpty(functionUuid) || StringUtils.isEmpty(button_name) || currentUser == null || currentUser.getRoles() == null) { |
| | | return null; |
| | | } |
| | | RouterEntity routerEntity = getRouterEntity(); |
| | | if (routerEntity != null) { |
| | | return routerEntity.getRouteNameByName(functionUuid, button_name, currentUser.getRoles().split(",")); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 获取路由 |
| | | * |
| | | * @return |
| | | * @throws BaseException |
| | | */ |
| | | public JSONArray getRouter() throws BaseException { |
| | | SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); |
| | | RouterEntity routerEntity = getRouterEntity(); |
| | | JSONArray routerList = routerEntity.getRouterList(currentUser.getRoles().split(",")); |
| | | if (routerList == null || routerList.isEmpty() || routerList.size() <= 0) { |
| | | throw new BaseException(SystemCode.SYSTEM_ROUTER_GET_FAIL.getValue(), SystemCode.SYSTEM_ROUTER_GET_FAIL.getText()); |
| | | } |
| | | return routerList; |
| | | } |
| | | /** |
| | | * 获取路由 |
| | | * |
| | | * @return |
| | | * @throws BaseException |
| | | */ |
| | | public JSONArray getRouter() throws BaseException { |
| | | SystemUser currentUser = SpringMVCContextHolder.getCurrentUser(); |
| | | RouterEntity routerEntity = getRouterEntity(); |
| | | JSONArray routerList = routerEntity.getRouterList(currentUser.getRoles().split(",")); |
| | | if (routerList == null || routerList.isEmpty() || routerList.size() <= 0) { |
| | | throw new BaseException(SystemCode.SYSTEM_ROUTER_GET_FAIL.getValue(), SystemCode.SYSTEM_ROUTER_GET_FAIL.getText()); |
| | | } |
| | | return routerList; |
| | | } |
| | | |
| | | |
| | | } |