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);
+    }
 
     /**
      * 真实删除