阿士匹灵.sout 2024-06-29 10:50 采纳率: 28.6%
浏览 5

动力节点恒和仓库管理系统分配角色roleid返回null

img


为什么这里的roleid返回的是null 啊
这是动力节点的恒和仓库管理系统,这是要给用户分配角色


/**
     * 给用户分配角色的url接口/user/assignRole
     *
     * @RequestBody AssignRoleDto assignRoleDto将请求传递的json数据
     * 封装到参数AssignRoleDto对象中;
     */
    @RequestMapping("/assignRole")
    public Result assignRole(@RequestBody AssignRoleDto assignRoleDto){
        //执行业务
        roleService.assignRole(assignRoleDto);
        //响应
        return Result.ok("分配角色成功!");
    }

 //给用户分配角色的业务方法
    @Transactional//事务处理
    @Override
    public void assignRole(AssignRoleDto assignRoleDto) {

        //拿到用户id
        Integer userId = assignRoleDto.getUserId();
        //拿到给用户分配的所有角色名
        List<String> roleNameList = assignRoleDto.getRoleCheckList();

        //根据用户id删除给用户已分配的所有角色
        roleMapper.delRoleByUserId(userId);

        //循环添加用户角色关系
        for (String roleName : roleNameList) {
            //根据当前角色名查询当前角色的id
            Integer roleId = roleMapper.getRoleIdByName(roleName);
            //添加用户角色关系
            roleMapper.insertUserRole(userId, roleId);
        }
    }

  <!--
      //根据用户id删除给用户已分配的所有角色
      public int delRoleByUserId(Integer userId);
    -->
    <delete id="delRoleByUserId">
        delete from user_role where user_id = #{userId}
    </delete>

  <!--
      //根据角色名称查询角色id
      public int getRoleIdByName(String roleName);
    -->
    <select id="getRoleIdByName" resultType="integer">
        select role_id from role where role_name = #{roleName}
    </select>

   <!--
      //添加用户角色关系的方法
      public void insertUserRole(Integer userId, Integer roleId)
    -->
    <insert id="insertUserRole">
        insert into user_role (user_id, role_id)
        values (#{param1}, #{param2})
    </insert>

上面这分别是controller层 、serviceImpl和mapper.xml中对应的代码
有没有做过这个项目的?求解

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-29 10:50
    关注

    引自免费微信小程序:皆我百晓生

    从你提供的描述和代码中,我理解了你的问题是在动力节点恒和仓库管理系统中,当你尝试分配角色时返回了null值,这可能导致你的角色分配功能无法正常工作。为了更好地解决你的问题,我将分析以下几个方面可能存在的问题及其解决方法:

    问题分析

    1. 变量值为null

    你的代码中涉及到多个变量值,如userIdroleId等,如果这些变量值为null,可能会导致方法执行失败并返回null。你需要确保这些变量在调用相关方法之前已经被正确赋值。

    2. 数据库查询问题

    在mapper层的代码中,你使用了SQL语句来查询角色ID和插入用户角色关系。如果这些查询没有正确执行或返回的结果不符合预期(例如没有正确返回角色ID或没有插入记录),那么分配角色功能可能也会受到影响。你应该检查数据库的日志来确认SQL语句是否被正确执行,以及是否有任何异常或错误。

    3. 接口调用问题

    在Controller层中,你使用了assignRole方法来处理角色分配的请求。你需要确保该接口是否被正确调用,并且传递的参数是正确的。如果参数传递错误或者接口调用失败,也可能导致返回null。

    4. 异常处理不足

    你的代码中可能没有足够处理可能出现的异常,如数据库查询异常或业务逻辑异常等。这些异常可能导致方法在执行过程中中断并返回null。你应该在代码中增加适当的异常处理逻辑,以捕获和处理这些异常。

    解决方案

    1. 检查变量值

    确保所有涉及到的变量(如userIdroleNameList等)在调用相关方法之前已经被正确赋值。你可以在调用方法之前添加检查语句来验证这些变量的值是否正确。

    2. 检查数据库操作

    检查数据库的日志和返回结果来确认SQL查询是否正确执行,以及是否有任何异常或错误。你也可以在代码中增加日志记录来帮助调试和跟踪问题。

    3. 检查接口调用和参数传递

    确认assignRole接口是否被正确调用,并且传递的参数是正确的。你可以使用调试工具或日志记录来跟踪接口的调用和参数传递情况。

    4. 增加异常处理逻辑

    在你的代码中增加适当的异常处理逻辑,以捕获和处理可能出现的异常。这样可以避免方法在执行过程中中断并返回null的情况。

    由于你没有提供完整的代码和项目结构,以上是基于你提供的信息进行的分析和建议。如果问题仍然存在或者需要更具体的帮助,请提供更多的代码和项目细节,以便我能更准确地帮助你解决问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月29日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画