diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index d959a17..a1af346 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -2,6 +2,10 @@ package com.ruoyi.web.controller.system;
 
 import java.util.List;
 import java.util.Set;
+
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.framework.web.service.TokenService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -19,7 +23,7 @@ import com.ruoyi.system.service.ISysMenuService;
 
 /**
  * 登录验证
- * 
+ *
  * @author ruoyi
  */
 @RestController
@@ -34,9 +38,12 @@ public class SysLoginController
     @Autowired
     private SysPermissionService permissionService;
 
+    @Autowired
+    private TokenService tokenService;
+
     /**
      * 登录方法
-     * 
+     *
      * @param loginBody 登录信息
      * @return 结果
      */
@@ -53,7 +60,7 @@ public class SysLoginController
 
     /**
      * 获取用户信息
-     * 
+     *
      * @return 用户信息
      */
     @GetMapping("getInfo")
@@ -73,14 +80,15 @@ public class SysLoginController
 
     /**
      * 获取路由信息
-     * 
+     *
      * @return 路由信息
      */
     @GetMapping("getRouters")
     public AjaxResult getRouters()
     {
-        Long userId = SecurityUtils.getUserId();
-        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
+        LoginUser loginUser  = tokenService.getLoginUser(ServletUtils.getRequest());
+        SysUser user = loginUser.getUser();
+        List<SysMenu> menus = menuService.selectMenuTreeByUserId(user);
         return AjaxResult.success(menuService.buildMenus(menus));
     }
 }
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 4c726dd..3716a2a 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -76,3 +76,8 @@ elasticsearch:
     maxConnectNum: 100
     maxConnectPerRoute: 100
 
+sso:
+    apiUrl: http://test.vsp.cqooc.com/open/api/v2/oauth/token?appId={APPID}&signature={SIGNATURE}&ticket={TICKET}
+    password: admin123
+    secretKey: 4ce36bf549d64d44b6cbc48e926abb05
+    appId: cb00a3e26b963b25e28cae6e046f1190
diff --git a/ruoyi-biemo/pom.xml b/ruoyi-biemo/pom.xml
index e22e4d3..b455f69 100644
--- a/ruoyi-biemo/pom.xml
+++ b/ruoyi-biemo/pom.xml
@@ -21,10 +21,15 @@
     </properties>
 
     <dependencies>
-        <!-- 通用工具-->
+
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-system</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-common</artifactId>
+            <artifactId>ruoyi-framework</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
diff --git a/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/controller/ReportController.java b/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/controller/ReportController.java
index b26df71..d07abfe 100644
--- a/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/controller/ReportController.java
+++ b/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/controller/ReportController.java
@@ -89,4 +89,10 @@ public class ReportController
         return AjaxResult.success();
     }
 
+
+    @RequestMapping("/ticket2token")
+    public AjaxResult ticket2token(String ticket){
+        return AjaxResult.success("查询成功",reportService.ticket2token(ticket));
+    }
+
 }
diff --git a/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/service/ReportService.java b/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/service/ReportService.java
index 034c7d8..e5f082d 100644
--- a/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/service/ReportService.java
+++ b/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/service/ReportService.java
@@ -1,5 +1,7 @@
 package com.ruoyi.biemo.business.service;
 
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.pagehelper.util.StringUtil;
 import com.ruoyi.biemo.business.domain.Category;
 import com.ruoyi.biemo.business.domain.DocInfo;
@@ -13,20 +15,32 @@ import com.ruoyi.biemo.elasticsearch.util.EsService;
 import com.ruoyi.biemo.mongodb.utils.CriteriaAndWrapper;
 import com.ruoyi.biemo.mongodb.utils.MongoHelper;
 import com.ruoyi.biemo.utils.MyObjects;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.sign.Md5Utils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.framework.web.service.SysLoginService;
+import com.ruoyi.system.service.ISysLogininforService;
+import com.ruoyi.system.service.ISysUserService;
 import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
 import org.elasticsearch.search.sort.SortOrder;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationEvent;
 import org.springframework.context.event.EventListener;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 
 import java.awt.image.ReplicateScaleFilter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.stream.Collectors;
