From 2a6ec19aa6d79ac7d3e3b756252a85470b1d6893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B4=81=20=E4=BB=BB?= Date: Fri, 10 Jan 2025 09:20:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseApp/DmModuleManager/DmModuleApp.cs | 216 ++++++++++++++++++ .../Request/AddorUpdateModuleReq.cs | 40 ++++ .../DmModuleManager/Response/DmDetailRes.cs | 51 +++++ OpenAuth.Repository/Domain/DmModule.cs | 62 +++++ OpenAuth.Repository/Domain/DmModulecolumn.cs | 55 +++++ OpenAuth.Repository/SugarDbContext.cs | 5 +- .../BaseControllers/DmModuleController.cs | 161 +++++++++++++ ...y-71a3c006-a825-4b90-aee2-be461dc1d8e3.xml | 16 ++ 8 files changed, 605 insertions(+), 1 deletion(-) create mode 100644 OpenAuth.App/BaseApp/DmModuleManager/DmModuleApp.cs create mode 100644 OpenAuth.App/BaseApp/DmModuleManager/Request/AddorUpdateModuleReq.cs create mode 100644 OpenAuth.App/BaseApp/DmModuleManager/Response/DmDetailRes.cs create mode 100644 OpenAuth.Repository/Domain/DmModule.cs create mode 100644 OpenAuth.Repository/Domain/DmModulecolumn.cs create mode 100644 OpenAuth.WebApi/Controllers/BaseControllers/DmModuleController.cs create mode 100644 OpenAuth.WebApi/temp-keys/key-71a3c006-a825-4b90-aee2-be461dc1d8e3.xml diff --git a/OpenAuth.App/BaseApp/DmModuleManager/DmModuleApp.cs b/OpenAuth.App/BaseApp/DmModuleManager/DmModuleApp.cs new file mode 100644 index 0000000..fbd7fd0 --- /dev/null +++ b/OpenAuth.App/BaseApp/DmModuleManager/DmModuleApp.cs @@ -0,0 +1,216 @@ +using OpenAuth.App.BaseApp.Base; +using OpenAuth.Repository; +using Models; +using OpenAuth.App.Interface; +using SqlSugar; +using Infrastructure; +using OpenAuth.App.Request; +using OpenAuth.App.BaseApp.DmModuleManager.Response; +using OpenAuth.App.BaseApp.DmModuleManager.Request; + +namespace OpenAuth.App.BaseApp.DmModuleManager +{ + public class DmModuleApp : SqlSugarBaseApp + { + private ISqlSugarClient client; + + #region 构造函数 + public DmModuleApp(ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth, ISqlSugarClient sqlSugarClient) : base(unitWork, repository, auth) + { + this.client = sqlSugarClient; + } + #endregion + + + #region 数据查询 + /// + /// 分页查询模板信息 + /// + /// + /// + public async Task>>> LoadModulePageInfo(PageReq request) + { + RefAsync totalNumber = 0; + + var table = await base.Repository.AsQueryable() + .WhereIF(!string.IsNullOrEmpty(request.key), u => u.ModuleName.Contains(request.key) || u.Description.Contains(request.key)) + .OrderByDescending(u => u.CreateTime) + .ToPageListAsync(request.page, request.limit, totalNumber); + + return new Response>>() + { + Result = new PageInfo> + { + Items = table, + Total = totalNumber + } + }; + } + + /// + /// 查询所有模板信息 + /// + /// + public async Task>> LoadAll() + { + var table = await base.Repository.AsQueryable() + .OrderByDescending(u => u.CreateTime) + .ToListAsync(); + + return new Response>() + { + Result = table + }; + } + + /// + /// 根据模板id获取字段列表 + /// + /// 模板id + /// + public async Task>> LoadCloumsById(string id) + { + var table = await base.Repository.AsSugarClient().Queryable() + .Where(r => r.ModuleId == id) + .OrderByDescending(r => r.Sort) + .ToListAsync(); + + return new Response>() + { + Result = table + }; + } + + /// + /// 根据模板详情信息查询 + /// + /// 模板id + /// + public async Task> LoadModuleDetailInfo(string id) + { + var table = await base.Repository.AsQueryable() + .Where(r => r.Id == id) + .Select(r => new DmDetailRes + { + Id = r.Id, + ModuleName = r.ModuleName, + Description = r.Description, + CreateTime = r.CreateTime, + CreateUserId = r.CreateUserId, + CreateUserName = r.CreateUserName, + Cloums = SqlFunc.Subqueryable().Where(a => a.ModuleId == r.Id).ToList() + }).FirstAsync(); + + return new Response() + { + Result = table + }; + } + #endregion + + #region 增删改 + /// + /// 添加或者修改数据 + /// + /// + /// + /// + public Response AddOrUpdate(AddorUpdateModuleReq request) + { + //查询当前登录用户信息 + var user = _auth.GetCurrentUser().User; + using (var uow = base.UnitWork.CreateContext()) + { + var module = request.Module; + if (string.IsNullOrEmpty(module.Id)) + { + if (uow.DmModule.IsAny(u => u.ModuleName == module.ModuleName)) + { + throw new Exception("模板名称已存在"); + } + module.Id = Guid.NewGuid().ToString(); + module.CreateTime = DateTime.Now; + module.CreateUserId = user.Id.ToString(); + module.CreateUserName = user.Name; + + List cloum = new List(); + foreach (var item in request.Cloums) + { + DmModulecolumn cl = new DmModulecolumn(); + cl.Id = Guid.NewGuid().ToString(); + cl.ModuleId = module.Id; + cl.Description = item.Description; + cl.Name = item.Name; + cl.Description = item.Description; + cl.Sort = item.Sort; + cloum.Add(cl); + } + + uow.DmModule.Insert(module); + uow.DmModulecolumn.InsertRange(cloum); + } + else + { + //判断模板名称是否重复 + if (uow.DmModule.IsAny(u => u.ModuleName == module.ModuleName && u.Id != module.Id)) + { + throw new Exception("模板名称已存在"); + } + //更新模板信息 + uow.DmModule.Update(u => new DmModule + { + ModuleName = module.ModuleName, + Description = module.Description + }, u => u.Id == module.Id); + + //删除模板原有字段 + uow.DmModulecolumn.Delete(u=>u.ModuleId==module.Id); + //添加模板新字段 + List cloum = new List(); + foreach (var item in request.Cloums) + { + DmModulecolumn cl = new DmModulecolumn(); + cl.Id = Guid.NewGuid().ToString(); + cl.ModuleId = module.Id; + cl.Description = item.Description; + cl.Name = item.Name; + cl.Description = item.Description; + cl.Sort = item.Sort; + cloum.Add(cl); + } + uow.DmModulecolumn.InsertRange(cloum); + } + + var flag = uow.Commit(); + + return new Response + { + Result = flag, + Message = flag == true ? "success" : "error" + }; + } + } + + /// + /// 根据选中id删除模板 + /// + /// + public Response DeleteModule(string[] ids) + { + using (var uow = base.UnitWork.CreateContext()) + { + uow.DmModulecolumn.Delete(u => ids.Contains(u.ModuleId)); + uow.DmModule.Delete(u => ids.Contains(u.Id)); + + var flag = uow.Commit(); + return new Response + { + Result = flag, + Message = flag == true ? "success" : "error" + }; + } + } + #endregion + + } +} diff --git a/OpenAuth.App/BaseApp/DmModuleManager/Request/AddorUpdateModuleReq.cs b/OpenAuth.App/BaseApp/DmModuleManager/Request/AddorUpdateModuleReq.cs new file mode 100644 index 0000000..d600577 --- /dev/null +++ b/OpenAuth.App/BaseApp/DmModuleManager/Request/AddorUpdateModuleReq.cs @@ -0,0 +1,40 @@ +using Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OpenAuth.App.BaseApp.DmModuleManager.Request +{ + public class AddorUpdateModuleReq + { + public DmModule Module { get; set; } + + public List Cloums { get; set; } + } + + public class Modulecolumns + { + /// + /// Desc:字段名称 + /// Default: + /// Nullable:True + /// + public string Name { get; set; } + + /// + /// Desc:字段描述 + /// Default: + /// Nullable:True + /// + public string Description { get; set; } + + /// + /// Desc:字段描述 + /// Default: + /// Nullable:True + /// + public int? Sort { get; set; } + } +} diff --git a/OpenAuth.App/BaseApp/DmModuleManager/Response/DmDetailRes.cs b/OpenAuth.App/BaseApp/DmModuleManager/Response/DmDetailRes.cs new file mode 100644 index 0000000..43959ff --- /dev/null +++ b/OpenAuth.App/BaseApp/DmModuleManager/Response/DmDetailRes.cs @@ -0,0 +1,51 @@ +using Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OpenAuth.App.BaseApp.DmModuleManager.Response +{ + public class DmDetailRes + { + public string Id { get; set; } + + /// + /// Desc:模板名称 + /// Default: + /// Nullable:False + /// + public string ModuleName { get; set; } + + /// + /// Desc:创建时间 + /// Default: + /// Nullable:True + /// + public DateTime? CreateTime { get; set; } + + /// + /// Desc:创建人Id + /// Default: + /// Nullable:True + /// + public string CreateUserId { get; set; } + + /// + /// Desc:创建人名称 + /// Default: + /// Nullable:True + /// + public string CreateUserName { get; set; } + + /// + /// Desc:模板描述说明 + /// Default: + /// Nullable:True + /// + public string Description { get; set; } + + public List Cloums { get; set; } + } +} diff --git a/OpenAuth.Repository/Domain/DmModule.cs b/OpenAuth.Repository/Domain/DmModule.cs new file mode 100644 index 0000000..dc6eb97 --- /dev/null +++ b/OpenAuth.Repository/Domain/DmModule.cs @@ -0,0 +1,62 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + +namespace Models +{ + /// + ///模板表 + /// + [SugarTable("dm_module")] + public partial class DmModule + { + public DmModule(){ + + + } + /// + /// Desc:主键 + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true)] + public string Id {get;set;} + + /// + /// Desc:模板名称 + /// Default: + /// Nullable:False + /// + public string ModuleName {get;set;} + + /// + /// Desc:创建时间 + /// Default: + /// Nullable:True + /// + public DateTime? CreateTime {get;set;} + + /// + /// Desc:创建人Id + /// Default: + /// Nullable:True + /// + public string CreateUserId {get;set;} + + /// + /// Desc:创建人名称 + /// Default: + /// Nullable:True + /// + public string CreateUserName {get;set;} + + /// + /// Desc:模板描述说明 + /// Default: + /// Nullable:True + /// + public string Description {get;set;} + + } +} diff --git a/OpenAuth.Repository/Domain/DmModulecolumn.cs b/OpenAuth.Repository/Domain/DmModulecolumn.cs new file mode 100644 index 0000000..4a5321a --- /dev/null +++ b/OpenAuth.Repository/Domain/DmModulecolumn.cs @@ -0,0 +1,55 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + +namespace Models +{ + /// + ///模板字段关联表 + /// + [SugarTable("dm_modulecolumn")] + public partial class DmModulecolumn + { + public DmModulecolumn(){ + + + } + /// + /// Desc:字段id + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true)] + public string Id {get;set;} + + /// + /// Desc:模板id + /// Default: + /// Nullable:True + /// + public string ModuleId {get;set;} + + /// + /// Desc:字段名称 + /// Default: + /// Nullable:True + /// + public string Name {get;set;} + + /// + /// Desc:字段描述 + /// Default: + /// Nullable:True + /// + public string Description {get;set;} + + /// + /// Desc:字段描述 + /// Default: + /// Nullable:True + /// + public int? Sort { get; set; } + + } +} diff --git a/OpenAuth.Repository/SugarDbContext.cs b/OpenAuth.Repository/SugarDbContext.cs index 25a77a6..86ee560 100644 --- a/OpenAuth.Repository/SugarDbContext.cs +++ b/OpenAuth.Repository/SugarDbContext.cs @@ -1,4 +1,5 @@ -using OpenAuth.Repository.Domain; +using Models; +using OpenAuth.Repository.Domain; using SqlSugar; using System; using System.Collections.Generic; @@ -58,5 +59,7 @@ namespace OpenAuth.Repository public SugarRepositiry ExcelImport { get; set; } public SugarRepositiry ExcelImportFileds { get; set; } public SugarRepositiry ImMsg { get; set; } + public SugarRepositiry DmModule { get; set; } + public SugarRepositiry DmModulecolumn { get; set; } } } diff --git a/OpenAuth.WebApi/Controllers/BaseControllers/DmModuleController.cs b/OpenAuth.WebApi/Controllers/BaseControllers/DmModuleController.cs new file mode 100644 index 0000000..08f4d2c --- /dev/null +++ b/OpenAuth.WebApi/Controllers/BaseControllers/DmModuleController.cs @@ -0,0 +1,161 @@ +using Infrastructure; +using Microsoft.AspNetCore.Mvc; +using Models; +using NetTaste; +using OpenAuth.App; +using OpenAuth.App.BaseApp.DmModuleManager; +using OpenAuth.App.BaseApp.DmModuleManager.Request; +using OpenAuth.App.BaseApp.DmModuleManager.Response; +using OpenAuth.App.Request; + +namespace OpenAuth.WebApi.Controllers.BaseControllers +{ + /// + /// 用户操作 + /// + [Route("api/[controller]/[action]")] + [ApiController] + public class DmModuleController : ControllerBase + { + private readonly DmModuleApp _app; + public DmModuleController(DmModuleApp app) + { + _app = app; + } + + #region 数据查询 + /// + /// 分页查询模板信息 + /// + /// + /// + [HttpGet] + public async Task>>> LoadModulePageInfo([FromQuery] PageReq request) + { + var result = new Response>>(); + try + { + result =await _app.LoadModulePageInfo(request); + } + catch (Exception ex) + { + result.Code = 500; + result.Message = ex.InnerException?.Message ?? ex.Message; + } + + return result; + } + + /// + /// 查询所有模板信息(不分页) + /// + /// + [HttpGet] + public async Task>> LoadAll() + { + var result = new Response>(); + try + { + result = await _app.LoadAll(); + } + catch (Exception ex) + { + result.Code = 500; + result.Message = ex.InnerException?.Message ?? ex.Message; + } + + return result; + } + + /// + /// 根据模板id获取字段列表 + /// + /// 模板id + /// + [HttpGet] + public async Task>> LoadCloumsById(string id) + { + var result = new Response>(); + try + { + result = await _app.LoadCloumsById(id); + } + catch (Exception ex) + { + result.Code = 500; + result.Message = ex.InnerException?.Message ?? ex.Message; + } + + return result; + } + + /// + /// 根据模板详情信息查询 + /// + /// 模板id + /// + [HttpGet] + public async Task> LoadModuleDetailInfo(string id) + { + var result = new Response(); + try + { + result = await _app.LoadModuleDetailInfo(id); + } + catch (Exception ex) + { + result.Code = 500; + result.Message = ex.InnerException?.Message ?? ex.Message; + } + + return result; + } + + #endregion + + #region 增删改 + /// + /// 添加或者修改数据 + /// + /// + /// + [HttpPost] + public Response AddOrUpdate(AddorUpdateModuleReq obj) + { + var result = new Response(); + try + { + result = _app.AddOrUpdate(obj); + } + catch (Exception ex) + { + result.Code = 500; + result.Message = ex.InnerException?.Message ?? ex.Message; + } + + return result; + } + + /// + /// 根据选中id删除模板 + /// + /// + [HttpPost] + public Response DeleteModule(string[] ids) + { + var result = new Response(); + try + { + result = _app.DeleteModule(ids); + } + catch (Exception ex) + { + result.Code = 500; + result.Message = ex.InnerException?.Message ?? ex.Message; + } + + return result; + } + #endregion + } +} diff --git a/OpenAuth.WebApi/temp-keys/key-71a3c006-a825-4b90-aee2-be461dc1d8e3.xml b/OpenAuth.WebApi/temp-keys/key-71a3c006-a825-4b90-aee2-be461dc1d8e3.xml new file mode 100644 index 0000000..7d83378 --- /dev/null +++ b/OpenAuth.WebApi/temp-keys/key-71a3c006-a825-4b90-aee2-be461dc1d8e3.xml @@ -0,0 +1,16 @@ + + + 2024-12-28T08:22:54.9876543Z + 2024-12-28T08:22:54.9645899Z + 2025-03-28T08:22:54.9645899Z + + + + + + + z5oB24p5fz/B9/KgNqqS++cQFtFJzRwgKPLbVQzhozLtA8+bBAqWZcxOrWNIV5oS/lb64tlqVtLkWMuQvMlFqg== + + + + \ No newline at end of file