using DS.Module.Core; using DS.Module.Core.Data; using DS.Module.Core.Extensions; using DS.WMS.Core.Code.Dtos; using DS.WMS.Core.Code.Entity; using DS.WMS.Core.Code.Interface; using DS.WMS.Core.Sys.Entity; using Mapster; namespace DS.WMS.Core.Code.Method; /// /// 用户邮箱 /// public class CodeUserEmailService : ServiceBase, IUserEmailService { /// /// 初始化 /// /// public CodeUserEmailService(IServiceProvider serviceProvider) : base(serviceProvider) { } /// /// 导入 /// /// /// public async Task ImportAsync(List list) { var userNames = list.Select(x => x.ShowName); var users = await Db.Queryable().Where(x => userNames.Contains(x.UserCode)).Select(x => new { x.Id, x.UserCode, x.UserName }).ToListAsync(); var entities = list.Select(x => new CodeUserEmail { MailAccount = x.MailAccount, CreateBy = (users.Find(u => u.UserCode == x.ShowName)?.Id).GetValueOrDefault(), ShowName = users.Find(u => u.UserCode == x.ShowName)?.UserName, CreateUserName = x.ShowName, ReceiveServer = x.ReceiveServer, UseImap = x.UseImap, ReceivePort = x.ReceivePort, ReceiveSSL = x.ReceiveSSL, SmtpServer = x.SmtpServer, SmtpPort = x.SmtpPort, SmtpSSL = x.SmtpSSL, IsCompany = x.IsCompany, Status = StatusEnum.Enable }).ToList(); var entities2 = entities.FindAll(x => x.CreateBy == 0); if (entities2.Count > 0) return DataResult.Failed("导入失败,下列用户匹配不到账号信息:" + string.Join(",", entities2.Select(x => x.ShowName))); await TenantDb.Insertable(entities).ExecuteCommandAsync(); return DataResult.Success; } /// /// 列表 /// /// /// public DataResult> GetListByPage(PageRequest request) { //序列化查询条件 var whereList = request.GetConditionalModels(Db); var data = TenantDb.Queryable() .Where(whereList) .Select().ToQueryPage(request.PageCondition); return data; } /// /// 编辑 /// /// /// public DataResult EditUserEmail(CodeUserEmailReq req) { if (req.Id == 0) { if (TenantDb.Queryable() .Where(x => x.MailAccount == req.MailAccount).Any()) { return DataResult.Failed("用户邮箱设置已存在!", MultiLanguageConst.UserEmailExist); } var data = req.Adapt(); var entity = TenantDb.Insertable(data).ExecuteReturnEntity(); return DataResult.Successed("添加成功!", entity.Id, MultiLanguageConst.DataCreateSuccess); } else { var info = TenantDb.Queryable().Where(x => x.Id == req.Id).First(); info = req.Adapt(info); TenantDb.Updateable(info).IgnoreColumns("DefaultContent").IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand(); return DataResult.Successed("更新成功!", MultiLanguageConst.DataUpdateSuccess); } } /// /// 详情 /// /// /// public DataResult GetUserEmailInfo(string id) { var int64Id = long.Parse(id); var data = TenantDb.Queryable() .Where(x => x.Id == int64Id && x.Status == StatusEnum.Enable) .Select() .First(); return DataResult.Success(data, MultiLanguageConst.DataQuerySuccess); } public DataResult DelUserEmail(string id) { var info = Db.Queryable().Where(x => x.Id == long.Parse(id)).First(); if (info == null) { return DataResult.Failed("用户邮箱设置不存在!", MultiLanguageConst.UserEmailNotExist); } Db.Deleteable(info).ExecuteCommand(); return DataResult.Successed("删除成功!", MultiLanguageConst.DataDelSuccess); } public DataResult BatchDelUserEmail(IdModel req) { var list = TenantDb.Queryable().Where(x => req.Ids.Contains(x.Id)).ToList(); if (list.Count > 0) { TenantDb.Deleteable(list).ExecuteCommand(); } return DataResult.Successed("删除成功!", MultiLanguageConst.DataDelSuccess); } /// /// 获取用户邮箱配置 /// /// public async Task> GetCurrentUserEmailAsync() { var userId = long.Parse(User.UserId); var data = await TenantDb.Queryable() .Where(a => a.CreateBy == userId && !a.IsCompany) .Select() .FirstAsync(); if (data == null) { data = await TenantDb.Queryable() .Where(a => a.IsCompany) .Select() .FirstAsync(); } if (data == null) return DataResult.Failed("未配置个人邮箱账号", MultiLanguageConst.UserEmailNotSet); return DataResult.Success(data, MultiLanguageConst.DataQuerySuccess); } /// /// 获取邮箱配置 /// /// public async Task> GetEmailSettings(string ShowName = "") { var data = await TenantDb.Queryable() .WhereIF(!string.IsNullOrWhiteSpace(ShowName), a => a.ShowName == ShowName) .Where(a => a.IsCompany == false && a.CreateBy == long.Parse(User.UserId)) .Select() .FirstAsync(); if (data == null) { data = await TenantDb.Queryable() .WhereIF(!string.IsNullOrWhiteSpace(ShowName), a => a.ShowName == ShowName) .Where(a => a.IsCompany == true) .Select() .FirstAsync(); } if (data == null) return DataResult.Failed("未配置个人邮箱账号", MultiLanguageConst.UserEmailNotSet); return DataResult.Success(data, MultiLanguageConst.DataQuerySuccess); } }