whyclxw
2025-05-12 6b9c5406762080693b0da6b576cd8390f86e9895
权限管理
3个文件已修改
5个文件已添加
376 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/PermitGroupController.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/PermitGroupUserController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/PermitGroupMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/UserMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/PermitGroupService.java 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/PermitGroupUserService.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/UserService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/UserMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/PermitGroupController.java
New file
@@ -0,0 +1,67 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.pojo.db_user.Permitgroup;
import com.whyc.service.PermitGroupService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("permitGroup")
@Api(tags = "用户管理-权限管理")
public class PermitGroupController {
    @Autowired
    private PermitGroupService service;
    @PostMapping
    @ApiOperation(value = "权限组添加")
    public Response<Boolean> add(@RequestBody List<Permitgroup> permitGroupList){
        Response<Boolean> response = service.add(permitGroupList);
        return response;
    }
    @PostMapping("update")
    @ApiOperation(value = "权限组编辑")
    public Response<Boolean> update(@RequestBody List<Permitgroup> permitGroupList){
        Response<Boolean> response = service.update(permitGroupList);
        return response;
    }
    @PostMapping("delete")
    @ApiOperation(value = "权限组删除")
    public Response delete(@RequestParam Integer permitGroupId){
        boolean deleteFlag = service.delete(permitGroupId);
        if(!deleteFlag){
            return new Response().set(0,false,"删除失败,默认管理员权限组不能删除");
        }
        return new Response().set(1,true,"删除成功");
    }
    @GetMapping("list")
    @ApiOperation(value = "权限组列表")
    public Response getList(){
            List<Permitgroup> list = service.getList();
            return new Response().setII(1,list.size()>0,list,"权限组列表");
    }
    @GetMapping("info")
    @ApiOperation(value = "权限组-用户-权限信息查询")
    public Response getPermitGroupInfo(@RequestParam Integer permitGroupId){
        Map resultMap = service.getPermitGroupInfo(permitGroupId);
        return new Response().setII(1,resultMap.size()>0,resultMap,"权限组-用户-权限信息查询");
    }
    @GetMapping("permitList")
    @ApiOperation(value = "查询所有的权限名称信息")
    public Response<List<Permitgroup>> getPermitList(){
        List<Permitgroup> list = service.getPermitList();
        return new Response().setII(1,list.size()>0,list,"查询所有的权限名称信息");
    }
}
src/main/java/com/whyc/controller/PermitGroupUserController.java
New file
@@ -0,0 +1,43 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.pojo.db_user.Permitgroup;
import com.whyc.pojo.db_user.PermitgroupUsr;
import com.whyc.service.PermitGroupUserService;
import com.whyc.util.ActionUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("permitGroupUser")
@Api(tags = "用户管理-权限管理-用户")
public class PermitGroupUserController {
    @Autowired
    private PermitGroupUserService service;
    @PostMapping("userBatch")
    @ApiOperation(value = "添加|移除用户",notes = "operationFlag为1,添加;-1,移除")
    public Response updateUser(@RequestBody List<PermitgroupUsr> groupUserList, @RequestParam int operationFlag){
            service.updateBatch(groupUserList, operationFlag);
            if (operationFlag == 1) {
                return new Response().set(1,true, "添加成功");
            } else {
                return new Response().set(1,true, "移除成功");
            }
    }
    @GetMapping("permitList")
    @ApiOperation(value = "用户对应的权限列表")
    public Response<List<Permitgroup>> getPermitList(){
        Integer userId = ActionUtil.getUser().getId();
        List<Permitgroup> permitList = service.getPermitByUser(userId);
        return new Response().setII(1,permitList.size()>0,permitList,"用户对应的权限列表");
    }
}
src/main/java/com/whyc/mapper/PermitGroupMapper.java
New file
@@ -0,0 +1,7 @@
package com.whyc.mapper;
import com.whyc.pojo.db_user.Permitgroup;
public interface PermitGroupMapper extends CustomMapper<Permitgroup> {
}
src/main/java/com/whyc/mapper/UserMapper.java
@@ -12,4 +12,6 @@
    //当前用户所在包机组下所有的用户(下拉)
    List<User> getBaojiUserByUid(@Param("baojiIdList") List<Integer> baojiIdList);
    List<User> searchCS_All2();
}
src/main/java/com/whyc/service/PermitGroupService.java
New file
@@ -0,0 +1,187 @@
package com.whyc.service;
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.whyc.dto.Response;
import com.whyc.mapper.CommonMapper;
import com.whyc.mapper.PermitGroupMapper;
import com.whyc.mapper.PermitGroupUserMapper;
import com.whyc.mapper.UserMapper;
import com.whyc.pojo.db_user.Permitgroup;
import com.whyc.pojo.db_user.PermitgroupUsr;
import com.whyc.pojo.db_user.User;
import com.whyc.util.ActionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@Transactional
public class PermitGroupService {
    @Resource
    private PermitGroupMapper mapper;
    @Resource
    private PermitGroupUserMapper permitGroupUserMapper;
    @Resource
    private CommonMapper commonMapper;
    @Resource
    private UserMapper userInfMapper;
    @Autowired
    private UserService userService;
    @Transactional
    public Response<Boolean> add(List<Permitgroup> permitGroupList) {
        //首先校验当前用户所在的权限组,是否存在权限编辑权限 permit_edit_permit
       // if (!checkUserPermit()) return new Response<Boolean>().set(1, false, "当前用户没有权限编辑权限组");
        Response<Boolean> response = new Response();
        //权限互斥,查询已存在的权限组,不允许存在权限完全一样的权限组
       /* QueryWrapper<PermitGroup> wrapper = Wrappers.query();
        //wrapper.select("permit_group_id","permit_item_name","permit_item_value");
        wrapper.select("permit_group_id","permit_item_value").ge("permit_group_id",100);
        List<PermitGroup> existGroupList = mapper.selectList(wrapper);
        Map<Integer, List<PermitGroup>> existGroupListMap = existGroupList.stream().collect(Collectors.groupingBy(PermitGroup::getPermitGroupId));
        Set<Integer> keySet = existGroupListMap.keySet();
        Iterator<Integer> iterator = keySet.iterator();
        while (iterator.hasNext()){
            boolean diff = false;
            List<PermitGroup> existGroupListII = existGroupListMap.get(iterator.next());
            for (int i = 0; i < existGroupListII.size(); i++) {
                if(!permitGroupList.get(i).getPermitItemValue().equals(existGroupListII.get(i).getPermitItemValue())){
                    //存在差异,进入下个组校验
                    diff = true;
                    break;
                }
            }
            //如果每项都不存在差异
            if(!diff){
                return response.set(1,false,"有存在权限完全相同的权限组,无法添加");
            }
        }*/
        //权限组id生成
        int maxValue = (int) commonMapper.getMaxValue("plus_user", "tb_user_permitgroup", "permit_group_id");
        int newPermitGroupId = maxValue+1;
        permitGroupList.stream().forEach(permitGroup -> permitGroup.setPermitGroupId(newPermitGroupId));
        mapper.insertBatchSomeColumn(permitGroupList);
        return response.set(1,true,"添加成功");
    }
    //验证权限
    private boolean checkUserPermit() {
        Integer uId = ActionUtil.getUser().getId();
        List<String> itemList = permitGroupUserMapper.getItemList(uId);
        if (!itemList.contains("permit_edit_permit")){
            return false;
        }
        return true;
    }
    //验证指定权限
    public boolean checkUserPermitWithName(String permitName) {
        Integer uid = ActionUtil.getUser().getId();
        List<String> itemList = permitGroupUserMapper.getItemList(uid);
        if (!itemList.contains(permitName)){
            return false;
        }
        return true;
    }
    @Transactional
    public Response<Boolean> update(List<Permitgroup> permitGroupList) {
        //首先校验当前用户所在的权限组,是否存在权限编辑权限 permit_edit_permit
        //if (!checkUserPermit()) return new Response<Boolean>().set(1, false, "当前用户没有权限编辑权限组");
        Response<Boolean> response = new Response<>();
        //权限互斥,查询已存在的权限组,不允许存在权限完全一样的权限组(应该剔除掉数据库中的自己权限组的校验,可以不更新)
        /*QueryWrapper<PermitGroup> wrapper = Wrappers.query();
        //wrapper.select("permit_group_id","permit_item_name","permit_item_value");
        wrapper.select("permit_group_id","permit_item_value").ge("permit_group_id",100).ne("permit_group_id",permitGroupList.get(0).getPermitGroupId());
        List<PermitGroup> existGroupList = mapper.selectList(wrapper);
        Map<Integer, List<PermitGroup>> existGroupListMap = existGroupList.stream().collect(Collectors.groupingBy(PermitGroup::getPermitGroupId));
        Set<Integer> keySet = existGroupListMap.keySet();
        Iterator<Integer> iterator = keySet.iterator();
        while (iterator.hasNext()){
            boolean diff = false;
            List<PermitGroup> existGroupListII = existGroupListMap.get(iterator.next());
            for (int i = 0; i < existGroupListII.size(); i++) {
                if(!permitGroupList.get(i).getPermitItemValue().equals(existGroupListII.get(i).getPermitItemValue())){
                    //存在差异,进入下个组校验
                    diff = true;
                    break;
                }
            }
            //如果每项都不存在差异
            if(!diff){
                return response.set(1,false,"有存在权限完全相同的权限组,无法更新");
            }
        }*/
        //先删除,后增加
        UpdateWrapper<Permitgroup> updateWrapper = Wrappers.update();
        updateWrapper.eq("permit_group_id",permitGroupList.get(0).getPermitGroupId());
        mapper.delete(updateWrapper);
        mapper.insertBatchSomeColumn(permitGroupList);
        return response.set(1,true,"更新成功");
    }
    @Transactional
    public boolean delete(Integer permitGroupId) {
        if(permitGroupId==100001){
            return false;
        }
        //删除权限组表记录
        UpdateWrapper<Permitgroup> groupWrapper = Wrappers.update();
        groupWrapper.eq("permit_group_id",permitGroupId);
        mapper.delete(groupWrapper);
        //删除权限组对应的用户记录
        UpdateWrapper<PermitgroupUsr> groupUserWrapper = Wrappers.update();
        groupUserWrapper.eq("permit_group_id",permitGroupId);
        permitGroupUserMapper.delete(groupUserWrapper);
        return true;
    }
    public List<Permitgroup> getList() {
        QueryWrapper<Permitgroup> wrapper = Wrappers.query();
        wrapper.select("distinct permit_group_id,permit_group_name");
        return mapper.selectList(wrapper);
    }
    public Map getPermitGroupInfo(Integer permitGroupId) {
        Map<String,List> resultMap = new HashMap<>();
        //查询权限组已添加的用户
        List<User> relatedUserInfList = permitGroupUserMapper.getUserInf(permitGroupId);
        //查询权限组未添加的用户
        //List<UserInf> allUserInfList = userInfMapper.selectList(null);
        //List<UserInf> notRelatedUserInfList = allUserInfList.stream().filter(userInf -> !relatedUserInfList.contains(userInf)).collect(Collectors.toList());
        //查询未被添加到所有权限组的用户
        List<User> notRelatedUserInfList = userService.searchCS_All2();
        //查询权限组的明细权限
        QueryWrapper<Permitgroup> wrapper = Wrappers.query();
        wrapper.eq("permit_group_id",permitGroupId);
        List<Permitgroup> permitGroupList = mapper.selectList(wrapper);
        resultMap.put("usersAdded",relatedUserInfList);
        resultMap.put("usersNotAdded",notRelatedUserInfList);
        resultMap.put("permits",permitGroupList);
        return resultMap;
    }
    public List<Permitgroup> getPermitList() {
        QueryWrapper<Permitgroup> wrapper = Wrappers.query();
        wrapper.select("distinct permit_item_name");
        List<Permitgroup> permitGroups = mapper.selectList(wrapper);
        return permitGroups;
    }
}
src/main/java/com/whyc/service/PermitGroupUserService.java
New file
@@ -0,0 +1,61 @@
package com.whyc.service;
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.whyc.mapper.PermitGroupUserMapper;
import com.whyc.pojo.db_user.Permitgroup;
import com.whyc.pojo.db_user.PermitgroupUsr;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class PermitGroupUserService {
    @Resource
    private PermitGroupUserMapper mapper;
    public List<Permitgroup> getPermitByUser(Integer userId){
        if(userId<=100){
            //内置用户包含所有得权限
            return mapper.getAllPermitList();
        }else{
            return mapper.getPermitByUser(userId);
        }
    }
    public void update(PermitgroupUsr groupUser, int operationFlag) {
        if(operationFlag==1) {
            mapper.insert(groupUser);
        }else{
            UpdateWrapper<PermitgroupUsr> wrapper = Wrappers.update();
            wrapper.eq("permit_group_id",groupUser.getPermitGroupId()).eq("uid",groupUser.getUid());
            mapper.delete(wrapper);
        }
    }
    public void updateBatch(List<PermitgroupUsr> groupUserList, int operationFlag) {
        if(operationFlag==1) {
            mapper.insertBatchSomeColumn(groupUserList);
        }else{
            UpdateWrapper<PermitgroupUsr> wrapper = Wrappers.update();
            wrapper.eq("permit_group_id",groupUserList.get(0).getPermitGroupId());
            List<Integer> uIdList = groupUserList.stream().map(e -> e.getUid()).collect(Collectors.toList());
            wrapper.in("uid",uIdList);
            mapper.delete(wrapper);
        }
    }
    public PermitgroupUsr getPermitGroup(Long uId) {
        QueryWrapper<PermitgroupUsr> wrapper = Wrappers.query();
        wrapper.select("permit_group_id").eq("uid",uId).last(" limit 1");
        return mapper.selectOne(wrapper);
    }
    public List<String> getItemList(Integer uId) {
        return mapper.getItemList(uId);
    }
}
src/main/java/com/whyc/service/UserService.java
@@ -195,5 +195,7 @@
            return new Response().set(0,false,"新密码修改失败");
        }
    }
    public List<User> searchCS_All2() {
        return userMapper.searchCS_All2();
    }
}
src/main/resources/mapper/UserMapper.xml
@@ -22,4 +22,9 @@
        </where>
    </select>
    <select id="searchCS_All2" resultType="com.whyc.pojo.db_user.User">
        SELECT uid,uname FROM db_user.tb_user  where uid not in (select distinct uid from db_user.tb_user_permitgroup_usr) and uid>100
        order by uid
    </select>
</mapper>