diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/LoginController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/LoginController.java index 3b09d64..f4fe240 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/LoginController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/LoginController.java @@ -287,6 +287,7 @@ public class LoginController { return result; } + @SuppressWarnings("null") private Result<JSONObject> checkSystemActivationCode() throws IOException { Result<JSONObject> result = new Result<JSONObject>(); // 是否需要校验激活码 @@ -405,7 +406,7 @@ public class LoginController { redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername())); // 调用shiro的logout SecurityUtils.getSubject().logout(); - return Result.ok("退出登录成功!"); + return Result.OK("退出登录成功!", null); } else { return Result.error("Token无效!"); } @@ -791,7 +792,7 @@ public class LoginController { if (checkCode == null || !checkCode.equals(lowerCaseCaptcha)) { return Result.error("验证码错误"); } - return Result.ok(); + return Result.OK(); } /** @@ -822,7 +823,7 @@ public class LoginController { } else { return Result.error("二维码已过期,请刷新后重试"); } - return Result.OK("扫码成功"); + return Result.OK("扫码成功", null); } /** diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java index a30932a..727da41 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java @@ -21,12 +21,15 @@ import org.jeecg.modules.system.model.SysPermissionTree; import org.jeecg.modules.system.model.TreeModel; import org.jeecg.modules.system.service.*; import org.jeecg.modules.system.util.PermissionDataUtil; +import org.jeecg.utils.HuahengJwtUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.stream.Collectors; +import javax.servlet.http.HttpServletRequest; + /** * <p> * 菜单权限表 前端控制器 @@ -168,7 +171,7 @@ public class SysPermissionController { listMap.put(pid, mapList); } } - return Result.ok(listMap); + return Result.OK(listMap); } catch (Exception e) { log.error(e.getMessage(), e); return Result.error("批量查询子菜单失败:" + e.getMessage()); @@ -203,15 +206,20 @@ public class SysPermissionController { * @return */ @RequestMapping(value = "/getUserPermissionByToken", method = RequestMethod.GET) - public Result<?> getUserPermissionByToken() { + public Result<?> getUserPermissionByToken(HttpServletRequest request) { Result<JSONObject> result = new Result<JSONObject>(); try { - // 直接获取当前用户不适用前端token - LoginUser loginUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); - if (oConvertUtils.isEmpty(loginUser)) { + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); + if (oConvertUtils.isEmpty(token)) { return Result.error("请登录系统!"); } - List<SysPermission> metaList = sysPermissionService.queryByUser(loginUser.getUsername()); + List<String> roles = HuahengJwtUtil.getRoles(token); +// // 直接获取当前用户不适用前端token +// LoginUser loginUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); +// if (oConvertUtils.isEmpty(loginUser)) { +// return Result.error("请登录系统!"); +// } + List<SysPermission> metaList = sysPermissionService.queryByRoles(roles); // 添加首页路由 // update-begin-author:taoyan date:20200211 for: TASK #3368 【路由缓存】首页的缓存设置有问题,需要根据后台的路由配置来实现是否缓存 if (!PermissionDataUtil.hasIndexPage(metaList)) { @@ -221,7 +229,7 @@ public class SysPermissionController { // update-end-author:taoyan date:20200211 for: TASK #3368 【路由缓存】首页的缓存设置有问题,需要根据后台的路由配置来实现是否缓存 // update-begin--Author:liusq Date:20210624 for:自定义首页地址LOWCOD-1578 - List<String> roles = sysUserService.getRole(loginUser.getUsername()); +// List<String> roles = sysUserService.getRole(loginUser.getUsername()); String compUrl = RoleIndexConfigEnum.getIndexByRoles(roles); if (StringUtils.isNotBlank(compUrl)) { List<SysPermission> menus = metaList.stream().filter(sysPermission -> "首页".equals(sysPermission.getName())).collect(Collectors.toList()); diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java index 794bdd9..f3b43e1 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java @@ -49,5 +49,10 @@ public interface SysPermissionMapper extends BaseMapper<SysPermission> { * @return */ public int queryCountByUsername(@Param("username") String username, @Param("permission") SysPermission sysPermission); + + /** + * 根据角色查询权限 + */ + public List<SysPermission> queryByRoles(List<String> roles); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml index c77278e..a73aee0 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml @@ -103,6 +103,21 @@ </if> ) temp </select> - + + <!-- 获取登录角色拥有的权限 --> + <select id="queryByRoles" parameterType="Object" resultMap="SysPermission"> + SELECT p.* + FROM sys_permission p + WHERE (EXISTS (SELECT a.id FROM sys_role_permission a + JOIN sys_role b ON a.role_id = b.id + WHERE p.id = a.permission_id AND + <foreach collection="roles" item="item" open=" b.role_code IN (" close=")" separator=","> + #{item} + </foreach>) + OR (p.url LIKE '%:code' AND p.url LIKE '/online%' AND p.hidden = 1) + OR p.url = '/online') + AND p.del_flag = 0 + ORDER BY p.sort_no ASC + </select> </mapper> diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java index 5145e1a..61a9d50 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java @@ -60,4 +60,9 @@ public interface ISysPermissionService extends IService<SysPermission> { * @return */ public boolean hasPermission(String username, String url); + + /** + * 根据角色查询权限 + */ + public List<SysPermission> queryByRoles(List<String> roles); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java index 88c8b54..533dc8f 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java @@ -54,22 +54,22 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl @Override public void refleshCache() { // 清空字典缓存 - Set keys = redisTemplate.keys(CacheConstant.SYS_DICT_CACHE + "*"); - Set keys7 = redisTemplate.keys(CacheConstant.SYS_ENABLE_DICT_CACHE + "*"); - Set keys2 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_CACHE + "*"); - Set keys3 = redisTemplate.keys(CacheConstant.SYS_DEPARTS_CACHE + "*"); - Set keys4 = redisTemplate.keys(CacheConstant.SYS_DEPART_IDS_CACHE + "*"); - Set keys8 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE + "*"); - Set keys5 = redisTemplate.keys("jmreport:cache:dict*"); - Set keys6 = redisTemplate.keys("jmreport:cache:dictTable*"); + Set<String> keys = redisTemplate.keys(CacheConstant.SYS_DICT_CACHE + "*"); + Set<String> keys1 = redisTemplate.keys(CacheConstant.SYS_ENABLE_DICT_CACHE + "*"); + Set<String> keys2 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_CACHE + "*"); + Set<String> keys3 = redisTemplate.keys(CacheConstant.SYS_DEPARTS_CACHE + "*"); + Set<String> keys4 = redisTemplate.keys(CacheConstant.SYS_DEPART_IDS_CACHE + "*"); + Set<String> keys5 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE + "*"); + Set<String> keys6 = redisTemplate.keys("jmreport:cache:dict*"); + Set<String> keys7 = redisTemplate.keys("jmreport:cache:dictTable*"); redisTemplate.delete(keys); + redisTemplate.delete(keys1); redisTemplate.delete(keys2); redisTemplate.delete(keys3); redisTemplate.delete(keys4); redisTemplate.delete(keys5); redisTemplate.delete(keys6); redisTemplate.delete(keys7); - redisTemplate.delete(keys8); } /** @@ -157,6 +157,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl * @param code * @return */ + @SuppressWarnings("deprecation") @Override // @Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE) public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) { @@ -164,6 +165,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl return sysDictMapper.queryTableDictItemsByCode(table, text, code); } + @SuppressWarnings("deprecation") @Override public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql) { log.debug("无缓存dictTableList的时候调用这里!"); @@ -179,6 +181,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl * @param key * @return */ + @SuppressWarnings("deprecation") @Override @Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE, unless = "#result == null ") public String queryTableDictTextByKey(String table, String text, String code, String key) { @@ -214,6 +217,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl * @param delNotExist 是否移除不存在的项,默认为true,设为false如果某个key不存在数据库中,则直接返回key本身 * @return */ + @SuppressWarnings("deprecation") @Override // update-begin--Author:lvdandan Date:20201204 for:JT-36【online】树形列表bug修改后,还是显示原来值 暂时去掉缓存 // @Cacheable(value = CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE) @@ -284,11 +288,13 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl return baseMapper.queryAllUserBackDictModel(); } + @SuppressWarnings("deprecation") @Override public List<DictModel> queryTableDictItems(String table, String text, String code, String keyword) { return baseMapper.queryTableDictItems(table, text, code, "%" + keyword + "%"); } + @SuppressWarnings("deprecation") @Override public List<DictModel> queryLittleTableDictItems(String table, String text, String code, String condition, String keyword, int pageSize) { Page<DictModel> page = new Page<DictModel>(1, pageSize); @@ -334,6 +340,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl return filterSql; } + @SuppressWarnings("deprecation") @Override public List<DictModel> queryAllTableDictItems(String table, String text, String code, String condition, String keyword) { String filterSql = getFilterSql(table, text, code, condition, keyword); @@ -341,6 +348,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl return ls; } + @SuppressWarnings("deprecation") @Override public List<TreeSelectModel> queryTreeList(Map<String, String> query, String table, String text, String code, String pidField, String pid, String hasChildField) { @@ -369,6 +377,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl return baseMapper.queryDeleteList(); } + @SuppressWarnings("deprecation") @Override public List<DictModel> queryDictTablePageList(DictQuery query, int pageSize, int pageNo) { Page page = new Page(pageNo, pageSize, false); @@ -376,6 +385,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl return pageList.getRecords(); } + @SuppressWarnings("deprecation") @Override public List<DictModel> getDictItems(String dictCode) { List<DictModel> ls; diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java index 4c863ab..ae9458e 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java @@ -58,6 +58,11 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S public List<TreeModel> queryListByParentId(String parentId) { return sysPermissionMapper.queryListByParentId(parentId); } + + @Override + public List<SysPermission> queryByRoles(List<String> roles) { + return this.sysPermissionMapper.queryByRoles(roles); + } /** * 真实删除