ソースを参照

会员: 删除用户标签, 用户等级时, 校验是否关联了用户

owen 1 年間 前
コミット
5a2d9d14df

+ 10 - 0
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/user/MemberUserMapper.java

@@ -67,4 +67,14 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> {
     default Long selectCountByGroupId(Long groupId) {
         return selectCount(MemberUserDO::getGroupId, groupId);
     }
+
+    default Long selectCountByLevelId(Long levelId) {
+        return selectCount(MemberUserDO::getLevelId, levelId);
+    }
+
+    default Long selectCountByTagId(Long tagId) {
+        return selectCount(new LambdaQueryWrapperX<MemberUserDO>()
+                .apply("FIND_IN_SET({0}, tag_ids)", tagId));
+    }
+
 }

+ 10 - 1
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/level/MemberLevelServiceImpl.java

@@ -74,9 +74,10 @@ public class MemberLevelServiceImpl implements MemberLevelService {
 
     @Override
     public void deleteLevel(Long id) {
-        // TODO @疯狂:校验是否有用户使用该等级
         // 校验存在
         validateLevelExists(id);
+        // 校验分组下是否有用户
+        validateLevelHasUser(id);
         // 删除
         levelMapper.deleteById(id);
     }
@@ -149,6 +150,14 @@ public class MemberLevelServiceImpl implements MemberLevelService {
         validateExperienceOutRange(list, id, level, experience);
     }
 
+    @VisibleForTesting
+    void validateLevelHasUser(Long id) {
+        Long count = memberUserMapper.selectCountByLevelId(id);
+        if (count > 0) {
+            throw exception(GROUP_HAS_USER);
+        }
+    }
+
     @Override
     public MemberLevelDO getLevel(Long id) {
         return levelMapper.selectById(id);

+ 13 - 2
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/tag/MemberTagServiceImpl.java

@@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.member.controller.admin.tag.vo.MemberTagUpdateReq
 import cn.iocoder.yudao.module.member.convert.tag.MemberTagConvert;
 import cn.iocoder.yudao.module.member.dal.dataobject.tag.MemberTagDO;
 import cn.iocoder.yudao.module.member.dal.mysql.tag.MemberTagMapper;
+import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -18,8 +19,7 @@ import java.util.Collection;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.TAG_NAME_EXISTS;
-import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.TAG_NOT_EXISTS;
+import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
 
 /**
  * 会员标签 Service 实现类
@@ -32,6 +32,8 @@ public class MemberTagServiceImpl implements MemberTagService {
 
     @Resource
     private MemberTagMapper tagMapper;
+    @Resource
+    private MemberUserMapper memberUserMapper;
 
     @Override
     public Long createTag(MemberTagCreateReqVO createReqVO) {
@@ -59,6 +61,8 @@ public class MemberTagServiceImpl implements MemberTagService {
     public void deleteTag(Long id) {
         // 校验存在
         validateTagExists(id);
+        // 校验标签下是否有用户
+        validateTagHasUser(id);
         // 删除
         tagMapper.deleteById(id);
     }
@@ -87,6 +91,13 @@ public class MemberTagServiceImpl implements MemberTagService {
         }
     }
 
+    void validateTagHasUser(Long id) {
+        Long count = memberUserMapper.selectCountByTagId(id);
+        if (count > 0) {
+            throw exception(TAG_HAS_USER);
+        }
+    }
+
     @Override
     public MemberTagDO getTag(Long id) {
         return tagMapper.selectById(id);