using DS.Module.Core; using DS.Module.Core.Data; using DS.Module.Core.Extensions; using DS.WMS.Core.Op.Entity.TaskInteraction; using DS.WMS.Core.Op.Interface.TaskInteraction; namespace DS.WMS.Core.Op.Method.TaskInteraction { /// /// 邮件配置服务 /// public class TaskMailService : ServiceBase, ITaskMailService { /// /// 初始化 /// /// public TaskMailService(IServiceProvider provider) : base(provider) { } /// /// 获取分页列表 /// /// /// public async Task>> GetListAsync(PageRequest request) { var whereList = request.GetConditionalModels(Db); return await TenantDb.Queryable().Includes(x => x.Receiver).Includes(x => x.Sender) .Where(whereList).ToQueryPageAsync(request.PageCondition); } /// /// 详情 /// /// /// public async Task> GetAsync(long id) { var entity = await TenantDb.Queryable().Includes(x => x.Receiver).Includes(x => x.Sender) .Where(x => x.Id == id).FirstAsync(); return DataResult.Success(entity); } /// /// 编辑 /// /// /// public async Task EditAsync(BusinessTaskMail taskMail) { await TenantDb.Ado.BeginTranAsync(); try { if (taskMail.Id == 0) { taskMail.Receiver ??= new(); taskMail.Sender ??= new(); taskMail = await TenantDb.InsertNav(taskMail).Include(x => x.Receiver).Include(x => x.Sender).ExecuteReturnEntityAsync(); } else { await TenantDb.UpdateNav(taskMail).Include(x => x.Receiver).Include(x => x.Sender).ExecuteCommandAsync(); } if (taskMail.Attachments?.Count > 0) { var list = taskMail.Attachments.FindAll(x => x.TaskMailId == 0); foreach (var item in list) item.TaskMailId = taskMail.Id; await TenantDb.Deleteable().Where(x => x.TaskMailId == taskMail.Id).ExecuteCommandAsync(); await TenantDb.Insertable(taskMail.Attachments).ExecuteCommandAsync(); } await TenantDb.Ado.CommitTranAsync(); return DataResult.Success; } catch (Exception ex) { await TenantDb.Ado.RollbackTranAsync(); await ex.LogAsync(Db); return DataResult.FailedWithDesc(nameof(MultiLanguageConst.Operation_Failed)); } } /// /// 删除 /// /// /// public async Task DeleteAsync(IdModel model) { await TenantDb.Ado.BeginTranAsync(); try { await TenantDb.DeleteNav(x => model.Ids.Contains(x.Id)) .Include(x => x.Receiver).Include(x => x.Sender).Include(x => x.Attachments).ExecuteCommandAsync(); await TenantDb.Ado.CommitTranAsync(); return DataResult.Success; } catch (Exception ex) { await TenantDb.Ado.RollbackTranAsync(); await ex.LogAsync(Db); return DataResult.FailedWithDesc(nameof(MultiLanguageConst.Operation_Failed)); } } } }