优化代码

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 System;
using System.Collections.Generic;
@@ -109,6 +110,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
/// <param name="pwdDto"></param>
/// <returns></returns>
[HttpPut]
[Authorize]
public async Task<Result> ChangePassword(ChangePwdDto pwdDto)
{
var uid= pwdDto.user.id;

View File

@@ -14,6 +14,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize]
public class MenuController : ControllerBase
{
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 System;
using System.Collections.Generic;
@@ -12,6 +13,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize]
public class MouldController : ControllerBase
{
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 System;
using System.Collections.Generic;
@@ -13,6 +14,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize]
public class RoleController : ControllerBase
{
private IRoleService _roleService;

View File

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

View File

@@ -20,6 +20,11 @@ namespace Yi.Framework.Service
return menu_data;
}
/// <summary>
/// 这个getEntity没有关联子类怎么能得到子类呢这是一个错误的接口
/// </summary>
/// <param name="_menu"></param>
/// <returns></returns>
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);
@@ -27,10 +32,15 @@ namespace Yi.Framework.Service
return childrenList;
}
/// <summary>
/// 不要返回一个新创的变量直接返回menu.children,只要id就不要传一个对象
/// </summary>
/// <param name="_menu"></param>
/// <returns></returns>
public async Task<List<menu>> GetChildrenMenu(menu _menu)
{
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();
var childrenList = menu.children.ToList();
return childrenList;
@@ -44,30 +54,48 @@ namespace Yi.Framework.Service
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.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;
}
public async Task<mould> GetMouldByMenu(menu _menu)
{
var menu_data =await _Db.Set<menu>().Include(u => u.mould)
.Where(u => u.id == _menu.id & u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
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).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)
.OrderByDescending(u=>u.sort)
.ToListAsync();
return TopMenuBuild(menu_data);
}
/// <summary>
/// 过滤已经被删除的这个应该是别的地方有方法的不应该写到service层里面的
/// </summary>
/// <param name="menu_data"></param>
/// <returns></returns>
private List<menu> TopMenuBuild(List<menu> menu_data)
{
for(int i = menu_data.Count()-1; i >=0; i--)
{
if(menu_data[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted)
@@ -82,6 +110,12 @@ namespace Yi.Framework.Service
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)
{
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
{
/// <summary>
/// 这个获取的是菜单用的是菜单表应该放到菜单service里面像这种只用到id的就传一个id就可以了
/// </summary>
/// <param name="_mould"></param>
/// <returns></returns>
public async Task<menu> GetMenuByMould(mould _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();
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();
return menu_data;
}
}

View File

@@ -11,15 +11,24 @@ 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)
{
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();
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)
@@ -27,10 +36,10 @@ namespace Yi.Framework.Service
return role_data.users.ToList();
}
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();
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;
@@ -42,10 +51,15 @@ namespace Yi.Framework.Service
}
return await UpdateListAsync(role_data);
}
/// <summary>
/// 好像也不需要通过菜单来获取角色啊,这个数据库也得改
/// </summary>
/// <param name="roleId"></param>
/// <returns></returns>
public async Task<List<menu>> GetMenusByRoleId(int roleId)
{
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 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);
return menuList;

View File

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

View File

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