@Override
public boolean saveOrEdit(TrainBookType bookType) {
//先拿到所有的图书分类
List list = this.list();
//遍历比较
for (TrainBookType trainBookType : list) {
String ExistingBook = trainBookType.getBookName();
//当前图书分类名称
String bookName = bookType.getBookName();
if (Str.isNotEmpty(bookType.getId())) {
if (bookName.equals(ExistingBook) && !bookType.getId().equals(trainBookType.getId())) {
throw new BsException('图书类型' + bookName + '已经存在');
}
} else {
if (bookName.equals(ExistingBook)) {
throw new BsException('图书类型' + bookName + '已经存在');
}
}
}
if (Str.isNotEmpty(bookType.getId())) {
return this.updateById(bookType);
} else {
return this.save(bookType);
}
}
问题:如果是编辑图书分类,保存时会直接返回,不会执行更新操作。
修改点:
- 在判断是否重名时,需要判断当前编辑的图书分类是否与其他已存在的图书分类重名,如果不是才能继续更新操作,因此需要加上 && !bookType.getId().equals(trainBookType.getId())。
- 在判断是否执行更新操作时,需要判断是否为新增操作,如果是则执行保存操作,否则执行更新操作。