浏览代码

1.更新小组列表接口返回
2.更新群详情查看校验

yuanliang 1 年之前
父节点
当前提交
d7b62f1d2b

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

@@ -103,7 +103,7 @@ public class TenantGroupServiceImpl extends ServiceImpl<TenantGroupMapper, Tenan
             List<String> imGroupId = records.stream().map(TenantGroupWrapper.TenantGroup::getImGroupId)
                     .filter(Objects::nonNull).collect(Collectors.toList());
             List<String> existImgGroupIds = new ArrayList<>();
-            if (imGroupId.isEmpty()) {
+            if (!imGroupId.isEmpty()) {
                 List<String> imgGroupIds = imGroupService.lambdaQuery()
                         .in(ImGroup::getId, imGroupId)
                         .list().stream().map(ImGroup::getId).collect(Collectors.toList());
@@ -403,6 +403,9 @@ public class TenantGroupServiceImpl extends ServiceImpl<TenantGroupMapper, Tenan
                                 String.valueOf(teacherId));
                         imGroupCoreService.groupQuit(teacherId, ClientEnum.TEACHER.getCode(),
                                 imGroupId, true);
+                        imGroupService.lambdaUpdate()
+                                .set(ImGroup::getCreateBy, toTeacher)
+                                .eq(ImGroup::getId, imGroupId);
                     } catch (Exception e) {
                         log.error("移交负责人失败", e);
                         throw new BizException("移交负责人失败");
@@ -495,6 +498,9 @@ public class TenantGroupServiceImpl extends ServiceImpl<TenantGroupMapper, Tenan
                     String.valueOf(oldGroup.getAdminId()));
             imGroupCoreService.groupQuit(oldGroup.getAdminId(), ClientEnum.TEACHER.getCode(),
                     oldGroup.getImGroupId(), true);
+            imGroupService.lambdaUpdate()
+                    .set(ImGroup::getCreateBy, tenantGroup.getAdminId())
+                    .eq(ImGroup::getId, imGroupId);
         } catch (Exception e) {
             log.error("更换群主失败", e);
             throw new BizException("更换群主失败");

+ 14 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/ImGroupController.java

@@ -7,10 +7,12 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupResultDto;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.enums.MK;
+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.SysUserService;
@@ -55,6 +57,9 @@ public class ImGroupController extends BaseController {
     @Autowired
     private ImUserFriendService imUserFriendService;
 
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
+
     @ApiOperation("获取群详情")
     @PostMapping(value = "/getDetail/{groupId}")
     public HttpResponseResult<ImGroup> getDetail(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") String groupId) throws Exception {
@@ -70,6 +75,15 @@ public class ImGroupController extends BaseController {
         if (group == null) {
             return failed(HttpStatus.NO_CONTENT, "群组不存在");
         }
+        ImGroupMember admin = imGroupMemberService.lambdaQuery()
+                .eq(ImGroupMember::getGroupId, group.getId())
+                .eq(ImGroupMember::getUserId, sysUserService.getUser().getId())
+                .eq(ImGroupMember::getIsAdmin, true)
+                .last("limit 1").one();
+        if (admin == null) {
+            // 该用户不在该群,无权限查看,处理用户退出群后,查看历史消息校验
+            return failed(HttpStatus.NO_CONTENT, "群组不存在");
+        }
         return succeed(group);
     }
 

+ 15 - 2
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupController.java

@@ -6,10 +6,12 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupResultDto;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.enums.MK;
+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.SysUserService;
@@ -53,6 +55,9 @@ public class ImGroupController extends BaseController {
     @Autowired
     private ImUserFriendService imUserFriendService;
 
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
+
     @ApiOperation("创建群聊")
     @PostMapping(value = "/create")
     public HttpResponseResult create(@Valid @RequestBody ImGroupWrapper.ImGroup imGroup, BindingResult bindingResult) throws Exception {
@@ -89,9 +94,17 @@ public class ImGroupController extends BaseController {
     @ApiOperation("获取群详情")
     @PostMapping(value = "/getDetail/{groupId}")
     public HttpResponseResult<ImGroup> getDetail(@ApiParam(value = "群编号", required = true) @PathVariable("groupId") String groupId) throws Exception {
-        SysUser user = sysUserService.getUser();
         ImGroup group = imGroupService.getById(groupId);
-        if (group == null || group.getCreateBy().equals(user.getId())) {
+        if (group == null) {
+            return failed(HttpStatus.NO_CONTENT, "群组不存在");
+        }
+        ImGroupMember admin = imGroupMemberService.lambdaQuery()
+                .eq(ImGroupMember::getGroupId, group.getId())
+                .eq(ImGroupMember::getUserId, sysUserService.getUser().getId())
+                .eq(ImGroupMember::getIsAdmin, true)
+                .last("limit 1").one();
+        if (admin == null) {
+            // 该用户不在该群,无权限查看,处理用户退出群后,查看历史消息校验
             return failed(HttpStatus.NO_CONTENT, "群组不存在");
         }
         return succeed(group);