From 76ceb3eb8d2de784284e100b7f2f694d6db5ba2b Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期二, 13 五月 2025 17:09:30 +0800
Subject: [PATCH] 用户管理

---
 src/main/java/com/whyc/service/UserService.java |  411 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 279 insertions(+), 132 deletions(-)

diff --git a/src/main/java/com/whyc/service/UserService.java b/src/main/java/com/whyc/service/UserService.java
index 11af560..cead935 100644
--- a/src/main/java/com/whyc/service/UserService.java
+++ b/src/main/java/com/whyc/service/UserService.java
@@ -1,201 +1,348 @@
 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.dto.Response;
 import com.whyc.dto.UserClient;
+import com.whyc.mapper.BaojigroupUsrMapper;
+import com.whyc.mapper.PermitGroupUserMapper;
 import com.whyc.mapper.UserMapper;
 import com.whyc.pojo.db_user.User;
+import com.whyc.util.ActionUtil;
 import com.whyc.util.CommonUtil;
+import com.whyc.util.MD5Util;
 import com.whyc.util.RSAUtil;
 import lombok.extern.slf4j.Slf4j;
+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.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 import java.security.InvalidParameterException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @Slf4j
 public class UserService {
 
     @Resource
-    private UserMapper userMapper;
+    private UserMapper mapper;
 
-    @Resource
-    private UserBridgeService userBridgeService;
+    @Autowired(required = false)
+    private BaojigroupUsrMapper bjgroupUsrMapper;
 
-    @Autowired
-    private ApplicationContext applicationContext;
+    @Autowired(required = false)
+    private PermitGroupUserMapper pergroupUserMapper;
 
+    //鏌ヨ鎵�鏈夌敤鎴蜂俊鎭�
+    public Response getAllUser(String uname, String realName, int pageCurr, int pageSize) {
+        PageHelper.startPage(pageCurr,pageSize);
+        List<User> list=mapper.getAllUser(uname,realName);
+        PageInfo pageInfo=new PageInfo(list);
+        return new Response().setII(1,list!=null,pageInfo,"鏌ヨ鎵�鏈夌敤鎴蜂俊鎭�");
+    }
 
-    public Response add(User user) {
-        try {
-            User userFound = userBridgeService.findPasswordByUserName(user.getName());
-            if (userFound.getId() != 0) {
-                return new Response<>().set(1, false, "鐢ㄦ埛宸插瓨鍦�");
-            }
-            if (userMapper.addJudge(user.getName(),user.getPhoneNumber())>0){
-                return new Response<>().set(1, false, "鐢ㄦ埛宸插瓨鍦�");
-            }
-            //user.setCreateTime(new Date());
-            String[] dataArr = RSAUtil.decryptFrontP(user.getPwd(), RSAUtil.fontSeparator);
-            String password = dataArr[0];
-            String passwordMD5 = dataArr[1];
-            if(!CommonUtil.EncryptionMD5(password).equals(passwordMD5)){
-                throw new InvalidParameterException("鍙傛暟鏍¢獙澶辫触");
-            }
-            user.setPwd(RSAUtil.encrypt(password,RSAUtil.getPublicKey()));
-            int flag = userMapper.insert(user);
-            if (flag > 0) {
-                return new Response<>().set(1, true);
-            } else {
-                return new Response<>().set(1, false, "娣诲姞澶辫触");
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            return new Response<>().set(0);
+    //鏂版坊鍔犵敤鎴蜂俊鎭�
+    @Transactional
+    public Response addUser(User uinf) {
+        QueryWrapper wrapper=new QueryWrapper();
+        //鍒ゆ柇鏄惁瀛樺湪鏅�氱敤鎴�(uid>100)锛岃嫢鏃�,鍒濆涓�10001
+        int judgecount=mapper.judgeUname();
+        if(judgecount==0){
+            uinf.setId(10001);
+        }
+        String pwd= RSAUtil.encrypt("123456", RSAUtil.getPublicKey());
+        uinf.setPwd(pwd);
+        wrapper.select("uid","uname");
+        wrapper.eq("uname",uinf.getName());
+        User user=mapper.selectOne(wrapper);
+        if(user!=null){
+            return new Response().setII(1,false,user,"鐢ㄦ埛鍚嶅凡瀛樺湪");
+        }
+        uinf.setCreateTime(new Date());
+        int bl=mapper.insert(uinf);
+        return new Response().set(1,bl>0);
+    }
+    //淇敼瀵嗙爜
+    public Response changeSnId(String uname,String oldSnId, String newSnId) {
+        if(uname==null||uname.equals("")){
+            return new Response().set(1,false,"鎵句笉鍒扮敤鎴�");
+        }
+        //楠岃瘉鑰佸瘑鐮佹槸鍚︽纭�
+        String snIdRsa=mapper.selectSnId(uname);
+        //瑙e瘑
+        String snId=RSAUtil.decrypt(snIdRsa,RSAUtil.getPrivateKey());
+        String[] decOld=RSAUtil.decryptFrontP(oldSnId,RSAUtil.fontSeparator);
+        String oldId=decOld[0];
+        String[] newOld=RSAUtil.decryptFrontP(newSnId,RSAUtil.fontSeparator);
+        String newId=newOld[0];
+        if(oldId.equals(snId)){
+            UpdateWrapper wrapper=new UpdateWrapper();
+            wrapper.set("usnid",RSAUtil.encrypt(newId,RSAUtil.getPublicKey()));
+            wrapper.eq("uname",uname);
+            int flag=mapper.update(null,wrapper);
+            return  new Response().set(1,flag>0,flag>0?"淇敼鎴愬姛":"淇敼澶辫触");
+        }else {
+            return new Response().set(1,false,"鍘熷瘑鐮佷笉姝g‘");
         }
     }
 
-    @CacheEvict(value = "userPage",allEntries = true)
-    public Response addByRSA(User user) {
-        User userFound = userBridgeService.findPasswordByUserName(user.getName());
-        if (userFound.getId() != 0) {
-            return new Response<>().set(1, false, "鐢ㄦ埛鍚嶅凡瀛樺湪");
-        }
-        User userOfPhoneNumber = userBridgeService.getUserByPhoneNumber(user.getPhoneNumber());
-        if (userOfPhoneNumber.getId()!=0) {
-            return new Response<>().set(1, false, "鎵嬫満鍙峰凡瀛樺湪");
-        }
-        //String password = URLDecoder.decode(user.getUpassword(), "utf-8");
-        String password = user.getPwd();
-        String[] dataArr = RSAUtil.decryptFront(password, RSAUtil.fontSeparator);
-        String pwd = RSAUtil.encrypt(dataArr[0],RSAUtil.getPublicKey());
-        user.setPwd(pwd);
-        user.setCreateTime(new Date());
-        int flag = userMapper.insert(user);
-        if (flag > 0) {
-            return new Response<>().set(1, true);
+    //鏍¢獙瀵嗙爜
+    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, "娣诲姞澶辫触");
+            return new Response().set(1, false, "瀵嗙爜涓嶆纭�");
+        }
+    }
+    //閲嶇疆瀵嗙爜
+    public Response resetSnId(int uid ) {
+        UpdateWrapper wrapper=new UpdateWrapper();
+        wrapper.set("usnid",RSAUtil.encrypt("123456",RSAUtil.getPublicKey()));
+        wrapper.eq("uid",uid);
+        int flag=mapper.update(null,wrapper);
+        return  new Response().set(1,flag>0,flag>0?"淇敼鎴愬姛":"淇敼澶辫触");
+
+    }
+    //鍒犻櫎鐢ㄦ埛淇℃伅
+    @Transactional
+    public Response delUser(String uname) {
+        //鑾峰彇鐢ㄦ埛鐨剈id
+        User User=mapper.getUinfByUname(uname);
+        if(User==null){
+            return new Response().set(1,false,"鐢ㄦ埛涓嶅瓨鍦�");
+        }else {
+            int uid=User.getId();
+            UpdateWrapper wrapper=new UpdateWrapper();
+            wrapper.eq("uname",uname);
+            int bl=mapper.delete(wrapper);
+            if(bl>0){
+                //鍒犻櫎鏉冮檺缁勪笅鐨勭敤鎴�
+                UpdateWrapper wrapper1=new UpdateWrapper();
+                wrapper1.eq("uid",uid);
+                pergroupUserMapper.delete(wrapper1);
+                //鍒犻櫎鍖呮満缁勪笅鐨勭敤鎴�
+                UpdateWrapper wrapper2=new UpdateWrapper();
+                wrapper2.eq("uid",uid);
+                bjgroupUsrMapper.delete(wrapper2);
+            }
+            return new Response().setII(1,bl>0,bl,"鍒犻櫎鎴愬姛");
         }
     }
 
-    /*public Response registerUser(User user){
+    public Response login(String uname, String usnId, Integer platFrom, 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 {
-            User userFound = userBridgeService.findPasswordByUserName(user.getName());
-            if (userFound.getId() != 0) {
-                return new Response<>().set(1, false, "鐢ㄦ埛鍚嶅凡瀛樺湪");
+            subject.login(userToken);
+        } catch (Exception e) {
+            if(e instanceof UnknownAccountException){
+                return response.set(1,false,"璐﹀彿涓嶅瓨鍦�");
             }
-            User userOfMobilephone = userBridgeService.findUserByMobilephone(user.getPhoneNumber());
-            if (userOfMobilephone.getId()!=0) {
-                return new Response<>().set(1, false, "鎵嬫満鍙峰凡瀛樺湪");
-            }
-            //String password = URLDecoder.decode(user.getUpassword(), "utf-8");
-            String password = user.getPwd();
+            return response.set(1,false,"瀵嗙爜閿欒");
+        }
+        //Session瀛樺偍褰撳墠鐢ㄦ埛鍙婃潈闄愮粍鍒楄〃
+        User userDB = (User) subject.getPrincipal();
+        userDB.setPwd(null);
+        //鐧诲綍鎴愬姛
+        ServletContext servletContext = request.getServletContext();
+        servletContext.setAttribute(uname, request.getSession().getId());
+        request.getSession().setMaxInactiveInterval(60*30);
+        request.getSession().setAttribute("user", userDB);
 
-            String[] dataArr = RSAUtil.decryptFront(password, RSAUtil.fontSeparator);
-            String pwd = RSAUtil.encrypt(dataArr[0],RSAUtil.getPublicKey());
-            user.setPwd(pwd);
-            int flag = userMapper.insert(user);
-            if (flag > 0) {
-                //娣诲姞鎴愬姛,鍒嗛厤鍒伴粯璁ゅ垵濮嬪寲鏉冮檺缁�
-                return new Response<>().set(1, true,"娉ㄥ唽鎴愬姛");
-            } else {
-                return new Response<>().set(1, false, "娉ㄥ唽澶辫触");
+        return response.setII(1,true, userDB,"鐧诲綍鎴愬姛");
+    }
+
+    public void logout() {
+        Subject subject = SecurityUtils.getSubject();
+        subject.logout();
+    }
+    //灏嗙敤鎴锋坊鍔犺嚦100~10000绠$悊鍛�
+    public Response improveRole(int uid) {
+        //鍒ゆ柇琛ㄦ槸鍚﹀瓨鍦�
+        String tableName = mapper.existTable();
+        if(tableName==null){
+            ///鍒涘缓100~1000鐨刬d琛�,涓嶅瓨鍦ㄥ垯鍒涘缓
+            mapper.createNumber();
+            //鎻掑叆榛樿鏁版嵁
+            String sql=" INSERT INTO temp_numbers(unumber) " +
+                    " VALUES ";
+            for(int i=101;i<=10000;i++){
+                sql+="("+i+")";
+                if(i!=10000){
+                    sql+=",";
+                }
+            }
+            mapper.setUnumber(sql);
+        }
+        String minUid=mapper.getIn10000();
+        if(minUid==null){
+            return new Response().set(1,false,"绠$悊鍛樹釜鏁拌秴杩囦笂闄�");
+        }
+        UpdateWrapper wrapper =new UpdateWrapper();
+        wrapper.set("uid",minUid);
+        wrapper.eq("uid",uid);
+        int flag= mapper.update(null,wrapper);
+        return new Response().set(1,flag>0,flag>0?"韬唤鍙樻洿鎴愬姛":"韬唤鍙樻洿澶辫触");
+    }
+    //灏嗙鐞嗗憳鍙樻垚鏅�氱敤鎴�
+    public Response dropRole(int uid, HttpServletRequest request) {
+        //鏌ヨ鏈�澶х殑uid
+        String maxUid=mapper.getMaxUid();
+        if(maxUid==null){
+            maxUid="10001";
+        }
+        //鏍规嵁鐢ㄦ埛id鏌ヨ鐢ㄦ埛淇℃伅
+        QueryWrapper qWrapper=new QueryWrapper();
+        qWrapper.eq("uid",uid);
+        qWrapper.last("limit 1");
+        User uinf=mapper.selectOne(qWrapper);
+        //缂栬緫
+        UpdateWrapper wrapper =new UpdateWrapper();
+        wrapper.set("uid",Integer.valueOf(maxUid)+1);
+        wrapper.eq("uid",uid);
+        int flag= mapper.update(null,wrapper);
+        //濡傛灉鏄櫘閫氱敤鎴疯嚜宸卞己閫�锛屽皢鐢ㄦ埛鍚嶅搴旂殑sessionId鍙樻洿
+        ServletContext servletContext = request.getServletContext();
+        servletContext.setAttribute(uinf.getName(),"123456");
+        return new Response().set(1,flag>0,flag>0?"韬唤鍙樻洿鎴愬姛":"韬唤鍙樻洿澶辫触");
+    }
+
+    public Response getUserNameList() {
+        QueryWrapper<User> query = Wrappers.query();
+        query.select("uname");
+        List<String> userNameList = mapper.selectList(query).stream().map(User::getName).collect(Collectors.toList());
+        return new Response().set(1,userNameList);
+    }
+
+    //鐧诲綍妫�娴�
+    public Response checkUserWebSocket(HttpSession httpSession){
+        Response model = new Response();
+        try {
+            User user = (User) httpSession.getAttribute("user");
+            if(user!=null){
+                String sessionId = (String) httpSession.getServletContext().getAttribute(user.getName());
+                if(httpSession.getId().equals(sessionId)){
+                    model.set(1,user,null);
+                }else{
+                    if(sessionId.equals("123456")){
+                        model.set(1,false,"韬唤鏉冮檺鍙樻洿,璇烽噸鏂扮櫥褰�");
+                    }else{
+                        model.set(1,false,"涓嶅悓涓绘満鐧诲綍");
+                    }
+                    //鐢ㄦ埛鍦ㄥ叾浠栦富鏈虹櫥褰�,寮鸿揩鐢ㄦ埛鍦ㄦ湰鏈虹殑session澶辨晥
+                    httpSession.invalidate();
+                }
+            }
+            else {
+                model.set(1,false,"鐢ㄦ埛淇℃伅澶辨晥,璇烽噸鏂扮櫥褰�");
             }
         }catch (Exception e){
-            e.printStackTrace();
-            return new Response<>().set(0);
+            model.set(1,false,"鐧诲綍淇℃伅澶辨晥,閲嶆柊鐧诲綍");
         }
-    }*/
+        return model;
+    }
+    //鏌ヨ鎵�鏈夌敤鎴蜂俊鎭�(涓嶅垎椤电敤浜庝笅鎷�)
+    public Response getUinf() {
+        QueryWrapper wrapper=new QueryWrapper();
+        wrapper.select("uid","uname","urole");
+        wrapper.gt("uid",100);
+        //wrapper.eq("urole",0);//鏅�氱敤鎴�
+        wrapper.orderByAsc("uid");
+        List<User> list=mapper.selectList(wrapper);
+        return new Response().setII(1,list!=null,list,"鏌ヨ鎵�鏈夌敤鎴蜂俊鎭�(涓嶅垎椤电敤浜庝笅鎷�)");
+    }
+    //鏍规嵁uId鑾峰彇璁惧淇℃伅
+    public User getUinfByUId(int uId){
+        QueryWrapper wrapper=new QueryWrapper();
+        wrapper.eq("id",uId);
+        wrapper.last("limit 1");
+        User uinf=mapper.selectOne(wrapper);
+        return uinf;
+    }
+    //缂栬緫鐢ㄦ埛淇℃伅
+    @Transactional
+    public Response updateUinf(User uinf) {
+        UpdateWrapper wrapper=new UpdateWrapper();
+        if(uinf.getPhoneNumber()!=null){
+            wrapper.set("phone_number",uinf.getPhoneNumber());
+        }
+        wrapper.eq("id",uinf.getId());
+        mapper.update(null,wrapper);
 
-    public User getById(int id) {
-        User user = userMapper.selectById(id);
-        user.setPwd((String) CommonUtil.objectNull);
-        return user;
+        return new Response().set(1,true,"缂栬緫鐢ㄦ埛淇℃伅鎴愬姛");
+    }
+    //鏍规嵁Ukey鏌ヨ鐢ㄦ埛
+    public User 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");
+        User User = mapper.selectOne(queryWrapper);
+        return User;
     }
 
-    public List<User> getAll() {
-        List<User> users = userMapper.selectList((Wrapper<User>) CommonUtil.objectNull);
-        return users;
+    //鏍规嵁uname鏌ヨ鐢ㄦ埛
+    public User 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");
+        User User = mapper.selectOne(queryWrapper);
+        return User;
     }
-
-    @Cacheable(value = "userPage")
-    public Response getPage(int pageNum,int pageSize) {
-        PageHelper.startPage(pageNum,pageSize);
-        List<User> list = userMapper.selectList((Wrapper<User>) CommonUtil.objectNull);
-        for (User user:list) {
-            user.setPwd((String) CommonUtil.objectNull);
-        }
-        PageInfo<User> pageInfo = new PageInfo<>(list);
-        return new Response().set(1,pageInfo,"鏌ヨ鎴愬姛");
-    }
-
-    @CacheEvict(value = "userPage",allEntries = true)
-    public Response update(User user) {
-        User userFound = userBridgeService.findPasswordByUserName(user.getName());
-        User userOfPhoneNumber = userBridgeService.getUserByPhoneNumber(user.getPhoneNumber());
-        if (userFound.getId() != 0 && !userFound.getId().equals(user.getId())) {
-            return new Response().set(1,false,"鐢ㄦ埛鍚嶉噸澶�");
-        }
-        if( userOfPhoneNumber.getId()!=0 && !userFound.getId().equals(user.getId())){
-            return new Response().set(1,false,"鎵嬫満鍙烽噸澶�");
-        }
-        user.setPwd(null);
-        if(userMapper.updateById(user)>0){
-            return new Response().set(1,true,"淇敼鎴愬姛");
-        }else{
-            return new Response().set(1,false,"淇敼澶辫触");
-        }
-
-    }
-
 
     // 灏嗘墍鏈夌櫥闄嗙殑鐢ㄦ埛鐨勪俊鎭瓨鍒癮pplication涓�
     public void setApplication(User user) {
-        ServletContext application = CommonUtil.getApplication();
+        ServletContext application = ActionUtil.getApplication();
         //鏌ョ湅鍏ㄥ眬涓瓨鍌ㄧ殑users鐨凪ap鐨刱ey-value闆嗗悎
         Map<String, UserClient> map = (Map) application.getAttribute("users");
-        if (map == CommonUtil.objectNull) {
+        if (map == ActionUtil.objeNull) {
             map = new HashMap<String, UserClient>();
         } else {
             //濡傛灉闆嗗悎涓湁鍊�,鍒欒幏鍙栧綋鍓嶇敤鎴峰搴旂殑鐢ㄦ埛淇℃伅,key涓虹敤鎴峰悕username,Value涓虹敤鎴峰悕,瀛樺偍鐨勬椂闂�
             UserClient client = map.get(user.getName());
-            if (client != CommonUtil.objectNull) { //宸插瓨鍦�
+            if (client != ActionUtil.objeNull) { //宸插瓨鍦�
                 map.remove(user.getName());
             }
         }
         Long login_time = new Date().getTime();
-        CommonUtil.getSession().setAttribute("login_time", login_time);
-        map.put(user.getName(), new UserClient(CommonUtil.getRequest().getRemoteAddr(),user,login_time));
+        ActionUtil.getSession().setAttribute("login_time", login_time);
+        map.put(user.getName(), new UserClient(ActionUtil.getRequest().getRemoteAddr(),user,login_time));
         application.setAttribute("users", map);
     }
 
 
-    public Response updatePasswordByRSA(User user, String newPwd){
-        String[] dataArr = RSAUtil.decryptFrontP(newPwd, RSAUtil.fontSeparator);
-        newPwd = dataArr[0];
-        String passwordMD5 = dataArr[1];
-        if(!CommonUtil.EncryptionMD5(newPwd).equals(passwordMD5)){
-            throw new InvalidParameterException("鍙傛暟鏍¢獙澶辫触");
-        }
-        String pwd = RSAUtil.encrypt(newPwd,RSAUtil.getPublicKey());
-        user.setPwd(pwd);
-        if (userMapper.updateById(user)>0){
-            return new Response().set(1,true,"鏂板瘑鐮佷慨鏀规垚鍔�");
-        }else {
-            return new Response().set(0,false,"鏂板瘑鐮佷慨鏀瑰け璐�");
-        }
-    }
     public List<User> searchCS_All2() {
-        return userMapper.searchCS_All2();
+        return mapper.searchCS_All2();
     }
 }

--
Gitblit v1.9.1