diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/tag/MemberTagMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/tag/MemberTagMapper.java index 457fcaf23..f4723e282 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/tag/MemberTagMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/tag/MemberTagMapper.java @@ -22,9 +22,7 @@ public interface MemberTagMapper extends BaseMapperX { .orderByDesc(MemberTagDO::getId)); } - default boolean exists(Long id, String name) { - return exists(new LambdaQueryWrapperX() - .neIfPresent(MemberTagDO::getId, id) - .eq(MemberTagDO::getName, name)); + default MemberTagDO selelctByName(String name) { + return selectOne(MemberTagDO::getName, name); } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/tag/MemberTagServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/tag/MemberTagServiceImpl.java index eca04660b..26bf4304f 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/tag/MemberTagServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/tag/MemberTagServiceImpl.java @@ -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); } }