关于解决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;
}
}
2.部门删除中时‘中国人寿总公司’删除不了,原因是在t_s_base_user表中有外键约束,在admin这个用户数据中,把departid字段里面的数据去掉,因为是多部门,这个字段没有用 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;
} 感谢你的建议,bug已经修复了
页:
[1]