package com.ruoyi.call.service.impl;
|
|
import java.util.Arrays;
|
import java.util.List;
|
|
import com.ruoyi.call.domain.ArdCallGroup;
|
import com.ruoyi.call.domain.ArdCallSessionUser;
|
import com.ruoyi.call.mapper.ArdCallSessionUserMapper;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.utils.DateUtils;
|
|
import com.ruoyi.common.utils.uuid.IdUtils;
|
import com.ruoyi.system.mapper.SysUserMapper;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.Set;
|
import java.util.stream.Collectors;
|
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.call.mapper.ArdCallGroupUserMapper;
|
import com.ruoyi.call.domain.ArdCallGroupUser;
|
import com.ruoyi.call.service.IArdCallGroupUserService;
|
|
import javax.annotation.Resource;
|
|
/**
|
* 群组用户中间Service业务层处理
|
*
|
* @author ard
|
* @date 2024-07-03
|
*/
|
@Service
|
public class ArdCallGroupUserServiceImpl implements IArdCallGroupUserService {
|
@Resource
|
private ArdCallGroupUserMapper ardCallGroupUserMapper;
|
@Resource
|
private SysUserMapper sysUserMapper;
|
@Resource
|
private ArdCallSessionUserMapper ardCallSessionUserMapper;
|
|
/**
|
* 查询群组用户中间
|
*
|
* @param id 群组用户中间主键
|
* @return 群组用户中间
|
*/
|
@Override
|
public ArdCallGroupUser selectArdCallGroupUserById(String id) {
|
return ardCallGroupUserMapper.selectArdCallGroupUserById(id);
|
}
|
|
/**
|
* 查询群组用户中间列表
|
*
|
* @param ardCallGroupUser 群组用户中间
|
* @return 群组用户中间
|
*/
|
@Override
|
public List<ArdCallGroupUser> selectArdCallGroupUserList(ArdCallGroupUser ardCallGroupUser) {
|
return ardCallGroupUserMapper.selectArdCallGroupUserList(ardCallGroupUser);
|
}
|
|
/**
|
* 新增群组用户中间
|
*
|
* @param ardCallGroupUser 群组用户中间
|
* @return 结果
|
*/
|
@Override
|
public int insertArdCallGroupUser(ArdCallGroupUser ardCallGroupUser) {
|
ardCallGroupUser.setId(IdUtils.simpleUUID());
|
ardCallGroupUser.setUserId(SecurityUtils.getUserId());
|
ardCallGroupUser.setCreateBy(SecurityUtils.getUsername());
|
ardCallGroupUser.setCreateTime(DateUtils.getNowDate());
|
return ardCallGroupUserMapper.insertArdCallGroupUser(ardCallGroupUser);
|
}
|
|
/**
|
* 修改群组用户中间
|
*
|
* @param ardCallGroupUser 群组用户中间
|
* @return 结果
|
*/
|
@Override
|
public int updateArdCallGroupUser(ArdCallGroupUser ardCallGroupUser) {
|
ardCallGroupUser.setUpdateBy(SecurityUtils.getUsername());
|
ardCallGroupUser.setUpdateTime(DateUtils.getNowDate());
|
return ardCallGroupUserMapper.updateArdCallGroupUser(ardCallGroupUser);
|
}
|
|
/**
|
* 批量删除群组用户中间
|
*
|
* @param ids 需要删除的群组用户中间主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteArdCallGroupUserByIds(String[] ids) {
|
return ardCallGroupUserMapper.deleteArdCallGroupUserByIds(ids);
|
}
|
|
/**
|
* 删除群组用户中间信息
|
*
|
* @param id 群组用户中间主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteArdCallGroupUserById(String id) {
|
return ardCallGroupUserMapper.deleteArdCallGroupUserById(id);
|
}
|
|
@Override
|
public List<ArdCallGroup> getGroupListByUserId(String userId) {
|
return ardCallGroupUserMapper.getGroupListByUserId(userId);
|
}
|
|
/**
|
* 邀请群组用户
|
*
|
* @param id 群组主键
|
* @param userIds 群组用户数组集合
|
* @return 结果
|
*/
|
@Override
|
public int addGroupUser(String id, String[] userIds) {
|
ArdCallGroupUser ardCallGroupUser = new ArdCallGroupUser();
|
ardCallGroupUser.setGroupId(id);
|
Arrays.stream(userIds).forEach(userId -> {
|
ardCallGroupUser.setId(IdUtils.simpleUUID());
|
ardCallGroupUser.setCreateTime(DateUtils.getNowDate());
|
ardCallGroupUser.setUserId(userId);
|
ardCallGroupUserMapper.insertArdCallGroupUser(ardCallGroupUser);
|
//邀请成员成功后创建session
|
//通过群id获取群session
|
String sessionId = ardCallSessionUserMapper.getGroupSessionId("1", id);
|
if (StringUtils.isNotEmpty(sessionId)) {
|
ArdCallSessionUser ardCallSessionUser = new ArdCallSessionUser();
|
ardCallSessionUser.setId(IdUtils.simpleUUID());
|
ardCallSessionUser.setType("1");
|
ardCallSessionUser.setSessionId(sessionId);
|
ardCallSessionUser.setUserId(userId);
|
ardCallSessionUser.setTargetId(id);
|
ardCallSessionUser.setCreateTime(DateUtils.getNowDate());
|
ardCallSessionUserMapper.insertArdCallSessionUser(ardCallSessionUser);
|
}
|
});
|
return userIds.length;
|
}
|
|
/**
|
* 移除群组用户
|
*
|
* @param id 群组主键
|
* @param userIds 群组用户数组集合
|
* @return 结果
|
*/
|
@Override
|
public int removeGroupUser(String id, String[] userIds) {
|
return ardCallGroupUserMapper.removeGroupUser(id, userIds);
|
}
|
|
@Override
|
public List<SysUser> notInGroupUsers(String groupId) {
|
//获取平台所有用户
|
List<SysUser> userList = sysUserMapper.selectUserList(new SysUser());
|
//获取群组内用户
|
ArdCallGroupUser ardCallGroupUser = new ArdCallGroupUser();
|
ardCallGroupUser.setGroupId(groupId);
|
List<ArdCallGroupUser> ardCallGroupUsers = ardCallGroupUserMapper.selectArdCallGroupUserList(ardCallGroupUser);
|
// 提取groupList中的userId到一个Set中
|
Set<String> groupUserIds = ardCallGroupUsers.stream()
|
.map(ArdCallGroupUser::getUserId)
|
.collect(Collectors.toSet());
|
// 过滤userList,只保留那些userId不在groupUserIds中的User对象
|
List<SysUser> filteredUserList = userList.stream()
|
.filter(user -> !groupUserIds.contains(user.getUserId()))
|
.collect(Collectors.toList());
|
return filteredUserList;
|
}
|
}
|