From e234189af330d62295a944ebdea37c43e3546fc6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Mon, 13 Nov 2023 19:50:35 +0800
Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=96=B0=E5=A2=9E=E9=82=AE?=
=?UTF-8?q?=E4=BB=B6=E6=A8=A1=E6=9D=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/System/EmailTplController.cs | 103 ++++++++++++++++++
ZR.Admin.WebApi/wwwroot/data.xlsx | Bin 37539 -> 37928 bytes
ZR.ServiceCore/Model/Dto/EmailTplDto.cs | 39 +++++++
ZR.ServiceCore/Model/EmailTpl.cs | 17 +++
ZR.ServiceCore/Model/SysBase.cs | 3 -
ZR.ServiceCore/Services/EmailTplService.cs | 70 ++++++++++++
.../Services/IService/IEmailTplService.cs | 21 ++++
ZR.ServiceCore/Services/SeedDataService.cs | 2 +-
ZR.ServiceCore/SqlSugar/DataPermi.cs | 1 -
ZR.ServiceCore/SqlSugar/InitTable.cs | 3 +-
10 files changed, 253 insertions(+), 6 deletions(-)
create mode 100644 ZR.Admin.WebApi/Controllers/System/EmailTplController.cs
create mode 100644 ZR.ServiceCore/Model/Dto/EmailTplDto.cs
create mode 100644 ZR.ServiceCore/Model/EmailTpl.cs
create mode 100644 ZR.ServiceCore/Services/EmailTplService.cs
create mode 100644 ZR.ServiceCore/Services/IService/IEmailTplService.cs
diff --git a/ZR.Admin.WebApi/Controllers/System/EmailTplController.cs b/ZR.Admin.WebApi/Controllers/System/EmailTplController.cs
new file mode 100644
index 0000000..2b3f2b1
--- /dev/null
+++ b/ZR.Admin.WebApi/Controllers/System/EmailTplController.cs
@@ -0,0 +1,103 @@
+using Microsoft.AspNetCore.Mvc;
+using ZR.Admin.WebApi.Filters;
+using ZR.Model.Dto;
+using ZR.Service.System.ISystemService;
+using ZR.ServiceCore.Model;
+
+//创建时间:2023-11-12
+namespace ZR.Admin.WebApi.Controllers
+{
+ ///
+ /// 邮件模板
+ ///
+ [Verify]
+ [Route("system/EmailTpl")]
+ public class EmailTplController : BaseController
+ {
+ ///
+ /// 邮件模板接口
+ ///
+ private readonly IEmailTplService _EmailTplService;
+
+ public EmailTplController(IEmailTplService EmailTplService)
+ {
+ _EmailTplService = EmailTplService;
+ }
+
+ ///
+ /// 查询邮件模板列表
+ ///
+ ///
+ ///
+ [HttpGet("list")]
+ [ActionPermissionFilter(Permission = "tool:emailtpl:list")]
+ public IActionResult QueryEmailTpl([FromQuery] EmailTplQueryDto parm)
+ {
+ var response = _EmailTplService.GetList(parm);
+ return SUCCESS(response);
+ }
+
+
+ ///
+ /// 查询邮件模板详情
+ ///
+ ///
+ ///
+ [HttpGet("{Id}")]
+ public IActionResult GetEmailTpl(int Id)
+ {
+ var response = _EmailTplService.GetInfo(Id);
+
+ var info = response.Adapt();
+ return SUCCESS(info);
+ }
+
+ ///
+ /// 添加邮件模板
+ ///
+ ///
+ [HttpPost]
+ [ActionPermissionFilter(Permission = "tool:emailtpl:add")]
+ [Log(Title = "邮件模板", BusinessType = BusinessType.INSERT)]
+ public IActionResult AddEmailTpl([FromBody] EmailTplDto parm)
+ {
+ var modal = parm.Adapt().ToCreate(HttpContext);
+
+ var response = _EmailTplService.AddEmailTpl(modal);
+
+ return SUCCESS(response);
+ }
+
+ ///
+ /// 更新邮件模板
+ ///
+ ///
+ [HttpPut]
+ [ActionPermissionFilter(Permission = "tool:emailtpl:edit")]
+ [Log(Title = "邮件模板", BusinessType = BusinessType.UPDATE)]
+ public IActionResult UpdateEmailTpl([FromBody] EmailTplDto parm)
+ {
+ var modal = parm.Adapt().ToUpdate(HttpContext);
+ var response = _EmailTplService.UpdateEmailTpl(modal);
+
+ return ToResponse(response);
+ }
+
+ ///
+ /// 删除邮件模板
+ ///
+ ///
+ [HttpDelete("{ids}")]
+ [ActionPermissionFilter(Permission = "tool:emailtpl:delete")]
+ [Log(Title = "邮件模板", BusinessType = BusinessType.DELETE)]
+ public IActionResult DeleteEmailTpl(string ids)
+ {
+ int[] idsArr = Tools.SpitIntArrary(ids);
+ if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
+
+ var response = _EmailTplService.Delete(idsArr);
+
+ return ToResponse(response);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/wwwroot/data.xlsx b/ZR.Admin.WebApi/wwwroot/data.xlsx
index 002ef395d7b6d56907a60c2d09ed25a9421c3eb7..6c84d585a033dd482cfc8c006490acb952625779 100644
GIT binary patch
delta 20572
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
delta 20171
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
z
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
diff --git a/ZR.ServiceCore/Model/Dto/EmailTplDto.cs b/ZR.ServiceCore/Model/Dto/EmailTplDto.cs
new file mode 100644
index 0000000..e574ff3
--- /dev/null
+++ b/ZR.ServiceCore/Model/Dto/EmailTplDto.cs
@@ -0,0 +1,39 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace ZR.Model.Dto
+{
+ ///
+ /// 邮件模板查询对象
+ ///
+ public class EmailTplQueryDto : PagerInfo
+ {
+ public string Name { get; set; }
+ }
+
+ ///
+ /// 邮件模板输入输出对象
+ ///
+ public class EmailTplDto
+ {
+ public int? Id { get; set; }
+
+ [Required(ErrorMessage = "Name不能为空")]
+ public string Name { get; set; }
+
+ [Required(ErrorMessage = "模板内容不能为空")]
+ public string Content { get; set; }
+
+ public string CreateBy { get; set; }
+
+ public DateTime? CreateTime { get; set; }
+
+ public string UpdateBy { get; set; }
+
+ public DateTime? UpdateTime { get; set; }
+
+ public string Remark { get; set; }
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/ZR.ServiceCore/Model/EmailTpl.cs b/ZR.ServiceCore/Model/EmailTpl.cs
new file mode 100644
index 0000000..aa0f3c9
--- /dev/null
+++ b/ZR.ServiceCore/Model/EmailTpl.cs
@@ -0,0 +1,17 @@
+using ZR.Model.System;
+
+namespace ZR.ServiceCore.Model
+{
+ ///
+ /// 邮件发送模板
+ ///
+ [SugarTable("emailTpl")]
+ public class EmailTpl : SysBase
+ {
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
+ public int Id { get; set; }
+ public string Name { get; set; }
+ [SugarColumn(ColumnDescription = "模板内容", ColumnDataType = StaticConfig.CodeFirst_BigString)]
+ public string Content { get; set; }
+ }
+}
diff --git a/ZR.ServiceCore/Model/SysBase.cs b/ZR.ServiceCore/Model/SysBase.cs
index b46ce8e..3c07885 100644
--- a/ZR.ServiceCore/Model/SysBase.cs
+++ b/ZR.ServiceCore/Model/SysBase.cs
@@ -1,7 +1,4 @@
using MiniExcelLibs.Attributes;
-using Newtonsoft.Json;
-using SqlSugar;
-using System;
namespace ZR.Model.System
{
diff --git a/ZR.ServiceCore/Services/EmailTplService.cs b/ZR.ServiceCore/Services/EmailTplService.cs
new file mode 100644
index 0000000..4619921
--- /dev/null
+++ b/ZR.ServiceCore/Services/EmailTplService.cs
@@ -0,0 +1,70 @@
+using Infrastructure.Attribute;
+using ZR.Model;
+using ZR.Model.Dto;
+using ZR.Repository;
+using ZR.Service.System.ISystemService;
+using ZR.ServiceCore.Model;
+
+namespace ZR.Service.System
+{
+ ///
+ /// 邮件模板Service业务层处理
+ ///
+ [AppService(ServiceType = typeof(IEmailTplService), ServiceLifetime = LifeTime.Transient)]
+ public class EmailTplService : BaseService, IEmailTplService
+ {
+ ///
+ /// 查询邮件模板列表
+ ///
+ ///
+ ///
+ public PagedInfo GetList(EmailTplQueryDto parm)
+ {
+ var predicate = Expressionable.Create();
+
+ predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Name), it => it.Name == parm.Name);
+ var response = Queryable()
+ //.OrderBy("Id desc")
+ .Where(predicate.ToExpression())
+ .ToPage(parm);
+
+ return response;
+ }
+
+
+ ///
+ /// 获取详情
+ ///
+ ///
+ ///
+ public EmailTpl GetInfo(int Id)
+ {
+ var response = Queryable()
+ .Where(x => x.Id == Id)
+ .First();
+
+ return response;
+ }
+
+ ///
+ /// 添加邮件模板
+ ///
+ ///
+ ///
+ public EmailTpl AddEmailTpl(EmailTpl model)
+ {
+ return Context.Insertable(model).ExecuteReturnEntity();
+ }
+
+ ///
+ /// 修改邮件模板
+ ///
+ ///
+ ///
+ public int UpdateEmailTpl(EmailTpl model)
+ {
+ return Update(model, true);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/ZR.ServiceCore/Services/IService/IEmailTplService.cs b/ZR.ServiceCore/Services/IService/IEmailTplService.cs
new file mode 100644
index 0000000..d28e00a
--- /dev/null
+++ b/ZR.ServiceCore/Services/IService/IEmailTplService.cs
@@ -0,0 +1,21 @@
+using ZR.Model;
+using ZR.Model.Dto;
+using ZR.ServiceCore.Model;
+
+namespace ZR.Service.System.ISystemService
+{
+ ///
+ /// 邮件模板service接口
+ ///
+ public interface IEmailTplService : IBaseService
+ {
+ PagedInfo GetList(EmailTplQueryDto parm);
+
+ EmailTpl GetInfo(int Id);
+
+ EmailTpl AddEmailTpl(EmailTpl parm);
+
+ int UpdateEmailTpl(EmailTpl parm);
+
+ }
+}
diff --git a/ZR.ServiceCore/Services/SeedDataService.cs b/ZR.ServiceCore/Services/SeedDataService.cs
index 72ac52e..fe88b98 100644
--- a/ZR.ServiceCore/Services/SeedDataService.cs
+++ b/ZR.ServiceCore/Services/SeedDataService.cs
@@ -197,7 +197,7 @@ namespace ZR.Service.System
.SplitInsert(it => it.NotAny())
.WhereColumns(it => it.Name)
.ToStorage();
- var result = x.AsInsertable.OffIdentity().ExecuteCommand();
+ var result = x.AsInsertable.ExecuteCommand();
string msg = $"[字典数据] 插入{x.InsertList.Count} 错误{x.ErrorList.Count} 总共{x.TotalList.Count}";
return (msg, x.ErrorList, x.IgnoreList);
diff --git a/ZR.ServiceCore/SqlSugar/DataPermi.cs b/ZR.ServiceCore/SqlSugar/DataPermi.cs
index 508eae0..0de5d4b 100644
--- a/ZR.ServiceCore/SqlSugar/DataPermi.cs
+++ b/ZR.ServiceCore/SqlSugar/DataPermi.cs
@@ -1,6 +1,5 @@
using Infrastructure;
using SqlSugar.IOC;
-using ZR.Model.Business;
using ZR.Model.System;
namespace ZR.ServiceCore.SqlSugar
diff --git a/ZR.ServiceCore/SqlSugar/InitTable.cs b/ZR.ServiceCore/SqlSugar/InitTable.cs
index 88a4f90..fc22837 100644
--- a/ZR.ServiceCore/SqlSugar/InitTable.cs
+++ b/ZR.ServiceCore/SqlSugar/InitTable.cs
@@ -2,6 +2,7 @@
using ZR.Model.Models;
using ZR.Model.System;
using ZR.Model.System.Generate;
+using ZR.ServiceCore.Model;
namespace ZR.ServiceCore.SqlSugar
{
@@ -48,7 +49,7 @@ namespace ZR.ServiceCore.SqlSugar
db.CodeFirst.InitTables(typeof(SysDictData));
db.CodeFirst.InitTables(typeof(SysDictType));
db.CodeFirst.InitTables(typeof(SqlDiffLog));
+ db.CodeFirst.InitTables(typeof(EmailTpl));
}
-
}
}
|