李昊 hace 4 años
padre
commit
f6b9430f6b

+ 9 - 0
GxPress/Api/GxPress.Api/AppControllers/GroupChatController.cs

@@ -186,5 +186,14 @@ namespace GxPress.Api.AppControllers
         {
             return await _groupChatRepository.SetIsOpenQrCoderAsync(groupChatImId, _loginContext.AccountId);
         }
+         /// <summary>
+        /// 获取用户加入的群
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<IEnumerable<GroupChat>> GetGroupChatsAsync()
+        {
+            return await _groupChatRepository.GetGroupChatsAsync(_loginContext.AccountId);
+        }
     }
 }

+ 13 - 0
GxPress/Api/GxPress.Api/AppControllers/OftenContactController.cs

@@ -7,6 +7,8 @@ using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Logging;
 using GxPress.Service.Interface.OftenContact;
+using System.Collections.Generic;
+
 namespace GxPress.Api.AppControllers
 {
     /// <summary>
@@ -94,5 +96,16 @@ namespace GxPress.Api.AppControllers
         {
             return await _repository.DeleteAsync(oftenContactIds.OftenContactIds);
         }
+        /// <summary>
+        /// 根据文件ID获取用户和下面的数据
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("all-list")]
+        public async Task<IEnumerable<OftenContactInfo>> GetOftenContactAllAsync(OftenContactSearchRequest request)
+        {
+            request.UserId = _loginContext.AccountId;
+            return await _oftenContactService.GetOftenContactsAll(request);
+        }
     }
 }

+ 5 - 0
GxPress/Model/GxPress.Entity/GroupChat.cs

@@ -61,5 +61,10 @@ namespace GxPress.Entity
         /// </summary>
         [DataColumn]
         public bool IsOpenQrCoder { get; set; }
+         /// <summary>
+        /// 人数
+        /// </summary>
+        /// <value></value>
+        public int UserCount { get; set; }
     }
 }

+ 31 - 0
GxPress/Model/GxPress.Result/Chat/LatelyChat.cs

@@ -0,0 +1,31 @@
+namespace GxPress.Result.Chat
+{
+    public class LatelyChat
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <value></value>
+        public int Id { get; set; }
+        /// <summary>
+        /// 环信ID
+        /// </summary>
+        /// <value></value>
+        public string ImId { get; set; }
+        /// <summary>
+        /// 姓名 或者群
+        /// </summary>
+        /// <value></value>
+        public string Name { get; set; }
+        /// <summary>
+        /// 头像
+        /// </summary>
+        /// <value></value>
+        public string AvatarUrl { get; set; }
+        /// <summary>
+        /// 0 用户 1群聊
+        /// </summary>
+        /// <value></value>
+        public int TypeValue { get; set; }
+    }
+}

+ 31 - 1
GxPress/Repository/GxPress.Repository.Implement/GroupChatRepository.cs

@@ -173,7 +173,7 @@ namespace GxPress.Repository.Implement
                     if (groupChat == null)
                         return false;
                     //添加用户
-                    
+
                     foreach (var user in request.Users)
                     {
                         if (user.Id == groupChat.UserId)
@@ -432,5 +432,35 @@ namespace GxPress.Repository.Implement
             return await _repository.UpdateAsync(Q.Set(nameof(groupChat.IsOpenQrCoder), !groupChat.IsOpenQrCoder)
                        .Where(nameof(groupChat.Id), groupChat.Id)) > 0;
         }
+        /// <summary>
+        /// 获取用户加入的群
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        public async Task<IEnumerable<GroupChat>> GetGroupChatsAsync(int userId)
+        {
+            string sql = $@"SELECT 
+                                    *,(select count(1) from tede_group_chat_user where GroupChatId=a.Id) as UserCount
+                                FROM
+                                    tede_group_chat a
+                                WHERE
+                                    a.id IN (SELECT 
+                                            GroupChatId
+                                        FROM
+                                            tede_group_chat_user
+                                        WHERE
+                                            UserId = {userId})
+                                ORDER BY a.CreatedDate DESC";
+            var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
+            var database = new Database(databaseType, _connectionString);
+            var connection = database.GetConnection();
+            var result = await connection.QueryAsync<GroupChat>(sql);
+            foreach (var item in result)
+            {
+                item.QRCoder = StringUtils.AddDomain(item.QRCoder);
+                item.AvatarUrl = StringUtils.AddDomainMin(item.AvatarUrl);
+            }
+            return result;
+        }
     }
 }

