:sparkles:新增邮件发送日志

This commit is contained in:
不做码农
2023-11-21 11:48:22 +08:00
parent e8812787ad
commit de143b04bc
19 changed files with 357 additions and 767 deletions
+44
View File
@@ -0,0 +1,44 @@
using System.ComponentModel.DataAnnotations;
namespace ZR.Model.Dto
{
/// <summary>
/// 邮件发送记录查询对象
/// </summary>
public class EmailLogQueryDto : PagerInfo
{
public string FromEmail { get; set; }
public string Subject { get; set; }
public DateTime? BeginAddTime { get; set; }
public DateTime? EndAddTime { get; set; }
}
/// <summary>
/// 邮件发送记录输入输出对象
/// </summary>
public class EmailLogDto
{
//[Required(ErrorMessage = "Id不能为空")]
[JsonConverter(typeof(ValueToStringConverter))]
public long Id { get; set; }
public string FromEmail { get; set; }
public string Subject { get; set; }
public string ToEmails { get; set; }
public string EmailContent { get; set; }
public DateTime? AddTime { get; set; }
/// <summary>
/// 是否已发送
/// </summary>
public int IsSend { get; set; }
/// <summary>
/// 发送结果
/// </summary>
public string SendResult { get; set; }
public long[] IdArr { get; set; }
}
}
+51
View File
@@ -0,0 +1,51 @@
namespace ZR.ServiceCore.Model
{
/// <summary>
/// 邮件发送记录
/// </summary>
[SugarTable("email_log")]
public class EmailLog
{
[JsonConverter(typeof(ValueToStringConverter))]
[SugarColumn(IsPrimaryKey = true, IsIdentity = false)]
public long Id { get; set; }
/// <summary>
/// 发送邮箱
/// </summary>
public string FromEmail { get; set; }
/// <summary>
/// 邮件主题
/// </summary>
public string Subject { get; set; }
/// <summary>
/// 接收邮箱
/// </summary>
[SugarColumn(ColumnDataType = StaticConfig.CodeFirst_BigString)]
public string ToEmails{ get; set; }
/// <summary>
/// 邮件内容
/// </summary>
[SugarColumn(ColumnDataType = StaticConfig.CodeFirst_BigString)]
public string EmailContent { get; set; }
/// <summary>
/// 发送时间
/// </summary>
public DateTime AddTime { get; set; } = DateTime.Now;
/// <summary>
/// 是否已发送
/// </summary>
public int IsSend { get; set; }
/// <summary>
/// 发送结果
/// </summary>
public string SendResult { get; set; }
/// <summary>
/// 附件地址
/// </summary>
public string FileUrl { get; set; }
/// <summary>
/// 发送时间
/// </summary>
public DateTime SendTime { get; set; }
}
}
+2 -2
View File
@@ -44,10 +44,10 @@ namespace ZR.Model.System
public string Component { get; set; }
/// <summary>
/// 是否缓存(1缓存 0不缓存)
/// 是否缓存(1不缓存 0缓存)
/// </summary>
[SugarColumn(DefaultValue = "0", ColumnDataType = "int")]
public string IsCache { get; set; }
public string IsCache { get; set; } = "0";
/// <summary>
/// 是否外链 1、是 0、否
/// </summary>
@@ -0,0 +1,74 @@
using Infrastructure.Attribute;
using ZR.Model;
using ZR.Model.Dto;
using ZR.Repository;
using ZR.Service;
using ZR.ServiceCore.Model;
using ZR.ServiceCore.Services;
namespace ZR.ServiceCore
{
/// <summary>
/// 邮件发送记录Service业务层处理
/// </summary>
[AppService(ServiceType = typeof(IEmailLogService), ServiceLifetime = LifeTime.Transient)]
public class EmailLogService : BaseService<EmailLog>, IEmailLogService
{
/// <summary>
/// 查询邮件发送记录列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<EmailLogDto> GetList(EmailLogQueryDto parm)
{
var predicate = Expressionable.Create<EmailLog>();
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.FromEmail), it => it.FromEmail == parm.FromEmail);
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Subject), it => it.Subject.Contains(parm.Subject));
predicate = predicate.AndIF(parm.BeginAddTime == null, it => it.AddTime >= DateTime.Now.AddDays(-7).ToShortDateString().ParseToDateTime());
predicate = predicate.AndIF(parm.BeginAddTime != null, it => it.AddTime >= parm.BeginAddTime);
predicate = predicate.AndIF(parm.EndAddTime != null, it => it.AddTime <= parm.EndAddTime);
var response = Queryable()
.Where(predicate.ToExpression())
.ToPage<EmailLog, EmailLogDto>(parm);
return response;
}
/// <summary>
/// 获取详情
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public EmailLog GetInfo(long Id)
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
return response;
}
/// <summary>
/// 添加邮件发送记录
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public EmailLog AddEmailLog(EmailLog model)
{
model.Id = Insertable(model).ExecuteReturnSnowflakeId();
return model;
}
/// <summary>
/// 修改邮件发送记录
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public int UpdateEmailLog(EmailLog model)
{
return Update(model, true);
}
}
}
@@ -0,0 +1,21 @@
using ZR.Model;
using ZR.Model.Dto;
using ZR.Service;
using ZR.ServiceCore.Model;
namespace ZR.ServiceCore.Services
{
/// <summary>
/// 邮件发送记录service接口
/// </summary>
public interface IEmailLogService : IBaseService<EmailLog>
{
PagedInfo<EmailLogDto> GetList(EmailLogQueryDto parm);
EmailLog GetInfo(long Id);
EmailLog AddEmailLog(EmailLog parm);
int UpdateEmailLog(EmailLog parm);
}
}
+2 -1
View File
@@ -24,7 +24,7 @@ namespace ZR.ServiceCore.SqlSugar
//var entityes = AssemblyUtils.GetAllTypes().Where(p => !p.IsAbstract && p != baseType && p.GetCustomAttribute<SugarTable>() != null).ToArray();
//db.CodeFirst.InitTables(entityes);
//24个表,建议先使用下面方法初始化表,方便排查问题
//27个表,建议先使用下面方法初始化表,方便排查问题
db.CodeFirst.InitTables(typeof(SysUser));
db.CodeFirst.InitTables(typeof(SysRole));
db.CodeFirst.InitTables(typeof(SysDept));
@@ -51,6 +51,7 @@ namespace ZR.ServiceCore.SqlSugar
db.CodeFirst.InitTables(typeof(SqlDiffLog));
db.CodeFirst.InitTables(typeof(EmailTpl));
db.CodeFirst.InitTables(typeof(SmsCodeLog));
db.CodeFirst.InitTables(typeof(EmailLog));
}
}
}