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