yan888nn 发表于 2017-3-14 16:38:35

关于解决jeecg3.6.6的用户权限部分bug问题

本帖最后由 yan888nn 于 2017-3-14 16:53 编辑

首先,一个框架最基本的东西应该很稳定、成熟才对,最基本的我觉得应该就是用户、部门、权限这一块了(PS:国际化什么的个人觉得没什么用,弄得系统很臃肿),但是看jeecg的这一部分的源代码以后,发现很多地方的代码都很随意。jeecg3.6.6刚发布不久,这个版本我也是刚上手,现在逐步对发现问题提交上来,然后给大家解答;先来一个用户删除的问题:
1.用户的删除有问题,在测试删除用户时,发现admin用户竟然也可以被删除;
原因解析:
@RequestMapping(params = "delete")
      @ResponseBody
      public AjaxJson delete(TSUser user, @RequestParam String deleteType, HttpServletRequest req) {
                //注意,此处少了这么一行:user = systemService.getEntity(TSUser.class, user.getId());
                if (deleteType.equals("delete")) {
                        return this.del(user, req);
                }else if (deleteType.equals("deleteTrue")) {
                        return this.trueDel(user, req);
                }else{
                        AjaxJson j = new AjaxJson();
                        
                        j.setMsg("删除逻辑参数异常,请重试.");
                        return j;
                }
      }




yan888nn 发表于 2017-3-14 16:55:04

2.部门删除中时‘中国人寿总公司’删除不了,原因是在t_s_base_user表中有外键约束,在admin这个用户数据中,把departid字段里面的数据去掉,因为是多部门,这个字段没有用

yan888nn 发表于 2017-3-14 17:11:23

3.部门删除中,删除jeecg开源社区时显示删除成功,实际上确没有删除,原因是代码中判断了该部门下没有用户的时候可以删除,但是在有用户的情况下,没有做相应处理,以下是代码解决:
@RequestMapping(params = "del")
        @ResponseBody
        public AjaxJson del(TSDepart depart, HttpServletRequest request) {
                String message = null;
                AjaxJson j = new AjaxJson();
                depart = systemService.getEntity(TSDepart.class, depart.getId());
      message = MutiLangUtil.paramDelSuccess("common.department");
      System.out.println(depart.getTSDeparts().size());
      if (depart.getTSDeparts().size() == 0) {
            Long userCount = systemService.getCountForJdbc("select count(1) from t_s_user_org where org_id='" + depart.getId() + "'");
            if(userCount == 0) { // 组织机构下没有用户时,该组织机构才允许删除。
                systemService.executeSql("delete from t_s_role_org where org_id=?", depart.getId());
                systemService.delete(depart);

                systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
            //添加else判断
            }else{
                    message = "该部门下有用户存在,不能删除";
            }
      } else {
            message = MutiLangUtil.paramDelFail("common.department");
      }

      j.setMsg(message);
                return j;
        }

admin 发表于 2017-3-14 17:45:25

感谢你的建议,bug已经修复了
页: [1]
查看完整版本: 关于解决jeecg3.6.6的用户权限部分bug问题