关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、3102411850 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 6099|回复: 3

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

[复制链接]
发表于 2017-3-14 16:38:35 | 显示全部楼层 |阅读模式
本帖最后由 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;
                }
        }




 楼主| 发表于 2017-3-14 16:55:04 | 显示全部楼层
2.部门删除中时‘中国人寿总公司’删除不了,原因是在t_s_base_user表中有外键约束,在admin这个用户数据中,把departid字段里面的数据去掉,因为是多部门,这个字段没有用
 楼主| 发表于 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;
        }
发表于 2017-3-14 17:45:25 | 显示全部楼层
感谢你的建议,bug已经修复了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表