@@ -42,6 +56,12 @@ public class ReportService extends EsService<Report> {
     @Autowired
     private MongoHelper mongoHelper;
 
+    @Autowired
+    private ISysUserService userService;
+
+    @Autowired
+    private SysLoginService loginService;
+
     @Autowired
     private ApplicationContext applicationContext;
 
@@ -162,4 +182,86 @@ public class ReportService extends EsService<Report> {
         List<String> ids = saveEvent.getIds();
         deleteBatch(ids);
     }
+
+    @Value("${sso.password}")
+    private String password = "admin123";
+
+    @Value("${sso.apiUrl}")
+    private String apiUrl = "http://test.vsp.cqooc.com/open/api/v2/oauth/token?appId={APPID}&signature={SIGNATURE}&ticket={TICKET}";
+    @Value("${sso.appId}")
+    private String appId = "cb00a3e26b963b25e28cae6e046f1190";
+    @Value("${sso.secretKey}")
+    private String secretKey = "4ce36bf549d64d44b6cbc48e926abb05";
+    @Autowired
+    private RedisCache redisCache;
+
+    public String ticket2token(String ticket) {
+        if(StringUtils.isNotBlank(ticket)){
+            String sign = Md5Utils.hash(appId+secretKey+ticket).toUpperCase();
+            Map<String, Object> map = new HashMap<>();
+            map.put("APPID", appId);
+            map.put("SIGNATURE", sign);
+            map.put("TICKET",ticket);
+            RestTemplate restTemplate = new RestTemplate();
+            ResponseEntity<Map> entity = restTemplate.getForEntity(apiUrl, Map.class, map);
+            Map loginMap = entity.getBody();
+            String userName = "";
+            String nickName = "";
+            if (loginMap != null && (Integer) loginMap.get("code") == 0) {
+               JSONObject jsonObject = (JSONObject) JSONObject.toJSON(loginMap);
+               JSONObject data = jsonObject.getObject("data",JSONObject.class);
+               userName = data.getString("userName");
+               String openId = data.getString("openId");
+               String accessToken = data.getString("accessToken");
+               Long createTime = data.getLong("createTime");
+               Long expiresTime = data.getLong("expiresTime");
+               Long expiresLong = expiresTime-createTime;
+               redisCache.setCacheObject(ticket, accessToken, expiresLong.intValue(), TimeUnit.MILLISECONDS);
+                //用户名不存在就新建
+                SysUser sysUser = new SysUser();
+                if(UserConstants.UNIQUE.equals(userService.checkUserNameUnique(userName))){
+                    sysUser.setUserName(userName);
+                    if(StringUtils.isNotBlank(nickName)){
+                        sysUser.setNickName(nickName);
+                    }else{
+                        sysUser.setNickName(userName);
+                    }
+                    sysUser.setRemark("平台用户");
+                    sysUser.setRoleIds(new Long[]{1L});
+                    sysUser.setCreateBy("xitong");
+                    sysUser.setCreateTime(new Date());
+                    sysUser.setSex("1");
+                    sysUser.setDelFlag("0");
+                    sysUser.setStatus("0");
+                    sysUser.setDeptId(100l);
+                    sysUser.setPassword(SecurityUtils.encryptPassword(password));
+                    userService.insertUser(sysUser);
+                }else{
+                    sysUser = userService.selectUserByUserName(userName);
+                    if(!"0".equals(sysUser.getDelFlag())){
+                        sysUser.setDelFlag("0");
+                        sysUser.setRoleIds(new Long[]{1L});
+                        userService.updateUser(sysUser);
+                    }
+                }
+                return loginService.login(sysUser.getUserName(),password,null, IdUtils.fastSimpleUUID());
+            }
+        }
+        return null;
+    }
+
+    /**
+     * "success": true,
+     * "code": 0,
+     * "total": 0,
+     * "data": {
+     *         "openId": "fb4078687af9ac748c00318d53a36c43",
+     *         "userName": "测试用户",
+     *         "accessToken": "61ynp2w3vxvcdhf730h7cilelr51yljgofkp0uxqoji7hzps9sn0hlfat7ys3cbm",
+     *         "createTime": 1654159120374,
+     *         "expiresTime": 1654245520374,
+     *         "createTimeDisplay": "2022-06-02 16:38:40",
+     *         "expiresTimeDisplay": "2022-06-03 16:38:40"
+     *     }
+     */
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index a9383e2..7b01899 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -28,7 +28,7 @@ import com.ruoyi.system.service.ISysUserService;
 
 /**
  * 登录校验方法
- * 
+ *
  * @author ruoyi
  */
 @Component
@@ -42,7 +42,7 @@ public class SysLoginService
 
     @Autowired
     private RedisCache redisCache;
-    
+
     @Autowired
     private ISysUserService userService;
 
@@ -51,7 +51,7 @@ public class SysLoginService
 
     /**
      * 登录验证
-     * 
+     *
      * @param username 用户名
      * @param password 密码
      * @param code 验证码
@@ -62,10 +62,10 @@ public class SysLoginService
     {
         boolean captchaOnOff = configService.selectCaptchaOnOff();
         // 验证码开关
-        if (captchaOnOff)
-        {
-            validateCaptcha(username, code, uuid);
-        }
+//        if (captchaOnOff)
+//        {
+//            validateCaptcha(username, code, uuid);
+//        }
         // 用户验证
         Authentication authentication = null;
         try
@@ -96,7 +96,7 @@ public class SysLoginService
 
     /**
      * 校验验证码
-     * 
+     *
      * @param username 用户名
      * @param code 验证码
      * @param uuid 唯一标识
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java
index feb8038..593e694 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java
@@ -1,7 +1,11 @@
 package com.ruoyi.framework.web.service;
 
+import java.util.Arrays;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
+
+import com.ruoyi.common.core.domain.entity.SysRole;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.core.domain.entity.SysUser;
@@ -10,7 +14,7 @@ import com.ruoyi.system.service.ISysRoleService;
 
 /**
  * 用户权限处理
- * 
+ *
  * @author ruoyi
  */
 @Component
@@ -24,7 +28,7 @@ public class SysPermissionService
 
     /**
      * 获取角色数据权限
-     * 
+     *
      * @param user 用户信息
      * @return 角色权限信息
      */
@@ -32,7 +36,7 @@ public class SysPermissionService
     {
         Set<String> roles = new HashSet<String>();
         // 管理员拥有所有权限
-        if (user.isAdmin())
+        if (user.isAdmin()||hasRole(user.getRoles()))
         {
             roles.add("admin");
         }
@@ -45,7 +49,7 @@ public class SysPermissionService
 
     /**
      * 获取菜单数据权限
-     * 
+     *
      * @param user 用户信息
      * @return 菜单权限信息
      */
@@ -53,7 +57,8 @@ public class SysPermissionService
     {
         Set<String> perms = new HashSet<String>();
         // 管理员拥有所有权限
-        if (user.isAdmin())
+
+        if (user.isAdmin()||hasRole(user.getRoles()))
         {
             perms.add("*:*:*");
         }
@@ -63,4 +68,17 @@ public class SysPermissionService
         }
         return perms;
     }
+
+    private Boolean hasRole(List<SysRole> roleIds){
+        boolean hasRole = false;
+        if(roleIds!=null&&roleIds.size()>0){
+            for(int i=0;i<roleIds.size();i++){
+                if(roleIds.get(i).getRoleId()==1){
+                    hasRole = true;
+                    break;
+                }
+            }
+        }
+        return hasRole;
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
index 1b43174..0735ab5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
@@ -4,18 +4,19 @@ import java.util.List;
 import java.util.Set;
 import com.ruoyi.common.core.domain.TreeSelect;
 import com.ruoyi.common.core.domain.entity.SysMenu;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.system.domain.vo.RouterVo;
 
 /**
  * 菜单 业务层
- * 
+ *
  * @author ruoyi
  */
 public interface ISysMenuService
 {
     /**
      * 根据用户查询系统菜单列表
-     * 
+     *
      * @param userId 用户ID
      * @return 菜单列表
      */
@@ -23,7 +24,7 @@ public interface ISysMenuService
 
     /**
      * 根据用户查询系统菜单列表
-     * 
+     *
      * @param menu 菜单信息
      * @param userId 用户ID
      * @return 菜单列表
@@ -32,7 +33,7 @@ public interface ISysMenuService
 
     /**
      * 根据用户ID查询权限
-     * 
+     *
      * @param userId 用户ID
      * @return 权限列表
      */
@@ -40,15 +41,15 @@ public interface ISysMenuService
 
     /**
      * 根据用户ID查询菜单树信息
-     * 
+     *
      * @param userId 用户ID
      * @return 菜单列表
      */
-    public List<SysMenu> selectMenuTreeByUserId(Long userId);
+    public List<SysMenu> selectMenuTreeByUserId(SysUser user);
 
     /**
      * 根据角色ID查询菜单树信息
-     * 
+     *
      * @param roleId 角色ID
      * @return 选中菜单列表
      */
@@ -56,7 +57,7 @@ public interface ISysMenuService
 
     /**
      * 构建前端路由所需要的菜单
-     * 
+     *
      * @param menus 菜单列表
      * @return 路由列表
      */
@@ -64,7 +65,7 @@ public interface ISysMenuService
 
     /**
      * 构建前端所需要树结构
-     * 
+     *
      * @param menus 菜单列表
      * @return 树结构列表
      */
@@ -72,7 +73,7 @@ public interface ISysMenuService
 
     /**
      * 构建前端所需要下拉树结构
-     * 
+     *
      * @param menus 菜单列表
      * @return 下拉树结构列表
      */
@@ -80,7 +81,7 @@ public interface ISysMenuService
 
     /**
      * 根据菜单ID查询信息
-     * 
+     *
      * @param menuId 菜单ID
      * @return 菜单信息
      */
@@ -88,7 +89,7 @@ public interface ISysMenuService
 
     /**
      * 是否存在菜单子节点
-     * 
+     *
      * @param menuId 菜单ID
      * @return 结果 true 存在 false 不存在
      */
@@ -96,7 +97,7 @@ public interface ISysMenuService
 
     /**
      * 查询菜单是否存在角色
-     * 
+     *
      * @param menuId 菜单ID
      * @return 结果 true 存在 false 不存在
      */
@@ -104,7 +105,7 @@ public interface ISysMenuService
 
     /**
      * 新增保存菜单信息
-     * 
+     *
      * @param menu 菜单信息
      * @return 结果
      */
@@ -112,7 +113,7 @@ public interface ISysMenuService
 
     /**
      * 修改保存菜单信息
-     * 
+     *
      * @param menu 菜单信息
      * @return 结果
      */
@@ -120,7 +121,7 @@ public interface ISysMenuService
 
     /**
      * 删除菜单管理信息
-     * 
+     *
      * @param menuId 菜单ID
      * @return 结果
      */
@@ -128,7 +129,7 @@ public interface ISysMenuService
 
     /**
      * 校验菜单名称是否唯一
-     * 
+     *
      * @param menu 菜单信息
      * @return 结果
      */
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
index b2ac3f0..3529d86 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -27,7 +27,7 @@ import com.ruoyi.system.service.ISysMenuService;
 
 /**
  * 菜单 业务层处理
- * 
+ *
  * @author ruoyi
  */
 @Service
@@ -46,7 +46,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 根据用户查询系统菜单列表
-     * 
+     *
      * @param userId 用户ID
      * @return 菜单列表
      */
@@ -58,7 +58,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 查询系统菜单列表
-     * 
+     *
      * @param menu 菜单信息
      * @return 菜单列表
      */
@@ -81,7 +81,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 根据用户ID查询权限
-     * 
+     *
      * @param userId 用户ID
      * @return 权限列表
      */
@@ -102,28 +102,28 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 根据用户ID查询菜单
-     * 
+     *
      * @param userId 用户名称
      * @return 菜单列表
      */
     @Override
-    public List<SysMenu> selectMenuTreeByUserId(Long userId)
+    public List<SysMenu> selectMenuTreeByUserId(SysUser user)
     {
         List<SysMenu> menus = null;
-        if (SecurityUtils.isAdmin(userId))
+        if (SecurityUtils.isAdmin(user.getUserId())||hasRole(user.getRoles()))
         {
             menus = menuMapper.selectMenuTreeAll();
         }
         else
         {
-            menus = menuMapper.selectMenuTreeByUserId(userId);
+            menus = menuMapper.selectMenuTreeByUserId(user.getUserId());
         }
         return getChildPerms(menus, 0);
     }
 
     /**
      * 根据角色ID查询菜单树信息
-     * 
+     *
      * @param roleId 角色ID
      * @return 选中菜单列表
      */
@@ -136,7 +136,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 构建前端路由所需要的菜单
-     * 
+     *
      * @param menus 菜单列表
      * @return 路由列表
      */
@@ -194,7 +194,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 构建前端所需要树结构
-     * 
+     *
      * @param menus 菜单列表
      * @return 树结构列表
      */
@@ -226,7 +226,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 构建前端所需要下拉树结构
-     * 
+     *
      * @param menus 菜单列表
      * @return 下拉树结构列表
      */
@@ -239,7 +239,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 根据菜单ID查询信息
-     * 
+     *
      * @param menuId 菜单ID
      * @return 菜单信息
      */
@@ -251,7 +251,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 是否存在菜单子节点
-     * 
+     *
      * @param menuId 菜单ID
      * @return 结果
      */
@@ -264,7 +264,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 查询菜单使用数量
-     * 
+     *
      * @param menuId 菜单ID
      * @return 结果
      */
@@ -277,7 +277,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 新增保存菜单信息
-     * 
+     *
      * @param menu 菜单信息
      * @return 结果
      */
@@ -289,7 +289,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 修改保存菜单信息
-     * 
+     *
      * @param menu 菜单信息
      * @return 结果
      */
@@ -301,7 +301,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 删除菜单管理信息
-     * 
+     *
      * @param menuId 菜单ID
      * @return 结果
      */
@@ -313,7 +313,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 校验菜单名称是否唯一
-     * 
+     *
      * @param menu 菜单信息
      * @return 结果
      */
@@ -331,7 +331,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 获取路由名称
-     * 
+     *
      * @param menu 菜单信息
      * @return 路由名称
      */
@@ -348,7 +348,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 获取路由地址
-     * 
+     *
      * @param menu 菜单信息
      * @return 路由地址
      */
@@ -376,7 +376,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 获取组件信息
-     * 
+     *
      * @param menu 菜单信息
      * @return 组件信息
      */
@@ -400,7 +400,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 是否为菜单内部跳转
-     * 
+     *
      * @param menu 菜单信息
      * @return 结果
      */
@@ -412,7 +412,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 是否为内链组件
-     * 
+     *
      * @param menu 菜单信息
      * @return 结果
      */
@@ -423,7 +423,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 是否为parent_view组件
-     * 
+     *
      * @param menu 菜单信息
      * @return 结果
      */
@@ -434,7 +434,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 根据父节点的ID获取所有子节点
-     * 
+     *
      * @param list 分类表
      * @param parentId 传入的父节点ID
      * @return String
@@ -457,7 +457,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 递归列表
-     * 
+     *
      * @param list
      * @param t
      */
@@ -503,7 +503,7 @@ public class SysMenuServiceImpl implements ISysMenuService
 
     /**
      * 内链域名特殊字符替换
-     * 
+     *
      * @return
      */
     public String innerLinkReplaceEach(String path)
@@ -511,4 +511,18 @@ public class SysMenuServiceImpl implements ISysMenuService
         return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS },
                 new String[] { "", "" });
     }
