部门更新问题
来源:7-4 新增部门、部门层级树、更新部门接口自测

zhouyayong
2018-04-04
部门更新bug,如下代码:
public void update(DeptParam param) { BeanValidator.check(param); if(checkExist(param.getParentId(), param.getName(), param.getId())) { throw new ParamException("同一层级下存在相同名称的部门"); } SysDept before = sysDeptMapper.selectByPrimaryKey(param.getId()); Preconditions.checkNotNull(before, "待更新的部门不存在"); if(checkExist(param.getParentId(), param.getName(), param.getId())) { throw new ParamException("同一层级下存在相同名称的部门"); } SysDept after = SysDept.builder().id(param.getId()).name(param.getName()).parentId(param.getParentId()) .seq(param.getSeq()).remark(param.getRemark()).build(); after.setLevel(LevelUtil.calculateLevel(getLevel(param.getParentId()), param.getParentId())); after.setOperator(RequestHolder.getCurrentUser().getUsername()); after.setOperateIp(IpUtil.getRemoteIp(RequestHolder.getCurrentRequest())); after.setOperateTime(new Date()); updateWithChild(before, after); } private boolean checkExist(Integer parentId, String deptName, Integer deptId) { return sysDeptMapper.countByNameAndParentId(parentId, deptName, deptId) > 0; }
老师,我认为您的代码存在bug,当部门名称和parentId都不变的时候,在执行到checkExist时,返回肯定为真,这样就会抛出“同一层级下存在相同名称的部门”异常。
写回答
4回答
-
你看一下传入到checkExist方法里的deptId是否有问题,这个在更新时sql里会排除当前部门。你看看这个是bug还是你传入的有问题、或者理解的课程里的不一致?
022019-02-26 -
zhouyayong
提问者
2018-04-04
我在sql中没有排除当前部门。
00 -
Jimin
2018-04-04
那就不会有问题啊,sql里会排除当前部门去同一层级校验是否存在同名的部门。有什么问题吗?
00 -
zhouyayong
提问者
2018-04-04
我传入的deptId是当前部门的Id,难道您出入的不是当前部门的Id
00
相似问题