using OpenAuth.App.BaseApp.Base; using OpenAuth.Repository.Domain; using OpenAuth.Repository; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Infrastructure.CloudSdk.minio; using OpenAuth.App.Interface; using SqlSugar; using Infrastructure; using Microsoft.AspNetCore.Http; using DocumentFormat.OpenXml.EMMA; namespace OpenAuth.App.ServiceApp { public class AlgorithmsRepositoryApp : SqlSugarBaseApp { public AlgorithmsRepositoryApp(ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth) : base(unitWork, repository, auth) { } #region 算法库管理 //添加算法库 public async Task> AddAlgorithmsRepository(LasaAlgorithmsRepository info) { using (var db = UnitWork.CreateContext()) { info.Id = Guid.NewGuid().ToString(); await db.LasaAlgorithmsRepository.InsertAsync(info); foreach (var item in info.ModelLabels) { item.Id = Guid.NewGuid().ToString(); item.PId = info.Id; } await db.LasaModelLabel.InsertRangeAsync(info.ModelLabels); if (db.Commit()) return new Response { Result = true, Message = "添加成功" }; else return new Response { Result = false, Message = "添加失败" }; } } //修改算法库 public async Task> UpdateAlgorithmsRepository(LasaAlgorithmsRepository info) { using (var db = UnitWork.CreateContext()) { // 更新主表 await db.LasaAlgorithmsRepository.UpdateAsync(info); var modelLabelsInDb = db.LasaModelLabel.AsQueryable() .Where(r => r.PId == info.Id) .ToList(); var newModelLabels = info.ModelLabels ?? new List(); var toDelete = modelLabelsInDb .Where(dbItem => !newModelLabels.Any(newItem => newItem.Id == dbItem.Id)) .ToList(); if (toDelete.Any()) { await db.LasaModelLabel.DeleteAsync(toDelete); } var toAdd = new List(); var toUpdate = new List(); foreach (var newItem in newModelLabels) { newItem.PId = info.Id; if (string.IsNullOrEmpty(newItem.Id) || !modelLabelsInDb.Any(dbItem => dbItem.Id == newItem.Id)) { // 新增 newItem.Id = Guid.NewGuid().ToString(); toAdd.Add(newItem); } else { // 更新 toUpdate.Add(newItem); } } if (toAdd.Any()) await db.LasaModelLabel.InsertRangeAsync(toAdd); if (toUpdate.Any()) await db.LasaModelLabel.UpdateRangeAsync(toUpdate); // 提交事务 if (db.Commit()) { return new Response { Result = true, Message = "修改成功" }; } else { return new Response { Result = false, Message = "修改失败" }; } } } //删除算法库 public async Task> DeleteAlgorithmsRepository(string id) { using (var db = UnitWork.CreateContext()) { await db.LasaAlgorithmsRepository.DeleteByIdAsync(id); await db.LasaModelLabel.DeleteAsync(r => r.PId == id); if (db.Commit()) return new Response { Result = true, Message = "删除成功" }; else return new Response { Result = false, Message = "删除失败" }; } } /// /// 分页获取所有数据 /// /// /// /// /// public async Task>>> GetPageList(int page, int limit, string key) { RefAsync totalCount = 0; using (var db = UnitWork.CreateContext()) { var list = await db.LasaAlgorithmsRepository.AsQueryable().Includes(a => a.ModelLabels) .WhereIF(!string.IsNullOrEmpty(key), a => a.Name.Contains(key)) .ToPageListAsync(page, limit, totalCount); return new Response>> { Result = new PageInfo> { Items = list, Total = totalCount } }; } } #endregion #region 变化检测 /// /// 分页获取所有变化检测 /// /// /// /// /// public async Task>>> GetChangeDetectionPageList(int page, int limit, string key) { RefAsync totalCount = 0; using (var db = UnitWork.CreateContext()) { var list = await db.Lasa_ChangeDetection.AsQueryable() .WhereIF(!string.IsNullOrEmpty(key), a => a.Title.Contains(key)) .OrderByDescending(a => a.CreateTime) .ToPageListAsync(page, limit, totalCount); return new Response>> { Result = new PageInfo> { Items = list, Total = totalCount } }; } } public async Task> AddChangeDetection(Lasa_ChangeDetection info) { using (var db = UnitWork.CreateContext()) { info.Id = Guid.NewGuid().ToString(); info.CreateTime = DateTime.Now; await db.Lasa_ChangeDetection.InsertAsync(info); if (db.Commit()) return new Response { Result = info.Id, Message = "添加成功" }; else return new Response { Result = info.Id, Message = "添加失败" }; } } //删除 public async Task> DeleteChangeDetection(string id) { using (var db = UnitWork.CreateContext()) { await db.Lasa_ChangeDetection.DeleteByIdAsync(id); if (db.Commit()) return new Response { Result = true, Message = "删除成功" }; else return new Response { Result = false, Message = "删除失败" }; } } #endregion } }