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 } }