Files
2025-12-11 14:04:39 +08:00

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; }
}
}