using Learun.Util; using Learun.Util.SqlSugar; using SqlSugar; using System; using System.Collections.Generic; using System.Text; namespace Learun.Application.OA.Email2 { /// /// 版 本 Learun-ADMS V6.1.6.0 敏捷开发框架 /// Copyright (c) 2013-2017 Hexagon PPM /// 创建人:研发部 /// 日 期:2018.06.04 /// 描 述:邮件内容 /// public class EmailContentService { #region 仓储 Repository _emailContentRepository => new Repository(); Repository _emailAddresseeRepository => new Repository(); #endregion #region 获取数据 /// /// 未读邮件 /// /// 分页参数 /// 用户Id /// 关键字 /// public IEnumerable GetUnreadMail(Pagination pagination, string userId, string keyword) { var strSql = new StringBuilder(); strSql.Append(@"SELECT a.F_AddresseeId AS F_ContentId , c.F_Theme , c.F_ThemeColor , c.F_SenderId , c.F_SenderName , c.F_SenderTime , c.F_SendPriority, a.F_IsHighlight, a.F_CreateDate FROM Email_Addressee a LEFT JOIN Email_Content c ON c.F_ContentId = a.F_ContentId WHERE a.F_RecipientId = @userId AND a.F_IsRead <> 1"); strSql.Append(" AND a.F_DeleteMark = 0"); //var parameter = new List(); //parameter.Add(DbParameters.CreateDbParameter("@userId", userId)); string theme = ""; if (!keyword.IsEmpty()) { strSql.Append(" AND c.F_Theme like @theme"); theme = '%' + keyword + '%'; //parameter.Add(DbParameters.CreateDbParameter("@Theme", '%' + keyword + '%')); } //return this.BaseRepository().FindList(strSql.ToString(),new { userId,theme }, pagination); return SqlSugarHelper.Db.SqlQueryable(strSql.ToString()).AddParameters(new { userId, theme }).ToPageList(pagination.page, pagination.rows); } /// /// 草稿箱 /// /// 分页参数 /// 用户Id /// 关键字 /// public IEnumerable GetDraftMail(Pagination pagination, string userId, string keyword) { var expression = LinqExtensions.True(); expression = expression.And(t => t.F_SendState == 0); expression = expression.And(t => t.F_CreateUserId == userId); if (!keyword.IsEmpty()) { expression = expression.And(t => t.F_Theme.Contains(keyword)); } return _emailContentRepository.GetPageList(expression, new PageModel() { PageIndex = pagination.page, PageSize = pagination.rows }); } /// /// 回收箱 /// /// 分页参数 /// 用户Id /// 关键字 /// public IEnumerable GetRecycleMail(Pagination pagination, string userId, string keyword) { var strSql = new StringBuilder(); strSql.Append(@"SELECT * FROM ( SELECT a.F_AddresseeId AS F_ContentId , c.F_Theme , c.F_ThemeColor , c.F_SenderId , c.F_SenderName , c.F_SenderTime , a.F_CreateDate, a.F_ContentId as F_ParentId FROM lr_oa_emailaddressee a LEFT JOIN lr_oa_emailcontent c ON c.F_ContentId = a.F_ContentId WHERE a.F_RecipientId = @userId AND a.F_DeleteMark = 1 UNION SELECT c.F_ContentId , c.F_Theme , c.F_ThemeColor , c.F_SenderId , c.F_SenderName , c.F_SenderTime , c.F_CreateDate, c.F_ParentId FROM lr_oa_emailcontent c WHERE c.F_CreateUserId = @userId AND c.F_DeleteMark = 1 ) t WHERE 1=1"); //parameter.Add(DbParameters.CreateDbParameter("@userId", userId)); string theme = ""; if (!keyword.IsEmpty()) { strSql.Append(" AND F_Theme like @theme"); theme = '%' + keyword + '%'; } //return this.BaseRepository().FindList(strSql.ToString(), new { userId , theme }, pagination); return SqlSugarHelper.Db.SqlQueryable(strSql.ToString()).AddParameters(new { userId, theme }).ToPageList(pagination.page, pagination.rows); } /// /// 收件箱 /// /// 分页参数 /// 用户Id /// 关键字 /// public IEnumerable GetAddresseeMail(Pagination pagination, string userId, string keyword) { var strSql = new StringBuilder(); strSql.Append(@"SELECT a.F_AddresseeId AS F_ContentId , c.F_Theme , c.F_ThemeColor , c.F_SenderId , c.F_SenderName , c.F_SenderTime , c.F_CreateDate, a.F_ContentId as F_ParentId FROM lr_oa_emailaddressee a LEFT JOIN lr_oa_emailcontent c ON c.F_ContentId = a.F_ContentId WHERE a.F_RecipientId = @userId"); strSql.Append(" AND a.F_DeleteMark = 0 "); string theme = ""; if (!keyword.IsEmpty()) { strSql.Append(" AND c.F_Theme like @theme"); theme = '%' + keyword + '%'; } //return this.BaseRepository().FindList(strSql.ToString(), new { userId, theme }, pagination); return SqlSugarHelper.Db.SqlQueryable(strSql.ToString()).AddParameters(new { userId, theme }).ToPageList(pagination.page, pagination.rows); } /// /// 已发送 /// /// 分页参数 /// 用户Id /// 关键字 /// public IEnumerable GetSentMail(Pagination pagination, string userId, string keyword) { var expression = LinqExtensions.True(); expression = expression.And(t => t.F_SendState == 1); expression = expression.And(t => t.F_CreateUserId == userId); expression = expression.And(t => t.F_DeleteMark == 0); if (!keyword.IsEmpty()) { expression = expression.And(t => t.F_Theme.Contains(keyword)); } return _emailContentRepository.GetPageList(expression, new PageModel() { PageIndex = pagination.page, PageSize = pagination.rows }); } /// /// 邮件实体 /// /// 主键值 /// public EmailContentEntity GetEntity(string keyValue) { return _emailContentRepository.GetById(keyValue); } /// /// 收件邮件实体 /// /// 主键值 /// public EmailAddresseeEntity GetAddresseeEntity(string keyValue) { //return new RepositoryFactory().BaseRepository().FindEntity(keyValue); return _emailAddresseeRepository.GetById(keyValue); } #endregion #region 提交数据 /// /// 删除草稿 /// /// 主键 public void RemoveDraftForm(string keyValue) { _emailContentRepository.Delete(new EmailContentEntity { F_ContentId = keyValue }); } /// /// 删除未读、星标、收件 /// /// 主键 public void RemoveAddresseeForm(string keyValue) { EmailAddresseeEntity emailAddresseeEntity = new EmailAddresseeEntity(); emailAddresseeEntity.F_AddresseeId = keyValue; emailAddresseeEntity.F_DeleteMark = 1; //new RepositoryFactory().BaseRepository().Update(emailAddresseeEntity); _emailAddresseeRepository.Update(emailAddresseeEntity); } /// /// 彻底删除未读、星标、收件 /// /// 主键 public void ThoroughRemoveAddresseeForm(string keyValue) { //new RepositoryFactory().BaseRepository().Delete(new EmailAddresseeEntity { F_AddresseeId = keyValue }); _emailAddresseeRepository.Delete(new EmailAddresseeEntity { F_AddresseeId = keyValue }); } /// /// 删除回收 /// /// 主键 /// 类型 public void RemoveRecycleForm(string keyValue, int Type) { _emailContentRepository.DeleteById(keyValue); } /// /// 删除已发 /// /// 主键 public void RemoveSentForm(string keyValue) { EmailContentEntity emailContentEntity = new EmailContentEntity(); emailContentEntity.F_ContentId = keyValue; emailContentEntity.F_DeleteMark = 1; _emailContentRepository.Update(emailContentEntity); } /// /// 彻底删除已发 /// /// 主键 public void ThoroughRemoveSentForm(string keyValue) { EmailContentEntity emailContentEntity = new EmailContentEntity(); emailContentEntity.F_ContentId = keyValue; emailContentEntity.F_DeleteMark = 2; _emailContentRepository.Update(emailContentEntity); } /// /// 保存邮件表单(发送、存入草稿、草稿编辑) /// /// 主键值 /// 邮件实体 /// 收件人 /// 抄送人 /// 密送人 /// public void SaveForm(string keyValue, EmailContentEntity emailContentEntity, string[] addresssIds, string[] copysendIds, string[] bccsendIds) { if (emailContentEntity.F_SendState == 0) { if (!string.IsNullOrEmpty(keyValue)) { emailContentEntity.Modify(keyValue); _emailContentRepository.Update(emailContentEntity); } else { emailContentEntity.Create(); _emailContentRepository.Insert(emailContentEntity); } } else { SqlSugarHelper.Db.BeginTran(); try { if (!string.IsNullOrEmpty(keyValue)) { emailContentEntity.Modify(keyValue); _emailContentRepository.Update(emailContentEntity); } else { emailContentEntity.Create(); _emailContentRepository.Insert(emailContentEntity); } #region 收件人 foreach (var item in addresssIds) { EmailAddresseeEntity emailAddresseeEntity = new EmailAddresseeEntity(); emailAddresseeEntity.Create(); emailAddresseeEntity.F_ContentId = emailContentEntity.F_ContentId; emailAddresseeEntity.F_RecipientId = item; emailAddresseeEntity.F_RecipientState = 0; _emailAddresseeRepository.Insert(emailAddresseeEntity); } #endregion #region 抄送人 foreach (var item in copysendIds) { EmailAddresseeEntity emailAddresseeEntity = new EmailAddresseeEntity(); emailAddresseeEntity.Create(); emailAddresseeEntity.F_ContentId = emailContentEntity.F_ContentId; emailAddresseeEntity.F_RecipientId = item; emailAddresseeEntity.F_RecipientState = 1; _emailAddresseeRepository.Insert(emailAddresseeEntity); } #endregion #region 密送人 foreach (var item in bccsendIds) { EmailAddresseeEntity emailAddresseeEntity = new EmailAddresseeEntity(); emailAddresseeEntity.Create(); emailAddresseeEntity.F_ContentId = emailContentEntity.F_ContentId; emailAddresseeEntity.F_RecipientId = item; emailAddresseeEntity.F_RecipientState = 2; _emailAddresseeRepository.Insert(emailAddresseeEntity); } #endregion SqlSugarHelper.Db.CommitTran(); } catch (System.Exception) { SqlSugarHelper.Db.RollbackTran(); throw; } } } /// /// 设置邮件已读/未读 /// /// 主键 /// 是否已读:0-未读1-已读 public void ReadEmail(string keyValue, int IsRead = 1) { EmailAddresseeEntity emailAddresseeEntity = new EmailAddresseeEntity(); emailAddresseeEntity.F_AddresseeId = keyValue; emailAddresseeEntity.F_IsRead = IsRead; emailAddresseeEntity.F_ReadCount = emailAddresseeEntity.F_ReadCount + 1; emailAddresseeEntity.F_ReadDate = DateTime.Now; _emailAddresseeRepository.Update(emailAddresseeEntity); } /// /// 设置邮件星标/取消星标 /// /// 主键 /// 星标:0-取消星标1-星标 public void SteriskEmail(string keyValue, int sterisk = 1) { EmailAddresseeEntity emailAddresseeEntity = new EmailAddresseeEntity(); emailAddresseeEntity.F_AddresseeId = keyValue; emailAddresseeEntity.F_IsHighlight = sterisk; _emailAddresseeRepository.Update(emailAddresseeEntity); } #endregion } }