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 提交数据 } }