+
+    private Boolean hasRole(List<SysRole> roleIds){
+        boolean hasRole = false;
+        if(roleIds!=null&&roleIds.size()>0){
+            for(int i=0;i<roleIds.size();i++){
+                if(roleIds.get(i).getRoleId()==1){
+                    hasRole = true;
+                    break;
+                }
+            }
+        }
+        return hasRole;
+    }
+
 }
diff --git a/ruoyi-ui/src/api/login.js b/ruoyi-ui/src/api/login.js
index 649f59c..d84c508 100644
--- a/ruoyi-ui/src/api/login.js
+++ b/ruoyi-ui/src/api/login.js
@@ -56,4 +56,12 @@ export function getCodeImg() {
     method: 'get',
     timeout: 20000
   })
-}
\ No newline at end of file
+}
+
+export function ticket2token(query){
+  return request({
+    url: '/makesoft/report/ticket2token',
+    method: 'get',
+    params: query
+  })
+}
diff --git a/ruoyi-ui/src/main.js b/ruoyi-ui/src/main.js
index 5cfdc0e..3cee607 100644
--- a/ruoyi-ui/src/main.js
+++ b/ruoyi-ui/src/main.js
@@ -95,10 +95,29 @@ Vue.use(Element, {
 
 Vue.config.productionTip = false
 
-new Vue({
-  el: '#app',
-  i18n,
-  router,
-  store,
-  render: h => h(App)
-})
+import {setToken} from '@/utils/auth';
+import {ticket2token} from '@/api/login'
+import {getQueryObject} from '@/utils/index';
+let ticket = getQueryObject().ticket;
+if(ticket){
+   ticket2token({ticket:ticket}).then(res =>{
+     let sysToken = res.data;
+     setToken(sysToken);
+     store.commit('SET_TOKEN',sysToken);
+     initVue();
+   })
+}else{
+  initVue();
+}
+function initVue(){
+  new Vue({
+    el: '#app',
+    i18n,
+    router,
+    store,
+    render: h => h(App)
+  })
+}
+
+
+