+ 18 - 0
GxPress/Repository/GxPress.Repository.Implement/OftenContactRepository.cs

@@ -337,5 +337,23 @@ namespace GxPress.Repository.Implement
                         }, splitOn: "Id,ContactUserId,AvatarUrl");
             return result.ToList();
         }
+        public async Task<IEnumerable<OftenContactInfo>> GetContactInfoAllAsync(OftenContactSearchRequest request)
+        {
+            var sql =
+               $"select a.*,b.* from tede_middle a inner join tede_often_contact b on a.MiddleId=b.Id where a.FolderType=10 and a.UserId={request.UserId}  and a.IsDelete=0 order by a. IsTop desc,a.LastModifiedDate desc";
+            var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
+            var database = new Database(databaseType, _connectionString);
+            var connection = database.GetConnection();
+            var result =
+               await connection
+                    .QueryAsync<OftenContactInfo, Entity.OftenContact, OftenContactInfo>(sql,
+                        (oftenContactInfo, oftenContact) =>
+                        {
+                            oftenContactInfo.ChatType = oftenContact == null ? 0 : oftenContact.ChatType;
+                            oftenContactInfo.ContactUserId = oftenContact == null ? "" : oftenContact.ContactUserId;
+                            return oftenContactInfo;
+                        }, splitOn: "Id,Id");
+            return result;
+        }
     }
 }

+ 21 - 1
GxPress/Repository/GxPress.Repository.Implement/UserRepository.cs

@@ -575,7 +575,7 @@ namespace GxPress.Repository.Implement
         /// <returns></returns>
         public async Task<bool> UpdateUserPhoneAsync(UserUpdatePhoneRequest request)
         {
-            var key = $"login:{request.Phone}";   
+            var key = $"login:{request.Phone}";
             var code = _cache.GetString(key).Replace("\"", "");
             if (string.IsNullOrEmpty(code)) throw new BusinessException("验证码已过期");
             if (!request.Code.Equals(code, StringComparison.OrdinalIgnoreCase)) throw new BusinessException("验证码错误");
@@ -919,5 +919,25 @@ namespace GxPress.Repository.Implement
 
         //    return result.ToList()[0];
         //}
+
+        public async Task<IEnumerable<User>> GetChatUserAsync(int userId)
+        {
+            string sql = $@"SELECT 
+                    c.*
+                FROM
+                    tede_often_contact a
+                        INNER JOIN
+                    tede_middle b ON a.Id = b.MiddleId
+                    INNER JOIN
+                    tede_user c ON c.Id = a.ContactUserId
+                WHERE
+                    FolderType = 10 and b.IsDelete=0 and a.UserId={userId} and ChatType=1";
+
+            var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
+            var database = new Database(databaseType, _connectionString);
+            var connection = database.GetConnection();
+            var items = await connection.QueryAsync<User>(sql);
+            return items;
+        }
     }
 }

+ 18 - 12
GxPress/Repository/GxPress.Repository.Interface/IGroupChatRepository.cs

@@ -13,20 +13,20 @@ namespace GxPress.Repository.Interface
     /// <summary>
     /// 
     /// </summary>
-   public interface IGroupChatRepository:IRepository
-   {
-       /// <summary>
-       /// 添加
-       /// </summary>
-       /// <param name="request"></param>
-       /// <returns></returns>
-       Task<bool> InsertAsync(GroupChatInRequest request);
+    public interface IGroupChatRepository : IRepository
+    {
+        /// <summary>
+        /// 添加
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        Task<bool> InsertAsync(GroupChatInRequest request);
         /// <summary>
         /// 修改
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
-       Task<bool> UpdateAsync(GroupChatUpRequest request);
+        Task<bool> UpdateAsync(GroupChatUpRequest request);
         /// <summary>
         /// 删除
         /// </summary>
@@ -74,11 +74,17 @@ namespace GxPress.Repository.Interface
         Task<bool> SetIsOpenQrCoderAsync(string groupChatImId, int userId);
 
         Task<GroupChat> GetAsync(SqlKata.Query query);
-         /// <summary>
+        /// <summary>
         /// 根据ImId获取群信息
         /// </summary>
         /// <param name="imId"></param>
         /// <returns></returns>
-         Task<GroupChatInfoResult> GetGroupChatInfoByImIdAsync(string imId);
-   }
+        Task<GroupChatInfoResult> GetGroupChatInfoByImIdAsync(string imId);
+        /// <summary>
+        /// 获取用户加入的群
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task<IEnumerable<GroupChat>> GetGroupChatsAsync(int userId);
+    }
 }

