Browse Source

机构群数量限制、群限制提示修改

yuanliang 1 year ago
parent
commit
1190c336cd

+ 1 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -2142,10 +2142,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
 
         String message = "";
         if (CollectionUtils.isNotEmpty(noGroupJoinUserIds)) {
-            String collect = teacherService.getDao().findBasicUserInfo(Sets.newHashSet(noGroupJoinUserIds)).stream()
-                .map(BasicUserInfo::getUsername).collect(Collectors.joining());
             // 返回未加入群用户消息
-            message = collect + "由于群成员人数达到上限,未进入课程群";
+            message = "群成员人数达到上限,有" + noGroupJoinUserIds.size() + "位学生未进入课程群";
         }
         return message;
     }

+ 10 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberAuditServiceImpl.java

@@ -100,7 +100,9 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
         DistributedLock.of(redissonClient).runIfLockToFunction(lockName, (x)-> {
 
             // 统计群成员数量,大于等于群组最大人数时,不允许加入
-            verifyGroupMemberJoinLimit(groupId);
+            if (!verifyGroupMemberJoinLimit(groupId)) {
+                throw new BizException("群成员数量已达上限");
+            }
 
             try {
                 Date date = new Date();
@@ -154,7 +156,10 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
         DistributedLock.of(redissonClient).runIfLockToFunction(lockName, (x)-> {
 
             // 校验群成员加入限制
-            verifyGroupMemberJoinLimit(groupId);
+            if (!verifyGroupMemberJoinLimit(groupId)) {
+                SysConfig config = sysConfigService.findByParamName(SysConfigConstant.GROUP_MEMBER_LIMIT);
+                throw new BizException("群成员人数上限为:" + config.getParamValue() + "人");
+            }
             try {
                 //修改审核状态
                 baseMapper.batchUpdateAuditStatus(auditIds,auditStatus.getCode());
@@ -181,15 +186,16 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
      * 校验群成员加入限制
      * @param groupId 群组ID
      */
-    private void verifyGroupMemberJoinLimit(String groupId) {
+    private Boolean verifyGroupMemberJoinLimit(String groupId) {
         // 统计群成员数量,大于等于群组最大人数时,不允许加入
         int memberCount = imGroupMemberService.countGroupMember(groupId);
         // 查询群成员人数限制
         SysConfig config = sysConfigService.findByParamName(SysConfigConstant.GROUP_MEMBER_LIMIT);
         if (Objects.nonNull(config) && Integer.parseInt(config.getParamValue()) > 0
             && memberCount > Integer.parseInt(config.getParamValue())) {
-            throw new BizException("群成员数量已达上限");
+            return false;
         }
+        return true;
     }
 
     /**

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -306,6 +306,12 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     @Override
     @Transactional(rollbackFor = Exception.class)
     public String create(ImGroupWrapper.ImGroup imGroup) throws Exception {
+        // 群成员数量限制校验
+        SysConfig config = sysConfigService.findByParamName(SysConfigConstant.GROUP_MEMBER_LIMIT);
+        if (config != null && Integer.parseInt(config.getParamValue()) < imGroup.getStudentIdList().size()) {
+            throw new BizException("群成员人数上限为:" + config.getParamValue() + "人");
+        }
+
         Date now = new Date();
         if (imGroup.getType() == null) {
             imGroup.setType(ImGroupType.FAN.getCode());

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantGroupServiceImpl.java

@@ -17,6 +17,7 @@ import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.entity.SysConfig;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.entity.TenantGroup;
 import com.yonge.cooleshow.biz.dal.entity.TenantGroupAlbum;
@@ -28,6 +29,7 @@ import com.yonge.cooleshow.biz.dal.mapper.TenantGroupAlbumMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantGroupMapper;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
 import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.service.TenantGroupService;
 import com.yonge.cooleshow.biz.dal.service.im.ImGroupCoreService;
@@ -36,6 +38,7 @@ import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantGroupAlbumWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantGroupWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupWrapper;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -71,6 +74,8 @@ public class TenantGroupServiceImpl extends ServiceImpl<TenantGroupMapper, Tenan
     private SysUserService sysUserService;
     @Autowired
     private TenantGroupAlbumMapper tenantGroupAlbumMapper;
+    @Autowired
+    private SysConfigService sysConfigService;
 
     /**
      * 查询详情
@@ -162,6 +167,12 @@ public class TenantGroupServiceImpl extends ServiceImpl<TenantGroupMapper, Tenan
 
         this.save(entity);
         if (adminId != null && Boolean.TRUE.equals(imGroupCreate)) {
+            // 群成员数量限制校验
+            SysConfig config = sysConfigService.findByParamName(SysConfigConstant.GROUP_MEMBER_LIMIT);
+            if (config != null && Integer.parseInt(config.getParamValue()) < userIds.size()) {
+                throw new BizException("群成员人数上限为:" + config.getParamValue() + "人");
+            }
+
             // 建群
             try {
                 ImGroupWrapper.ImGroup imGroup = new ImGroupWrapper.ImGroup();