From a7fef2846505b08e0711345b17902e7381612d23 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期二, 25 三月 2025 14:02:16 +0800 Subject: [PATCH] 查询锁的蓝牙开启时间段记录添加area_path --- src/main/java/com/whyc/service/UserInfService.java | 291 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 243 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/whyc/service/UserInfService.java b/src/main/java/com/whyc/service/UserInfService.java index ba07c35..81ce236 100644 --- a/src/main/java/com/whyc/service/UserInfService.java +++ b/src/main/java/com/whyc/service/UserInfService.java @@ -5,32 +5,25 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.whyc.constant.YamlProperties; import com.whyc.dto.Response; -import com.whyc.mapper.AreaInfMapper; -import com.whyc.mapper.AuthiruzeInfMapper; -import com.whyc.mapper.LockInfMapper; -import com.whyc.mapper.UserInfMapper; -import com.whyc.pojo.db_area.AreaInf; -import com.whyc.pojo.db_area.AuthiruzeInf; -import com.whyc.pojo.db_area.KeyInf; -import com.whyc.pojo.db_area.LockInf; +import com.whyc.mapper.*; +import com.whyc.pojo.db_area.*; +import com.whyc.pojo.db_user.UserClient; import com.whyc.pojo.db_user.UserInf; -import com.whyc.util.ActionUtil; -import com.whyc.util.MD5Util; -import com.whyc.util.PageInfoUtils; -import com.whyc.util.RSAUtil; +import com.whyc.util.*; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UnknownAccountException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @Service @@ -42,29 +35,54 @@ private AreaInfMapper ainfMapper; @Autowired(required = false) + private AreaInfService areaInfService; + + @Autowired(required = false) private AuthiruzeInfMapper authMapper; @Autowired(required = false) private LockInfMapper linfMapper; + @Autowired(required = false) + private KeyInfMapper kinfMapper; + + @Autowired(required = false) + private AreaUserMapper areaUserMapper; + + @Autowired(required = false) + private AppLoginOutService appLoginOutService; + + + + + //鏌ヨ鎵�鏈夌敤鎴蜂俊鎭� - public Response getAllUser(String uname,String realName,Integer role, int pageCurr, int pageSize) { + public Response getAllUser(String uname, String realName, int areaId, int pageCurr, int pageSize) { + UserInf uinf= ActionUtil.getUser(); + List areaList=new ArrayList(); + areaList.add(areaId); + areaInfService.getAllAreaId(areaId,areaList); PageHelper.startPage(pageCurr,pageSize); - List<UserInf> list=mapper.getAllUser(uname,realName,role); - for (UserInf uinf:list) { - QueryWrapper wrapper=new QueryWrapper(); - wrapper.eq("area_uname",uinf.getUname()); - wrapper.last("limit 1"); - AreaInf ainf=ainfMapper.selectOne(wrapper); - uinf.setAinf(ainf); + List<UserInf> list=mapper.getAllUser(uname,realName,uinf.getUrole(),areaList); + if(list!=null&&list.size()>0){ + for (UserInf u:list) { + QueryWrapper wrapper=new QueryWrapper(); + wrapper.eq("uname",u.getUname()); + List<AreaUser> areaUserList=areaUserMapper.selectList(wrapper); + List<Integer> areaIds=areaUserList.stream().map(AreaUser::getAreaId) // 鎻愬彇鍚嶅瓧 + .collect(Collectors.toList()); // 杞崲涓哄垪琛�*/ + QueryWrapper wrapper1=new QueryWrapper(); + wrapper1.in("id",areaIds); + List<AreaInf> areaInfs=ainfMapper.selectList(wrapper1); + u.setAinfList(areaInfs); + } } PageInfo pageInfo=new PageInfo(list); return new Response().setII(1,list!=null,pageInfo,"鏁版嵁杩斿洖"); } - //缂栬緫鏉冮檺 - public Response updateUser(int uid,String uname, int udownloadRole) { + /* //缂栬緫鏉冮檺 + public Response updateUser(int uid,String uname) { UpdateWrapper wrapper=new UpdateWrapper(); - wrapper.set("udownload_role",udownloadRole); if(uname!=null){ wrapper.set("uname",uname); } @@ -72,24 +90,40 @@ int bl=mapper.update(null,wrapper); return new Response().set(1,bl>0); } - +*/ //鏂版坊鍔犵敤鎴蜂俊鎭� + @Transactional public Response addUser(UserInf uinf) { QueryWrapper wrapper=new QueryWrapper(); - //鍒ゆ柇鏄惁瀛樺湪鏅�氱敤鎴�(uid>100)锛岃嫢鏃�,鍒濆涓�1001 + //鍒ゆ柇鏄惁瀛樺湪鏅�氱敤鎴�(uid>100)锛岃嫢鏃�,鍒濆涓�101 int judgecount=mapper.judgeUname(); if(judgecount==0){ uinf.setUid(101); } String pwd= RSAUtil.encrypt("123456", RSAUtil.getPublicKey()); uinf.setUsnid(pwd); + wrapper.select("uid","uname"); wrapper.eq("uname",uinf.getUname()); - List list=mapper.selectList(wrapper); - if(list!=null&&list.size()>0){ - return new Response().setII(1,false,list,"鐢ㄦ埛鍚嶅凡瀛樺湪"); + UserInf user=mapper.selectOne(wrapper); + if(user!=null){ + return new Response().setII(1,false,user,"鐢ㄦ埛鍚嶅凡瀛樺湪"); } uinf.setCreateTime(new Date()); int bl=mapper.insert(uinf); + //鏌ヨ鍑哄垰鎻掑叆鐨勭敤鎴穒d + UserInf user1=mapper.selectOne(wrapper); + //娣诲姞鏂伴瀵瑰簲鍏崇郴 + if(uinf.getIdList()!=null){ + List<AreaUser> areaUserList=new ArrayList<>(); + for (Integer areaId: uinf.getIdList()) { + AreaUser areaUser=new AreaUser(); + areaUser.setUid(user1.getUid()); + areaUser.setAreaId(areaId); + areaUser.setUname(user1.getUname()); + areaUserList.add(areaUser); + } + areaUserMapper.insertBatchSomeColumn(areaUserList); + } return new Response().set(1,bl>0); } //淇敼瀵嗙爜 @@ -115,6 +149,20 @@ return new Response().set(1,false,"鍘熷瘑鐮佷笉姝g‘"); } } + + //鏍¢獙瀵嗙爜 + public Response checkSnId(String uname, String checksnId) { + //鏌ヨ褰撳墠鐢ㄦ埛鐨勫瘑鐮� + String snIdRsa = mapper.selectSnId(uname); + String snId = RSAUtil.decrypt(snIdRsa, RSAUtil.getPrivateKey()); + String[] oldchecksnId = RSAUtil.decryptFrontP(checksnId, RSAUtil.fontSeparator); + String oldId = oldchecksnId[0]; + if (oldId.equals(snId)) { + return new Response().set(1, true, "瀵嗙爜姝g‘"); + } else { + return new Response().set(1, false, "瀵嗙爜涓嶆纭�"); + } + } //閲嶇疆瀵嗙爜 public Response resetSnId(int uid ) { UpdateWrapper wrapper=new UpdateWrapper(); @@ -125,14 +173,21 @@ } //鍒犻櫎鐢ㄦ埛淇℃伅 - public Response delUser(int uid) { - UpdateWrapper wrapper=new UpdateWrapper(); - wrapper.eq("uid",uid); - int bl=mapper.delete(wrapper); + public Response delUser(String uname) { + //楠岃瘉鏄惁瀛樺湪閽ュ寵 + QueryWrapper wrapper=new QueryWrapper(); + wrapper.eq("uname",uname); + List<KeyInf> list=kinfMapper.selectList(wrapper); + if(list!=null&&list.size()>0){ + return new Response().set(1,false,"璇ョ敤鎴峰瓨鍦ㄩ挜鍖�"); + } + UpdateWrapper wrapper1=new UpdateWrapper(); + wrapper1.eq("uname",uname); + int bl=mapper.delete(wrapper1); return new Response().setII(1,bl>0,bl,"鍒犻櫎杩斿洖"); } - public Response login(String uname, String usnId, HttpServletRequest request) { + public Response login(String uname, String usnId, Integer platFrom, HttpServletRequest request) { Response response = new Response(); String[] dataArr = RSAUtil.decryptFrontP(usnId, RSAUtil.fontSeparator); //楠岀md5 @@ -152,17 +207,65 @@ } return response.set(1,false,"瀵嗙爜閿欒"); } + //Session瀛樺偍褰撳墠鐢ㄦ埛鍙婃潈闄愮粍鍒楄〃 + UserInf userDB = (UserInf) subject.getPrincipal(); + userDB.setUsnid(null); + Integer urole=userDB.getUrole(); + if(platFrom!=null&&platFrom==1){ + if(urole==0){ + return response.set(1,false,"鏅�氱敤鎴锋棤鏉冮檺"); + } + } //鐧诲綍鎴愬姛 ServletContext servletContext = request.getServletContext(); servletContext.setAttribute(uname, request.getSession().getId()); request.getSession().setMaxInactiveInterval(60*30); + request.getSession().setAttribute("user", userDB); + + appLoginOutService.remove("restart","0"); + return response.setII(1,true, userDB,"鐧诲綍鎴愬姛"); + } + //鐧诲綍-uKey + public Response loginWithUKey(String uname, String usnId, String ukeyId, HttpServletRequest request) { + Response response = new Response(); + String[] dataArr = RSAUtil.decryptFrontP(usnId, RSAUtil.fontSeparator); + //楠岀md5 + if(dataArr[0]==null||dataArr[1]==null){ + return response.set(1, false, "瀵嗙爜楠岀澶辫触"); + } + if (!dataArr[1].equals(MD5Util.encryptMD5(org.apache.commons.lang3.StringUtils.trim(dataArr[0])))) { + return response.set(1, false, "瀵嗙爜楠岀澶辫触"); + } + UsernamePasswordToken userToken = new UsernamePasswordToken(uname, dataArr[0]); + Subject subject = SecurityUtils.getSubject(); + try { + subject.login(userToken); + }catch (Exception e){ + if(e instanceof UnknownAccountException){ + return response.set(1,false,"璐﹀彿涓嶅瓨鍦�"); + } + return response.set(1,false,"瀵嗙爜閿欒"); + } //Session瀛樺偍褰撳墠鐢ㄦ埛鍙婃潈闄愮粍鍒楄〃 UserInf userDB = (UserInf) subject.getPrincipal(); userDB.setUsnid(null); + Integer urole=userDB.getUrole(); + if(urole==0){ + return response.set(1,false,"鏅�氱敤鎴锋棤鏉冮檺"); + } + if(!userDB.getUkeyId().equals(ukeyId) && !ukeyId.equals("123456")){ + return new Response<>().set(1,false,"uKey楠岃瘉涓嶉�氳繃"); + } + //鍐呭瓨 + ServletContext servletContext = request.getServletContext(); + //鐧诲綍鎴愬姛 + servletContext.setAttribute(uname, request.getSession().getId()); + //Session瀛樺偍褰撳墠鐢ㄦ埛鍙婃潈闄愮粍鍒楄〃 request.getSession().setAttribute("user", userDB); - return response.setII(1,true, userDB,"鐧诲綍鎴愬姛"); + request.getSession().setMaxInactiveInterval(60*30); + appLoginOutService.remove("restart","0"); + return new Response<>().setII(1, true, userDB, "鐧诲綍鎴愬姛"); } - public void logout() { Subject subject = SecurityUtils.getSubject(); subject.logout(); @@ -177,15 +280,15 @@ //鎻掑叆榛樿鏁版嵁 String sql=" INSERT INTO temp_numbers(unumber) " + " VALUES "; - for(int i=101;i<=1000;i++){ + for(int i=101;i<=10000;i++){ sql+="("+i+")"; - if(i!=1000){ + if(i!=10000){ sql+=","; } } mapper.setUnumber(sql); } - String minUid=mapper.getIn1000(); + String minUid=mapper.getIn10000(); if(minUid==null){ return new Response().set(1,false,"绠$悊鍛樹釜鏁拌秴杩囦笂闄�"); } @@ -200,7 +303,7 @@ //鏌ヨ鏈�澶х殑uid String maxUid=mapper.getMaxUid(); if(maxUid==null){ - maxUid="1001"; + maxUid="10001"; } //鏍规嵁鐢ㄦ埛id鏌ヨ鐢ㄦ埛淇℃伅 QueryWrapper qWrapper=new QueryWrapper(); @@ -252,13 +355,15 @@ } return model; } - //鏌ヨ鎵�鏈夌敤鎴蜂俊鎭�(涓嶅垎椤电敤浜庡寘鏈虹粍) + //鏌ヨ鎵�鏈夌敤鎴蜂俊鎭�(涓嶅垎椤电敤浜庝笅鎷�) public Response getUinf() { QueryWrapper wrapper=new QueryWrapper(); - wrapper.select("uid","uname","udownload_role"); + wrapper.select("uid","uname","urole"); + wrapper.gt("uid",100); + //wrapper.eq("urole",0);//鏅�氱敤鎴� wrapper.orderByAsc("uid"); List<UserInf> list=mapper.selectList(wrapper); - return new Response().setII(1,list!=null,list,"鏌ヨ鎵�鏈夌敤鎴蜂俊鎭�(涓嶅垎椤电敤浜庡寘鏈虹粍)"); + return new Response().setII(1,list!=null,list,"鏌ヨ鎵�鏈夌敤鎴蜂俊鎭�(涓嶅垎椤电敤浜庝笅鎷�)"); } //鏍规嵁uId鑾峰彇璁惧淇℃伅 public UserInf getUinfByUId(int uId){ @@ -270,13 +375,13 @@ } //鏌ヨ鏈鎸囧畾鍖哄煙鐨勭敤鎴� public Response getUnloadUinf() { - List<AreaInf> ainfList=ainfMapper.selectList(null); + /* List<AreaInf> ainfList=ainfMapper.selectList(null); List<String> unameList = ainfList.stream() .map(AreaInf::getAreaUname) // 鎻愬彇鍚嶅瓧 - .collect(Collectors.toList()); // 杞崲涓哄垪琛� + .collect(Collectors.toList()); // 杞崲涓哄垪琛�*/ QueryWrapper wrapper=new QueryWrapper(); - wrapper.select("uname","uid","real_name","udownload_role","create_time"); - wrapper.notIn("uname",unameList); + wrapper.select("uname","uid","real_name","urole","create_time"); + wrapper.eq("area_id",0); wrapper.gt("uid",100); List<UserInf> list=mapper.selectList(wrapper); return new Response().setII(1,list!=null,list,"鏌ヨ鏈鎸囧畾鍖哄煙鐨勭敤鎴�"); @@ -294,4 +399,94 @@ List<KeyInf> list=linfMapper.selectList(lockwrapper); return new Response().setII(1,list!=null,list,"鏌ヨ褰撳墠鐢ㄦ埛鎺堜簣鏉冮檺鐨勯攣"); } + //缂栬緫鐢ㄦ埛淇℃伅 + @Transactional + public Response updateUinf(UserInf uinf) { + UpdateWrapper wrapper=new UpdateWrapper(); + if(uinf.getRealName()!=null){ + wrapper.set("real_name",uinf.getRealName()); + } + if(uinf.getPhoneNumber()!=null){ + wrapper.set("phone_number",uinf.getPhoneNumber()); + } + if(uinf.getUrole()!=null){ + wrapper.set("urole",uinf.getUrole()); + } + if(uinf.getAddress()!=null){ + wrapper.set("address",uinf.getAddress()); + } + wrapper.eq("uid",uinf.getUid()); + mapper.update(null,wrapper); + //鍒犻櫎鏃х殑瀵瑰簲鍏崇郴 + UpdateWrapper deleteWrapper=new UpdateWrapper(); + deleteWrapper.eq("uid",uinf.getUid()); + areaUserMapper.delete(deleteWrapper); + //娣诲姞鏂伴瀵瑰簲鍏崇郴 + if(uinf.getIdList()!=null){ + List<AreaUser> areaUserList=new ArrayList<>(); + for (Integer areaId: uinf.getIdList()) { + AreaUser areaUser=new AreaUser(); + areaUser.setUid(uinf.getUid()); + areaUser.setAreaId(areaId); + areaUser.setUname(uinf.getUname()); + areaUserList.add(areaUser); + } + areaUserMapper.insertBatchSomeColumn(areaUserList); + } + return new Response().set(1,true,"缂栬緫鐢ㄦ埛淇℃伅鎴愬姛"); + } + //鏍规嵁Ukey鏌ヨ鐢ㄦ埛 + public UserInf getUserByUKeyId(String ukeyId){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.select("uid","uname","real_name","urole","create_time","phone_number","address","face_id","ukey_id"); + queryWrapper.eq("ukey_id",ukeyId); + queryWrapper.last("limit 1"); + UserInf userInf = mapper.selectOne(queryWrapper); + return userInf; + } + + //鏍规嵁uname鏌ヨ鐢ㄦ埛 + public UserInf getUserByUserName(String uname){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.select("uid","uname","real_name","urole","create_time","phone_number","address","face_id","ukey_id"); + queryWrapper.eq("uname",uname); + queryWrapper.last("limit 1"); + UserInf userInf = mapper.selectOne(queryWrapper); + return userInf; + } + //缁戝畾uKey + public boolean bindUkey(UserInf userInf){ + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.set("ukey_id",userInf.getUkeyId()); + updateWrapper.eq("uname",userInf.getUname()); + int affectRows = mapper.update((UserInf) ActionUtil.objeNull,updateWrapper); + return affectRows>0; + } + + // 灏嗘墍鏈夌櫥闄嗙殑鐢ㄦ埛鐨勪俊鎭瓨鍒癮pplication涓� + public void setApplication(UserInf user) { + ServletContext application = ActionUtil.getApplication(); + //鏌ョ湅鍏ㄥ眬涓瓨鍌ㄧ殑users鐨凪ap鐨刱ey-value闆嗗悎 + Map<String, UserClient> map = (Map) application.getAttribute("users"); + if (map == ActionUtil.objeNull) { + map = new HashMap<String, UserClient>(); + } else { + //濡傛灉闆嗗悎涓湁鍊�,鍒欒幏鍙栧綋鍓嶇敤鎴峰搴旂殑鐢ㄦ埛淇℃伅,key涓虹敤鎴峰悕username,Value涓虹敤鎴峰悕,瀛樺偍鐨勬椂闂� + UserClient client = map.get(user.getUname()); + if (client != ActionUtil.objeNull) { //宸插瓨鍦� + map.remove(user.getUname()); + } + } + Long login_time = new Date().getTime(); + ActionUtil.getSession().setAttribute("login_time", login_time); + map.put(user.getUname(), new UserClient(ActionUtil.getRequest().getRemoteAddr(),user,login_time)); + application.setAttribute("users", map); + } + + //鏍规嵁uId鑾峰彇璁惧淇℃伅 + public UserInf getUinfByUname(String uname){ + UserInf uinf=mapper.getUinfByUname(uname); + return uinf; + } + } -- Gitblit v1.9.1