From ad36f81fec7666c96fcaec6fd38743be56195ac8 Mon Sep 17 00:00:00 2001
From: whycxzp <perryhsu@163.com>
Date: 星期一, 12 十二月 2022 16:34:09 +0800
Subject: [PATCH] 伪单点登录提交

---
 src/main/java/com/whyc/service/UserService.java |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 108 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/whyc/service/UserService.java b/src/main/java/com/whyc/service/UserService.java
index 2de93e0..5c6332f 100644
--- a/src/main/java/com/whyc/service/UserService.java
+++ b/src/main/java/com/whyc/service/UserService.java
@@ -1,20 +1,20 @@
 package com.whyc.service;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.whyc.constant.UserConstant;
+import com.whyc.constant.YamlProperties;
 import com.whyc.dto.Response;
 import com.whyc.mapper.BaoJiGroupUserMapper;
 import com.whyc.mapper.UserMapper;
 import com.whyc.mapper.UserPermitGroupDataMapper;
-import com.whyc.pojo.BaoJiGroupUser;
-import com.whyc.pojo.UserClient;
-import com.whyc.pojo.UserInf;
-import com.whyc.pojo.UserPermitGroupData;
+import com.whyc.pojo.*;
 import com.whyc.util.ActionUtil;
+import com.whyc.util.CommonUtil;
 import com.whyc.util.RSAUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,13 +23,11 @@
 
 import javax.annotation.Resource;
 import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.security.InvalidParameterException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 @Slf4j
@@ -351,4 +349,106 @@
         List<UserInf> list = userMapper.getUserInfoByStationId(stationId);
         return list;
     }
