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