瀏覽代碼

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow

liujunchi 3 年之前
父節點
當前提交
3f42f257c7

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupDao.java

@@ -20,5 +20,8 @@ public interface ImGroupDao extends BaseMapper<ImGroup> {
 
     //获取指定用户的群聊列表
     List<ImGroupResultDto> queryTeacherFun(@Param("imGroupDto") ImGroupSearchDto imGroupSearchDto);
+
+    //更新群成员数量
+    void updateMemberNum(@Param("groupId") String groupId);
 }
 

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberService.java

@@ -49,7 +49,7 @@ public interface ImGroupMemberService extends IService<ImGroupMember> {
     * @author zx
     * @date 2022/3/22 15:59
     */
-    List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMemberRoleType roleType) throws Exception;
+    List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMemberRoleType roleType);
 
     /**
     * @description: 加入融云群

+ 0 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java

@@ -44,14 +44,6 @@ public interface ImGroupService extends IService<ImGroup> {
     void dismiss(String groupId) throws Exception;
 
     /**
-    * @description: 同步群成员数量
-     * @param groupId
-    * @author zx
-    * @date 2022/3/22 11:17
-    */
-    void syncGroupMemberNum(String groupId) throws Exception;
-
-    /**
     * @description: 获取群列表
      * @param imGroupSearchDto
     * @return java.util.List<com.yonge.cooleshow.biz.dal.entity.ImGroup>

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

@@ -1,11 +1,9 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.ImGroupMemberAuditDao;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
-import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit;
 import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
@@ -15,6 +13,7 @@ import com.yonge.cooleshow.biz.dal.queryInfo.ImGroupMemberAuditQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberAuditService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.vo.AuditUserInfo;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
@@ -43,10 +42,9 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
     @Resource
     private ImGroupService imGroupService;
     @Resource
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Resource
     private ImGroupMemberService imGroupMemberService;
-
     @Resource
     private SysMessageServiceImpl sysMessageService;
 
@@ -90,16 +88,15 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
                     imGroupMemberAudit.getUserId(), false,
                     imGroupMemberAudit.getRoleType());
             //同步群成员数量
-            imGroupService.syncGroupMemberNum(imGroup.getId());
+            imGroupService.getDao().updateMemberNum(imGroup.getId());
             //加入融云群
             imGroupMemberService.join(groupMembers,groupId);
         } else {
-            Map<Long,String> receivers = new HashMap<>();
-
+            Map<Long,String> receivers = new HashMap<>(1);
             // 群创建人
-            SysUser user = sysUserFeignService.queryUserById(imGroup.getCreateBy());
+            SysUser user = sysUserService.findUserById(imGroup.getCreateBy());
             // 申请人
-            SysUser auditUser = sysUserFeignService.queryUserById(imGroupMemberAudit.getUserId());
+            SysUser auditUser = sysUserService.findUserById(imGroupMemberAudit.getUserId());
 
             receivers.put(user.getId(), user.getPhone());
             try {
@@ -108,24 +105,15 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
             } catch (Exception e) {
                 log.warn("学生入群消息发送失败,{}",e.getMessage());
             }
-
         }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void applyAudit(String auditIds, AuditStatusEnum auditStatus,String groupId) throws Exception {
-        if(auditStatus == AuditStatusEnum.AUDITING ){
-            throw new BizException("操作失败:审核状态异常");
-        }
-        ImGroup imGroup = imGroupService.getById(groupId);
-        if(Objects.isNull(imGroup)){
-            throw new BizException("群组信息不存在");
-        }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(!sysUser.getId().equals(imGroup.getCreateBy())){
-            throw new BizException("操作失败:您没有审核权限");
-        }
+        Optional.of(auditStatus).filter(e->e != AuditStatusEnum.AUDITING).orElseThrow(()->new BizException("操作失败:审核状态异常"));
+        ImGroup imGroup = Optional.ofNullable(imGroupService.getById(groupId)).orElseThrow(() ->new BizException("群组信息不存在"));
+        Optional.of(sysUserService.getUser()).filter(e->!e.getId().equals(imGroup.getCreateBy())).orElseThrow(()->new BizException("操作失败:您没有审核权限"));
         //修改审核状态
         baseMapper.batchUpdateAuditStatus(auditIds,auditStatus.getCode());
         if(auditStatus == AuditStatusEnum.OPEN){
@@ -133,10 +121,9 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
             Set<Long> userIds = imGroupMemberAudit.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
             List<GroupMember> groupMembers = imGroupMemberService.initGroupMembers(groupId,userIds, ImGroupMemberRoleType.STUDENT);
             //同步群成员数量
-            imGroupService.syncGroupMemberNum(imGroup.getId());
+            imGroupService.getDao().updateMemberNum(imGroup.getId());
             //加入融云群
             imGroupMemberService.join(groupMembers,imGroup.getId());
-
             sendMessage(auditIds);
         }
     }
@@ -148,21 +135,21 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
      */
     private void sendMessage(String auditIds) {
         List<AuditUserInfo> auditUserInfoList = baseMapper.selectAuditUserInfo(auditIds);
-
         if (CollectionUtils.isEmpty(auditUserInfoList)) {
             return;
         }
-        for (AuditUserInfo auditUserInfo : auditUserInfoList) {
-            Map<Long,String> receivers = new HashMap<>();
+        auditUserInfoList.stream().forEach(this::sendMessage);
+    }
 
-            receivers.put(auditUserInfo.getAuditUserId(), auditUserInfo.getAuditUserPhone());
-            try {
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.FANSGROUP_APPLY_SUCCESS,
-                        receivers, null, 0, null, ClientEnum.STUDENT.getCode(), auditUserInfo.getGroupUsername(),
-                        auditUserInfo.getGroupName());
-            } catch (Exception e) {
-                log.warn("学生入群申请通过消息发送失败,{}",e.getMessage());
-            }
+    private void sendMessage(AuditUserInfo auditUserInfo){
+        Map<Long,String> receivers = new HashMap<>(1);
+        receivers.put(auditUserInfo.getAuditUserId(), auditUserInfo.getAuditUserPhone());
+        try {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.FANSGROUP_APPLY_SUCCESS,
+                    receivers, null, 0, null, ClientEnum.STUDENT.getCode(), auditUserInfo.getGroupUsername(),
+                    auditUserInfo.getGroupName());
+        } catch (Exception e) {
+            log.warn("学生入群申请通过消息发送失败,{}",e.getMessage());
         }
     }
 