+
+    public Response loginByUId(int uId) {
+        Response<Object> response = new Response<>();
+        response.setCode(1);
+        response.setData(false);
+        //鏌ヨ瀵瑰簲鐨勭敤鎴�
+        QueryWrapper<UserInf> query = Wrappers.query();
+        query.select("uId","uName","uSnId","upassword","unote","UKey_ID","uRole","password_update_time","status","visit_time","visit_ip")
+                .eq("uId",uId).last(" limit 1");
+        UserInf userInf = userMapper.selectOne(query);
+        if(userInf == null){
+            response.setMsg("瀵瑰簲鐨勭敤鎴蜂笉瀛樺湪");
+        }else{
+            //鍒ゆ柇鐢ㄦ埛鐘舵��
+            if(userInf.getStatus()!=1){
+                switch (userInf.getStatus()){
+                    case 0: response.setMsg("褰撳墠璐﹀彿鐨勭姸鎬佸紓甯�,鏃犳硶鐧诲綍. 寮傚父淇℃伅涓�: "+UserConstant.ACCOUNT_STATUS_CANCEL.getLabel());break;
+                    case 2: response.setMsg("褰撳墠璐﹀彿鐨勭姸鎬佸紓甯�,鏃犳硶鐧诲綍. 寮傚父淇℃伅涓�: "+UserConstant.ACCOUNT_STATUS_HIBERNATE.getLabel());break;
+                    case 3: response.setMsg("褰撳墠璐﹀彿鐨勭姸鎬佸紓甯�,鏃犳硶鐧诲綍. 寮傚父淇℃伅涓�: "+UserConstant.ACCOUNT_STATUS_LOCK.getLabel());break;
+                    case 4: response.setMsg("褰撳墠璐﹀彿鐨勭姸鎬佸紓甯�,鏃犳硶鐧诲綍. 寮傚父淇℃伅涓�: "+UserConstant.ACCOUNT_STATUS_LOCK_FAIL.getLabel());break;
+                    default:response.setMsg("褰撳墠璐﹀彿鐨勭姸鎬佸紓甯�,鏃犳硶鐧诲綍. 寮傚父淇℃伅涓�: 鏃�");
+                }
+                return  response;
+            }
+            //鍒ゆ柇鏄惁涓哄浗缃戠郴缁�,鏍¢獙瀵嗙爜鏄惁3涓湀淇敼杩囦竴娆�
+            if(1 == YamlProperties.systemType){
+
+                //鐧诲綍涔嬪墠,棣栧厛鏍¢獙鍏佽鏃堕棿鍜岀櫥褰昳p
+                boolean ipPass = true;
+
+                String firstTime = userInf.getVisitTime().split("~")[0];
+                String lastTime = userInf.getVisitTime().split("~")[1];
+
+                List<String> ipRules = new LinkedList<>();
+                String ipRuleStr = userInf.getVisitIp();
+                ipRules = Arrays.asList(ipRuleStr.split(","));
+
+                Calendar instance = Calendar.getInstance();
+                String hourOfDay = String.format("%1$02d",instance.get(Calendar.HOUR_OF_DAY));
+                int minute = instance.get(Calendar.MINUTE);
+                int second = instance.get(Calendar.SECOND);
+                String nowTime = hourOfDay+":"+minute+":"+second;
+                //鐧诲綍鏃堕棿鏍¢獙
+                if(nowTime.compareTo(firstTime)>=0 && nowTime.compareTo(lastTime)<=0){
+                    //鐧诲綍ip鏍¢獙
+                    String clientIp = ActionUtil.getRequest().getRemoteAddr();
+                    if(!ipRules.contains("*")){
+                        for(String ipRule:ipRules){
+                            ipPass = true;
+                            //ip瑙勫垯鏍煎紡涓� * 鎴栬�� xxx.xxx.x.x
+                            String[] ipArr = clientIp.split("\\.");
+                            String[] ipRuleArr = ipRule.split("\\.");
+                            for (int i = 0; i < ipRuleArr.length; i++) {
+                                if(!ipRuleArr[i].equals("*") && !ipRuleArr[i].equals(ipArr[i])){
+                                    ipPass = false;
+                                    break;
+                                }
+                            }
+                            if(ipPass){
+                                break;
+                            }
+                        }
+                    }
+                    if(!ipPass){
+                        return response.set(1,false,"鎮ㄧ殑IP绂佹璁块棶,璇风煡鏅�");
+                    }
+                }else{
+                    return response.set(1,false,"鐧诲綍鏃堕棿涓嶅湪鍏佽鐨勬椂闂磋寖鍥村唴");
+                }
+            }
+            //鏍¢獙閫氳繃,鐧诲綍鎴愬姛
+            {
+                response.setData(true);
+                //鏌ヨ鐢ㄦ埛瀵瑰簲鐨勬潈闄愮粍id骞惰繑鍥炵粰鍓嶇
+                QueryWrapper<UserPermitGroupData> query2 = Wrappers.query();
+                query2.select("permit_group_id").eq("uId",uId).last(" limit 1");
+                UserPermitGroupData userPermitGroupData = permitMapper.selectOne(query2);
+                response.setData2(userPermitGroupData.getPermitGroupId());
+                //灏嗙櫥闄嗘垚鍔熺殑鐢ㄦ埛瀛樺叆session
+                HttpSession session = ActionUtil.getSession();
+                session.setAttribute("user",userInf);
+                session.setAttribute("ip",ActionUtil.getRequest().getRemoteAddr());
+
+                List<UserPermitGroup> permitGroupList = permitMapper.getPermitGroupListByUId(uId);
+                if(permitGroupList!=null && permitGroupList.size()>0){
+                    session.setAttribute("permits", ActionUtil.tojson(permitGroupList));
+                }else{
+                    response.setMsg("杩樻湭鍒嗛厤鏉冮檺");
+                    return response;
+                }
+                //灏嗘柊鐧诲綍鐨勭敤鎴峰瓨鍏pplication
+                setApplication(userInf);
+                //鐗瑰畾鐨勭敤鎴蜂俊鎭繑鍥�
+                UserInf userDto = new UserInf();
+                userDto.setUId(userInf.getUId());
+                userDto.setURole(userInf.getURole());
+                userDto.setUName(userInf.getUName());
+                response.setData3(userDto);
+            }
+        }
+        return response;
+    }
 }

--
Gitblit v1.9.1