diff --git a/ZR.Admin.WebApi/Controllers/System/monitor/SmsCodeLogController.cs b/ZR.Admin.WebApi/Controllers/System/monitor/SmsCodeLogController.cs
new file mode 100644
index 0000000..f36c494
--- /dev/null
+++ b/ZR.Admin.WebApi/Controllers/System/monitor/SmsCodeLogController.cs
@@ -0,0 +1,77 @@
+using Microsoft.AspNetCore.Mvc;
+using ZR.Admin.WebApi.Filters;
+using ZR.Model.Dto;
+using ZR.ServiceCore.Services;
+
+//创建时间:2023-11-19
+namespace ZR.Admin.WebApi.Controllers.System.monitor
+{
+ ///
+ /// 短信验证码记录
+ ///
+ [Verify]
+ [Route("system/SmscodeLog")]
+ [ApiExplorerSettings(GroupName = "sys")]
+ public class SmsCodeLogController : BaseController
+ {
+ ///
+ /// 短信验证码记录接口
+ ///
+ private readonly ISmsCodeLogService _SmscodeLogService;
+
+ public SmsCodeLogController(ISmsCodeLogService SmscodeLogService)
+ {
+ _SmscodeLogService = SmscodeLogService;
+ }
+
+ ///
+ /// 查询短信验证码记录列表
+ ///
+ ///
+ ///
+ [HttpGet("list")]
+ [ActionPermissionFilter(Permission = "smscodelog:list")]
+ public IActionResult QuerySmscodeLog([FromQuery] SmscodeLogQueryDto parm)
+ {
+ var response = _SmscodeLogService.GetList(parm);
+ return SUCCESS(response);
+ }
+
+ ///
+ /// 删除短信验证码记录
+ ///
+ ///
+ [HttpDelete("{ids}")]
+ [ActionPermissionFilter(Permission = "smscodelog:delete")]
+ [Log(Title = "短信验证码记录", BusinessType = BusinessType.DELETE)]
+ public IActionResult DeleteSmscodeLog(string ids)
+ {
+ long[] idsArr = Tools.SpitLongArrary(ids);
+ if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
+
+ var response = _SmscodeLogService.Delete(idsArr);
+
+ return ToResponse(response);
+ }
+
+ ///
+ /// 导出短信验证码记录
+ ///
+ ///
+ [Log(Title = "短信验证码记录", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
+ [HttpGet("export")]
+ [ActionPermissionFilter(Permission = "smscodelog:export")]
+ public IActionResult Export([FromQuery] SmscodeLogQueryDto parm)
+ {
+ parm.PageNum = 1;
+ parm.PageSize = 100000;
+ var list = _SmscodeLogService.GetList(parm).Result;
+ if (list == null || list.Count <= 0)
+ {
+ return ToResponse(ResultCode.FAIL, "没有要导出的数据");
+ }
+ var result = ExportExcelMini(list, "短信验证码记录", "短信验证码记录");
+ return ExportExcel(result.Item2, result.Item1);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ZR.ServiceCore/Model/Dto/SmsCodeLogDto.cs b/ZR.ServiceCore/Model/Dto/SmsCodeLogDto.cs
new file mode 100644
index 0000000..5d30079
--- /dev/null
+++ b/ZR.ServiceCore/Model/Dto/SmsCodeLogDto.cs
@@ -0,0 +1,61 @@
+using System.ComponentModel.DataAnnotations;
+using MiniExcelLibs.Attributes;
+
+namespace ZR.Model.Dto
+{
+ ///
+ /// 短信验证码记录查询对象
+ ///
+ public class SmscodeLogQueryDto : PagerInfo
+ {
+ public int? Userid { get; set; }
+ public long? PhoneNum { get; set; }
+ public DateTime? BeginAddTime { get; set; }
+ public DateTime? EndAddTime { get; set; }
+ public int? SendType { get; set; }
+ }
+
+ ///
+ /// 短信验证码记录输入输出对象
+ ///
+ public class SmsCodeLogDto
+ {
+ [Required(ErrorMessage = "Id不能为空")]
+ [ExcelColumn(Name = "Id")]
+ [ExcelColumnName("Id")]
+ [JsonConverter(typeof(ValueToStringConverter))]
+ public long Id { get; set; }
+
+ [ExcelColumn(Name = "短信验证码")]
+ [ExcelColumnName("短信验证码")]
+ public string SmsCode { get; set; }
+
+ [ExcelColumn(Name = "用户id")]
+ [ExcelColumnName("用户id")]
+ public int? Userid { get; set; }
+
+ [ExcelColumn(Name = "手机号")]
+ [ExcelColumnName("手机号")]
+ [JsonConverter(typeof(ValueToStringConverter))]
+ public long? PhoneNum { get; set; }
+
+ [ExcelColumn(Name = "短信内容")]
+ [ExcelColumnName("短信内容")]
+ public string SmsContent { get; set; }
+
+ [ExcelColumn(Name = "添加时间", Format = "yyyy-MM-dd HH:mm:ss")]
+ [ExcelColumnName("添加时间")]
+ public DateTime? AddTime { get; set; }
+
+ [ExcelColumn(Name = "用户IP")]
+ [ExcelColumnName("用户IP")]
+ public string UserIP { get; set; }
+
+ [ExcelColumn(Name = "发送类型")]
+ [ExcelColumnName("发送类型")]
+ public int? SendType { get; set; }
+ [ExcelColumn(Name = "地理位置")]
+ [ExcelColumnName("地理位置")]
+ public string Location { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/ZR.ServiceCore/Model/SmsCodeLog.cs b/ZR.ServiceCore/Model/SmsCodeLog.cs
new file mode 100644
index 0000000..5c15b7d
--- /dev/null
+++ b/ZR.ServiceCore/Model/SmsCodeLog.cs
@@ -0,0 +1,45 @@
+namespace ZR.ServiceCore.Model
+{
+ ///
+ /// 短信验证码记录
+ ///
+ [SugarTable("smsCode_log")]
+ public class SmsCodeLog
+ {
+ [JsonConverter(typeof(ValueToStringConverter))]
+ [SugarColumn(IsPrimaryKey = true)]
+ public long Id { get; set; }
+ ///
+ /// 短信验证码
+ ///
+ public string SmsCode { get; set; }
+ ///
+ /// 用户id
+ ///
+ public long Userid { get; set; }
+ ///
+ /// 手机号
+ ///
+ public long PhoneNum { get; set; }
+ ///
+ /// 短信内容
+ ///
+ public string SmsContent { get; set; }
+ ///
+ /// 发送时间
+ ///
+ public DateTime AddTime { get; set; }
+ ///
+ /// 用户IP
+ ///
+ public string UserIP { get; set; }
+ ///
+ /// 地理位置
+ ///
+ public string Location { get; set; }
+ ///
+ /// 1、登录 2、注册 3、找回密码
+ ///
+ public int SendType { get; set; }
+ }
+}
diff --git a/ZR.ServiceCore/Services/IService/ISmsCodeLogService.cs b/ZR.ServiceCore/Services/IService/ISmsCodeLogService.cs
new file mode 100644
index 0000000..b4f9994
--- /dev/null
+++ b/ZR.ServiceCore/Services/IService/ISmsCodeLogService.cs
@@ -0,0 +1,20 @@
+using ZR.Model;
+using ZR.Model.Dto;
+using ZR.Service;
+using ZR.ServiceCore.Model;
+
+namespace ZR.ServiceCore.Services
+{
+ ///
+ /// 短信验证码记录service接口
+ ///
+ public interface ISmsCodeLogService : IBaseService
+ {
+ PagedInfo GetList(SmscodeLogQueryDto parm);
+
+ SmsCodeLog GetInfo(long Id);
+
+ SmsCodeLog AddSmscodeLog(SmsCodeLog parm);
+
+ }
+}
diff --git a/ZR.ServiceCore/Services/SmsCodeLogService.cs b/ZR.ServiceCore/Services/SmsCodeLogService.cs
new file mode 100644
index 0000000..f686288
--- /dev/null
+++ b/ZR.ServiceCore/Services/SmsCodeLogService.cs
@@ -0,0 +1,65 @@
+using Infrastructure.Attribute;
+using ZR.Model;
+using ZR.Model.Dto;
+using ZR.Repository;
+using ZR.Service;
+using ZR.ServiceCore.Model;
+
+namespace ZR.ServiceCore.Services
+{
+ ///
+ /// 短信验证码记录Service业务层处理
+ ///
+ [AppService(ServiceType = typeof(ISmsCodeLogService), ServiceLifetime = LifeTime.Transient)]
+ public class SmsCodeLogService : BaseService, ISmsCodeLogService
+ {
+ ///
+ /// 查询短信验证码记录列表
+ ///
+ ///
+ ///
+ public PagedInfo GetList(SmscodeLogQueryDto parm)
+ {
+ var predicate = Expressionable.Create();
+
+ predicate = predicate.AndIF(parm.Userid != null, it => it.Userid == parm.Userid);
+ predicate = predicate.AndIF(parm.PhoneNum != null, it => it.PhoneNum == parm.PhoneNum);
+ predicate = predicate.AndIF(parm.BeginAddTime == null, it => it.AddTime >= DateTime.Now.ToShortDateString().ParseToDateTime());
+ predicate = predicate.AndIF(parm.BeginAddTime != null, it => it.AddTime >= parm.BeginAddTime);
+ predicate = predicate.AndIF(parm.EndAddTime != null, it => it.AddTime <= parm.EndAddTime);
+ predicate = predicate.AndIF(parm.SendType != null, it => it.SendType == parm.SendType);
+ var response = Queryable()
+ //.OrderBy("Id desc")
+ .Where(predicate.ToExpression())
+ .ToPage(parm);
+
+ return response;
+ }
+
+
+ ///
+ /// 获取详情
+ ///
+ ///
+ ///
+ public SmsCodeLog GetInfo(long Id)
+ {
+ var response = Queryable()
+ .Where(x => x.Id == Id)
+ .First();
+
+ return response;
+ }
+
+ ///
+ /// 添加短信验证码记录
+ ///
+ ///
+ ///
+ public SmsCodeLog AddSmscodeLog(SmsCodeLog model)
+ {
+ model.Id = Context.Insertable(model).ExecuteReturnSnowflakeId();
+ return model;
+ }
+ }
+}
\ No newline at end of file
diff --git a/ZR.ServiceCore/SqlSugar/InitTable.cs b/ZR.ServiceCore/SqlSugar/InitTable.cs
index fc22837..15e3c64 100644
--- a/ZR.ServiceCore/SqlSugar/InitTable.cs
+++ b/ZR.ServiceCore/SqlSugar/InitTable.cs
@@ -50,6 +50,7 @@ namespace ZR.ServiceCore.SqlSugar
db.CodeFirst.InitTables(typeof(SysDictType));
db.CodeFirst.InitTables(typeof(SqlDiffLog));
db.CodeFirst.InitTables(typeof(EmailTpl));
+ db.CodeFirst.InitTables(typeof(SmsCodeLog));
}
}
}