LASAPlatform/OpenAuth.App/ServiceApp/AlgorithmsRepositoryApp.cs

160 lines
5.7 KiB
C#
Raw Normal View History

2025-08-09 15:16:32 +08:00
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<LasaAlgorithmsRepository, SugarDbContext>
{
public AlgorithmsRepositoryApp(ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<LasaAlgorithmsRepository> repository, IAuth auth) : base(unitWork, repository, auth)
{
}
#region 算法库管理
//添加算法库
public async Task<Response<bool>> 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<bool>
{
Result = true,
Message = "添加成功"
};
else
return new Response<bool>
{
Result = false,
Message = "添加失败"
};
}
}
//修改算法库
public async Task<Response<bool>> UpdateAlgorithmsRepository(LasaAlgorithmsRepository info)
{
using (var db = UnitWork.CreateContext())
{
2025-09-09 17:24:03 +08:00
// 更新主表
2025-08-09 15:16:32 +08:00
await db.LasaAlgorithmsRepository.UpdateAsync(info);
2025-09-09 17:24:03 +08:00
var modelLabelsInDb = db.LasaModelLabel.AsQueryable()
.Where(r => r.PId == info.Id)
.ToList();
var newModelLabels = info.ModelLabels ?? new List<LasaModelLabel>();
var toDelete = modelLabelsInDb
.Where(dbItem => !newModelLabels.Any(newItem => newItem.Id == dbItem.Id))
.ToList();
if (toDelete.Any())
2025-08-09 15:16:32 +08:00
{
2025-09-09 17:24:03 +08:00
await db.LasaModelLabel.DeleteAsync(toDelete);
2025-08-09 15:16:32 +08:00
}
2025-09-09 17:24:03 +08:00
var toAdd = new List<LasaModelLabel>();
var toUpdate = new List<LasaModelLabel>();
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);
// 提交事务
2025-08-09 15:16:32 +08:00
if (db.Commit())
2025-09-09 17:24:03 +08:00
{
2025-08-09 15:16:32 +08:00
return new Response<bool>
{
Result = true,
Message = "修改成功"
};
2025-09-09 17:24:03 +08:00
}
2025-08-09 15:16:32 +08:00
else
2025-09-09 17:24:03 +08:00
{
2025-08-09 15:16:32 +08:00
return new Response<bool>
{
Result = false,
Message = "修改失败"
};
2025-09-09 17:24:03 +08:00
}
2025-08-09 15:16:32 +08:00
}
}
//删除算法库
public async Task<Response<bool>> 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<bool>
{
Result = true,
Message = "删除成功"
};
else
return new Response<bool>
{
Result = false,
Message = "删除失败"
};
}
}
/// <summary>
/// 分页获取所有数据
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="key"></param>
/// <returns></returns>
public async Task<Response<PageInfo<List<LasaAlgorithmsRepository>>>> GetPageList(int page, int limit, string key)
{
RefAsync<int> 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<PageInfo<List<LasaAlgorithmsRepository>>>
{
Result = new PageInfo<List<LasaAlgorithmsRepository>> { Items = list, Total = totalCount }
};
}
}
#endregion
}
}