+ 1 - 0
GxPress/Repository/GxPress.Repository.Interface/IOftenContactRepository.cs

@@ -92,5 +92,6 @@ namespace GxPress.Repository.Interface
         /// </summary>
         /// <returns></returns>
         Task<List<JobChatResult>> ElasticSearchChat();
+        Task<IEnumerable<OftenContactInfo>> GetContactInfoAllAsync(OftenContactSearchRequest request);
     }
 }

+ 41 - 0
GxPress/Service/GxPress.Service.Implement/OftenContact/OftenContactService.Get.cs

@@ -55,7 +55,48 @@ namespace GxPress.Service.Implement.OftenContact
             return result;
         }
 
+        /// <summary>
+        /// 获取用户
+        /// </summary>
+        /// <param name="individualGroupId"></param>
+        /// <returns></returns>
+        public async Task<IEnumerable<OftenContactInfo>> GetOftenContactsAll(OftenContactSearchRequest request)
+        {
 
+            //获取文件夹数据
+            var result = new List<OftenContactInfo>();
+            var data = await _repository.GetContactInfoAllAsync(request);
+            foreach (var oftenContact in data)
+            {
+                if (oftenContact.ChatType == 1)
+                {
+                    var user = await _userRepository.GetAsync(int.Parse(oftenContact.ContactUserId));
+                    if (user == null)
+                        continue;
+                    oftenContact.Name = user.Name;
+                    oftenContact.AvatarUrl = StringUtils.AddDomainMin(user.AvatarUrl);
+                    oftenContact.ImId = user.ImId;
+                    oftenContact.ToUserId = user.Id;
+                }
+
+                if (oftenContact.ChatType == 2)
+                {
+                    var groupChat = await _groupChatRepository.GetAsync(Q.Where(nameof(Entity.GroupChat.GroupChatImId),
+                        oftenContact.ContactUserId));
+                    if (groupChat == null)
+                        continue;
+                    oftenContact.Name = groupChat.Name;
+                    oftenContact.AvatarUrl = StringUtils.AddDomainMin(groupChat.AvatarUrl);
+                    oftenContact.ImId = groupChat.GroupChatImId;
+                    var groupChatUserIsDisturbRequest = new GroupChatUserIsDisturbRequest();
+                    groupChatUserIsDisturbRequest.GroupChatId = groupChat.Id;
+                    groupChatUserIsDisturbRequest.UserId = oftenContact.UserId;
+                    oftenContact.IsDisturb = await groupChatUserRepository.IsDisturbAsync(groupChatUserIsDisturbRequest);
+                }
+            }
+            result = data.ToList();
+            return result;
+        }
 
     }
 }

+ 7 - 1
GxPress/Service/GxPress.Service.Interface/OftenContact/IOftenContactService.cs

@@ -5,7 +5,7 @@ using GxPress.Result.App.OftenContact;
 
 namespace GxPress.Service.Interface.OftenContact
 {
-    public interface IOftenContactService: IService
+    public interface IOftenContactService : IService
     {
         /// <summary>
         /// 删除
@@ -32,5 +32,11 @@ namespace GxPress.Service.Interface.OftenContact
         /// <param name="blackUserId"></param>
         /// <returns></returns>
         Task<bool> SetBlackUserAsync(int userId, int blackUserId);
+        /// <summary>
+        /// 获取用户
+        /// </summary>
+        /// <param name="individualGroupId"></param>
+        /// <returns></returns>
+        Task<IEnumerable<OftenContactInfo>> GetOftenContactsAll(OftenContactSearchRequest request);
     }
 }