重构接口
This commit is contained in:
@@ -40,7 +40,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
public async Task<Result> Login(user _user)
|
||||
{
|
||||
var user_data = await _userService.Login(_user);
|
||||
var menuList = await _userService.GetMenusByUser(user_data);
|
||||
var menuList = await _menuService.GetTopMenuByUserId(user_data.id);
|
||||
if ( user_data!=null)
|
||||
{
|
||||
var token = MakeJwt.app(new jwtUser() {user=user_data,menuIds= menuList});
|
||||
@@ -112,9 +112,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
[HttpPut]
|
||||
[Authorize]
|
||||
public async Task<Result> ChangePassword(ChangePwdDto pwdDto)
|
||||
{
|
||||
var uid= pwdDto.user.id;
|
||||
var user_data = await _userService.GetUserById(uid);
|
||||
{
|
||||
var user_data = await _userService.GetUserById(pwdDto.user.id);
|
||||
string msg = "修改成功";
|
||||
if (! string.IsNullOrEmpty( pwdDto.newPassword))
|
||||
{
|
||||
|
||||
@@ -31,7 +31,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public async Task<Result> GetMenuInMould()
|
||||
{
|
||||
{
|
||||
return Result.Success().SetData(await _menuService.GetMenuInMould());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -68,6 +69,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
[HttpPost]
|
||||
public async Task<Result> AddTopMenu(menu _menu)
|
||||
{
|
||||
await _menuService.AddTopMenu(_menu);
|
||||
return Result.Success();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -79,6 +82,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
[HttpPost]
|
||||
public async Task<Result> SetMouldByMenu(IdDto<int> idDto)
|
||||
{
|
||||
await _menuService.SetMouldByMenu(idDto.id1, idDto.id2);
|
||||
return Result.Success();
|
||||
}
|
||||
|
||||
|
||||
@@ -90,6 +95,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
[HttpPost]
|
||||
public async Task<Result> AddChildrenMenu(ChildrenDto<menu> childrenDto)
|
||||
{
|
||||
await _menuService.AddChildrenMenu(childrenDto.parentId, childrenDto.data);
|
||||
return Result.Success();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -100,6 +107,9 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
[HttpGet]
|
||||
public async Task<Result> GetTopMenusByHttpUser()
|
||||
{
|
||||
HttpContext.GetCurrentUserInfo(out List<int> menuIds);
|
||||
|
||||
return Result.Success().SetData(await _menuService.GetTopMenusByTopMenuIds(menuIds));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,17 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
return Result.Success();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据用户id得到该用户有哪些角色
|
||||
/// 用于显示用户详情中的角色说明
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public async Task<Result> GetRolesByUserId(int userId)
|
||||
{
|
||||
|
||||
return Result.Success().SetData(await _roleService.GetRolesByUserId(userId));
|
||||
}
|
||||
/// <summary>
|
||||
/// 给角色设置菜单,多个角色与多个菜单,让每一个角色都设置,ids1为角色,ids2为菜单
|
||||
/// 用于设置角色
|
||||
@@ -74,6 +85,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
[HttpPost]
|
||||
public async Task<Result> SetMenuByRole(IdsListDto<int> idsListDto)
|
||||
{
|
||||
await _roleService.SetMenusByRolesId(idsListDto.ids2, idsListDto.ids1);
|
||||
return Result.Success();
|
||||
}
|
||||
/// <summary>
|
||||
/// 用于给角色设置菜单的时候,点击一个角色,显示这个角色拥有的并列的菜单
|
||||
@@ -83,6 +96,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
[HttpGet]
|
||||
public async Task<Result> GetTopMenusByRoleId(int roleId)
|
||||
{
|
||||
return Result.Success().SetData(await _roleService.GetTopMenusByRoleId(roleId) ); ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,8 +120,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
[HttpGet]
|
||||
public async Task<Result> GetAxiosByRouter(string router)
|
||||
{
|
||||
var _user = HttpContext.GetCurrentUserInfo(out List<int> ids);
|
||||
var menuList= await _userService.GetAxiosByRouter(router, _user.id, ids);
|
||||
var _user = HttpContext.GetCurrentUserInfo(out List<int> menuIds);
|
||||
var menuList= await _userService.GetAxiosByRouter(router, _user.id, menuIds);
|
||||
AxiosUrlsModel urlsModel = new();
|
||||
menuList.ForEach(u =>
|
||||
{
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
"RabbitMQ_Enabled": false,
|
||||
"Redis_Enabled": false,
|
||||
"Kafka_Enabled": false,
|
||||
"MutiDB_Enabled": true,
|
||||
"DbList": [ "Sqlite", "Mysql", "Sqlserver","Oracle"],
|
||||
"MutiDB_Enabled": false,
|
||||
"DbList": [ "Sqlite", "Mysql", "Sqlserver", "Oracle" ],
|
||||
"DbSelect": "Mysql",
|
||||
|
||||
"DbConn": {
|
||||
|
||||
@@ -9,57 +9,35 @@ namespace Yi.Framework.Interface
|
||||
{
|
||||
public partial interface IMenuService:IBaseService<menu>
|
||||
{
|
||||
Task<bool> DelListByUpdateAsync(List<int> _ids);
|
||||
/// <summary>
|
||||
/// 获取所有菜单
|
||||
/// 获取所有菜单,关联接口
|
||||
/// 这个是要递归的,但是要过滤掉删除的,所以,可以写一个通用过滤掉删除的方法
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<menu>> GetAllEntitiesTrueAsync();
|
||||
|
||||
Task<menu> GetMenuInMould();
|
||||
/// <summary>
|
||||
/// 通过menu得到mould(1对1关系)
|
||||
/// 增
|
||||
/// 现在,top菜单只允许为一个
|
||||
/// </summary>
|
||||
/// <param name="_menu"></param>
|
||||
/// <returns></returns>
|
||||
Task<mould> GetMouldByMenu(menu _menu);
|
||||
|
||||
Task<bool> AddTopMenu(menu _menu);
|
||||
/// <summary>
|
||||
/// 通过menu得到他自己与mould(注意:确保返回的menu里含有mould)
|
||||
/// 给一个菜单设置一个接口,Id1为菜单id,Id2为接口id
|
||||
/// 用于给菜单设置接口
|
||||
/// </summary>
|
||||
/// <param name="_menu"></param>
|
||||
/// <returns></returns>
|
||||
Task<menu> GetMenuMouldByMenu(menu _menu);
|
||||
|
||||
Task<menu> SetMouldByMenu(int id1, int id2);
|
||||
/// <summary>
|
||||
/// 得到该菜单下所有的子类
|
||||
/// 给一个菜单添加子节点(注意:添加,不是覆盖)
|
||||
/// </summary>
|
||||
/// <param name="_menu"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<menu>> GetChildrenByMenu(menu _menu);
|
||||
|
||||
/// <summary>
|
||||
/// 给菜单设置接口(1对1关系)
|
||||
/// </summary>
|
||||
/// <param name="mouldId"></param>
|
||||
/// <param name="menuId"></param>
|
||||
/// <returns></returns>
|
||||
Task<bool> SetMouldByMenu(int mouldId,int menuId);
|
||||
/// <summary>
|
||||
/// 添加子菜单
|
||||
/// </summary>
|
||||
/// <param name="_menu"></param>
|
||||
/// <returns></returns>
|
||||
Task<menu> AddChildrenMenu(int menu_id, menu _children);
|
||||
/// <summary>
|
||||
/// 获取根目录菜单
|
||||
/// 获取用户的目录菜单,不包含接口
|
||||
/// 用于账户信息页面,显示这个用户有哪些菜单,需要并列
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<menu>> GetTopMenu();
|
||||
/// <summary>
|
||||
/// 获取子菜单
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<menu>> GetChildrenMenu(menu _menu);
|
||||
Task<List<menu>> GetMenuMould();
|
||||
Task<List<menu>> GetTopMenusByTopMenuIds(List<int> menuIds);
|
||||
Task<List<menu>> GetTopMenuByUserId(int userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,8 +9,7 @@ namespace Yi.Framework.Interface
|
||||
{
|
||||
public partial interface IMouldService : IBaseService<mould>
|
||||
{
|
||||
Task<bool> DelListByUpdateAsync(List<int> _ids);
|
||||
Task<IEnumerable<mould>> GetAllEntitiesTrueAsync();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 得到该接口属于哪个菜单的
|
||||
|
||||
@@ -9,22 +9,13 @@ namespace Yi.Framework.Interface
|
||||
{
|
||||
public partial interface IRoleService:IBaseService<role>
|
||||
{
|
||||
Task<bool> DelListByUpdateAsync(List<int> _ids);
|
||||
Task<IEnumerable<role>> GetAllEntitiesTrueAsync();
|
||||
|
||||
/// <summary>
|
||||
/// 获取该角色的所有菜单
|
||||
/// </summary>
|
||||
/// <param name="_role"></param>
|
||||
/// <param name="roleId"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<menu>> GetMenusByRole(role _role);
|
||||
|
||||
/// <summary>
|
||||
/// 获取含有该角色的所有用户
|
||||
/// </summary>
|
||||
/// <param name="_role"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<user>> GetUsersByRole(role _role);
|
||||
Task<List<menu>> GetMenusByRole(int roleId);
|
||||
|
||||
/// <summary>
|
||||
/// 给多个角色设置多个菜单
|
||||
@@ -38,7 +29,19 @@ namespace Yi.Framework.Interface
|
||||
/// </summary>
|
||||
/// <param name="roleIds"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<menu>> GetMenusByRoleId(int roleId);
|
||||
|
||||
Task<List<menu>> GetMenusByRoleId(List<int> roleIds);
|
||||
/// <summary>
|
||||
/// 获取用户的角色
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<role>> GetRolesByUserId(int userId);
|
||||
/// <summary>
|
||||
/// 获取该角色的top菜单
|
||||
/// </summary>
|
||||
/// <param name="roleId"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<menu>> GetTopMenusByRoleId(int roleId);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ namespace Yi.Framework.Model
|
||||
_connStr = connstr;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
if (!optionsBuilder.IsConfigured)
|
||||
|
||||
199
Yi.Framework/Yi.Framework.Model/Migrations/20211029124310_yi-2.Designer.cs
generated
Normal file
199
Yi.Framework/Yi.Framework.Model/Migrations/20211029124310_yi-2.Designer.cs
generated
Normal file
@@ -0,0 +1,199 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Yi.Framework.Model;
|
||||
|
||||
namespace Yi.Framework.Model.Migrations
|
||||
{
|
||||
[DbContext(typeof(DataContext))]
|
||||
[Migration("20211029124310_yi-2")]
|
||||
partial class yi2
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64)
|
||||
.HasAnnotation("ProductVersion", "5.0.11");
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.menu", b =>
|
||||
{
|
||||
b.Property<int>("id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("icon")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<int>("is_delete")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("is_show")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("is_top")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("menu_name")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<int?>("menuid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int?>("mouldid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int?>("roleid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("router")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<int>("sort")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("id");
|
||||
|
||||
b.HasIndex("menuid");
|
||||
|
||||
b.HasIndex("mouldid");
|
||||
|
||||
b.HasIndex("roleid");
|
||||
|
||||
b.ToTable("menu");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.mould", b =>
|
||||
{
|
||||
b.Property<int>("id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("is_delete")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("mould_name")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("url")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.HasKey("id");
|
||||
|
||||
b.ToTable("mould");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.role", b =>
|
||||
{
|
||||
b.Property<int>("id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("introduce")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<int>("is_delete")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("role_name")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<int?>("userid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("id");
|
||||
|
||||
b.HasIndex("userid");
|
||||
|
||||
b.ToTable("role");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.user", b =>
|
||||
{
|
||||
b.Property<int>("id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("address")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<int?>("age")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("email")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("icon")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("introduction")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("ip")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<int>("is_delete")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("nick")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("password")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<int?>("phone")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("username")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.HasKey("id");
|
||||
|
||||
b.ToTable("user");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.menu", b =>
|
||||
{
|
||||
b.HasOne("Yi.Framework.Model.Models.menu", null)
|
||||
.WithMany("children")
|
||||
.HasForeignKey("menuid");
|
||||
|
||||
b.HasOne("Yi.Framework.Model.Models.mould", "mould")
|
||||
.WithMany()
|
||||
.HasForeignKey("mouldid");
|
||||
|
||||
b.HasOne("Yi.Framework.Model.Models.role", null)
|
||||
.WithMany("menus")
|
||||
.HasForeignKey("roleid");
|
||||
|
||||
b.Navigation("mould");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.role", b =>
|
||||
{
|
||||
b.HasOne("Yi.Framework.Model.Models.user", null)
|
||||
.WithMany("roles")
|
||||
.HasForeignKey("userid");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.menu", b =>
|
||||
{
|
||||
b.Navigation("children");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.role", b =>
|
||||
{
|
||||
b.Navigation("menus");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.user", b =>
|
||||
{
|
||||
b.Navigation("roles");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace Yi.Framework.Model.Migrations
|
||||
{
|
||||
public partial class yi2 : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "menurole");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "roleuser");
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "userid",
|
||||
table: "role",
|
||||
type: "int",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "roleid",
|
||||
table: "menu",
|
||||
type: "int",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_role_userid",
|
||||
table: "role",
|
||||
column: "userid");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_menu_roleid",
|
||||
table: "menu",
|
||||
column: "roleid");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_menu_role_roleid",
|
||||
table: "menu",
|
||||
column: "roleid",
|
||||
principalTable: "role",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_role_user_userid",
|
||||
table: "role",
|
||||
column: "userid",
|
||||
principalTable: "user",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_menu_role_roleid",
|
||||
table: "menu");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_role_user_userid",
|
||||
table: "role");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_role_userid",
|
||||
table: "role");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_menu_roleid",
|
||||
table: "menu");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "userid",
|
||||
table: "role");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "roleid",
|
||||
table: "menu");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "menurole",
|
||||
columns: table => new
|
||||
{
|
||||
menusid = table.Column<int>(type: "int", nullable: false),
|
||||
rolesid = table.Column<int>(type: "int", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_menurole", x => new { x.menusid, x.rolesid });
|
||||
table.ForeignKey(
|
||||
name: "FK_menurole_menu_menusid",
|
||||
column: x => x.menusid,
|
||||
principalTable: "menu",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_menurole_role_rolesid",
|
||||
column: x => x.rolesid,
|
||||
principalTable: "role",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
})
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "roleuser",
|
||||
columns: table => new
|
||||
{
|
||||
rolesid = table.Column<int>(type: "int", nullable: false),
|
||||
usersid = table.Column<int>(type: "int", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_roleuser", x => new { x.rolesid, x.usersid });
|
||||
table.ForeignKey(
|
||||
name: "FK_roleuser_role_rolesid",
|
||||
column: x => x.rolesid,
|
||||
principalTable: "role",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_roleuser_user_usersid",
|
||||
column: x => x.usersid,
|
||||
principalTable: "user",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
})
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_menurole_rolesid",
|
||||
table: "menurole",
|
||||
column: "rolesid");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_roleuser_usersid",
|
||||
table: "roleuser",
|
||||
column: "usersid");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,6 +44,9 @@ namespace Yi.Framework.Model.Migrations
|
||||
b.Property<int?>("mouldid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int?>("roleid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("router")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
@@ -56,6 +59,8 @@ namespace Yi.Framework.Model.Migrations
|
||||
|
||||
b.HasIndex("mouldid");
|
||||
|
||||
b.HasIndex("roleid");
|
||||
|
||||
b.ToTable("menu");
|
||||
});
|
||||
|
||||
@@ -94,8 +99,13 @@ namespace Yi.Framework.Model.Migrations
|
||||
b.Property<string>("role_name")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<int?>("userid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("id");
|
||||
|
||||
b.HasIndex("userid");
|
||||
|
||||
b.ToTable("role");
|
||||
});
|
||||
|
||||
@@ -143,36 +153,6 @@ namespace Yi.Framework.Model.Migrations
|
||||
b.ToTable("user");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("menurole", b =>
|
||||
{
|
||||
b.Property<int>("menusid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("rolesid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("menusid", "rolesid");
|
||||
|
||||
b.HasIndex("rolesid");
|
||||
|
||||
b.ToTable("menurole");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("roleuser", b =>
|
||||
{
|
||||
b.Property<int>("rolesid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("usersid")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("rolesid", "usersid");
|
||||
|
||||
b.HasIndex("usersid");
|
||||
|
||||
b.ToTable("roleuser");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.menu", b =>
|
||||
{
|
||||
b.HasOne("Yi.Framework.Model.Models.menu", null)
|
||||
@@ -183,43 +163,34 @@ namespace Yi.Framework.Model.Migrations
|
||||
.WithMany()
|
||||
.HasForeignKey("mouldid");
|
||||
|
||||
b.HasOne("Yi.Framework.Model.Models.role", null)
|
||||
.WithMany("menus")
|
||||
.HasForeignKey("roleid");
|
||||
|
||||
b.Navigation("mould");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("menurole", b =>
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.role", b =>
|
||||
{
|
||||
b.HasOne("Yi.Framework.Model.Models.menu", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("menusid")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Yi.Framework.Model.Models.role", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("rolesid")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("roleuser", b =>
|
||||
{
|
||||
b.HasOne("Yi.Framework.Model.Models.role", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("rolesid")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("Yi.Framework.Model.Models.user", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("usersid")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
.WithMany("roles")
|
||||
.HasForeignKey("userid");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.menu", b =>
|
||||
{
|
||||
b.Navigation("children");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.role", b =>
|
||||
{
|
||||
b.Navigation("menus");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Yi.Framework.Model.Models.user", b =>
|
||||
{
|
||||
b.Navigation("roles");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,118 +11,74 @@ namespace Yi.Framework.Service
|
||||
{
|
||||
public partial class MenuService:BaseService<menu>, IMenuService
|
||||
{
|
||||
short Normal = (short)Common.Enum.DelFlagEnum.Normal;
|
||||
public async Task<menu> AddChildrenMenu(int menu_id, menu _children)
|
||||
{
|
||||
var menu_data = await _Db.Set<menu>().Include(u => u.children).Where(u => u.id == menu_id).FirstOrDefaultAsync();
|
||||
var menu_data = await _DbRead.Set<menu>().Include(u => u.children).Where(u => u.id == menu_id).FirstOrDefaultAsync();
|
||||
_children.is_top = (short)Common.Enum.TopFlagEnum.Children;
|
||||
menu_data.children.Add(_children);
|
||||
await UpdateAsync(menu_data);
|
||||
return menu_data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 这个getEntity没有关联子类,怎么能得到子类呢?这是一个错误的接口
|
||||
/// </summary>
|
||||
/// <param name="_menu"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<menu>> GetChildrenByMenu(menu _menu)
|
||||
public async Task<bool> AddTopMenu(menu _menu)
|
||||
{
|
||||
var menu_data = await GetEntity(u=>u.id==_menu.id&& u.is_delete == (short)Common.Enum.DelFlagEnum.Normal);
|
||||
var childrenList = menu_data.children.ToList();
|
||||
return childrenList;
|
||||
_menu.is_top = (short)Common.Enum.TopFlagEnum.Children;
|
||||
|
||||
return await AddAsync(_menu);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 不要返回一个新创的变量,直接返回menu.children,只要id,就不要传一个对象
|
||||
/// </summary>
|
||||
/// <param name="_menu"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<menu>> GetChildrenMenu(menu _menu)
|
||||
public async Task<menu> GetMenuInMould()
|
||||
{
|
||||
var menu= await _Db.Set<menu>().Include(u => u.children).Include(u=>u.mould)
|
||||
.Where(u =>u.id==_menu.id&& u.is_top == (short)Common.Enum.TopFlagEnum.Children )
|
||||
.FirstOrDefaultAsync();
|
||||
var childrenList = menu.children.ToList();
|
||||
return childrenList;
|
||||
}
|
||||
|
||||
public async Task<List<menu>> GetMenuMould()
|
||||
{
|
||||
var menuList= await _Db.Set<menu>().Include(u => u.children).Include(u => u.mould)
|
||||
.Where(u => u.is_delete == (short)Common.Enum.DelFlagEnum.Normal )
|
||||
.ToListAsync();
|
||||
return menuList;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 和GetChildrenMenu方法可以合并
|
||||
/// </summary>
|
||||
/// <param name="_menu"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<menu> GetMenuMouldByMenu(menu _menu)
|
||||
{
|
||||
var menu_data = await _Db.Set<menu>().Include(u => u.children).Include(u=>u.mould)
|
||||
.Where(u=>u.id==_menu.id&& u.is_delete == (short)Common.Enum.ShowFlagEnum.Show)
|
||||
.FirstOrDefaultAsync();
|
||||
return menu_data;
|
||||
}
|
||||
|
||||
public async Task<mould> GetMouldByMenu(menu _menu)
|
||||
{
|
||||
var menu_data =await _Db.Set<menu>().Include(u => u.mould).Where(u => u.id == _menu.id).FirstOrDefaultAsync();
|
||||
return menu_data.mould;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 5层迭代
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<menu>> GetTopMenu()
|
||||
{
|
||||
var menu_data= await _Db.Set<menu>().Include(u=>u.mould)
|
||||
var menu_data= await _DbRead.Set<menu>().Include(u=>u.mould)
|
||||
.Include(u => u.children).ThenInclude(u => u.mould)
|
||||
.Include(u=>u.children).ThenInclude(u => u.children).ThenInclude(u => u.mould)
|
||||
.Include(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.mould)
|
||||
.Include(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.mould)
|
||||
.Where(u =>u.is_delete == (short)Common.Enum.DelFlagEnum.Normal && u.is_top == (short)Common.Enum.ShowFlagEnum.Show)
|
||||
.Where(u =>u.is_delete == Normal && u.is_show == (short)Common.Enum.ShowFlagEnum.Show && u.is_top == (short)Common.Enum.TopFlagEnum.Top)
|
||||
.OrderByDescending(u=>u.sort)
|
||||
.ToListAsync();
|
||||
.FirstOrDefaultAsync();
|
||||
return TopMenuBuild(menu_data);
|
||||
}
|
||||
|
||||
public async Task<List<menu>> GetTopMenusByHttpUser(List<int> menuIds)
|
||||
{
|
||||
return await _DbRead.Set<menu>().Where(u => menuIds.Contains(u.id)).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<menu> SetMouldByMenu(int id1,int id2)
|
||||
{
|
||||
var menu_data = await _DbRead.Set<menu>().Include(u => u.mould).Where(u => u.id == id1).FirstOrDefaultAsync();
|
||||
var mould_data = await _DbRead.Set<mould>().Where(u => u.id == id1).FirstOrDefaultAsync();
|
||||
menu_data.mould = mould_data;
|
||||
_Db.Update(menu_data);
|
||||
return menu_data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 过滤已经被删除的(这个应该是别的地方有方法的,不应该写到service层里面的)
|
||||
/// </summary>
|
||||
/// <param name="menu_data"></param>
|
||||
/// <returns></returns>
|
||||
private List<menu> TopMenuBuild(List<menu> menu_data)
|
||||
private menu TopMenuBuild(menu menu_data)
|
||||
{
|
||||
for(int i = menu_data.Count()-1; i >=0; i--)
|
||||
for (int i = menu_data.children.Count() - 1; i >= 0; i--)
|
||||
{
|
||||
if(menu_data[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted)
|
||||
if (menu_data.children[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted)
|
||||
{
|
||||
menu_data.Remove(menu_data[i]);
|
||||
menu_data.children.Remove(menu_data.children[i]);
|
||||
}
|
||||
else if (menu_data.children[i] != null)
|
||||
{
|
||||
TopMenuBuild(menu_data.children[i]);
|
||||
}
|
||||
else if(menu_data[i].children != null)
|
||||
{
|
||||
menu_data[i].children= TopMenuBuild(menu_data[i].children.ToList());
|
||||
}
|
||||
}
|
||||
return menu_data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 要关联啊,menudata要关联mould,而且能用find就用find
|
||||
/// </summary>
|
||||
/// <param name="mouldId"></param>
|
||||
/// <param name="menuId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> SetMouldByMenu(int mouldId, int menuId)
|
||||
public async Task<List<menu>> GetTopMenuByUserId(int userId)
|
||||
{
|
||||
var menu_data = await GetEntity(u => u.id == menuId);
|
||||
var mould_data = await _Db.Set<mould>().Where(u => u.id==mouldId).FirstOrDefaultAsync();
|
||||
menu_data.mould = mould_data;
|
||||
return await UpdateAsync(menu_data);
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,58 +11,52 @@ namespace Yi.Framework.Service
|
||||
{
|
||||
public partial class RoleService:BaseService<role>, IRoleService
|
||||
{
|
||||
/// <summary>
|
||||
/// 该方法返回的是并列角色并列的菜单,无递归
|
||||
/// </summary>
|
||||
/// <param name="_role"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<menu>> GetMenusByRole(role _role)
|
||||
short Normal = (short)Common.Enum.DelFlagEnum.Normal;
|
||||
|
||||
public async Task<List<role>> GetRolesByUserId(int userId)
|
||||
{
|
||||
var role_data =await _Db.Set<role>().Include(u => u.menus)
|
||||
.Where(u => u.id == _role.id && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
|
||||
var menuList =role_data.menus.Where(u => u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).ToList();
|
||||
return menuList;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 这个接口好像没用,算作废吧,怎么能通过角色获取用户呢?数据库表也得改,不能通过角色获取用户
|
||||
/// </summary>
|
||||
/// <param name="_role"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<user>> GetUsersByRole(role _role)
|
||||
{
|
||||
var role_data = await _Db.Set<role>().Include(u => u.users)
|
||||
.Where(u => u.id == _role.id && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
|
||||
return role_data.users.ToList();
|
||||
var user_data =await _Db.Set<user>().Include(u => u.roles).Where(u => u.id==userId).FirstOrDefaultAsync();
|
||||
var roleList = user_data.roles.Where(u=>u.is_delete==Normal).ToList();
|
||||
return roleList;
|
||||
}
|
||||
|
||||
|
||||
public async Task<bool> SetMenusByRolesId(List<int> menuIds,List<int> roleIds)
|
||||
{
|
||||
var role_data = await _Db.Set<role>().Include(u=>u.menus).Where(u =>roleIds.Contains(u.id) && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).ToListAsync();
|
||||
if (role_data == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var menuList = await _Db.Set<menu>().Where(u => menuIds.Contains(u.id)&&u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).ToListAsync();
|
||||
var role_data = await _Db.Set<role>().Include(u => u.menus).ThenInclude(u => u.children).Where(u =>roleIds.Contains(u.id) && u.is_delete == Normal).ToListAsync();
|
||||
var menuList = await _Db.Set<menu>().Where(u => menuIds.Contains(u.id)&&u.is_delete ==Normal).ToListAsync();
|
||||
foreach(var role in role_data)
|
||||
{
|
||||
role.menus =menuList;
|
||||
}
|
||||
return await UpdateListAsync(role_data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 好像也不需要通过菜单来获取角色啊,这个数据库也得改
|
||||
/// </summary>
|
||||
/// <param name="roleId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<menu>> GetMenusByRoleId(int roleId)
|
||||
|
||||
public async Task<List<menu>> GetMenusByRoleId(List< int> roleIds)
|
||||
{
|
||||
var role_data = await _Db.Set<role>().Include(u=>u.menus).Where(u =>u.id==roleId && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
|
||||
var menuList = role_data.menus.ToList();
|
||||
menuList.ForEach(u => u.roles = null);
|
||||
var role_data = await _Db.Set<role>().Include(u => u.menus).Where(u => roleIds.Contains(u.id) && u.is_delete == Normal).ToListAsync();
|
||||
List<menu> menuList = new();
|
||||
role_data.ForEach(u =>
|
||||
{
|
||||
var m = u.menus.Where(u => u.is_delete == Normal).ToList();
|
||||
menuList = menuList.Union(m).ToList();
|
||||
});
|
||||
return menuList;
|
||||
}
|
||||
public async Task<List<menu>> GetTopMenusByRoleId(int roleId)
|
||||
{
|
||||
var role_data = await _Db.Set<role>().Where(u => u.id == roleId).FirstOrDefaultAsync();
|
||||
var menuList = role_data.menus.Where(u => u.is_delete == Normal).ToList();
|
||||
menuList.ForEach(u => u.children = null);
|
||||
return menuList;
|
||||
}
|
||||
|
||||
public async Task<List<menu>> GetMenusByRole(int roleId)
|
||||
{
|
||||
var role_data = await _Db.Set<role>().Include(u => u.menus).Where(u => u.id == roleId).FirstOrDefaultAsync();
|
||||
var menuList = role_data.menus.Where(u => u.is_delete == Normal).ToList();
|
||||
return menuList;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Yi.Framework.Service
|
||||
/// <returns></returns>
|
||||
public async Task<user> GetUserById(int userId)
|
||||
{
|
||||
return await _Db.Set<user>().Include(u => u.roles).ThenInclude(u => u.menus).ThenInclude(u => u.children).ThenInclude(u => u.mould).Where(u=>u.id==userId).FirstOrDefaultAsync();
|
||||
return await _DbRead.Set<user>().Include(u => u.roles).ThenInclude(u => u.menus).ThenInclude(u => u.children).ThenInclude(u => u.mould).Where(u=>u.id==userId).FirstOrDefaultAsync();
|
||||
|
||||
}
|
||||
public async Task<List<menu>> GetAxiosByRouter(string router, int userId, List<int> menuIds)
|
||||
@@ -47,7 +47,7 @@ namespace Yi.Framework.Service
|
||||
List<menu> menuList = new();
|
||||
foreach(var item in user_data.roles)
|
||||
{
|
||||
var m= item.menus.Where(u => u.router.ToUpper() == router.ToUpper()).FirstOrDefault();
|
||||
var m=item.menus.Where(u => u.router.ToUpper() == router.ToUpper()).FirstOrDefault();
|
||||
menuList= m.children.Where(u => menuIds.Contains(u.id)&&u.is_delete==Normal).ToList();
|
||||
if (m != null) { break; }
|
||||
}
|
||||
@@ -73,7 +73,7 @@ namespace Yi.Framework.Service
|
||||
List<menu> endMenu = new();
|
||||
foreach (var item in topMenu)
|
||||
{
|
||||
var p = await _Db.Set<menu>().Where(u => u.id == item.id).Include(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ToListAsync();
|
||||
var p = await _DbRead.Set<menu>().Where(u => u.id == item.id).Include(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ToListAsync();
|
||||
endMenu = endMenu.Union(p).ToList();
|
||||
}
|
||||
|
||||
@@ -92,10 +92,7 @@ namespace Yi.Framework.Service
|
||||
for (int i = menu_data.Count() - 1; i >= 0; i--)
|
||||
{
|
||||
|
||||
if (menu_data[i].icon == null)
|
||||
{
|
||||
menu_data[i].icon = "Yi";
|
||||
}
|
||||
|
||||
|
||||
if (!allMenuIds.Contains(menu_data[i].id) || menu_data[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted || menu_data[i].is_show == (short)Common.Enum.ShowFlagEnum.NoShow)
|
||||
{
|
||||
@@ -139,7 +136,7 @@ namespace Yi.Framework.Service
|
||||
|
||||
public async Task<user> Login(user _user)
|
||||
{
|
||||
var user_data = await _Db.Set<user>().Include(u => u.roles).Where(u => u.username == _user.username && u.password ==_user.password &&u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
|
||||
var user_data = await _DbRead.Set<user>().Include(u => u.roles).Where(u => u.username == _user.username && u.password ==_user.password &&u.is_delete == Normal).FirstOrDefaultAsync();
|
||||
return user_data;
|
||||
}
|
||||
|
||||
@@ -155,8 +152,8 @@ namespace Yi.Framework.Service
|
||||
|
||||
public async Task<bool> SetRoleByUser(List<int> roleIds, List<int> userIds)
|
||||
{
|
||||
var user_data = await _Db.Set<user>().Include(u => u.roles).Where(u => userIds.Contains(u.id)).ToListAsync();
|
||||
var roleList = await _Db.Set<role>().Where(u => roleIds.Contains(u.id)).ToListAsync();
|
||||
var user_data = await _DbRead.Set<user>().Include(u => u.roles).Where(u => userIds.Contains(u.id)).ToListAsync();
|
||||
var roleList = await _DbRead.Set<role>().Where(u => roleIds.Contains(u.id)).ToListAsync();
|
||||
user_data.ForEach(u => u.roles = roleList);
|
||||
return await UpdateListAsync(user_data);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace Yi.Framework.StaticPageProcessor
|
||||
services.AddHostedService<InitPageWorker>();
|
||||
|
||||
#region 服务注入
|
||||
services.Configure<MySqlConnOptions>(configuration.GetSection("MysqlConn"));
|
||||
//services.Configure<MySqlConnOptions>(configuration.GetSection("MysqlConn"));
|
||||
|
||||
services.AddTransient<CacheClientDB, CacheClientDB>();
|
||||
services.Configure<RedisConnOptions>(configuration.GetSection("RedisConn"));
|
||||
|
||||
Reference in New Issue
Block a user