using Infrastructure.Attribute; using ZR.Service; using ZR.ServiceCore.Model; using ZR.ServiceCore.Model.Dto; using ZR.ServiceCore.Services.IService; namespace ZR.ServiceCore.Services; [AppService(ServiceType = typeof(ISysRoleFieldService), ServiceLifetime = LifeTime.Transient)] public class SysRoleFieldService : BaseService, ISysRoleFieldService { public async Task InsertOrUpdateSysRoleField(List sysFieldDtos, long roleId) { try { await Context.Ado.BeginTranAsync(); await Deleteable() .Where(it => it.RoleId == roleId) .Where(it => sysFieldDtos.Select(sf => sf.Id).ToArray() .Contains(it.FieldId)) .ExecuteCommandAsync(); var ids = sysFieldDtos .Where(it => it.IsPermission != true) .Select(it => new SysRoleField { FieldId = it.Id, RoleId = roleId }) .ToList(); await Insertable(ids).ExecuteCommandAsync(); await Context.Ado.CommitTranAsync(); return true; } catch (Exception e) { Console.WriteLine(e); await Context.Ado.RollbackTranAsync(); throw; } // var list = await // Queryable() // .LeftJoin((rf, f) => rf.FieldId == f.Id) // .Where((rf, f) => rf.RoleId == roleId && f.FullName == sysFieldDtos[0].FullName) // .ToListAsync(); // // // list.AddRange(ids); // list = list.Distinct().ToList(); // var sysRoleFieldStore = await // Storageable(ids) // .WhereColumns(it => new { it.FieldId, it.RoleId }) // .ToStorageAsync(); // await sysRoleFieldStore.AsInsertable.ExecuteCommandAsync(); // await sysRoleFieldStore.AsUpdateable.ExecuteCommandAsync(); // await sysRoleFieldStore.AsDeleteable.ExecuteCommandAsync(); // return true; } }