Commit c2fb86d566c629a24efd7f89ddfc5ae4483da538
1 parent
c8654af4
通过角色获取菜单信息
Signed-off-by: TanYibin <5491541@qq.com>
Showing
7 changed files
with
69 additions
and
20 deletions
huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/LoginController.java
... | ... | @@ -287,6 +287,7 @@ public class LoginController { |
287 | 287 | return result; |
288 | 288 | } |
289 | 289 | |
290 | + @SuppressWarnings("null") | |
290 | 291 | private Result<JSONObject> checkSystemActivationCode() throws IOException { |
291 | 292 | Result<JSONObject> result = new Result<JSONObject>(); |
292 | 293 | // 是否需要校验激活码 |
... | ... | @@ -405,7 +406,7 @@ public class LoginController { |
405 | 406 | redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername())); |
406 | 407 | // 调用shiro的logout |
407 | 408 | SecurityUtils.getSubject().logout(); |
408 | - return Result.ok("退出登录成功!"); | |
409 | + return Result.OK("退出登录成功!", null); | |
409 | 410 | } else { |
410 | 411 | return Result.error("Token无效!"); |
411 | 412 | } |
... | ... | @@ -791,7 +792,7 @@ public class LoginController { |
791 | 792 | if (checkCode == null || !checkCode.equals(lowerCaseCaptcha)) { |
792 | 793 | return Result.error("验证码错误"); |
793 | 794 | } |
794 | - return Result.ok(); | |
795 | + return Result.OK(); | |
795 | 796 | } |
796 | 797 | |
797 | 798 | /** |
... | ... | @@ -822,7 +823,7 @@ public class LoginController { |
822 | 823 | } else { |
823 | 824 | return Result.error("二维码已过期,请刷新后重试"); |
824 | 825 | } |
825 | - return Result.OK("扫码成功"); | |
826 | + return Result.OK("扫码成功", null); | |
826 | 827 | } |
827 | 828 | |
828 | 829 | /** |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java
... | ... | @@ -21,12 +21,15 @@ import org.jeecg.modules.system.model.SysPermissionTree; |
21 | 21 | import org.jeecg.modules.system.model.TreeModel; |
22 | 22 | import org.jeecg.modules.system.service.*; |
23 | 23 | import org.jeecg.modules.system.util.PermissionDataUtil; |
24 | +import org.jeecg.utils.HuahengJwtUtil; | |
24 | 25 | import org.springframework.beans.factory.annotation.Autowired; |
25 | 26 | import org.springframework.web.bind.annotation.*; |
26 | 27 | |
27 | 28 | import java.util.*; |
28 | 29 | import java.util.stream.Collectors; |
29 | 30 | |
31 | +import javax.servlet.http.HttpServletRequest; | |
32 | + | |
30 | 33 | /** |
31 | 34 | * <p> |
32 | 35 | * 菜单权限表 前端控制器 |
... | ... | @@ -168,7 +171,7 @@ public class SysPermissionController { |
168 | 171 | listMap.put(pid, mapList); |
169 | 172 | } |
170 | 173 | } |
171 | - return Result.ok(listMap); | |
174 | + return Result.OK(listMap); | |
172 | 175 | } catch (Exception e) { |
173 | 176 | log.error(e.getMessage(), e); |
174 | 177 | return Result.error("批量查询子菜单失败:" + e.getMessage()); |
... | ... | @@ -203,15 +206,20 @@ public class SysPermissionController { |
203 | 206 | * @return |
204 | 207 | */ |
205 | 208 | @RequestMapping(value = "/getUserPermissionByToken", method = RequestMethod.GET) |
206 | - public Result<?> getUserPermissionByToken() { | |
209 | + public Result<?> getUserPermissionByToken(HttpServletRequest request) { | |
207 | 210 | Result<JSONObject> result = new Result<JSONObject>(); |
208 | 211 | try { |
209 | - // 直接获取当前用户不适用前端token | |
210 | - LoginUser loginUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); | |
211 | - if (oConvertUtils.isEmpty(loginUser)) { | |
212 | + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); | |
213 | + if (oConvertUtils.isEmpty(token)) { | |
212 | 214 | return Result.error("请登录系统!"); |
213 | 215 | } |
214 | - List<SysPermission> metaList = sysPermissionService.queryByUser(loginUser.getUsername()); | |
216 | + List<String> roles = HuahengJwtUtil.getRoles(token); | |
217 | +// // 直接获取当前用户不适用前端token | |
218 | +// LoginUser loginUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); | |
219 | +// if (oConvertUtils.isEmpty(loginUser)) { | |
220 | +// return Result.error("请登录系统!"); | |
221 | +// } | |
222 | + List<SysPermission> metaList = sysPermissionService.queryByRoles(roles); | |
215 | 223 | // 添加首页路由 |
216 | 224 | // update-begin-author:taoyan date:20200211 for: TASK #3368 【路由缓存】首页的缓存设置有问题,需要根据后台的路由配置来实现是否缓存 |
217 | 225 | if (!PermissionDataUtil.hasIndexPage(metaList)) { |
... | ... | @@ -221,7 +229,7 @@ public class SysPermissionController { |
221 | 229 | // update-end-author:taoyan date:20200211 for: TASK #3368 【路由缓存】首页的缓存设置有问题,需要根据后台的路由配置来实现是否缓存 |
222 | 230 | |
223 | 231 | // update-begin--Author:liusq Date:20210624 for:自定义首页地址LOWCOD-1578 |
224 | - List<String> roles = sysUserService.getRole(loginUser.getUsername()); | |
232 | +// List<String> roles = sysUserService.getRole(loginUser.getUsername()); | |
225 | 233 | String compUrl = RoleIndexConfigEnum.getIndexByRoles(roles); |
226 | 234 | if (StringUtils.isNotBlank(compUrl)) { |
227 | 235 | List<SysPermission> menus = metaList.stream().filter(sysPermission -> "首页".equals(sysPermission.getName())).collect(Collectors.toList()); |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java
... | ... | @@ -49,5 +49,10 @@ public interface SysPermissionMapper extends BaseMapper<SysPermission> { |
49 | 49 | * @return |
50 | 50 | */ |
51 | 51 | public int queryCountByUsername(@Param("username") String username, @Param("permission") SysPermission sysPermission); |
52 | + | |
53 | + /** | |
54 | + * 根据角色查询权限 | |
55 | + */ | |
56 | + public List<SysPermission> queryByRoles(List<String> roles); | |
52 | 57 | |
53 | 58 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml
... | ... | @@ -103,6 +103,21 @@ |
103 | 103 | </if> |
104 | 104 | ) temp |
105 | 105 | </select> |
106 | - | |
106 | + | |
107 | + <!-- 获取登录角色拥有的权限 --> | |
108 | + <select id="queryByRoles" parameterType="Object" resultMap="SysPermission"> | |
109 | + SELECT p.* | |
110 | + FROM sys_permission p | |
111 | + WHERE (EXISTS (SELECT a.id FROM sys_role_permission a | |
112 | + JOIN sys_role b ON a.role_id = b.id | |
113 | + WHERE p.id = a.permission_id AND | |
114 | + <foreach collection="roles" item="item" open=" b.role_code IN (" close=")" separator=","> | |
115 | + #{item} | |
116 | + </foreach>) | |
117 | + OR (p.url LIKE '%:code' AND p.url LIKE '/online%' AND p.hidden = 1) | |
118 | + OR p.url = '/online') | |
119 | + AND p.del_flag = 0 | |
120 | + ORDER BY p.sort_no ASC | |
121 | + </select> | |
107 | 122 | |
108 | 123 | </mapper> |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java
... | ... | @@ -60,4 +60,9 @@ public interface ISysPermissionService extends IService<SysPermission> { |
60 | 60 | * @return |
61 | 61 | */ |
62 | 62 | public boolean hasPermission(String username, String url); |
63 | + | |
64 | + /** | |
65 | + * 根据角色查询权限 | |
66 | + */ | |
67 | + public List<SysPermission> queryByRoles(List<String> roles); | |
63 | 68 | } |
... | ... |
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 |
54 | 54 | @Override |
55 | 55 | public void refleshCache() { |
56 | 56 | // 清空字典缓存 |
57 | - Set keys = redisTemplate.keys(CacheConstant.SYS_DICT_CACHE + "*"); | |
58 | - Set keys7 = redisTemplate.keys(CacheConstant.SYS_ENABLE_DICT_CACHE + "*"); | |
59 | - Set keys2 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_CACHE + "*"); | |
60 | - Set keys3 = redisTemplate.keys(CacheConstant.SYS_DEPARTS_CACHE + "*"); | |
61 | - Set keys4 = redisTemplate.keys(CacheConstant.SYS_DEPART_IDS_CACHE + "*"); | |
62 | - Set keys8 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE + "*"); | |
63 | - Set keys5 = redisTemplate.keys("jmreport:cache:dict*"); | |
64 | - Set keys6 = redisTemplate.keys("jmreport:cache:dictTable*"); | |
57 | + Set<String> keys = redisTemplate.keys(CacheConstant.SYS_DICT_CACHE + "*"); | |
58 | + Set<String> keys1 = redisTemplate.keys(CacheConstant.SYS_ENABLE_DICT_CACHE + "*"); | |
59 | + Set<String> keys2 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_CACHE + "*"); | |
60 | + Set<String> keys3 = redisTemplate.keys(CacheConstant.SYS_DEPARTS_CACHE + "*"); | |
61 | + Set<String> keys4 = redisTemplate.keys(CacheConstant.SYS_DEPART_IDS_CACHE + "*"); | |
62 | + Set<String> keys5 = redisTemplate.keys(CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE + "*"); | |
63 | + Set<String> keys6 = redisTemplate.keys("jmreport:cache:dict*"); | |
64 | + Set<String> keys7 = redisTemplate.keys("jmreport:cache:dictTable*"); | |
65 | 65 | redisTemplate.delete(keys); |
66 | + redisTemplate.delete(keys1); | |
66 | 67 | redisTemplate.delete(keys2); |
67 | 68 | redisTemplate.delete(keys3); |
68 | 69 | redisTemplate.delete(keys4); |
69 | 70 | redisTemplate.delete(keys5); |
70 | 71 | redisTemplate.delete(keys6); |
71 | 72 | redisTemplate.delete(keys7); |
72 | - redisTemplate.delete(keys8); | |
73 | 73 | } |
74 | 74 | |
75 | 75 | /** |
... | ... | @@ -157,6 +157,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl |
157 | 157 | * @param code |
158 | 158 | * @return |
159 | 159 | */ |
160 | + @SuppressWarnings("deprecation") | |
160 | 161 | @Override |
161 | 162 | // @Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE) |
162 | 163 | public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) { |
... | ... | @@ -164,6 +165,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl |
164 | 165 | return sysDictMapper.queryTableDictItemsByCode(table, text, code); |
165 | 166 | } |
166 | 167 | |
168 | + @SuppressWarnings("deprecation") | |
167 | 169 | @Override |
168 | 170 | public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql) { |
169 | 171 | log.debug("无缓存dictTableList的时候调用这里!"); |
... | ... | @@ -179,6 +181,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl |
179 | 181 | * @param key |
180 | 182 | * @return |
181 | 183 | */ |
184 | + @SuppressWarnings("deprecation") | |
182 | 185 | @Override |
183 | 186 | @Cacheable(value = CacheConstant.SYS_DICT_TABLE_CACHE, unless = "#result == null ") |
184 | 187 | public String queryTableDictTextByKey(String table, String text, String code, String key) { |
... | ... | @@ -214,6 +217,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl |
214 | 217 | * @param delNotExist 是否移除不存在的项,默认为true,设为false如果某个key不存在数据库中,则直接返回key本身 |
215 | 218 | * @return |
216 | 219 | */ |
220 | + @SuppressWarnings("deprecation") | |
217 | 221 | @Override |
218 | 222 | // update-begin--Author:lvdandan Date:20201204 for:JT-36【online】树形列表bug修改后,还是显示原来值 暂时去掉缓存 |
219 | 223 | // @Cacheable(value = CacheConstant.SYS_DICT_TABLE_BY_KEYS_CACHE) |
... | ... | @@ -284,11 +288,13 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl |
284 | 288 | return baseMapper.queryAllUserBackDictModel(); |
285 | 289 | } |
286 | 290 | |
291 | + @SuppressWarnings("deprecation") | |
287 | 292 | @Override |
288 | 293 | public List<DictModel> queryTableDictItems(String table, String text, String code, String keyword) { |
289 | 294 | return baseMapper.queryTableDictItems(table, text, code, "%" + keyword + "%"); |
290 | 295 | } |
291 | 296 | |
297 | + @SuppressWarnings("deprecation") | |
292 | 298 | @Override |
293 | 299 | public List<DictModel> queryLittleTableDictItems(String table, String text, String code, String condition, String keyword, int pageSize) { |
294 | 300 | Page<DictModel> page = new Page<DictModel>(1, pageSize); |
... | ... | @@ -334,6 +340,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl |
334 | 340 | return filterSql; |
335 | 341 | } |
336 | 342 | |
343 | + @SuppressWarnings("deprecation") | |
337 | 344 | @Override |
338 | 345 | public List<DictModel> queryAllTableDictItems(String table, String text, String code, String condition, String keyword) { |
339 | 346 | String filterSql = getFilterSql(table, text, code, condition, keyword); |
... | ... | @@ -341,6 +348,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl |
341 | 348 | return ls; |
342 | 349 | } |
343 | 350 | |
351 | + @SuppressWarnings("deprecation") | |
344 | 352 | @Override |
345 | 353 | public List<TreeSelectModel> queryTreeList(Map<String, String> query, String table, String text, String code, String pidField, String pid, |
346 | 354 | String hasChildField) { |
... | ... | @@ -369,6 +377,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl |
369 | 377 | return baseMapper.queryDeleteList(); |
370 | 378 | } |
371 | 379 | |
380 | + @SuppressWarnings("deprecation") | |
372 | 381 | @Override |
373 | 382 | public List<DictModel> queryDictTablePageList(DictQuery query, int pageSize, int pageNo) { |
374 | 383 | Page page = new Page(pageNo, pageSize, false); |
... | ... | @@ -376,6 +385,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl |
376 | 385 | return pageList.getRecords(); |
377 | 386 | } |
378 | 387 | |
388 | + @SuppressWarnings("deprecation") | |
379 | 389 | @Override |
380 | 390 | public List<DictModel> getDictItems(String dictCode) { |
381 | 391 | List<DictModel> ls; |
... | ... |
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 |
58 | 58 | public List<TreeModel> queryListByParentId(String parentId) { |
59 | 59 | return sysPermissionMapper.queryListByParentId(parentId); |
60 | 60 | } |
61 | + | |
62 | + @Override | |
63 | + public List<SysPermission> queryByRoles(List<String> roles) { | |
64 | + return this.sysPermissionMapper.queryByRoles(roles); | |
65 | + } | |
61 | 66 | |
62 | 67 | /** |
63 | 68 | * 真实删除 |
... | ... |