Commit c2fb86d566c629a24efd7f89ddfc5ae4483da538

Authored by 谭毅彬
1 parent c8654af4

通过角色获取菜单信息

Signed-off-by: TanYibin <5491541@qq.com>
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&lt;SysPermission&gt; {
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&lt;SysPermission&gt; {
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&lt;SysDictMapper, SysDict&gt; 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&lt;SysDictMapper, SysDict&gt; 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&lt;SysDictMapper, SysDict&gt; 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&lt;SysDictMapper, SysDict&gt; 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&lt;SysDictMapper, SysDict&gt; 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&lt;SysDictMapper, SysDict&gt; 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&lt;SysDictMapper, SysDict&gt; 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&lt;SysDictMapper, SysDict&gt; 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&lt;SysDictMapper, SysDict&gt; 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&lt;SysDictMapper, SysDict&gt; 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&lt;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 * 真实删除
... ...