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 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 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 notInGroupUsers(String groupId) { //获取平台所有用户 List userList = sysUserMapper.selectUserList(new SysUser()); //获取群组内用户 ArdCallGroupUser ardCallGroupUser = new ArdCallGroupUser(); ardCallGroupUser.setGroupId(groupId); List ardCallGroupUsers = ardCallGroupUserMapper.selectArdCallGroupUserList(ardCallGroupUser); // 提取groupList中的userId到一个Set中 Set groupUserIds = ardCallGroupUsers.stream() .map(ArdCallGroupUser::getUserId) .collect(Collectors.toSet()); // 过滤userList,只保留那些userId不在groupUserIds中的User对象 List filteredUserList = userList.stream() .filter(user -> !groupUserIds.contains(user.getUserId())) .collect(Collectors.toList()); return filteredUserList; } }