242 lines
7.3 KiB
C#
242 lines
7.3 KiB
C#
using CommonEntity;
|
|
using IotManager.Common;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using MySQLAccess.PGModels;
|
|
using NPOI.OpenXmlFormats.Spreadsheet;
|
|
using NuGet.Protocol.Plugins;
|
|
using ViewModels;
|
|
|
|
namespace IotManager.Controllers
|
|
{
|
|
[Route("api/[controller]/[action]")]
|
|
[ApiController]
|
|
public class RolesController : ControllerBase
|
|
{
|
|
public PostgresContext q { get; set; }
|
|
public RolesController(PostgresContext dbcontext)
|
|
{
|
|
q = dbcontext;
|
|
}
|
|
public class DelData
|
|
{
|
|
public int Id { get; set; }
|
|
}
|
|
/// <summary>
|
|
/// 删除角色
|
|
/// </summary>
|
|
/// <param name="LLL"></param>
|
|
/// <returns></returns>
|
|
[HttpPost()]
|
|
[Authorize()]
|
|
public ReturnInfo DelRole([FromBody] DelData LLL)
|
|
{
|
|
ReturnInfo returnInfo = new();
|
|
if (LLL.Id == 1)
|
|
{
|
|
returnInfo.isok = false;
|
|
returnInfo.message = "超级管理员不可删除!";
|
|
return returnInfo;
|
|
}
|
|
try
|
|
{
|
|
var FFF = q.Roleinfos.FirstOrDefault(A => A.Id == LLL.Id);
|
|
if (FFF != null)
|
|
{
|
|
FFF.IsDelete = true;
|
|
q.Roleinfos.Update(FFF);
|
|
q.SaveChanges();
|
|
returnInfo.isok = true;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
returnInfo.isok = false;
|
|
returnInfo.message = ex.Message;
|
|
}
|
|
return returnInfo;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改角色
|
|
/// </summary>
|
|
/// <param name="LLL"></param>
|
|
/// <returns></returns>
|
|
[HttpPost()]
|
|
[Authorize()]
|
|
public ReturnInfo EditRole([FromBody] ReturnRole LLL)
|
|
{
|
|
ReturnInfo returnInfo = new ReturnInfo();
|
|
|
|
try
|
|
{
|
|
//using (var q = new IotServerContext())
|
|
//{
|
|
var lll = q.Roleinfos.SingleOrDefault(A => A.Id == LLL.Id);
|
|
if (lll != null)
|
|
{
|
|
|
|
lll.Permission = LLL.Permission;
|
|
lll.DeviceLicense = LLL.DeviceLicense;
|
|
lll.UpdateTime = DateTime.Now;
|
|
|
|
|
|
q.Roleinfos.Update(lll);
|
|
q.SaveChanges();
|
|
returnInfo.isok = true;
|
|
}
|
|
//}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
returnInfo.isok = false;
|
|
returnInfo.message = ex.Message;
|
|
}
|
|
return returnInfo;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取角色信息
|
|
/// </summary>
|
|
/// <param name="S"></param>
|
|
/// <returns></returns>
|
|
[HttpPost()]
|
|
[Authorize()]
|
|
public ReturnInfo GetRoleInfo([FromBody] QueryAll_Or_Single S)
|
|
{
|
|
ReturnInfo returnInfo = new ReturnInfo();
|
|
|
|
try
|
|
{
|
|
if (S.IsAll)
|
|
{
|
|
returnInfo.isok = true;
|
|
returnInfo.response = q.Roleinfos.Where(A => A.IsDelete == false).Select(F => new ReturnRole
|
|
{
|
|
Id = F.Id,
|
|
Rolename = F.Rolename,
|
|
Permission = F.Permission,
|
|
DeviceLicense = F.DeviceLicense,
|
|
|
|
}).ToList();
|
|
}
|
|
else
|
|
{
|
|
//机型有哪些功能
|
|
var query = from mt in q.MachineTypes
|
|
join df in q.MachineTypeFuns on mt.Id equals df.MachineTypeId into dfGroup
|
|
|
|
from df in dfGroup.DefaultIfEmpty()
|
|
//机型功能和 角色联动
|
|
join rfm in q.RoleFunMappings on df.Id equals rfm.DeviceFunId into rfmGroup
|
|
|
|
from rfm in rfmGroup.DefaultIfEmpty()
|
|
join ri in q.Roleinfos on rfm.RoleId equals ri.Id into riGroup
|
|
|
|
from ri in riGroup.DefaultIfEmpty()
|
|
where ri.Id == S.ID
|
|
select new
|
|
{
|
|
MachineType = mt.Id, //机型
|
|
MachineFun = df.FunctionName, //功能
|
|
RoleName = ri.Rolename,
|
|
Id = ri.Id,
|
|
};
|
|
returnInfo.isok = true;
|
|
//var a = q.Roleinfos.SingleOrDefault(A => A.Id == S.ID);
|
|
var a = query.FirstOrDefault();
|
|
if (a != null)
|
|
{
|
|
//ReturnRole u = new ReturnRole();
|
|
//u.Id = a.Id;
|
|
//u.Rolename = a.Rolename;
|
|
//u.Permission = a.Permission;
|
|
returnInfo.response = a;
|
|
}
|
|
}
|
|
//}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
returnInfo.isok = false;
|
|
returnInfo.message = ex.Message;
|
|
}
|
|
return returnInfo;
|
|
}
|
|
|
|
[HttpGet()]
|
|
public object TTT( )
|
|
{
|
|
return null;
|
|
}
|
|
/// <summary>
|
|
/// 新增角色
|
|
/// </summary>
|
|
/// <param name="LLL"></param>
|
|
/// <returns></returns>
|
|
[HttpPost()]
|
|
//[Authorize()]
|
|
public ReturnInfo AddRole([FromBody] ReturnRole LLL)
|
|
{
|
|
ReturnInfo returnInfo = new ReturnInfo();
|
|
try
|
|
{
|
|
|
|
Roleinfo lll = new Roleinfo();
|
|
|
|
string Rolename = LLL.Rolename;
|
|
|
|
lll.Rolename = Rolename;
|
|
|
|
lll.IsDelete = false;
|
|
lll.Permission = LLL.Permission;
|
|
lll.DeviceLicense = LLL.DeviceLicense;
|
|
|
|
lll.CreateTime = DateTime.Now;
|
|
lll.UpdateTime = DateTime.Now;
|
|
|
|
//using (var q = new IotServerContext())
|
|
//{
|
|
var Q = q.Roleinfos.Where(A => A.Rolename.Equals(Rolename));
|
|
if (Q.Count() > 0)
|
|
{
|
|
returnInfo.isok = false;
|
|
returnInfo.message = "此角色名已经存在";
|
|
}
|
|
else
|
|
{
|
|
q.Roleinfos.Add(lll);
|
|
returnInfo.isok = true;
|
|
}
|
|
q.SaveChanges();
|
|
//}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
returnInfo.isok = false;
|
|
returnInfo.message = ex.Message;
|
|
}
|
|
return returnInfo;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 返回角色信息
|
|
/// </summary>
|
|
public class ReturnRole
|
|
{
|
|
/// <summary>
|
|
/// 主键
|
|
/// </summary>
|
|
public int Id { get; set; } = 0;
|
|
|
|
public string? Rolename { get; set; }
|
|
|
|
public string? Permission { get; set; }
|
|
|
|
public string? DeviceLicense { get; set; }
|
|
}
|
|
|
|
}
|