浏览代码

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

owen 1 年之前
父节点
当前提交
fe68b42a8c

+ 2 - 4
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<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);
     }
 }

+ 14 - 4
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);
         }
     }