+ 17 - 13
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberServiceImpl.java

@@ -22,6 +22,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * 群成员表(ImGroupMember)表服务实现类
@@ -55,11 +57,9 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<GroupMember> initGroupMember(String imGroupId, Long userId, Boolean isAdmin, ImGroupMemberRoleType roleType) throws Exception {
+    public List<GroupMember> initGroupMember(String imGroupId, Long userId, Boolean isAdmin, ImGroupMemberRoleType roleType){
         //记录群成员
         BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
-//        String username = roleType== ImGroupMemberRoleType.TEACHER?basicUserInfo.getRealName():basicUserInfo.getUsername();
-//        String username = roleType== ImGroupMember.ImGroupMemberRoleType.TEACHER?basicUserInfo.getRealName():basicUserInfo.getUsername();
         ImGroupMember imGroupMember = new ImGroupMember(imGroupId,userId,basicUserInfo.getUsername(),basicUserInfo.getAvatar(), isAdmin, roleType);
         Date date = new Date();
         imGroupMember.setCreateTime(date);
@@ -73,28 +73,25 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMemberRoleType roleType) throws Exception {
+    public List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMemberRoleType roleType){
         //记录群成员
         List<ImGroupMember> imGroupMembers = baseMapper.initImGroupMember(imGroupId,userIds,roleType.getCode());
-        List<GroupMember> groupMemberList = new ArrayList<>();
         if(CollectionUtils.isNotEmpty(imGroupMembers)){
             baseMapper.insertBatch(imGroupMembers);
             //加入融云群
-            for (Long userId : userIds) {
-                groupMemberList.add(new GroupMember(userId.toString(),imGroupId,null));
-            }
-            return groupMemberList;
+            Function<Long,GroupMember> func = (userId) -> new GroupMember(userId.toString(),imGroupId,null);
+            return userIds.stream().map(func).collect(Collectors.toList());
         }
         return new ArrayList<>();
     }
 
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void join(List<GroupMember> groupMemberList,String imGroupId) throws Exception {
         GroupMember[] groupMembers = groupMemberList.toArray(new GroupMember[groupMemberList.size()]);
         GroupModel groupModel = new GroupModel(imGroupId, 0);
         groupModel.setMembers(groupMembers);
-        ImGroup imGroup = imGroupDao.selectById(imGroupId);
-        groupModel.setName(imGroup.getName());
+        groupModel.setName(imGroupDao.selectById(imGroupId).getName());
         Result result = RongCloudConfig.rongCloud.group.join(groupModel);
         if(!result.code.equals(200)){
             log.error("加入群组失败:{}",result.errorMessage);
@@ -116,11 +113,18 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
         }
         BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
         //更新当前用户关联的该用户的详情信息
-        imGroupMember.setNickname(imGroupMember.getRoleType()== ImGroupMemberRoleType.STUDENT?basicUserInfo.getUsername():basicUserInfo.getRealName());
+        imGroupMember.setNickname(basicUserInfo.getUsername());
         imGroupMember.setAvatar(basicUserInfo.getAvatar());
         imGroupMember.setUpdateTime(new Date());
-        baseMapper.updateById(imGroupMember);
+        this.startTransactional(()->{
+            baseMapper.updateById(imGroupMember);
+        });
         return imGroupMember;
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void startTransactional(Runnable runnable){
+        runnable.run();
+    }
 }
 

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

@@ -1,22 +1,17 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.config.RongCloudConfig;
-import com.yonge.cooleshow.biz.dal.dao.*;
+import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.yonge.cooleshow.biz.dal.dao.ImGroupDao;
+import com.yonge.cooleshow.biz.dal.dao.ImGroupMemberAuditDao;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupResultDto;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
-import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
-import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
-import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
-import com.yonge.cooleshow.biz.dal.service.ImGroupService;
-import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.toolset.base.exception.BizException;
 import io.rong.models.Result;
 import io.rong.models.group.GroupMember;
@@ -50,7 +45,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     @Resource
     private ImGroupMemberAuditDao imGroupMemberAuditDao;
     @Resource
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Resource
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
 
@@ -68,7 +63,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         imGroup.setMemberNum(1);
         imGroup.setCreateTime(now);
         imGroup.setUpdateTime(now);
-        String imGroupId = UUID.randomUUID().toString() + imGroup.getType().getCode();
+        String imGroupId = UUID.randomUUID() + imGroup.getType().getCode();
         imGroup.setId(imGroupId);
         this.baseMapper.insert(imGroup);
         //处理本地群成员列表
@@ -136,12 +131,10 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void dismiss(String groupId) throws Exception {
-        ImGroup imGroup = this.baseMapper.selectById(groupId);
-        if(Objects.isNull(imGroup)){
-            throw new BizException("操作失败:群组不存在");
-        }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(!sysUser.getId().equals(imGroup.getCreateBy())){
+        Long createBy = Optional.ofNullable(this.baseMapper.selectById(groupId)).
+                map(ImGroup::getCreateBy).
+                orElseThrow(() -> new BizException("操作失败:群组不存在"));
+        if(!sysUserService.getUserId().equals(createBy)){
             throw new BizException("操作失败:您没有操作权限");
         }
         //删除入群申请
@@ -164,24 +157,13 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void syncGroupMemberNum(String groupId) throws Exception {
-        ImGroup imGroup = baseMapper.selectById(groupId);
-        Integer memberNum = imGroupMemberService.getBaseMapper().
-                selectCount(new QueryWrapper<ImGroupMember>().eq("group_id_",groupId));
-        imGroup.setMemberNum(memberNum);
-        baseMapper.updateById(imGroup);
-    }
-
-    @Override
     public List<ImGroup> queryAll(ImGroupSearchDto imGroupSearchDto) {
         return baseMapper.findAll(imGroupSearchDto);
     }
 
     @Override
     public List<ImGroupResultDto> queryTeacherFun(ImGroupSearchDto imGroupSearchDto) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        imGroupSearchDto.setUserId(sysUser.getId());
+        imGroupSearchDto.setUserId(sysUserService.getUserId());
         return baseMapper.queryTeacherFun(imGroupSearchDto);
     }
 }

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

@@ -24,19 +24,17 @@ public class SysUserServiceImpl implements SysUserService {
 
     @Override
     public SysUser getUser() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        Optional.ofNullable(sysUser).
-                map(SysUser::getId).
+        Optional<SysUser> optional = Optional.ofNullable(sysUserFeignService.queryUserInfo());
+        optional.map(SysUser::getId).
                 orElseThrow(()-> new BizException("请登录"));
-        return sysUser;
+        return optional.get();
     }
 
     @Override
     public SysUser findUserById(Long userId) {
-        SysUser sysUser = sysUserFeignService.queryUserById(userId);
-        Optional.ofNullable(sysUser).
-                map(SysUser::getId).
+        Optional<SysUser> optional = Optional.ofNullable(sysUserFeignService.queryUserInfo());
+        optional.map(SysUser::getId).
                 orElseThrow(()-> new BizException("请登录"));
-        return sysUser;
+        return optional.get();
     }
 }

+ 10 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -34,6 +34,16 @@
         </set>
         where id_ = #{et.id}
     </update>
+    <update id="updateMemberNum">
+        UPDATE im_group ig
+        LEFT JOIN (SELECT COUNT(id_) num_,group_id_ FROM im_group_member
+        <if test="groupId != null">
+            WHERE group_id_ = #{groupId}
+        </if>
+        GROUP BY group_id_) igm ON ig.id_ = igm.group_id_
+        SET member_num_ = igm.num_
+        WHERE ig.id_ = igm.group_id_
+    </update>
     <select id="findAll" resultMap="BaseResultMap">
         SELECT ig.* FROM im_group ig
         LEFT JOIN im_group_member igm ON igm.group_id_ = ig.id_