master分支合并到本地分支解决错误

This commit is contained in:
pangwenpeng 2024-05-29 09:46:38 +08:00
commit 0541f5d08d
16 changed files with 843 additions and 37 deletions

View File

@ -125,6 +125,16 @@
</summary>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.DeviceController.GetListByDeviceType(System.String,System.Int32,System.Int32,System.Int32)">
<summary>
按设备类型取设备列表 //1 voc,2 cems,3,tsp,4 video
</summary>
<param name="key">key</param>
<param name="pageSize"></param>
<param name="current"></param>
<param name="deviceType"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.HJ212Controller.Get(System.String)">
<summary>
获取指定设备的历史数据
@ -195,6 +205,52 @@
</summary>
<returns></returns>
</member>
<member name="T:langguanApi.Controllers.RoleController">
<summary>
角色 权限
</summary>
</member>
<member name="M:langguanApi.Controllers.RoleController.Get(System.String)">
<summary>
获取角色详情
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.RoleController.Add(langguanApi.Model.Entity.AddRoleDto)">
<summary>
添加角色
</summary>
<param name="role"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.RoleController.Update(langguanApi.Model.Entity.UpdateRoleDto)">
<summary>
update角色
</summary>
<param name="role"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.RoleController.Remove(System.Collections.Generic.IEnumerable{System.String})">
<summary>
删除角色
</summary>
<param name="ids"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.RoleController.List(langguanApi.Model.reqpage)">
<summary>
获取角色列表
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.RoleController.GetAllrole">
<summary>
获取所有角色
</summary>
<returns></returns>
</member>
<member name="T:langguanApi.Controllers.TransportController">
<summary>
清洁运输
@ -326,6 +382,21 @@
</summary>
<param name="services"></param>
</member>
<member name="T:langguanApi.Extensions.WhereIfExtension">
<summary>
linq extension
</summary>
</member>
<member name="M:langguanApi.Extensions.WhereIfExtension.AndAlso``1(System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}},System.Func{System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.BinaryExpression})">
<summary>
合并表达式以及参数
</summary>
<typeparam name="T"></typeparam>
<param name="expr1"></param>
<param name="expr2"></param>
<param name="func"></param>
<returns></returns>
</member>
<member name="F:langguanApi.Middleware.CustomerExceptionFilter._logger">
<summary>
日志
@ -555,6 +626,11 @@
设备类型,1 voc,2 cems,3,tsp,4 video
</summary>
</member>
<member name="P:langguanApi.Model.Device.VideoUrl">
<summary>
视频流地址
</summary>
</member>
<member name="T:langguanApi.Model.Dto.HJ212_2017">
<summary>
HJ212_2017
@ -684,6 +760,91 @@
国几排放量
</summary>
</member>
<member name="T:langguanApi.Model.Entity.Menu">
<summary>
菜单实体类
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Menu.Name">
<summary>
菜单名称
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Menu.Url">
<summary>
菜单URL
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Menu.Sort">
<summary>
排序
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Menu.ParentId">
<summary>
父菜单ID一级菜单为null
</summary>
</member>
<member name="P:langguanApi.Model.Entity.AddMenuDto.Name">
<summary>
菜单名称
</summary>
</member>
<member name="P:langguanApi.Model.Entity.AddMenuDto.Url">
<summary>
菜单URL
</summary>
</member>
<member name="P:langguanApi.Model.Entity.AddMenuDto.Sort">
<summary>
排序
</summary>
</member>
<member name="P:langguanApi.Model.Entity.AddMenuDto.ParentId">
<summary>
父菜单ID一级菜单为null
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Role.RoleName">
<summary>
角色名称
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Role.RoleDescription">
<summary>
角色描述
</summary>
</member>
<member name="P:langguanApi.Model.Entity.AddRoleDto.RoleName">
<summary>
角色名称
</summary>
</member>
<member name="P:langguanApi.Model.Entity.AddRoleDto.RoleDescription">
<summary>
角色描述
</summary>
</member>
<member name="T:langguanApi.Model.Entity.UpdateRoleDto">
<summary>
更新角色DTO
</summary>
</member>
<member name="P:langguanApi.Model.Entity.UpdateRoleDto.RoleId">
<summary>
角色ID
</summary>
</member>
<member name="T:langguanApi.Model.Entity.AddRoleMenuDTO">
<summary>
DTO for adding role menu
</summary>
</member>
<member name="T:langguanApi.Model.Entity.UpdateRoleMenuDTO">
<summary>
DTO for updating role menu
</summary>
</member>
<member name="T:langguanApi.Model.Entity.UserEntity">
<summary>
用户实体
@ -709,6 +870,46 @@
邮箱
</summary>
</member>
<member name="P:langguanApi.Model.Entity.UserEntity.Phone">
<summary>
手机号
</summary>
</member>
<member name="T:langguanApi.Model.Entity.AddDto">
<summary>
添加用户DTO
</summary>
</member>
<member name="P:langguanApi.Model.Entity.AddDto.Username">
<summary>
用户名
</summary>
</member>
<member name="P:langguanApi.Model.Entity.AddDto.Password">
<summary>
密码 md5加密
</summary>
</member>
<member name="P:langguanApi.Model.Entity.AddDto.roleId">
<summary>
角色id
</summary>
</member>
<member name="P:langguanApi.Model.Entity.AddDto.Email">
<summary>
邮箱
</summary>
</member>
<member name="T:langguanApi.Model.Entity.UpdateDto">
<summary>
更新用户DTO
</summary>
</member>
<member name="P:langguanApi.Model.Entity.UpdateDto.Id">
<summary>
用户id
</summary>
</member>
<member name="T:langguanApi.Model.FactorCode">
<summary>
污染物因子编码
@ -1253,6 +1454,20 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.BaseService`1.BatchRemoveAsync(System.Collections.Generic.IEnumerable{System.String})">
<summary>
批量删除
</summary>
<param name="ids"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.BaseService`1.BatchRemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary>
批量删除
</summary>
<param name="expression"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.BaseService`1.GetListWithExp(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary>
表达式取数据
@ -1344,6 +1559,16 @@
</summary>
<returns></returns>
</member>
<member name="M:langguanApi.Service.DeviceService.GetDeviceListByTypes(System.String,System.Int32,System.Int32,System.Int32)">
<summary>
分页取设备
</summary>
<param name="key"></param>
<param name="pageSize"></param>
<param name="current"></param>
<param name="deviceType"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.DeviceService.GetPage(langguanApi.Model.reqpage)">
<summary>
分页取数据
@ -1574,6 +1799,62 @@
<param name="ip"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.RoleMenuServie.GetByRoleId(System.String)">
<summary>
根据角色ID获取角色菜单
</summary>
<param name="roleId"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.RoleMenuServie.AddRoleMenu(langguanApi.Model.Entity.AddRoleMenuDTO)">
<summary>
表中添加角色菜单
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.RoleMenuServie.UpdateRoleMenu(langguanApi.Model.Entity.UpdateRoleMenuDTO)">
<summary>
更新角色菜单
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.RoleService.Add(langguanApi.Model.Entity.AddRoleDto)">
<summary>
新增角色
</summary>
<param name="role"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.RoleService.GetRoleAndMenu(System.String)">
<summary>
获取角色及菜单
</summary>
<param name="roleId"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.RoleService.Remove(System.Collections.Generic.IEnumerable{System.String})">
<summary>
删除角色
</summary>
<param name="ids"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.RoleService.update(langguanApi.Model.Entity.UpdateRoleDto)">
<summary>
更新角色
</summary>
<param name="role"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.RoleService.GetPage(langguanApi.Model.reqpage)">
<summary>
分页取数据
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="T:langguanApi.Service.TransportService">
<summary>
TransportService 运输服务

View File

@ -1,4 +1,5 @@
using langguanApi.Model;
using Amazon.Runtime.Internal.Auth;
using langguanApi.Model;
using langguanApi.Model.Dto;
using langguanApi.Service;
using Microsoft.AspNetCore.Mvc;
@ -80,8 +81,22 @@ namespace langguanApi.Controllers
[HttpGet]
public async Task<IActionResult> GetDeviceTypes()
{
var result=await _deviceService.GetDeviceTypes();
var result = await _deviceService.GetDeviceTypes();
return Ok(new ApiResult() { code = 0, data = result });
}
/// <summary>
/// 按设备类型取设备列表 //1 voc,2 cems,3,tsp,4 video
/// </summary>
/// <param name="key">key</param>
/// <param name="pageSize"></param>
/// <param name="current"></param>
/// <param name="deviceType"></param>
/// <returns></returns>
[HttpGet]
public async Task<IActionResult> GetListByDeviceType(string key="", int pageSize = 10, int current = 1, int deviceType = 1)
{
var result = await _deviceService.GetDeviceListByTypes(key, pageSize, current, deviceType);
return Ok(result);
}
}
}

View File

@ -1,22 +1,96 @@
using langguanApi.Model.Dto.SystemConfigurationDto;
using langguanApi.Model;
using langguanApi.Model.Entity;
using langguanApi.Model.Dto.SystemConfigurationDto;
using langguanApi.Service;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
namespace langguanApi.Controllers
{
/// <summary>
/// 角色
/// 角色 权限
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class RoleController : ControllerBase
{
private RoleService _roleService;
public readonly RoleService _roleService;
public RoleController(RoleService roleService)
{
_roleService = roleService;
}
/// <summary>
/// 获取角色详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("get")]
public async Task<IActionResult> Get(string id)
{
var role = await _roleService.GetRoleAndMenu(id);
return Ok(role);
}
/// <summary>
/// 添加角色
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
[HttpPost("add")]
public async Task<IActionResult> Add([FromBody] AddRoleDto role)
{
var result = await _roleService.Add(role);
return Ok(result);
}
/// <summary>
/// update角色
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
[HttpPut("update")]
public async Task<IActionResult> Update([FromBody] UpdateRoleDto role)
{
var result = await _roleService.update(role);
return Ok(result);
}
/// <summary>
/// 删除角色
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
[HttpDelete("remove")]
public async Task<IActionResult> Remove(IEnumerable<string> ids)
{
var result = await _roleService.Remove(ids);
return Ok(result);
}
/// <summary>
/// 获取角色列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("list")]
public async Task<IActionResult> List([FromQuery] reqpage input)
{
var roles = await _roleService.GetPager(input);
return Ok(roles);
}
/// <summary>
/// 获取所有角色
/// </summary>
/// <returns></returns>
[HttpGet("all")]
public async Task<IActionResult> GetAllrole()
{
var roles = await _roleService.GetAsync();
return Ok(new ApiResult()
{
code = 0,
data = roles.
Select(s => new { s.Id, s.RoleName })
});
}
/// <summary>
///新增角色
/// </summary>
/// <param name="input"></param>

View File

@ -0,0 +1,72 @@
using System.Linq.Expressions;
namespace langguanApi.Extensions
{
/// <summary>
/// linq extension
/// </summary>
public static class WhereIfExtension
{
public static IQueryable<T> WhereIf<T>(this IQueryable<T> source, bool condition, Expression<Func<T, bool>> predicate)
{
return condition ? source.Where(predicate) : source;
}
public static IQueryable<T> WhereIf<T>(this IQueryable<T> source, Expression<Func<T, int, bool>> predicate, bool condition)
{
return condition ? source.Where(predicate) : source;
}
public static IEnumerable<T> WhereIf<T>(this IEnumerable<T> source, bool condition, Func<T, bool> predicate)
{
return condition ? source.Where(predicate) : source;
}
public static Expression<Func<T, bool>> And<T>(
this Expression<Func<T, bool>> first,
Expression<Func<T, bool>> second)
{
return first.AndAlso<T>(second, Expression.AndAlso);
}
/// <summary>
/// 合并表达式以及参数
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="expr1"></param>
/// <param name="expr2"></param>
/// <param name="func"></param>
/// <returns></returns>
private static Expression<Func<T, bool>> AndAlso<T>(
this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2,
Func<Expression, Expression, BinaryExpression> func)
{
var parameter = Expression.Parameter(typeof(T));
var leftVisitor = new ReplaceExpressionVisitor(expr1.Parameters[0], parameter);
var left = leftVisitor.Visit(expr1.Body);
var rightVisitor = new ReplaceExpressionVisitor(expr2.Parameters[0], parameter);
var right = rightVisitor.Visit(expr2.Body);
return Expression.Lambda<Func<T, bool>>(
func(left, right), parameter);
}
private class ReplaceExpressionVisitor
: ExpressionVisitor
{
private readonly Expression _oldValue;
private readonly Expression _newValue;
public ReplaceExpressionVisitor(Expression oldValue, Expression newValue)
{
_oldValue = oldValue;
_newValue = newValue;
}
public override Expression Visit(Expression node)
{
if (node == _oldValue)
return _newValue;
return base.Visit(node);
}
}
}
}

View File

@ -21,15 +21,20 @@
/// 设备类型,1 voc,2 cems,3,tsp,4 video
/// </summary>
public int DeviceType { get; set; }
/// <summary>
/// 视频流地址
/// </summary>
public string VideoUrl { get; set; }
}
public class DeviceAddDto
{
public string deviceMN { get; set; }
public string Ip { get; set; }
public double lng { get; set; }
public double lat { get; set; }
public string NickName { get; set; }
public int DeviceType { get; set; }
public string VideoUrl { get; set; }
}
public class DeviceUpdateDto
{
@ -37,5 +42,6 @@
public string NickName { get; set; }
public string OrgId { get; set; }
public int DeviceType { get; set; }
public string VideoUrl { get; set; }
}
}

View File

@ -18,11 +18,12 @@
/// <summary>
/// 角色id
/// </summary>
public int roleId { get; set; }
public string roleId { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string Email { get; set; }
public string Phone { get; set; }
}
/// <summary>
/// 用户更新

View File

@ -0,0 +1,48 @@
namespace langguanApi.Model.Entity
{
/// <summary>
/// 菜单实体类
/// </summary>
public class Menu : BaseModel
{
/// <summary>
/// 菜单名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 菜单URL
/// </summary>
public string Url { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 父菜单ID一级菜单为null
/// </summary>
public string ParentId { get; set; }
}
public class AddMenuDto
{
/// <summary>
/// 菜单名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 菜单URL
/// </summary>
public string Url { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 父菜单ID一级菜单为null
/// </summary>
public string ParentId { get; set; }
}
public class UpdateMenuDto : AddMenuDto
{
public string Id { get; set; }
}
}

View File

@ -0,0 +1,35 @@
namespace langguanApi.Model.Entity
{
public class Role : BaseModel
{
/// <summary>
/// 角色名称
/// </summary>
public string RoleName { get; set; }
/// <summary>
/// 角色描述
/// </summary>
public string RoleDescription { get; set; }
}
public class AddRoleDto
{
/// <summary>
/// 角色名称
/// </summary>
public string RoleName { get; set; }
/// <summary>
/// 角色描述
/// </summary>
public string RoleDescription { get; set; }
}
/// <summary>
/// 更新角色DTO
/// </summary>
public class UpdateRoleDto: AddRoleDto
{
/// <summary>
/// 角色ID
/// </summary>
public int RoleId { get; set; }
}
}

View File

@ -0,0 +1,24 @@
namespace langguanApi.Model.Entity
{
public class RoleMenu : BaseModel
{
public string RoleId { get; set; }
public string MenuId { get; set; }
}
/// <summary>
/// DTO for adding role menu
/// </summary>
public class AddRoleMenuDTO
{
public string RoleId { get; set; }
public List<string> MenuIds { get; set; }
}
/// <summary>
/// DTO for updating role menu
/// </summary>
public class UpdateRoleMenuDTO
{
public string RoleId { get; set; }
public List<string> MenuIds { get; set; }
}
}

View File

@ -19,7 +19,32 @@ namespace langguanApi.Model.Entity
/// <summary>
/// 角色id
/// </summary>
[BsonRepresentation(BsonType.ObjectId)]
public string roleId { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string Email { get; set; }
/// <summary>
/// 手机号
/// </summary>
public string Phone { get; set; }
}
/// <summary>
/// 添加用户DTO
/// </summary>
public class AddDto
{
/// <summary>
/// 用户名
/// </summary>
public string Username { get; set; }
/// <summary>
/// 密码 md5加密
/// </summary>
public string Password { get; set; }
/// <summary>
/// 角色id
/// </summary>
public string roleId { get; set; }
/// <summary>
/// 邮箱
@ -66,4 +91,15 @@ namespace langguanApi.Model.Entity
/// </summary>
public byte IsEnable { get; set; }
}
/// <summary>
/// 更新用户DTO
/// </summary>
public class UpdateDto:AddDto
{
/// <summary>
/// 用户id
/// </summary>
public string Id { get; set; }
}
}

View File

@ -136,7 +136,25 @@ namespace langguanApi.Service
{
await _collection.DeleteOneAsync(T => T.Id == id);
}
/// <summary>
/// 批量删除
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public async Task BatchRemoveAsync(IEnumerable<string> ids)
{
var filter = Builders<T>.Filter.In(s => s.Id, ids);
await _collection.DeleteManyAsync(filter);
}
/// <summary>
/// 批量删除
/// </summary>
/// <param name="expression"></param>
/// <returns></returns>
public async Task BatchRemoveAsync(Expression<Func<T, bool>> expression)
{
await _collection.DeleteManyAsync(expression);
}
#endregion
/// <summary>
/// 表达式取数据

View File

@ -1,4 +1,5 @@
using langguanApi.Extensions.AutoDI;
using langguanApi.Extensions;
using langguanApi.Extensions.AutoDI;
using langguanApi.Model;
using langguanApi.Model.Dto;
using Mapster;
@ -25,12 +26,8 @@ namespace langguanApi.Service
return new ApiResult { code = 1, msg = $"已经存在名称为:{input.NickName}" };
}
var entity = input.Adapt<Device>();
if (entity != null)
{
await base.CreateAsync(entity);
return new ApiResult { code = 0, msg = "" };
}
return new ApiResult { code = -1, msg = "" }; ;
await base.CreateAsync(entity);
return new ApiResult { code = 0, msg = "" };
}
/// <summary>
/// 是否存在
@ -103,7 +100,7 @@ namespace langguanApi.Service
/// 获取设备类型
/// </summary>
/// <returns></returns>
public Task<Dictionary<int, string>> GetDeviceTypes()
public Task<Dictionary<int, string>> GetDeviceTypes()
{
//1 voc,2 cems,3,tsp,4 video
Dictionary<int, string> dic = new Dictionary<int, string>
@ -115,19 +112,40 @@ namespace langguanApi.Service
};
return Task.FromResult(dic);
}
/// <summary>
/// 分页取数据
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<object> GetPage(reqpage input)
{
Expression<Func<Device, bool>> exp = filter => filter.NickName.Contains(input.key) && filter.IsDelete == false;
return await base.GetPager(new ReqPaing()
/// <summary>
/// 分页取设备
/// </summary>
/// <param name="key"></param>
/// <param name="pageSize"></param>
/// <param name="current"></param>
/// <param name="deviceType"></param>
/// <returns></returns>
public async Task<ApiResult> GetDeviceListByTypes(string key, int pageSize = 10, int current = 1, int deviceType = 1)
{
pageSize = input.pageSize,
current = input.current
}, exp);
Expression<Func<Device, bool>> exp = filter => filter.IsDelete == false && filter.DeviceType == deviceType;
if (!string.IsNullOrEmpty(key))
{
exp = exp.And(filter => filter.NickName.Contains(key));
}
return await base.GetPager(new ReqPaing()
{
pageSize = pageSize,
current = current
}, exp);
}
/// <summary>
/// 分页取数据
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<object> GetPage(reqpage input)
{
Expression<Func<Device, bool>> exp = filter => filter.NickName.Contains(input.key) && filter.IsDelete == false;
return await base.GetPager(new ReqPaing()
{
pageSize = input.pageSize,
current = input.current
}, exp);
}
}
}
}

View File

@ -0,0 +1,34 @@
using langguanApi.Extensions.AutoDI;
using langguanApi.Model;
using langguanApi.Model.Entity;
using Mapster;
using Microsoft.AspNetCore.Mvc.ApiExplorer;
using System.Linq.Expressions;
namespace langguanApi.Service
{
[ServiceInjection(InjectionType.Transient)]
public class MenuService : BaseService<Menu>
{
public MenuService(IConfiguration config) : base(config, nameof(Menu))
{
}
public async Task<List<Menu>> GetMenusByParentId(string parentId)
{
Expression<Func<Menu, bool>> exp = filter => filter.IsDelete == false && filter.ParentId == parentId;
return (await base.GetListWithExp(exp)).OrderBy(x => x.Sort).ToList();
}
public async Task<ApiResult> AddMenu(AddMenuDto menu)
{
var entity = menu.Adapt<Menu>();
await base.CreateAsync(entity);
return new ApiResult();
}
public async Task<ApiResult> UpdateMenu(UpdateMenuDto menu)
{
var entity = menu.Adapt<Menu>();
await base.UpdateAsync(entity.Id, entity);
return new ApiResult();
}
}
}

View File

@ -0,0 +1,64 @@
using langguanApi.Extensions.AutoDI;
using langguanApi.Model;
using langguanApi.Model.Entity;
using System.Linq.Expressions;
namespace langguanApi.Service
{
[ServiceInjection(InjectionType.Transient)]
public class RoleMenuServie : BaseService<RoleMenu>
{
public RoleMenuServie(IConfiguration config) : base(config, nameof(RoleMenu))
{
}
/// <summary>
/// 根据角色ID获取角色菜单
/// </summary>
/// <param name="roleId"></param>
/// <returns></returns>
public async Task<List<RoleMenu>> GetByRoleId(string roleId)
{
Expression<Func<RoleMenu, bool>> exp = filter => filter.IsDelete == false && filter.RoleId == roleId;
return (await base.GetListWithExp(exp)).ToList();
}
/// <summary>
/// 表中添加角色菜单
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<ApiResult> AddRoleMenu(AddRoleMenuDTO input)
{
foreach (var item in input.MenuIds)
{
await base.CreateAsync(new RoleMenu()
{
RoleId = input.RoleId,
MenuId = item
});
}
return new ApiResult() { code = 0 };
}
public async Task<ApiResult> DeleteRoleMenu(string roleId)
{
return null;
}
/// <summary>
/// 更新角色菜单
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<ApiResult> UpdateRoleMenu(UpdateRoleMenuDTO input)
{
await base.BatchRemoveAsync(filter => filter.RoleId == input.RoleId);
foreach (var item in input.MenuIds)
{
await base.CreateAsync(new RoleMenu()
{
RoleId = input.RoleId,
MenuId = item
});
}
return new ApiResult() { code = 0 };
}
}
}

View File

@ -1,20 +1,103 @@
using langguanApi.Extensions.AutoDI;
using langguanApi.Extensions;
using langguanApi.Extensions.AutoDI;
using langguanApi.Model.Dto.SystemConfigurationDto;
using langguanApi.Model;
using langguanApi.Model.Entity;
using langguanApi.Model.SystemConfigurationEntity;
using StackExchange.Redis;
using Mapster;
using NPOI.SS.Formula.Functions;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System;
using System.Collections.Generic;
namespace langguanApi.Service
{
[ServiceInjection(InjectionType.Transient)]
public class RoleService : BaseService<Model.SystemConfigurationEntity.UserRole>
public class RoleService : BaseService<Role>
{
public RoleService(IConfiguration config) : base(config, nameof(Role))
private readonly RoleMenuServie _roleMenuServie;
public RoleService(IConfiguration config, RoleMenuServie roleMenuServie) : base(config, nameof(Role))
{
_roleMenuServie = roleMenuServie;
}
/// <summary>
/// 新增角色
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
public async Task<ApiResult> Add(AddRoleDto role)
{
if (await base.Exist(filter => filter.RoleName == role.RoleName))
{
return new ApiResult() { code = 1, msg = "角色名称已存在" };
}
var entity = role.Adapt<Role>();
await base.CreateAsync(entity);
return new ApiResult() { code = 0 };
}
/// <summary>
/// 获取角色及菜单
/// </summary>
/// <param name="roleId"></param>
/// <returns></returns>
public async Task<ApiResult> GetRoleAndMenu(string roleId)
{
var role = await base.GetAsync(roleId);
if (role != null)
{
var menus = await _roleMenuServie.GetByRoleId(roleId);
return new ApiResult() { code = 0, data = new { role, menus } };
}
return new ApiResult() { code = 0 };
}
/// <summary>
/// 删除角色
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public async Task<ApiResult> Remove(IEnumerable<string> ids)
{
if (ids.Any())
{
foreach (var item in ids)
{
await base.RemoveAsync(item);
}
}
return new ApiResult() { code = 0 };
}
/// <summary>
/// 更新角色
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
public async Task<ApiResult> update(UpdateRoleDto role)
{
var entity = role.Adapt<Role>();
await base.UpdateAsync(entity.Id, entity);
return new ApiResult() { code = 0 };
}
/// <summary>
/// 分页取数据
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<object> GetPage(reqpage input)
{
Expression<Func<Role, bool>> exp = filter => filter.IsDelete == false;
if (!string.IsNullOrEmpty(input.key))
{
exp = exp.And(filter => filter.RoleName.Contains(input.key));
}
return await base.GetPager(new ReqPaing()
{
pageSize = input.pageSize,
current = input.current
}, exp);
}
/// <summary>
/// 用户是否存在
/// </summary>
@ -26,7 +109,6 @@ namespace langguanApi.Service
Expression<Func<UserRole, bool>> exp = filter => filter.RoleName == entity.RoleName;
return await base.Exist(exp);
}
/// <summary>
/// 新加角色
/// </summary>
@ -57,7 +139,5 @@ namespace langguanApi.Service
var list = (await base.GetListWithExp(exp)).ToList();
return list;
}
}
}

View File

@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<Nullable>disable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>