Files
Web_IoTBase_Sever_Prod/BooliveMQTT_Auth/Controllers/UsersController.cs

345 lines
10 KiB
C#
Raw Normal View History

2025-12-11 14:04:39 +08:00
using CommonEntity;
using IotManager.Common;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using MySQLAccess.PGModels;
using ViewModels;
namespace IotManager.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class UsersController : ControllerBase
{
public PostgresContext q { get; set; }
public UsersController(PostgresContext dbcontext)
{
q = dbcontext;
}
public class DelData
{
public int Id { get; set; }
}
/// <summary>
/// 删除用户
/// </summary>
/// <param name="LLL"></param>
/// <returns></returns>
[HttpPost()]
[Authorize()]
public ReturnInfo DelUser([FromBody] DelData LLL)
{
ReturnInfo returnInfo = new();
if (LLL.Id == 2 || LLL.Id == 1)
{
returnInfo.isok = false;
returnInfo.message = "超级管理员不可删除!";
return returnInfo;
}
try
{
var FFF = q.Userinfos.FirstOrDefault(A => A.Id == LLL.Id);
if (FFF != null)
{
FFF.IsDelete = true;
q.Userinfos.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 EditUser([FromBody] ReturnUser LLL)
{
ReturnInfo returnInfo = new ReturnInfo();
try
{
//using (var q = new IotServerContext())
//{
var lll = q.Userinfos.SingleOrDefault(A => A.Id == LLL.Id);
if (lll != null)
{
string username = LLL.Username;
string? companyName = LLL.CompanyName;
string mobile = LLL.Mobile;
lll.Permission = LLL.Permission;
lll.RealName = LLL.Realname;
lll.UserName = username;
lll.CompanyName = companyName;
lll.Mobile = mobile;
lll.UpdateTime = DateTime.Now;
lll.RoleId = LLL.RoleId;
string PPP = LLL.Password.Trim();
if (!string.IsNullOrWhiteSpace(PPP))
{
lll.PassWord = JiaJieMi.HashPassword(PPP);
lll.PswEncryption = JiaJieMi.EncryptString(PPP);
}
q.Userinfos.Update(lll);
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 ModifyPassWord([FromBody] PWD_Reset LLL)
{
ReturnInfo returnInfo = new ReturnInfo();
try
{
//using (var q = new IotServerContext())
//{
var QQQ = q.Userinfos.SingleOrDefault(A => A.Id == LLL.Id);
if (QQQ != null)
{
QQQ.PassWord = JiaJieMi.HashPassword(LLL.PlaintextPwd);
QQQ.PswEncryption = JiaJieMi.EncryptString(LLL.PlaintextPwd);
q.Userinfos.Update(QQQ);
q.SaveChanges();
returnInfo.isok = true;
}
//}
}
catch (Exception ex)
{
returnInfo.isok = false;
returnInfo.message = ex.Message;
}
return returnInfo;
}
/// <summary>
/// 新增密码为123456
/// </summary>
/// <param name="LLL"></param>
/// <returns></returns>
[HttpPost()]
[Authorize()]
public ReturnInfo ResetPassWord([FromBody] PWD_Reset LLL)
{
ReturnInfo returnInfo = new ReturnInfo();
try
{
//using (var q = new IotServerContext())
//{
var Q = q.Userinfos.SingleOrDefault(A => A.Id == LLL.Id);
if (Q != null)
{
Q.PassWord = JiaJieMi.HashPassword("123456");
Q.PswEncryption = JiaJieMi.EncryptString("123456");
q.Userinfos.Update(Q);
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 GetUserInfo([FromBody] QueryAll_Or_Single S)
{
ReturnInfo returnInfo = new ReturnInfo();
try
{
//using (var q = new IotServerContext())
//{
if (S.IsAll)
{
returnInfo.isok = true;
returnInfo.response = q.Userinfos.Where(A => A.IsDelete == false).Select(F => new ReturnUser
{
Id = F.Id,
Username = F.UserName,
Realname = F.RealName,
CompanyName = F.CompanyName,
Mobile = F.Mobile,
Permission = F.Permission,
RoleId = F.RoleId
}).ToList();
}
else
{
returnInfo.isok = true;
var a = q.Userinfos.SingleOrDefault(A => A.Id == S.ID);
if (a != null)
{
ReturnUser u = new ReturnUser();
u.Id = a.Id;
u.Username = a.UserName;
u.Realname = a.RealName;
u.CompanyName = a.CompanyName;
u.Mobile = a.Mobile;
u.Permission = a.Permission;
u.RoleId = a.RoleId;
returnInfo.response = u;
}
}
//}
}
catch (Exception ex)
{
returnInfo.isok = false;
returnInfo.message = ex.Message;
}
return returnInfo;
}
/// <summary>
/// 新增用户
/// </summary>
/// <param name="LLL"></param>
/// <returns></returns>
[HttpPost()]
//[Authorize()]
public ReturnInfo AddUser([FromBody] ReturnUser LLL)
{
ReturnInfo returnInfo = new ReturnInfo();
try
{
Userinfo lll = new Userinfo();
string username = LLL.Username;
string mobile = LLL.Mobile;
lll.UserName = username;
lll.RealName = LLL.Realname;
lll.CompanyName = LLL.CompanyName;
lll.Mobile = mobile;
lll.IsDelete = false;
lll.Permission = LLL.Permission;
lll.RoleId = LLL.RoleId;
lll.CreateTime = DateTime.Now;
lll.UpdateTime = DateTime.Now;
//using (var q = new IotServerContext())
//{
var Q = q.Userinfos.Where(A => A.UserName.Equals(username));
if (Q.Count() > 0)
{
returnInfo.isok = false;
returnInfo.message = "此用户名已经存在";
}
else
{
//lll.Password = Tools.HashPassword("123456");
//lll.PswEncryption = Tools.EncryptString("123456");
lll.PassWord = JiaJieMi.HashPassword(LLL.Password.Trim());
lll.PswEncryption = JiaJieMi.EncryptString(LLL.Password.Trim());
q.Userinfos.Add(lll);
returnInfo.isok = true;
}
q.SaveChanges();
//}
}
catch (Exception ex)
{
returnInfo.isok = false;
returnInfo.message = ex.Message;
}
return returnInfo;
}
}
/// <summary>
/// 返回用户信息
/// </summary>
public class ReturnUser
{
/// <summary>
/// 主键
/// </summary>
public int Id { get; set; } = 0;
public string? Permission { get; set; }
/// <summary>
/// 用户名(登录名)
/// </summary>
public string? Username { get; set; }
/// <summary>
/// 真实姓名
/// </summary>
public string? Realname { get; set; }
/// <summary>
/// 所属公司ID
/// </summary>
public string? CompanyName { get; set; }
/// <summary>
/// 密码
/// </summary>
public string Password { get; set; } = "";
/// <summary>
/// 密码加密处理
/// </summary>
public string PswEncryption { get; set; } = "";
/// <summary>
/// 电话号码
/// </summary>
public string? Mobile { get; set; }
/// <summary>
/// 角色ID
/// </summary>
public int? RoleId { get; set; }
}
public class PWD_Reset
{
public int Id { get; set; }
public string PlaintextPwd { get; set; }
}
}