Files
Yi.Admin/Yi.Framework.Net6/Yi.Framework.Service/RoleService.cs

80 lines
2.9 KiB
C#
Raw Normal View History

2022-04-16 00:01:00 +08:00
using SqlSugar;
2022-09-09 16:52:32 +08:00
using System;
2022-04-16 00:01:00 +08:00
using System.Collections.Generic;
2022-09-11 14:52:54 +08:00
using System.Linq;
2022-04-16 00:01:00 +08:00
using System.Threading.Tasks;
2022-09-09 16:52:32 +08:00
using Yi.Framework.Common.Models;
2022-09-11 14:52:54 +08:00
using Yi.Framework.DTOModel;
2022-04-16 00:01:00 +08:00
using Yi.Framework.Interface;
using Yi.Framework.Model.Models;
using Yi.Framework.Repository;
namespace Yi.Framework.Service
{
public partial class RoleService
{
public async Task<List<RoleEntity>> DbTest()
{
return await _repository._Db.Queryable<RoleEntity>().ToListAsync();
}
2022-04-26 01:31:14 +08:00
public async Task<bool> GiveRoleSetMenu(List<long> roleIds, List<long> menuIds)
{
2022-04-29 12:55:18 +08:00
var _repositoryRoleMenu= _repository.ChangeRepository<Repository<RoleMenuEntity>>();
2022-04-26 01:31:14 +08:00
//多次操作,需要事务确保原子性
return await _repositoryRoleMenu.UseTranAsync(async () =>
2022-09-11 14:52:54 +08:00
{ //删除用户之前所有的用户角色关系(物理删除,没有恢复的必要)
await _repositoryRoleMenu.DeleteAsync(u => roleIds.Contains((long)u.RoleId) );
2022-04-26 01:31:14 +08:00
//遍历用户
foreach (var roleId in roleIds)
{
2022-09-11 14:52:54 +08:00
2022-04-26 01:31:14 +08:00
//添加新的关系
List<RoleMenuEntity> roleMenuEntity = new();
foreach (var menu in menuIds)
{
roleMenuEntity.Add(new RoleMenuEntity() { RoleId = roleId,MenuId=menu });
}
//一次性批量添加
2022-04-29 12:38:19 +08:00
await _repositoryRoleMenu.InsertReturnSnowflakeIdAsync(roleMenuEntity);
2022-04-26 01:31:14 +08:00
}
});
}
2022-04-29 12:38:19 +08:00
public async Task<RoleEntity> GetInMenuByRoleId(long roleId)
{
return await _repository._Db.Queryable<RoleEntity>().Includes(u => u.Menus).InSingleAsync(roleId);
}
2022-09-09 16:52:32 +08:00
public async Task<PageModel<List<RoleEntity>>> SelctPageList(RoleEntity role, PageParModel page)
{
RefAsync<int> total = 0;
2022-09-10 13:36:01 +08:00
var data = await _repository._DbQueryable
2022-09-09 16:52:32 +08:00
.WhereIF(!string.IsNullOrEmpty(role.RoleName), u => u.RoleName.Contains(role.RoleName))
.WhereIF(!string.IsNullOrEmpty(role.RoleCode), u => u.RoleCode.Contains(role.RoleCode))
.WhereIF(page.StartTime.IsNotNull() && page.EndTime.IsNotNull(), u => u.CreateTime >= page.StartTime && u.CreateTime <= page.EndTime)
.Where(u => u.IsDeleted == role.IsDeleted)
.OrderBy(u => u.OrderNum, OrderByType.Desc)
.ToPageListAsync(page.PageNum, page.PageSize, total);
return new PageModel<List<RoleEntity>>(data, total);
}
2022-09-11 14:52:54 +08:00
public async Task<bool> AddInfo(RoleInfoDto roleDto)
{
var res1 = await _repository.InsertReturnSnowflakeIdAsync(roleDto.Role);
var res2 = await GiveRoleSetMenu(new List<long> { res1 }, roleDto.MenuIds);
return !0.Equals(res1) && res2;
}
2022-04-16 00:01:00 +08:00
}
}