会员:修改会员标签名称唯一校验逻辑

This commit is contained in:
owen 2023-08-20 09:41:15 +08:00
parent 2584911d88
commit fe68b42a8c
2 changed files with 16 additions and 8 deletions

View File

@ -22,9 +22,7 @@ public interface MemberTagMapper extends BaseMapperX<MemberTagDO> {
.orderByDesc(MemberTagDO::getId));
}
default boolean exists(Long id, String name) {
return exists(new LambdaQueryWrapperX<MemberTagDO>()
.neIfPresent(MemberTagDO::getId, id)
.eq(MemberTagDO::getName, name));
default MemberTagDO selelctByName(String name) {
return selectOne(MemberTagDO::getName, name);
}
}

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.service.tag;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.tag.vo.MemberTagCreateReqVO;
import cn.iocoder.yudao.module.member.controller.admin.tag.vo.MemberTagPageReqVO;
@ -62,8 +63,6 @@ public class MemberTagServiceImpl implements MemberTagService {
tagMapper.deleteById(id);
}
// TODO @疯狂校验 tag name 不重复参考 validateMobileUnique 方法Mapper 尽量逻辑通用处理交给 Service
private void validateTagExists(Long id) {
if (tagMapper.selectById(id) == null) {
throw exception(TAG_NOT_EXISTS);
@ -71,8 +70,19 @@ public class MemberTagServiceImpl implements MemberTagService {
}
private void validateTagNameUnique(Long id, String name) {
boolean exists = tagMapper.exists(id, name);
if (exists) {
if (StrUtil.isBlank(name)) {
return;
}
MemberTagDO tag = tagMapper.selelctByName(name);
if (tag == null) {
return;
}
// 如果 id 为空说明不用比较是否为相同 id 的标签
if (id == null) {
throw exception(TAG_NAME_EXISTS);
}
if (!tag.getId().equals(id)) {
throw exception(TAG_NAME_EXISTS);
}
}