using System.Collections.Generic;
using System.Threading.Tasks;
using Dapper;
using Datory;
using GxPress.Common.Tools;
using GxPress.EnumConst;
using GxPress.Result.Chat;
using GxPress.Service.Interface;
using GxPress.Service.Interface.Chat;
namespace GxPress.Service.Implement.Chat
{
public class ChatSearchService : IChatSearchService
{
private readonly IUserService userService;
public ChatSearchService(IUserService userService)
{
this.userService = userService;
}
///
/// 搜索单聊
///
///
///
///
public async Task> GetChatSearchAsync(string keyWord, int userId)
{
if (string.IsNullOrEmpty(keyWord))
return new List();
var chatConstValue = AllTypeConst.Wechat.GetHashCode();
string sqlStr = string.Empty;
if (!string.IsNullOrEmpty(keyWord))
sqlStr += $" and c.Name like '%{keyWord}%'";
var sql = $@"SELECT
a.Id, c.Name,c.Phone as ImId,c.AvatarUrl,b.ContactUserId as ToUserId,b.LastModifiedDate,a.IsTop
FROM
tede_middle a
INNER JOIN
tede_often_contact b ON a.middleId = b.Id
INNER JOIN
tede_user c ON c.Id = b.ContactUserId
WHERE
a.FolderType = {chatConstValue} AND a.UserId = {userId}
AND a.IsDelete = 0
AND b.ChatType = 1 {sqlStr}";
var database = new Database(DatabaseType.MySql, ConfigHelper.GetValue("Database:ConnectionString"));
var connection = database.GetConnection();
var result = await connection.QueryAsync(sql);
foreach (var item in result)
{
item.TypeValue = 1;
item.AvatarUrl = StringUtils.AddDomainMin(item.AvatarUrl);
}
return result;
}
///
/// 搜索信源文件夹
///
///
///
///
public async Task> GetChatFolderNameSearchAsync(string keyWord, int userId)
{
if (string.IsNullOrEmpty(keyWord))
return new List();
var chatConstValue = AllTypeConst.Wechat.GetHashCode();
string sqlStr = string.Empty;
if (!string.IsNullOrEmpty(keyWord))
sqlStr += $" and a.FolderName like '%{keyWord}%'";
var sql = $@"SELECT
a.Id,a.FolderName as Name,a.LastModifiedDate
FROM
tede_middle a
WHERE
a.FolderType = {chatConstValue} AND a.UserId = {userId}
AND a.IsDelete = 0
AND a.AttributeValue = 2 {sqlStr}";
var database = new Database(DatabaseType.MySql, ConfigHelper.GetValue("Database:ConnectionString"));
var connection = database.GetConnection();
var result = await connection.QueryAsync(sql);
foreach (var item in result)
{
item.TypeValue = 3;
item.AvatarUrl = StringUtils.AddDomainMin(item.AvatarUrl);
}
return result;
}
///
/// 搜索信源群聊
///
///
///
///
public async Task> GetGroupChatNameSearchAsync(string keyWord, int userId)
{
if (string.IsNullOrEmpty(keyWord))
return new List();
var chatConstValue = AllTypeConst.Wechat.GetHashCode();
string sqlStr = string.Empty;
if (!string.IsNullOrEmpty(keyWord))
sqlStr += $" AND d.Name LIKE '%{keyWord}%'";
var sql = $@"SELECT
a.Id,
d.Name,
d.AvatarUrl,
d.GroupChatImId AS ImId,
d.CreatedDate AS LastModifiedDate,
a.IsTop
FROM
tede_middle a
INNER JOIN
tede_often_contact b ON a.middleId = b.Id
INNER JOIN
tede_group_chat d ON d.GroupChatImId = b.ContactUserId
WHERE
a.FolderType = {chatConstValue} AND a.UserId ={userId}
AND a.IsDelete = 0
AND b.ChatType = 2
{sqlStr}
ORDER BY d.CreatedDate DESC;";
var database = new Database(DatabaseType.MySql, ConfigHelper.GetValue("Database:ConnectionString"));
var connection = database.GetConnection();
var result = await connection.QueryAsync(sql);
foreach (var item in result)
{
item.TypeValue = 2;
item.AvatarUrl = StringUtils.AddDomainMin(item.AvatarUrl);
}
return result;
}
///
/// 查询好友
///
///
///
///
public async Task> GetFriendUserInfoResult(string keyWord, int userId)
{
var users = await userService.GetFriendUserInfoResult(userId, keyWord);
var result = new List();
foreach (var item in users)
{
result.Add(new ChatSearchResult
{
Id = item.Id,
Name = item.Name,
AvatarUrl = item.AvatarUrl,
DepartmentName = item.DepartmentName,
ImId = item.Phone
});
}
return result;
}
}
}