lxw
2023-12-14 ccfb7dd5574724024bc2c48d3ca36f9c8b6896d4
src/main/java/com/whyc/service/UserInfService.java
@@ -20,6 +20,7 @@
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -38,10 +39,9 @@
        return new Response().setII(1,list!=null,pageInfo,"数据返回");
    }
    //编辑权限
    public Response updateUser(int uid,String uname, int udownloadRole) {
    public Response updateUser(int uid, int udownloadRole) {
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.set("udownload_role",udownloadRole);
        wrapper.set("uname",uname);
        wrapper.eq("uid",uid);
        int bl=mapper.update(null,wrapper);
        return new Response().set(1,bl>0);
@@ -118,6 +118,7 @@
        }
        //登录成功
        ServletContext servletContext = request.getServletContext();
        //登录成功
        servletContext.setAttribute(uname, request.getSession().getId());
        //Session存储当前用户及权限组列表
        UserInf userDB = (UserInf) subject.getPrincipal();
@@ -150,25 +151,71 @@
        }
        String minUid=mapper.getIn1000();
        if(minUid==null){
            return new Response().set(1,false,"管理员个数已经用完");
            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?"升级管理员成功":"升级为管理员失败");
        return new Response().set(1,flag>0,flag>0?"身份变更成功":"身份变更失败");
    }
    //将管理员变成普通用户
    public Response dropRole(int uid) {
    public Response dropRole(int uid, HttpServletRequest request) {
        //查询最大的uid
        String maxUid=mapper.getMaxUid();
        if(maxUid==null){
            maxUid="1001";
        }
        //根据用户id查询用户信息
        QueryWrapper qWrapper=new QueryWrapper();
        qWrapper.eq("uid",uid);
        qWrapper.last("limit 1");
        UserInf 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);
        return new Response().set(1,flag>0,flag>0?"管理员变成普通用户成功":"管理员变成普通用户失败");
        //如果是普通用户自己强退,将用户名对应的sessionId变更
        ServletContext servletContext = request.getServletContext();
        servletContext.setAttribute(uinf.getUname(),"123456");
        return new Response().set(1,flag>0,flag>0?"身份变更成功":"身份变更失败");
    }
    //登录检测
    public Response checkUserWebSocket(HttpSession httpSession){
        Response model = new Response();
        try {
            UserInf user = (UserInf) httpSession.getAttribute("user");
            if(user!=null){
                String sessionId = (String) httpSession.getServletContext().getAttribute(user.getUname());
                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){
            model.set(1,false,"登录信息失效,重新登录");
        }
        return model;
    }
    //重置密码
    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?"修改成功":"修改失败");
    }
}