群主设置管理员
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package com.tailbet.controller;
|
package com.tailbet.controller;
|
||||||
|
|
||||||
import com.tailbet.model.dto.CreateGroupDTO;
|
import com.tailbet.model.dto.CreateGroupDTO;
|
||||||
|
import com.tailbet.model.dto.GroupMemberOperateDTO;
|
||||||
import com.tailbet.model.dto.PointsDTO;
|
import com.tailbet.model.dto.PointsDTO;
|
||||||
import com.tailbet.model.dto.PullGroupDTO;
|
import com.tailbet.model.dto.PullGroupDTO;
|
||||||
import com.tailbet.model.entity.Group;
|
import com.tailbet.model.entity.Group;
|
||||||
@@ -78,4 +79,32 @@ public class OpsController {
|
|||||||
return R.ok();
|
return R.ok();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 群主设置管理员
|
||||||
|
* <p>
|
||||||
|
* 操作人需为该群群主;同时本地与 OpenIM 角色都会更新(OpenIM roleLevel=60=管理员),
|
||||||
|
* OpenIM 同步失败会抛异常回滚本地事务,保证本地与 IM 角色一致。
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
@PostMapping("/group/set-admin")
|
||||||
|
public R<Void> setAdmin(@Valid @RequestBody GroupMemberOperateDTO dto) {
|
||||||
|
Long operatorId = UserContext.getUserId();
|
||||||
|
groupService.setAdmin(dto.getGroupId(), dto.getUserId(), operatorId);
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消管理员
|
||||||
|
* <p>
|
||||||
|
* 操作人需为该群群主;同时本地与 OpenIM 角色都会更新(OpenIM roleLevel=20=普通成员),
|
||||||
|
* OpenIM 同步失败会抛异常回滚本地事务,保证本地与 IM 角色一致。
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
@PostMapping("/group/remove-admin")
|
||||||
|
public R<Void> removeAdmin(@Valid @RequestBody GroupMemberOperateDTO dto) {
|
||||||
|
Long operatorId = UserContext.getUserId();
|
||||||
|
groupService.removeAdmin(dto.getGroupId(), dto.getUserId(), operatorId);
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -251,6 +251,10 @@ public class GroupServiceImpl implements IGroupService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置管理员
|
* 设置管理员
|
||||||
|
* <p>
|
||||||
|
* 本地更新群成员角色后,调用 OpenIM 接口同步角色(roleLevel=60=管理员)。
|
||||||
|
* OpenIM 调用失败会抛异常回滚本地事务,保证本地与 IM 角色一致。
|
||||||
|
* </p>
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@@ -274,6 +278,10 @@ public class GroupServiceImpl implements IGroupService {
|
|||||||
member.setUpdateTime(LocalDateTime.now());
|
member.setUpdateTime(LocalDateTime.now());
|
||||||
groupMemberMapper.updateById(member);
|
groupMemberMapper.updateById(member);
|
||||||
|
|
||||||
|
// OpenIM 同步:roleLevel=60 表示管理员
|
||||||
|
openIMApiClient.setGroupMemberRole(
|
||||||
|
String.valueOf(groupId), String.valueOf(targetUserId), 60);
|
||||||
|
|
||||||
// 审计日志
|
// 审计日志
|
||||||
auditService.log(groupId, null, operatorId, "SET_ADMIN",
|
auditService.log(groupId, null, operatorId, "SET_ADMIN",
|
||||||
String.format("{\"targetUserId\":%d}", targetUserId));
|
String.format("{\"targetUserId\":%d}", targetUserId));
|
||||||
@@ -281,6 +289,10 @@ public class GroupServiceImpl implements IGroupService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 取消管理员
|
* 取消管理员
|
||||||
|
* <p>
|
||||||
|
* 本地更新群成员角色后,调用 OpenIM 接口同步角色(roleLevel=20=普通成员)。
|
||||||
|
* OpenIM 调用失败会抛异常回滚本地事务,保证本地与 IM 角色一致。
|
||||||
|
* </p>
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@@ -303,6 +315,10 @@ public class GroupServiceImpl implements IGroupService {
|
|||||||
member.setUpdateTime(LocalDateTime.now());
|
member.setUpdateTime(LocalDateTime.now());
|
||||||
groupMemberMapper.updateById(member);
|
groupMemberMapper.updateById(member);
|
||||||
|
|
||||||
|
// OpenIM 同步:roleLevel=20 表示普通成员
|
||||||
|
openIMApiClient.setGroupMemberRole(
|
||||||
|
String.valueOf(groupId), String.valueOf(targetUserId), 20);
|
||||||
|
|
||||||
// 审计日志
|
// 审计日志
|
||||||
auditService.log(groupId, null, operatorId, "REMOVE_ADMIN",
|
auditService.log(groupId, null, operatorId, "REMOVE_ADMIN",
|
||||||
String.format("{\"targetUserId\":%d}", targetUserId));
|
String.format("{\"targetUserId\":%d}", targetUserId));
|
||||||
|
|||||||
Reference in New Issue
Block a user