lyhzzz 4 mesi fa
parent
commit
d9d34db373

+ 2 - 0
src/main/java/com/fdkankan/manage/common/RedisKeyUtil.java

@@ -2,12 +2,14 @@ package com.fdkankan.manage.common;
 
 public class RedisKeyUtil {
 
+    public static Integer loginTime = 2 * 60* 60;
 
     public static final String SCENE_UNUSED_NUMS = "4dkankan:scene:nums";
     public static final String SCENE_NUMS_LOADING = "4dkankan:scene:nums:loading";
     public static final String loginNum= "manage:login:userName:%s:ip:%s";
 
     public static final String loginToken= "manage:login:token:%s";
+    public static final String loginTokenTime= "manage:login:token:time:%s";
     public static final String loginUserName= "manage:login:userName:%s";
 
 

+ 6 - 1
src/main/java/com/fdkankan/manage/config/SaTokenConfigure.java

@@ -130,8 +130,13 @@ public class SaTokenConfigure {
             redisUtil.del(redisKey2);
             throw new BusinessException(ResultCode.USERNAME_ERROR);
         }
+        String redisKeyTime = String.format(RedisKeyUtil.loginTokenTime,StpUtil.getTokenValue());
+        if(redisUtil.hasKey(redisKeyTime)){
+            redisUtil.expire(redisKey,Integer.valueOf(redisUtil.get(redisKeyTime)));
+        }else {
+            redisUtil.expire(redisKey,2 * 60 * 60);
+        }
 
-        redisUtil.expire(redisKey,2 * 60 * 60);
         StpUtil.checkLogin();
     }
 

+ 2 - 1
src/main/java/com/fdkankan/manage/controller/LoginController.java

