Explorar o código

登录redis 修改

lyhzzz %!s(int64=3) %!d(string=hai) anos
pai
achega
f8849eaf7d

+ 6 - 7
4dkankan-center-modeling/src/main/java/com/fdkankan/modeling/receiver/BuildSceneMQListener.java

@@ -6,15 +6,17 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.constant.ConstantUrl;
-import com.fdkankan.common.util.*;
 import com.fdkankan.common.util.ComputerUtil;
+import com.fdkankan.common.util.CreateObjUtil;
+import com.fdkankan.common.util.FileUtil;
+import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.dingtalk.DingTalkSendUtils;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
 import com.fdkankan.modeling.constants.SysConstants;
-import com.fdkankan.push.PushMessageConfig;
 import com.fdkankan.mq.message.BuildSceneMqMessage;
 import com.fdkankan.mq.message.BuildSceneResultMqMessage;
 import com.fdkankan.mq.util.RocketMQProducer;
+import com.fdkankan.push.PushMessageConfig;
 import com.fdkankan.push.PushMsgUtil;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
@@ -27,7 +29,6 @@ import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
 import org.apache.rocketmq.spring.core.RocketMQListener;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.client.RestTemplate;
@@ -62,8 +63,6 @@ public class BuildSceneMQListener implements RocketMQListener<String> {
 
     @Autowired
     RedisUtil redisUtil;
-    @Autowired
-    RedisTemplate redisTemplate;
 
     private RestTemplate restTemplate = new RestTemplate();
 
@@ -113,7 +112,7 @@ public class BuildSceneMQListener implements RocketMQListener<String> {
                 if (building.compareTo(1L) != 0) {
                     log.error("场景正在构建中,退出构建,当前服务器id:{},参数:{}", SysConstants.hostName, JSONObject.toJSONString(message));
                 } else {
-                    redisTemplate.expire(key, Duration.of(SysConstants.modelTimeOut, ChronoUnit.HOURS));
+                    redisUtil.expire(key, Duration.of(SysConstants.modelTimeOut, ChronoUnit.HOURS));
                 }
                 //休眠2秒等待数据入库
                 Thread.sleep(2000L);
@@ -656,7 +655,7 @@ public class BuildSceneMQListener implements RocketMQListener<String> {
 
     private void handFail(String reason,String serverPath,String num){
         // 释放缓存锁
-        redisTemplate.delete(RedisKey.SCENE_BUILDING + num);
+        redisUtil.del(RedisKey.SCENE_BUILDING + num);
         CompletableFuture.runAsync(() -> {
             try {
                 String content = String.format(SysConstants.DINGTALK_MSG_PATTERN,environment, SysConstants.hostName,reason,num,serverPath,num,num);

+ 5 - 7
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AgentServiceImpl.java

@@ -4,24 +4,22 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fdkankan.common.config.RedisDefaultConfig;
 import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.LoginType;
 import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.exception.BusinessException;
-import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.common.user.SSOLoginHelper;
 import com.fdkankan.common.util.PasswordUtils;
-import com.fdkankan.common.util.SsoUtil;
 import com.fdkankan.platform.agent.entity.Agent;
 import com.fdkankan.platform.agent.mapper.IAgentMapper;
 import com.fdkankan.platform.agent.request.RequestAgent;
 import com.fdkankan.platform.agent.service.IAgentService;
-import com.fdkankan.platform.common.ExcelUtil;
 import com.fdkankan.platform.agent.vo.AgentDetailTotalAmount;
 import com.fdkankan.platform.agent.vo.AgentTotalAmountVo;
 import com.fdkankan.platform.agent.vo.AgentVo;
 import com.fdkankan.platform.agent.vo.ResponseAgentCamera;
+import com.fdkankan.platform.common.ExcelUtil;
 import com.fdkankan.platform.goods.entity.Camera;
 import com.fdkankan.platform.goods.entity.CameraDetail;
 import com.fdkankan.platform.goods.service.ICameraDetailService;
@@ -51,6 +49,8 @@ import java.util.stream.Collectors;
 public class AgentServiceImpl extends ServiceImpl<IAgentMapper, Agent> implements IAgentService {
 
     @Autowired
+    SSOLoginHelper ssoLoginHelper;
+    @Autowired
     RedisUtil redisUtil;
     @Autowired
     private ICameraService cameraService;
@@ -81,9 +81,7 @@ public class AgentServiceImpl extends ServiceImpl<IAgentMapper, Agent> implement
         if (!encryptPwd.equals(agent.getAgentPassword())){
             throw new BusinessException(ErrorCode.PASSWORD_ERROR);
         }
-        String key = SsoUtil.PREFIX_CACHE_AGENT + agent.getAgentId();
-        String token = JwtUtil.createJWT(-1, key, LoginType.AGENT.name());
-        redisUtil.set(key,token, RedisDefaultConfig.USER_EXPIRE_TIME);
+        String token = ssoLoginHelper.login(LoginType.AGENT.name(), agent.getAgentId());
         JSONObject obj = new JSONObject();
         obj.put("token", token);
         return obj;

+ 14 - 20
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/sso/AppService.java

@@ -1,10 +1,9 @@
 package com.fdkankan.platform.user.service.sso;
 
-import com.fdkankan.common.config.RedisDefaultConfig;
 import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.user.SSOLoginHelper;
 import com.fdkankan.common.user.SSOUser;
-import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.common.util.RandomUtil;
 import com.fdkankan.common.util.SecurityUtil;
 import com.fdkankan.common.util.SsoUtil;
@@ -18,14 +17,14 @@ import com.fdkankan.platform.user.request.RequestUser;
 import com.fdkankan.platform.user.service.IUserService;
 import com.fdkankan.platform.user.vo.ResponseUser;
 import com.fdkankan.platform.user.vo.SSOUserVo;
+import com.fdkankan.redis.constant.RedisKey;
+import com.fdkankan.redis.util.RedisUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.Set;
 
@@ -43,8 +42,10 @@ public class AppService {
     private MsgService msgService;
     @Autowired
     private RegisterService registerService;
-    @Resource
-    private RedisTemplate<String,String> redisTemplate;
+    @Autowired
+    private SSOLoginHelper ssoLoginHelper;
+    @Autowired
+    private RedisUtil redisUtil;
 
     public String qrCodeLogin(RequestUser user) {
         if(StringUtils.isEmpty(user.getAppUserName()) || StringUtils.isEmpty(user.getAppPassword())
@@ -59,7 +60,7 @@ public class AppService {
         if (entity == null ){
             throw new BusinessException(AppConstant.FAILURE_CODE_4012, AppConstant.FAILURE_MSG_4012);
         }
-        redisTemplate.opsForValue().set(user.getUuid(),user.getAppUserName(), RedisDefaultConfig.DEFAULT_EXPIRE_TIME, RedisDefaultConfig.DEFAULT_TIME_UNIT);
+        redisUtil.set(user.getUuid(),user.getAppUserName(), RedisKey.EXPIRE_TIME_2_HOUR);
         return ServerCode.SUCCESS.message();
     }
 
@@ -71,9 +72,7 @@ public class AppService {
         if (cameraEntity == null){
             throw new BusinessException(ErrorCode.PASSWORD_ERROR);
         }
-        String token = JwtUtil.createJWT(-1, cameraEntity.getChildName(), LoginType.APP.name());
-        String key = SsoUtil.PREFIX_CACHE_CAMERA + cameraEntity.getChildName();
-        redisTemplate.opsForValue().set(key, token, RedisDefaultConfig.CAMERA_EXPIRE_TIME,RedisDefaultConfig.DEFAULT_TIME_UNIT);
+        String token = ssoLoginHelper.login(LoginType.APP.name(), cameraEntity.getChildName(), RedisKey.CAMERA_EXPIRE_7_TIME);
         HashMap<String,String> obj = new HashMap<>();
         obj.put("token", token);
         return obj;
@@ -98,23 +97,18 @@ public class AppService {
         if(ssoUser == null){
             throw new BusinessException(ErrorCode.USER_NOT_EXIST);
         }
-        redisTemplate.delete(SsoUtil.PREFIX_MSG_AUTH_CODE + user.getPhoneNum());
+        ssoLoginHelper.logout(LoginType.APP.name(),user.getPhoneNum());
         return this.setRedisToken(ssoUser,dbUser,user.getCameraType());
     }
 
     private SSOUserVo setRedisToken(SSOUser ssoUser,User userEntity,Integer CameraType){
-        String key = SsoUtil.PREFIX_CACHE_CAMERA + ssoUser.getUserName();
-        String token = JwtUtil.createJWT(-1, ssoUser.getUserName(),LoginType.APP.name());
-        redisTemplate.opsForValue().set(key, token, RedisDefaultConfig.USER_EXPIRE_TIME,RedisDefaultConfig.DEFAULT_TIME_UNIT);
+        String token = ssoLoginHelper.login(LoginType.APP.name(), ssoUser.getUserName());
         Integer cameraType = CameraType == null ? 4 : CameraType;
         return userService.getUserInfoByUser(cameraType, userEntity, token);
     }
 
     public String logout(String token) {
-        String userName = JwtUtil.getUsername(token);
-        if(redisTemplate.hasKey(SsoUtil.PREFIX_CACHE_CAMERA + userName)){
-            redisTemplate.delete(SsoUtil.PREFIX_CACHE_CAMERA + userName);
-        }
+        ssoLoginHelper.logout(token);
         return ServerCode.SUCCESS.message();
     }
 
@@ -170,7 +164,7 @@ public class AppService {
         }
 
         //验证码校验
-        String codeValue = redisTemplate.opsForValue().get(SsoUtil.PREFIX_MSG_AUTH_CODE + user.getPhoneNum());
+        String codeValue = redisUtil.get(SsoUtil.PREFIX_MSG_AUTH_CODE + user.getPhoneNum());
         if (StringUtils.isEmpty(codeValue)){
             throw new BusinessException(ErrorCode.V_CODE_ERROR);
         }
@@ -178,7 +172,7 @@ public class AppService {
             throw new BusinessException(ErrorCode.V_CODE_ERROR);
         }
         userEntity.setPassword(SecurityUtil.MD5(user.getPassword()));
-        redisTemplate.delete(SsoUtil.PREFIX_MSG_AUTH_CODE + user.getPhoneNum());
+        redisUtil.del(SsoUtil.PREFIX_MSG_AUTH_CODE + user.getPhoneNum());
         if(!userService.updateById(userEntity)){
             throw new BusinessException(ErrorCode.ERROR_MSG);
         }

+ 7 - 15
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/sso/LoginService.java

@@ -3,19 +3,17 @@ package com.fdkankan.platform.user.service.sso;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.ConstantFilePath;
-import com.fdkankan.common.constant.LoginType;
-import com.fdkankan.common.util.*;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.user.SSOLoginHelper;
 import com.fdkankan.common.user.SSOUser;
+import com.fdkankan.common.util.*;
 import com.fdkankan.platform.user.entity.User;
 import com.fdkankan.platform.user.request.RequestUser;
 import com.fdkankan.platform.user.service.IUserService;
 import com.fdkankan.platform.user.vo.SSOUserVo;
 import com.fdkankan.redis.util.RedisUtil;
-import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.constant.ServerCode;
-import com.fdkankan.common.exception.BusinessException;
-import com.fdkankan.common.util.JwtUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -56,8 +54,7 @@ public class LoginService {
     public SSOUserVo quickLogin(RequestUser param) {
         User dbUser = msgService.checkMsgAuth(param);
         SSOUser ssoUser = userService.getSsoUserByUserName(dbUser,param.getPhoneNum());
-        String token = JwtUtil.createJWT(-1, ssoUser.getUserName(), LoginType.USER.name());
-        ssoLoginHelper.login(token, ssoUser);
+        String token = ssoLoginHelper.login(ssoUser);
         removeTimeOutToken(param.getPhoneNum(),token);
         return  userService.getUserInfoByUser( param.getCameraType(), dbUser,token);
     }
@@ -157,10 +154,7 @@ public class LoginService {
         String childName = redisUtil.get(uuid);
         SSOUser dbUser = new SSOUser();
         dbUser.setUserName(childName);
-
-        String token = JwtUtil.createJWT(-1, childName,LoginType.USER.name());
-        ssoLoginHelper.login(token, dbUser);
-
+        String token = ssoLoginHelper.login(dbUser);
         JSONObject object = new JSONObject();
         object.put("token", token);
         object.put("childName", childName);
@@ -177,8 +171,6 @@ public class LoginService {
         if (!passwordCode.equals(ssoUser.getPassword())){
             throw new BusinessException(ErrorCode.PASSWORD_ERROR);
         }
-        String token = JwtUtil.createJWT(-1, ssoUser.getUserName(),LoginType.USER.name());
-        ssoLoginHelper.login(token, ssoUser);
-        return token;
+        return ssoLoginHelper.login(ssoUser);
     }
 }

+ 5 - 15
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/sso/SsoManagerService.java

@@ -2,15 +2,13 @@ package com.fdkankan.platform.user.service.sso;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fdkankan.common.config.RedisDefaultConfig;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.LoginType;
 import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.user.SSOLoginHelper;
 import com.fdkankan.common.util.Base64Converter;
-import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.common.util.PasswordUtils;
-import com.fdkankan.common.util.SsoUtil;
 import com.fdkankan.platform.order.entity.SpaceSdk;
 import com.fdkankan.platform.order.service.ISpaceSdkService;
 import com.fdkankan.platform.user.entity.Manager;
@@ -20,11 +18,8 @@ import com.fdkankan.platform.user.service.IManagerService;
 import com.fdkankan.platform.user.vo.SSOManagerVo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
-
 @Service
 public class SsoManagerService {
 
@@ -32,8 +27,8 @@ public class SsoManagerService {
     private IManagerService managerService;
     @Autowired
     private ISpaceSdkService spaceSdkService;
-    @Resource
-    private RedisTemplate<String,String> redisTemplate;
+    @Autowired
+    private SSOLoginHelper ssoLoginHelper;
 
     public JSONObject login(RequestManager param) {
         SSOManagerVo managerEntity = getVoByUserName(param.getUserName());
@@ -65,19 +60,14 @@ public class SsoManagerService {
         if (!encryptPwd.equals(managerEntity.getPassword())){
             throw new BusinessException(ErrorCode.PASSWORD_ERROR);
         }
-        String key = SsoUtil.PREFIX_CACHE_MANAGER + managerEntity.getUserName();
-        String token = JwtUtil.createJWT(-1, key, LoginType.MANAGER.name());
-        redisTemplate.opsForValue().set(key, token, RedisDefaultConfig.USER_EXPIRE_TIME,RedisDefaultConfig.DEFAULT_TIME_UNIT);
+        String token = ssoLoginHelper.login(LoginType.MANAGER.name(), managerEntity.getUserName());
         JSONObject obj = new JSONObject();
         obj.put("token", token);
         return obj;
     }
 
     public String logout(String token) {
-        String userName = JwtUtil.getUsername(token);
-        if (redisTemplate.hasKey(userName)){
-            redisTemplate.delete(userName);
-        }
+        ssoLoginHelper.logout(token);
         return ServerCode.SUCCESS.message();
     }
 

+ 1 - 5
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneFileController.java

@@ -2,14 +2,13 @@ package com.fdkankan.scene.controller;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.redis.util.RedisLockUtil;
 import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.vo.ResponseSceneFile;
-import com.fdkankan.common.response.ResultData;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -73,9 +72,6 @@ public class SceneFileController extends BaseController {
     @Autowired
     RedisLockUtil redisLockUtil;
 
-    @Autowired
-    RedisTemplate redisTemplate;
-
     @Value("${main.url}")
     private String mainUrl;
 

+ 1 - 6
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/TestController.java

@@ -1,7 +1,6 @@
 package com.fdkankan.scene.controller;
 
 import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.response.ResultData;
@@ -21,7 +20,6 @@ import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -94,9 +92,6 @@ public class TestController {
         return "123";
     }
 
-    @Autowired
-    RedisTemplate<String, String> redisTemplate;
-
     @GetMapping("/testSetObject")
     public boolean testSetObject() throws Exception {
 //        User user = new User();
@@ -125,7 +120,7 @@ public class TestController {
 //
     @GetMapping("/testGetObject")
     public User testGetObject() throws Exception {
-        String test12 = redisTemplate.opsForValue().get("test66");
+        String test12 = redisUtil.get("test66");
         User user = JSONObject.parseObject(test12, User.class);
         return user;
     }

+ 0 - 3
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneAppServiceImpl.java

@@ -27,7 +27,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -61,8 +60,6 @@ public class SceneAppServiceImpl extends ServiceImpl<ISceneMapper, Scene> implem
     @Qualifier("uploadToOssUtil")
     UploadToOssUtil uploadToOssUtil;
     @Autowired
-    RedisTemplate redisTemplate;
-    @Autowired
     ISceneService sceneService;
     @Autowired
     ISceneExtService sceneExtService;

+ 4 - 6
4dkankan-common/src/main/java/com/fdkankan/common/config/RedisDefaultConfig.java

@@ -1,10 +1,8 @@
 package com.fdkankan.common.config;
 
-import java.util.concurrent.TimeUnit;
-
 public class RedisDefaultConfig {
-    public static final int DEFAULT_EXPIRE_TIME = 7200;  // redis默认过期时间,单位/秒, 60*60*2=2H, 两小时
-    public static final TimeUnit DEFAULT_TIME_UNIT = TimeUnit.SECONDS; //redis默认过期时间单位
-    public static final int CAMERA_EXPIRE_TIME = 604800;  // 相机登陆7天有效期
-    public static final int USER_EXPIRE_TIME = 21600;  // agent用户有效期
+//    public static final TimeUnit DEFAULT_TIME_UNIT = TimeUnit.SECONDS; //redis默认过期时间单位
+//    public static final int DEFAULT_EXPIRE_TIME = 7200;  // redis默认过期时间,单位/秒, 60*60*2=2H, 两小时
+//    public static final int CAMERA_EXPIRE_TIME = 604800;  // 相机登陆7天有效期
+//    public static final int USER_EXPIRE_TIME = 21600;  // agent用户有效期
 }

+ 40 - 7
4dkankan-common/src/main/java/com/fdkankan/common/user/SSOLoginHelper.java

@@ -1,5 +1,7 @@
 package com.fdkankan.common.user;
 
+import com.fdkankan.common.constant.LoginType;
+import com.fdkankan.common.util.JwtUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -7,9 +9,10 @@ import org.springframework.stereotype.Component;
 public class SSOLoginHelper {
     @Autowired
     private SSOLoginStore ssoLoginStore;
-    public  SSOUser loginCheck(String sessionId) {
-        if (sessionId != null && sessionId.trim().length() > 0) {
-            SSOUser ssoUser = ssoLoginStore.get(sessionId);
+    public  SSOUser loginCheck(String token) {
+        if (token != null && token.trim().length() > 0) {
+            String username = JwtUtil.getUsername(token);
+            SSOUser ssoUser = ssoLoginStore.get(username);
             if (ssoUser != null) {
                 return ssoUser;
             }
@@ -17,11 +20,41 @@ public class SSOLoginHelper {
         return null;
     }
 
-    public void login(String token, SSOUser ssoUser) {
-        ssoLoginStore.put(token, ssoUser);
+    public String login(String loginType,String userName) {
+        return this.login(loginType,userName,null, null);
+    }
+    public String login(String loginType,String userName,Integer time) {
+        return this.login(loginType,userName,time, null);
+    }
+    public String login(SSOUser ssoUser) {
+        String loginType = LoginType.USER.name();
+        String userName = ssoUser.getUserName();
+        return this.login(loginType,userName,null, ssoUser);
+    }
+    public String login(SSOUser ssoUser,Integer time) {
+        String loginType = LoginType.USER.name();
+        String userName = ssoUser.getUserName();
+        return this.login(loginType,userName,time, ssoUser);
     }
 
-    public  void logout(String sessionId) {
-        ssoLoginStore.remove(sessionId);
+    /**
+     * @param loginType     登录类型
+     * @param userName      登录用户名
+     * @param time          过期时间,时间单位为秒,默认为 6小时 21600
+     * @param ssoUser       sooUser
+     */
+    public String login(String loginType,String userName,Integer time,SSOUser ssoUser) {
+        String token = JwtUtil.createJWT(-1, userName,loginType);
+        ssoLoginStore.put(loginType,userName,token,time, ssoUser);
+        return token;
+    }
+
+    public  void logout(String token) {
+        String username = JwtUtil.getUsername(token);
+        String loginType = JwtUtil.getLoginType(token);
+        this.logout(loginType,username);
+    }
+    public  void logout(String loginType,String userName) {
+        ssoLoginStore.remove(loginType,userName);
     }
 }

+ 43 - 23
4dkankan-common/src/main/java/com/fdkankan/common/user/SSOLoginStore.java

@@ -1,13 +1,12 @@
 package com.fdkankan.common.user;
 
 import com.alibaba.fastjson.JSONObject;
-import com.fdkankan.common.util.SsoUtil;
+import com.fdkankan.common.constant.LoginType;
+import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.util.concurrent.TimeUnit;
 
 @Component
 public class SSOLoginStore {
@@ -16,14 +15,12 @@ public class SSOLoginStore {
     private RedisUtil redisUtil;
     /**
      * get
-     *
-     * @param sessionId
+     * @param userName
      * @return
      */
-    public  SSOUser get(String sessionId) {
-
-        String redisKey = redisKey(sessionId);
-        String objectValue = (String) redisUtil.get(redisKey);
+    public  SSOUser get(String userName) {
+        String redisKey = getSsoUserRedisKey(userName);
+        String objectValue =  redisUtil.get(redisKey);
         if (objectValue != null) {
             return JSONObject.parseObject(objectValue, SSOUser.class);
         }
@@ -32,26 +29,49 @@ public class SSOLoginStore {
 
     /**
      * remove
-     *
-     * @param sessionId
+     * @param loginType     登录类型
+     * @param userName      登录用户名
      */
-    public  void remove(String sessionId) {
-        String redisKey = redisKey(sessionId);
-        redisUtil.del(redisKey);
+    public  void remove(String loginType,String userName) {
+        String redisKey = getTokenRedisKey(loginType,userName);
+        if(redisUtil.hasKey(redisKey)){
+            redisUtil.del(redisKey);
+        }
+        if(LoginType.USER.name().equals(loginType)  ){
+            String ssoUserRedisKey = getSsoUserRedisKey(userName);
+            if(redisUtil.hasKey(ssoUserRedisKey)){
+                redisUtil.del(ssoUserRedisKey);
+            }
+        }
     }
 
     /**
-     * put
-     *
-     * @param sessionId
-     * @param ssoUser
+     *  put
+     * @param loginType     登录类型
+     * @param userName      登录用户名
+     * @param token         token
+     * @param time          过期时间,时间单位为秒,默认为 6小时 21600
+     * @param ssoUser       sooUser
      */
-    public  void put(String sessionId, SSOUser ssoUser) {
-        String redisKey = redisKey(sessionId);
-        redisUtil.set(redisKey, JSONObject.toJSONString(ssoUser), 216000);
+    public  void put(String loginType, String userName, String token,Integer time, SSOUser ssoUser) {
+        if(time == null || time <=0 ){
+            time = RedisKey.USER_EXPIRE_TIME;
+        }
+        String redisKey = getTokenRedisKey(loginType,userName);
+        redisUtil.set(redisKey, token, time);
+        if(LoginType.USER.name().equals(loginType) && ssoUser!=null ){
+            redisUtil.set(getSsoUserRedisKey(userName),JSONObject.toJSONString(ssoUser),time);
+        }
     }
 
-    private static String redisKey(String sessionId){
-        return SsoUtil.SSO_SESSIONID.concat("#").concat(sessionId);
+    /**
+     * 获取token key
+     */
+    private static String getTokenRedisKey(String loginType,String userName){
+        return String.format(RedisKey.TOKEN_USER, loginType,userName);
     }
+    private static String getSsoUserRedisKey(String userName){
+        return String.format(RedisKey.SSO_USER,userName);
+    }
+
 }