优化代码

This commit is contained in:
橙子
2021-10-26 00:59:06 +08:00
parent adeb2ead7e
commit b29b6be734
10 changed files with 80 additions and 20 deletions

View File

@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -109,6 +110,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
/// <param name="pwdDto"></param> /// <param name="pwdDto"></param>
/// <returns></returns> /// <returns></returns>
[HttpPut] [HttpPut]
[Authorize]
public async Task<Result> ChangePassword(ChangePwdDto pwdDto) public async Task<Result> ChangePassword(ChangePwdDto pwdDto)
{ {
var uid= pwdDto.user.id; var uid= pwdDto.user.id;

View File

@@ -14,6 +14,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{ {
[Route("api/[controller]/[action]")] [Route("api/[controller]/[action]")]
[ApiController] [ApiController]
[Authorize]
public class MenuController : ControllerBase public class MenuController : ControllerBase
{ {
private IMenuService _menuService; private IMenuService _menuService;

View File

@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -12,6 +13,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{ {
[Route("api/[controller]/[action]")] [Route("api/[controller]/[action]")]
[ApiController] [ApiController]
[Authorize]
public class MouldController : ControllerBase public class MouldController : ControllerBase
{ {
private IMouldService _mouldService; private IMouldService _mouldService;

View File

@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -13,6 +14,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{ {
[Route("api/[controller]/[action]")] [Route("api/[controller]/[action]")]
[ApiController] [ApiController]
[Authorize]
public class RoleController : ControllerBase public class RoleController : ControllerBase
{ {
private IRoleService _roleService; private IRoleService _roleService;

View File

@@ -15,6 +15,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{ {
[ApiController] [ApiController]
[Route("api/[controller]/[action]")] [Route("api/[controller]/[action]")]
[Authorize]
public class UserController : ControllerBase public class UserController : ControllerBase
{ {
private readonly ILogger<UserController> _logger; private readonly ILogger<UserController> _logger;
@@ -122,7 +123,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
/// 根据http上下文的用户得到该用户信息关联角色 /// 根据http上下文的用户得到该用户信息关联角色
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Authorize]
[HttpGet] [HttpGet]
public async Task<Result> GetUserInfoById() public async Task<Result> GetUserInfoById()
{ {

View File

@@ -20,6 +20,11 @@ namespace Yi.Framework.Service
return 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<List<menu>> GetChildrenByMenu(menu _menu)
{ {
var menu_data = await GetEntity(u=>u.id==_menu.id&& u.is_delete == (short)Common.Enum.DelFlagEnum.Normal); var menu_data = await GetEntity(u=>u.id==_menu.id&& u.is_delete == (short)Common.Enum.DelFlagEnum.Normal);
@@ -27,10 +32,15 @@ namespace Yi.Framework.Service
return childrenList; return childrenList;
} }
/// <summary>
/// 不要返回一个新创的变量直接返回menu.children,只要id就不要传一个对象
/// </summary>
/// <param name="_menu"></param>
/// <returns></returns>
public async Task<List<menu>> GetChildrenMenu(menu _menu) public async Task<List<menu>> GetChildrenMenu(menu _menu)
{ {
var menu= await _Db.Set<menu>().Include(u => u.children).Include(u=>u.mould) var menu= await _Db.Set<menu>().Include(u => u.children).Include(u=>u.mould)
.Where(u =>u.id==_menu.id&& u.is_delete == (short)Common.Enum.DelFlagEnum.Normal&& u.is_top == (short)Common.Enum.TopFlagEnum.Children ) .Where(u =>u.id==_menu.id&& u.is_top == (short)Common.Enum.TopFlagEnum.Children )
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
var childrenList = menu.children.ToList(); var childrenList = menu.children.ToList();
return childrenList; return childrenList;
@@ -44,30 +54,48 @@ namespace Yi.Framework.Service
return menuList; return menuList;
} }
/// <summary>
/// 和GetChildrenMenu方法可以合并
/// </summary>
/// <param name="_menu"></param>
/// <returns></returns>
public async Task<menu> GetMenuMouldByMenu(menu _menu) public async Task<menu> GetMenuMouldByMenu(menu _menu)
{ {
var menu_data = await _Db.Set<menu>().Include(u => u.children).Include(u=>u.mould) 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.DelFlagEnum.Normal && u.is_delete == (short)Common.Enum.ShowFlagEnum.Show).FirstOrDefaultAsync(); .Where(u=>u.id==_menu.id&& u.is_delete == (short)Common.Enum.ShowFlagEnum.Show)
.FirstOrDefaultAsync();
return menu_data; return menu_data;
} }
public async Task<mould> GetMouldByMenu(menu _menu) public async Task<mould> GetMouldByMenu(menu _menu)
{ {
var menu_data =await _Db.Set<menu>().Include(u => u.mould) var menu_data =await _Db.Set<menu>().Include(u => u.mould).Where(u => u.id == _menu.id).FirstOrDefaultAsync();
.Where(u => u.id == _menu.id & u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
return menu_data.mould; return menu_data.mould;
} }
/// <summary>
/// 5层迭代
/// </summary>
/// <returns></returns>
public async Task<List<menu>> GetTopMenu() public async Task<List<menu>> GetTopMenu()
{ {
var menu_data= await _Db.Set<menu>().Include(u=>u.mould).Include(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children).ThenInclude(u => u.children) var menu_data= await _Db.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 == (short)Common.Enum.DelFlagEnum.Normal && u.is_top == (short)Common.Enum.ShowFlagEnum.Show)
.OrderByDescending(u=>u.sort)
.ToListAsync(); .ToListAsync();
return TopMenuBuild(menu_data); return TopMenuBuild(menu_data);
} }
/// <summary>
/// 过滤已经被删除的这个应该是别的地方有方法的不应该写到service层里面的
/// </summary>
/// <param name="menu_data"></param>
/// <returns></returns>
private List<menu> TopMenuBuild(List<menu> menu_data) private List<menu> TopMenuBuild(List<menu> menu_data)
{ {
for(int i = menu_data.Count()-1; i >=0; i--) for(int i = menu_data.Count()-1; i >=0; i--)
{ {
if(menu_data[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted) if(menu_data[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted)
@@ -82,6 +110,12 @@ namespace Yi.Framework.Service
return menu_data; 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<bool> SetMouldByMenu(int mouldId, int menuId)
{ {
var menu_data = await GetEntity(u => u.id == menuId); var menu_data = await GetEntity(u => u.id == menuId);

View File

@@ -11,10 +11,14 @@ namespace Yi.Framework.Service
{ {
public partial class MouldService:BaseService<mould>, IMouldService public partial class MouldService:BaseService<mould>, IMouldService
{ {
/// <summary>
/// 这个获取的是菜单用的是菜单表应该放到菜单service里面像这种只用到id的就传一个id就可以了
/// </summary>
/// <param name="_mould"></param>
/// <returns></returns>
public async Task<menu> GetMenuByMould(mould _mould) public async Task<menu> GetMenuByMould(mould _mould)
{ {
var menu_data = await _Db.Set<menu>().Include(u => u.mould) var menu_data = await _Db.Set<menu>().Include(u => u.mould).Where(u => u.mould == _mould && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
.Where(u => u.mould == _mould && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
return menu_data; return menu_data;
} }
} }

View File

@@ -11,15 +11,24 @@ namespace Yi.Framework.Service
{ {
public partial class RoleService:BaseService<role>, IRoleService public partial class RoleService:BaseService<role>, IRoleService
{ {
/// <summary>
/// 该方法返回的是并列角色并列的菜单,无递归
/// </summary>
/// <param name="_role"></param>
/// <returns></returns>
public async Task<List<menu>> GetMenusByRole(role _role) public async Task<List<menu>> GetMenusByRole(role _role)
{ {
var role_data =await _Db.Set<role>().Include(u => u.menus) 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(); .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) var menuList =role_data.menus.Where(u => u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).ToList();
.ToList();
return menuList; return menuList;
} }
/// <summary>
/// 这个接口好像没用,算作废吧,怎么能通过角色获取用户呢?数据库表也得改,不能通过角色获取用户
/// </summary>
/// <param name="_role"></param>
/// <returns></returns>
public async Task<List<user>> GetUsersByRole(role _role) public async Task<List<user>> GetUsersByRole(role _role)
{ {
var role_data = await _Db.Set<role>().Include(u => u.users) var role_data = await _Db.Set<role>().Include(u => u.users)
@@ -27,10 +36,10 @@ namespace Yi.Framework.Service
return role_data.users.ToList(); return role_data.users.ToList();
} }
public async Task<bool> SetMenusByRolesId(List<int> menuIds,List<int> roleIds) public async Task<bool> SetMenusByRolesId(List<int> menuIds,List<int> roleIds)
{ {
var role_data = await _Db.Set<role>().Include(u=>u.menus) 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();
.Where(u =>roleIds.Contains(u.id) && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).ToListAsync();
if (role_data == null) if (role_data == null)
{ {
return false; return false;
@@ -42,10 +51,15 @@ namespace Yi.Framework.Service
} }
return await UpdateListAsync(role_data); 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(int roleId)
{ {
var role_data = await _Db.Set<role>().Include(u=>u.menus) 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();
.Where(u =>u.id==roleId && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
var menuList = role_data.menus.ToList(); var menuList = role_data.menus.ToList();
menuList.ForEach(u => u.roles = null); menuList.ForEach(u => u.roles = null);
return menuList; return menuList;

View File

@@ -209,7 +209,7 @@ namespace Yi.Framework.Service
} }
/// <summary> /// <summary>
/// 这种就命名的话改成MenuChildrenBuild /// 这种就命名的话改成MenuChildrenBuild,这个方法应该可以提到core层这是一个公用的方法
/// </summary> /// </summary>
/// <param name="menu_data"></param> /// <param name="menu_data"></param>
/// <returns></returns> /// <returns></returns>

View File

@@ -55,7 +55,7 @@
<v-btn class="mr-2">图标:{{ item.icon }}</v-btn> <v-btn class="mr-2">图标:{{ item.icon }}</v-btn>
<v-btn class="mr-2">路由:{{ item.router }}</v-btn> <v-btn class="mr-2">路由:{{ item.router }}</v-btn>
<v-btn v-if="item.mould" class="mr-2">接口名:{{ item.mould.mould_name }}</v-btn> <v-btn v-if="item.mould" class="mr-2">接口名:{{ item.mould.mould_name }}</v-btn>
<v-btn v-if="item.mould" class="mr-2">接口地址:{{ item.mould.url }}</v-btn> <v-btn v-if="item.mould" class="mr-2" color="secondary">接口地址:{{ item.mould.url }}</v-btn>
<ccCombobox <ccCombobox
headers="设置接口权限" headers="设置接口权限"
itemText="url" itemText="url"