using System.Collections.Generic; using System.Linq; using System.Net; using System.Threading.Tasks; using GxPress.Common.Exceptions; using GxPress.Common.Http; using GxPress.Entity; using GxPress.Request.App.IM; using GxPress.Common.Extensions; using GxPress.Common.Tools; namespace GxPress.Service.Implement.IM { /// /// 移除群成员 /// public partial class IMService { /// /// 删除群成员 /// /// /// public async Task RemoveGroupChatUsersAsync(InsertGroupChatUsersRequest request) { var token = await _cache.GetAsync("ImToken"); var imServiceUrl = ConfigHelper.GetValue("ServiceAddress:ImUrl"); string userValues = string.Empty; //获取成员 var users = await _userRepository.UserListInsAsync(request.UserIds); var enumerable = users as User[] ?? users.ToArray(); foreach (var value in enumerable.Select(n => n.ImId)) { userValues += value + ","; } if (userValues.Length > 0) userValues = userValues.Remove(userValues.Length - 1, 1); //创建群 var url = $"{imServiceUrl}/chatgroups/{request.GroupChatImId}/users/{userValues}"; var headers = new Dictionary { { "Authorization", "Bearer " + token } }; var response = await HttpClientHelper.DeleteAsync(url, headers); if (response.IsSuccessStatusCode) { //删除成员 return await _groupChatRepository.DeleteUsersIntoGroupChatAsync(request); } if (response.StatusCode == HttpStatusCode.Forbidden) throw new BusinessException("该成员不在此群组"); if (response.StatusCode == HttpStatusCode.NotFound) throw new BusinessException("此群组ID不存在"); if (response.StatusCode == HttpStatusCode.Unauthorized) throw new BusinessException("未授权[无token、token错误、token过期]"); if (response.StatusCode == HttpStatusCode.BadRequest) throw new BusinessException("owner用户不存在"); if (response.StatusCode == HttpStatusCode.TooManyRequests) throw new BusinessException("接口被限流"); return false; } /// /// 根据IMID删除用户 /// /// /// public async Task DeleteUserAsync(string imId) { var imServiceUrl = ConfigHelper.GetValue("ServiceAddress:ImUrl"); var token = await _cache.GetAsync("ImToken"); var url = $"{imServiceUrl}/users/{imId}"; var headers = new Dictionary { { "Authorization", "Bearer " + token } }; var response = await HttpClientHelper.DeleteAsync(url, headers); if (response.IsSuccessStatusCode) { //删除成员 return true; } if (response.StatusCode == HttpStatusCode.NotFound) return true; if (response.StatusCode == HttpStatusCode.Unauthorized) throw new BusinessException("未授权[无token、token错误、token过期]"); if (response.StatusCode == HttpStatusCode.TooManyRequests) throw new BusinessException("接口被限流"); return true; } } }