using learun.iapplication;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace learun.application
{
///
/// 版 本 EasyCode EC管理后台
/// Copyright (c) 2019-present EC管理有限公司
/// 创建人:tobin
/// 日 期:2019.11.05
/// 描 述:最近联系人列表
///
public class IMContactsService : ServiceBase
{
#region 构造函数和属性
private readonly string fieldSql;
///
///
///
public IMContactsService()
{
fieldSql = @"
t.F_Id,
t.F_MyUserId,
t.F_OtherUserId,
t.F_Content,
t.F_Time,
t.F_IsRead
";
}
#endregion 构造函数和属性
#region 获取数据
///
/// 获取列表数据
///
/// 用户Id
///
public Task> GetList(string userId)
{
var strSql = new StringBuilder();
strSql.Append("SELECT ");
strSql.Append(fieldSql);
strSql.Append(" FROM LR_IM_Contacts t where t.F_MyUserId = @userId Order By t.F_Time Desc ");
return this.BaseRepository().FindList(strSql.ToString(), new { userId });
}
///
/// 获取列表数据
///
/// 用户Id
/// 时间
///
public Task> GetList(string userId, DateTime time)
{
var strSql = new StringBuilder();
strSql.Append("SELECT ");
strSql.Append(fieldSql);
strSql.Append(" FROM LR_IM_Contacts t where t.F_MyUserId = @userId AND t.F_Time >= @time Order By t.F_Time Asc ");
return this.BaseRepository().FindList(strSql.ToString(), new { userId, time });
}
///
/// 获取实体
///
/// 发送人
/// 接收人
///
public Task GetEntity(string userId, string otherUserId)
{
var strSql = new StringBuilder();
strSql.Append("SELECT ");
strSql.Append(fieldSql);
strSql.Append(" FROM LR_IM_Contacts t where t.F_MyUserId = @userId AND t.F_OtherUserId = @otherUserId ");
return this.BaseRepository().FindEntity(strSql.ToString(), new { userId, otherUserId });
}
#endregion 获取数据
#region 提交数据
///
/// 保存实体数据(新增、修改)
///
/// 实体
///
public async Task SaveEntity(IMContactsEntity entity)
{
var entityTmp = await GetEntity(entity.F_MyUserId, entity.F_OtherUserId);
entity.F_IsRead = 2;
if (entityTmp == null)
{
entity.F_Id = Guid.NewGuid().ToString();
entity.F_Time = DateTime.Now;
await this.BaseRepository().Insert(entity);
}
else
{
entity.F_Id = entityTmp.F_Id;
entity.F_Time = DateTime.Now;
await this.BaseRepository().Update(entity);
}
}
///
/// 更新记录读取状态
///
/// 自己本身用户ID
/// 对方用户ID
public async Task UpdateState(string myUserId, string otherUserId)
{
var entity = await GetEntity(myUserId, otherUserId);
if (entity != null)
{
entity.F_IsRead = 2;
await this.BaseRepository().Update(entity);
}
}
///
/// 删除最近联系人
///
/// 发起者id
/// 发给人ID
public async Task DeleteEntity(string myUserId, string otherUserId)
{
await this.BaseRepository().DeleteAny(new { F_MyUserId = myUserId, F_OtherUserId = otherUserId });
}
#endregion 提交数据
}
}