| | |
| | | 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; |
| | |
| | | |
| | | 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 |
| | |
| | | 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){ |
| | | |
| | | //登录之前,首先校验允许时间和登录ip |
| | | 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; |
| | | } |
| | | //将新登录的用户存入application |
| | | setApplication(userInf); |
| | | //特定的用户信息返回 |
| | | UserInf userDto = new UserInf(); |
| | | userDto.setUId(userInf.getUId()); |
| | | userDto.setURole(userInf.getURole()); |
| | | userDto.setUName(userInf.getUName()); |
| | | response.setData3(userDto); |
| | | } |
| | | } |
| | | return response; |
| | | } |
| | | } |