Commit 5a2d9d14df7b90e468bac1a6c0dc530f975b8a28

Authored by owen
1 parent 7fd497fc

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

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> {
67 67 default Long selectCountByGroupId(Long groupId) {
68 68 return selectCount(MemberUserDO::getGroupId, groupId);
69 69 }
  70 +
  71 + default Long selectCountByLevelId(Long levelId) {
  72 + return selectCount(MemberUserDO::getLevelId, levelId);
  73 + }
  74 +
  75 + default Long selectCountByTagId(Long tagId) {
  76 + return selectCount(new LambdaQueryWrapperX<MemberUserDO>()
  77 + .apply("FIND_IN_SET({0}, tag_ids)", tagId));
  78 + }
  79 +
70 80 }
... ...
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 {
74 74  
75 75 @Override
76 76 public void deleteLevel(Long id) {
77   - // TODO @疯狂:校验是否有用户使用该等级
78 77 // 校验存在
79 78 validateLevelExists(id);
  79 + // 校验分组下是否有用户
  80 + validateLevelHasUser(id);
80 81 // 删除
81 82 levelMapper.deleteById(id);
82 83 }
... ... @@ -149,6 +150,14 @@ public class MemberLevelServiceImpl implements MemberLevelService {
149 150 validateExperienceOutRange(list, id, level, experience);
150 151 }
151 152  
  153 + @VisibleForTesting
  154 + void validateLevelHasUser(Long id) {
  155 + Long count = memberUserMapper.selectCountByLevelId(id);
  156 + if (count > 0) {
  157 + throw exception(GROUP_HAS_USER);
  158 + }
  159 + }
  160 +
152 161 @Override
153 162 public MemberLevelDO getLevel(Long id) {
154 163 return levelMapper.selectById(id);
... ...
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
10 10 import cn.iocoder.yudao.module.member.convert.tag.MemberTagConvert;
11 11 import cn.iocoder.yudao.module.member.dal.dataobject.tag.MemberTagDO;
12 12 import cn.iocoder.yudao.module.member.dal.mysql.tag.MemberTagMapper;
  13 +import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
13 14 import org.springframework.stereotype.Service;
14 15 import org.springframework.validation.annotation.Validated;
15 16  
... ... @@ -18,8 +19,7 @@ import java.util.Collection;
18 19 import java.util.List;
19 20  
20 21 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
21   -import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.TAG_NAME_EXISTS;
22   -import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.TAG_NOT_EXISTS;
  22 +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
23 23  
24 24 /**
25 25 * 会员标签 Service 实现类
... ... @@ -32,6 +32,8 @@ public class MemberTagServiceImpl implements MemberTagService {
32 32  
33 33 @Resource
34 34 private MemberTagMapper tagMapper;
  35 + @Resource
  36 + private MemberUserMapper memberUserMapper;
35 37  
36 38 @Override
37 39 public Long createTag(MemberTagCreateReqVO createReqVO) {
... ... @@ -59,6 +61,8 @@ public class MemberTagServiceImpl implements MemberTagService {
59 61 public void deleteTag(Long id) {
60 62 // 校验存在
61 63 validateTagExists(id);
  64 + // 校验标签下是否有用户
  65 + validateTagHasUser(id);
62 66 // 删除
63 67 tagMapper.deleteById(id);
64 68 }
... ... @@ -87,6 +91,13 @@ public class MemberTagServiceImpl implements MemberTagService {
87 91 }
88 92 }
89 93  
  94 + void validateTagHasUser(Long id) {
  95 + Long count = memberUserMapper.selectCountByTagId(id);
  96 + if (count > 0) {
  97 + throw exception(TAG_HAS_USER);
  98 + }
  99 + }
  100 +
90 101 @Override
91 102 public MemberTagDO getTag(Long id) {
92 103 return tagMapper.selectById(id);
... ...