lxw
2023-11-15 37011d5918757e6248ba5f0fe0ef8650912d7428
用户升级和降级
4个文件已修改
94 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/UserInfController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/UserInfMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/UserInfService.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/UserInfMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/UserInfController.java
@@ -39,4 +39,17 @@
    public Response deleteUser(@RequestParam int uid){
        return service.delUser(uid);
    }
    @ApiOperation(value = "将用户添加至100~1000管理员")
    @GetMapping("improveRole")
    public Response improveRole(@RequestParam int uid){
        return service.improveRole(uid);
    }
    @ApiOperation(value = "将管理员变成普通用户")
    @GetMapping("dropRole")
    public Response dropRole(@RequestParam int uid){
        return service.dropRole(uid);
    }
}
src/main/java/com/whyc/mapper/UserInfMapper.java
@@ -1,6 +1,8 @@
package com.whyc.mapper;
import com.whyc.pojo.UserInf;
import lombok.Value;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -11,4 +13,14 @@
    int judgeUname();
    //查询所有用户信息
    List<UserInf> getAllUser();
    //查询100~1000中最大的uid
    String getIn1000();
    //创建100~1000的id表,不存在则创建
    void createNumber();
    //判断表是否存在
    String existTable();
    //插入默认数据
    void setUnumber(@Param("sql") String sql);
    //查询最大的uid
    String getMaxUid();
}
src/main/java/com/whyc/service/UserInfService.java
@@ -53,7 +53,7 @@
        //判断是否存在普通用户(uid>100),若无,初始为1001
        int judgecount=mapper.judgeUname();
        if(judgecount==0){
            uinf.setUid(101);
            uinf.setUid(1001);
        }
        String pwd= RSAUtil.encrypt("123456", RSAUtil.getPublicKey());
        uinf.setUsnid(pwd);
@@ -125,9 +125,50 @@
        request.getSession().setAttribute("user", userDB);
        return response.setII(1,true, userDB,"登录成功");
    }
    //等出
    public void logout() {
        Subject subject = SecurityUtils.getSubject();
        subject.logout();
    }
    //将用户添加至100~1000管理员
    public Response improveRole(int uid) {
        //判断表是否存在
        String tableName = mapper.existTable();
        if(tableName==null){
            ///创建100~1000的id表,不存在则创建
            mapper.createNumber();
            //插入默认数据
            String sql=" INSERT INTO temp_numbers(unumber) " +
                    " VALUES ";
            for(int i=101;i<=1000;i++){
                sql+="("+i+")";
                if(i!=1000){
                    sql+=",";
                }
            }
            mapper.setUnumber(sql);
        }
        String minUid=mapper.getIn1000();
        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) {
        //查询最大的uid
        String maxUid=mapper.getMaxUid();
        if(maxUid==null){
            maxUid="1001";
        }
        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?"管理员变成普通用户成功":"管理员变成普通用户失败");
    }
}
src/main/resources/mapper/UserInfMapper.xml
@@ -1,7 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.whyc.mapper.UserInfMapper">
    <update id="createNumber">
        CREATE TABLE if not exists db_user.temp_numbers (unumber INT);
    </update>
    <update id="setUnumber">
        ${sql}
    </update>
    <select id="existTable" resultType="java.lang.String">
        select
            table_name
        from `INFORMATION_SCHEMA`.`TABLES`
        where table_name = 'db_user'
          and TABLE_SCHEMA = 'temp_numbers'
    </select>
    <select id="selectSnId" resultType="java.lang.String">
        select usnid from db_user.tb_user_inf where uname=#{uname} limit 1
@@ -12,4 +24,14 @@
    <select id="getAllUser" resultType="com.whyc.pojo.UserInf">
        select uid,uname,udownload_role from db_user.tb_user_inf where uid>100
    </select>
    <select id="getIn1000" resultType="java.lang.Integer">
        SELECT min(unumber)
        FROM db_user.temp_numbers t
        WHERE t.unumber NOT IN (SELECT uid FROM db_user.tb_user_inf);
    </select>
    <select id="getMaxUid" resultType="java.lang.String">
        SELECT max(uid)
        FROM db_user.tb_user_inf
    </select>
</mapper>