@@ -26,7 +26,8 @@ public class LoginController extends BaseController {
     @PostMapping("/login")
     public ResultData login(@RequestBody ManageLoginRequest param) {
         String clientIP = ServletUtil.getClientIP(request);
-        return ResultData.ok(manageService.login(clientIP,param.getUserName(),param.getPassword(),false));
+        param.setClientIp(clientIP);
+        return ResultData.ok(manageService.login(param));
     }
     /**
      * 登出

+ 19 - 4
src/main/java/com/fdkankan/manage/controller/inner/InnerAPIController.java

@@ -4,6 +4,7 @@ import cn.hutool.extra.servlet.ServletUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dtflys.forest.annotation.Post;
 import com.fdkankan.manage.common.CameraTypeEnum;
 import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.common.ResultCode;
@@ -12,18 +13,17 @@ import com.fdkankan.manage.controller.BaseController;
 import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.service.*;
+import com.fdkankan.manage.service.impl.ManageService;
 import com.fdkankan.manage.util.RsaUtils;
 import com.fdkankan.manage.vo.request.*;
+import com.fdkankan.manage.vo.response.ManageLoginResponse;
 import com.fdkankan.manage.vo.response.UserAuthSceneVo;
 import com.fdkankan.manage.vo.response.UserShareSceneVo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @RestController
@@ -348,4 +348,19 @@ public class InnerAPIController extends BaseController {
         return ResultData.ok(camera);
     }
 
+    @Autowired
+    ManageService manageService;
+
+    @PostMapping("/getTokenByRyNo")
+    public ResultData getTokenByRyNo(@RequestBody ManageLoginRequest param){
+        if(StringUtils.isBlank(param.getRyNo())){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        param.setUserName(param.getRyNo());
+        String clientIP = ServletUtil.getClientIP(request);
+        param.setNeedPassword(false);
+        param.setClientIp(clientIP);
+        ManageLoginResponse login = manageService.login(param);
+        return ResultData.ok(login.getToken());
+    }
 }

+ 1 - 1
src/main/java/com/fdkankan/manage/service/ISysUserService.java

@@ -21,7 +21,7 @@ public interface ISysUserService extends IService<SysUser> {
 
     SysUser getByUserName(String userName);
 
-    ManageLoginResponse getUserByUserNameAndPassword(String userName, String password);
+    ManageLoginResponse getUserByUserNameAndPassword(String userName, String password,Boolean needPassword);
 
     void addOrUpdate(SysUserParam param);
 

+ 7 - 1
src/main/java/com/fdkankan/manage/service/impl/JySceneUserAuthServiceImpl.java

@@ -17,6 +17,7 @@ import com.fdkankan.manage.mapper.IJySceneUserAuthMapper;
 import com.fdkankan.manage.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.manage.util.AesUtil;
+import com.fdkankan.manage.vo.request.ManageLoginRequest;
 import com.fdkankan.manage.vo.request.SceneParam;
 import com.fdkankan.manage.vo.response.CheckOtherVo;
 import com.fdkankan.manage.vo.response.ManageLoginResponse;
@@ -552,7 +553,12 @@ public class JySceneUserAuthServiceImpl extends ServiceImpl<IJySceneUserAuthMapp
             sysUserId = result.getId();
         }
         if(StringUtils.isNotBlank(userName) && StringUtils.isNotBlank(password)){
-            ManageLoginResponse login = manageService.login(clientIP, userName, password,true);
+            ManageLoginRequest param = new ManageLoginRequest();
+            param.setClientIp(clientIP);
+            param.setUserName(userName);
+            param.setPassword(password);
+            param.setMingwen(true);
+            ManageLoginResponse login = manageService.login(param);
             sysUserId = login.getId();
         }
 

+ 25 - 16
src/main/java/com/fdkankan/manage/service/impl/ManageService.java

@@ -10,6 +10,7 @@ import com.fdkankan.manage.common.RedisKeyUtil;
 import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.service.*;
+import com.fdkankan.manage.vo.request.ManageLoginRequest;
 import com.fdkankan.manage.vo.response.ManageLoginResponse;
 import com.fdkankan.redis.util.RedisUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -35,23 +36,26 @@ public class ManageService {
     RedisUtil redisUtil;
 
 
-    public ManageLoginResponse login(String ip,String userName, String password,Boolean flag) {
+    public ManageLoginResponse login(ManageLoginRequest param) {
 
-        this.checkLoginNum(ip,userName);
-
-        if(StringUtils.isBlank(userName) || StringUtils.isBlank(password)){
-            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
-        }
-        //对前端传的密码解密
-        String decode = password;
-        if(!flag){
-             decode = Base64Converter.decode(Base64Converter.subText(password));
+        this.checkLoginNum(param.getClientIp(),param.getUserName());
+        String passwordMd5 = null;
+        if(param.getNeedPassword()){
+            if(StringUtils.isBlank(param.getUserName()) || StringUtils.isBlank(param.getPassword())){
+                throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+            }
+            //对前端传的密码解密
+            String decode = param.getPassword();
+            if(!param.getMingwen()){
+                decode = Base64Converter.decode(Base64Converter.subText(decode));
+            }
+             passwordMd5 = SecurityUtil.MD52(decode);
         }
-        String passwordMd5 = SecurityUtil.MD52(decode);
-        ManageLoginResponse result = sysUserService.getUserByUserNameAndPassword(userName, passwordMd5);
+
+        ManageLoginResponse result = sysUserService.getUserByUserNameAndPassword(param.getUserName(), passwordMd5,param.getNeedPassword());
         if(result == null){
-            this.addLoginErrorNum(ip,userName);
-            SysUser sysUser = sysUserService.getByUserName(userName);
+            this.addLoginErrorNum(param.getClientIp(),param.getUserName());
+            SysUser sysUser = sysUserService.getByUserName(param.getUserName());
             if(sysUser == null){
                 throw new BusinessException(ResultCode.USER_NOT_EXIST);
             }
@@ -84,9 +88,14 @@ public class ManageService {
 
         result.setToken(StpUtil.getTokenValue());
         result.setUserId(user.getId());
-        redisUtil.set(String.format(RedisKeyUtil.loginToken ,result.getToken()), JSONObject.toJSONString(result), 2*60*60);
+        if(param.getTime() != null){
+            redisUtil.set(String.format(RedisKeyUtil.loginToken ,result.getToken()), JSONObject.toJSONString(result), param.getTime());
+            redisUtil.set(String.format(RedisKeyUtil.loginTokenTime ,result.getToken()), param.getTime().toString(), param.getTime());
+        }else {
+            redisUtil.set(String.format(RedisKeyUtil.loginToken ,result.getToken()), JSONObject.toJSONString(result), RedisKeyUtil.loginTime);
+        }
 
-        String redisUserNameKey = String.format(RedisKeyUtil.loginUserName, userName);
+        String redisUserNameKey = String.format(RedisKeyUtil.loginUserName, param.getUserName());
 
         redisUtil.lRightPush(redisUserNameKey,result.getToken());
 

+ 5 - 3
src/main/java/com/fdkankan/manage/service/impl/SysUserServiceImpl.java

@@ -65,10 +65,12 @@ public class SysUserServiceImpl extends ServiceImpl<ISysUserMapper, SysUser> imp
 
 
     @Override
-    public ManageLoginResponse getUserByUserNameAndPassword(String userName, String password) {
+    public ManageLoginResponse getUserByUserNameAndPassword(String userName, String password,Boolean needPassword) {
         LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(SysUser::getUserName,userName)
-                .eq(SysUser::getPassword,password);
+        wrapper.eq(SysUser::getUserName,userName);
+        if(needPassword){
+            wrapper.eq(SysUser::getPassword,password);
+        }
         List<SysUser> list = this.list(wrapper);
         if(list == null || list.size() <=0){
             return null;

+ 6 - 0
src/main/java/com/fdkankan/manage/vo/request/ManageLoginRequest.java

@@ -6,4 +6,10 @@ import lombok.Data;
 public class ManageLoginRequest {
     private String userName;
     private String password;
+
+    private Long time;
+    private String ryNo;
+    private String clientIp;
+    private Boolean needPassword = true;
+    private Boolean mingwen = false;
 }