123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using GxPress.Auth;
- using GxPress.Entity;
- using GxPress.Repository.Interface;
- using GxPress.Request.App.IM;
- using GxPress.Request.GroupChat;
- using GxPress.Result.App.GroupChat;
- using GxPress.Service.Interface;
- using GxPress.Service.Interface.AdminVerify;
- using GxPress.Service.Interface.IM;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- namespace GxPress.Api.AppControllers
- {
- /// <summary>
- /// 群
- /// </summary>
- [Route("api/app/group-chat")]
- [ApiController]
- [Authorize]
- public class GroupChatController : ControllerBase
- {
- private readonly IGroupChatRepository _groupChatRepository;
- private readonly IGroupChatUserRepository _groupChatUserRepository;
- private readonly IIMService _imService;
- private readonly ILoginContext _loginContext;
- private readonly IAdminVerifyService _adminVerifyService;
- private readonly IGroupChatUserService _groupChatUserService;
- public GroupChatController(IGroupChatRepository groupChatRepository, ILoginContext loginContext,
- IIMService imService, IAdminVerifyService adminVerifyService,
- IGroupChatUserRepository groupChatUserRepository, IGroupChatUserService groupChatUserService)
- {
- _groupChatRepository = groupChatRepository;
- _imService = imService;
- _loginContext = loginContext;
- _adminVerifyService = adminVerifyService;
- _groupChatUserRepository = groupChatUserRepository;
- _groupChatUserService = groupChatUserService;
- }
- ///// <summary>
- ///// 添加
- ///// </summary>
- ///// <param name="request"></param>
- ///// <returns></returns>
- //[HttpPost("add")]
- //public async Task<bool> Insert(GroupChatInRequest request)
- //{
- // request.UserId = _loginContext.AccountId;
- // return await _groupChatRepository.InsertAsync(request);
- //}
- /// <summary>
- /// 修改
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("update")]
- public async Task<bool> Update(GroupChatUpRequest request)
- {
- return await _groupChatRepository.UpdateAsync(request);
- }
- /// <summary>
- /// 群组解散群
- /// </summary>
- /// <param name="groupChatImId"></param>
- /// <returns></returns>
- [HttpDelete("{groupChatImId}")]
- public async Task<bool> DeleteGroupChat(string groupChatImId)
- {
- return await _imService.DeleteGroupChatAsync(groupChatImId, _loginContext.AccountId);
- }
- /// <summary>
- /// 根据UserId查询群
- /// </summary>
- /// <returns></returns>
- [HttpPost("group-chat-search")]
- public async Task<IEnumerable<GroupChat>> GetGroupChatByUserId()
- {
- var request = new GroupChatSearchRequest { UserId = _loginContext.AccountId };
- return await _groupChatRepository.GetGroupChatByUserIdAsync(request);
- }
- /// <summary>
- /// 是否管理员同意
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("up-is-admin")]
- public async Task<bool> UpIsAdmin(GroupChatUpIsAdminRequest request)
- {
- return await _groupChatRepository.UpIsAdminAsync(request);
- }
- /// <summary>
- /// 创建群
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("add")]
- public async Task<GroupChatInfoResult> CreateGroupChat(GroupChatInRequest request)
- {
- request.UserId = _loginContext.AccountId;
- //添加群成员
- var insertGroupChatUsersRequest = new InsertGroupChatUsersRequest();
- insertGroupChatUsersRequest.UserId = request.UserId;
- insertGroupChatUsersRequest.UserIds = request.UserIds;
- insertGroupChatUsersRequest.SourceType = 2;
- //创建群
- var result = await _imService.CreateGroupChatAsync(request);
- if (result.Success)
- {
- insertGroupChatUsersRequest.GroupChatImId = result.GroupChatImId;
- insertGroupChatUsersRequest.IsFound = true;
- await _groupChatUserService.InsertAsync(insertGroupChatUsersRequest);
- //获取群信息
- return await _groupChatRepository.GetGroupChatInfoByImIdAsync(result.GroupChatImId);
- }
- return new GroupChatInfoResult();
- }
- /// <summary>
- /// 添加群用户
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("add-users")]
- public async Task<bool> InsertGroupChatUsers(InsertGroupChatUsersRequest request)
- {
- request.UserId = _loginContext.AccountId;
- return await _groupChatUserService.InsertAsync(request);
- }
- /// <summary>
- /// 群删除成员
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("remove-users")]
- public async Task<bool> RemoveGroupChatUsers(InsertGroupChatUsersRequest request)
- {
- request.UserId = _loginContext.AccountId;
- return await _imService.RemoveGroupChatUsersAsync(request);
- }
- /// <summary>
- /// 禁言
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("in-mute")]
- public async Task<bool> InMute(SetGroupChatMuteRequest request)
- {
- return await _imService.InMute(request.GroupChatImId);
- }
- /// <summary>
- /// 解除禁言
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("remove-mute")]
- public async Task<bool> RemoveMute(SetGroupChatMuteRequest request)
- {
- return await _imService.RemoveMute(request.GroupChatImId);
- }
- /// <summary>
- /// 根据groupChatGuid获取群信息
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost("guid")]
- public async Task<GroupChat> GetGroupChatByGuid(GroupChatByGuidRequest request)
- {
- return await _groupChatRepository.GetGroupChatByGuidAsync(request.GroupChatGuid);
- }
- /// <summary>
- /// set群是否开启
- /// </summary>
- /// <param name="groupChatImId"></param>
- /// <returns></returns>
- [HttpPut("{groupChatImId}")]
- public async Task<bool> SetIsOpenQrCoder(string groupChatImId)
- {
- return await _groupChatRepository.SetIsOpenQrCoderAsync(groupChatImId, _loginContext.AccountId);
- }
- }
- }
|