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; } } /// /// 删除用户 /// /// /// [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; } /// /// 修改用户 /// /// /// [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; } /// /// 重置密码 /// /// /// [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; } /// /// 新增密码为123456 /// /// /// [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; } /// /// 获取用户信息 /// /// /// [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; } /// /// 新增用户 /// /// /// [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; } } /// /// 返回用户信息 /// public class ReturnUser { /// /// 主键 /// public int Id { get; set; } = 0; public string? Permission { get; set; } /// /// 用户名(登录名) /// public string? Username { get; set; } /// /// 真实姓名 /// public string? Realname { get; set; } /// /// 所属公司ID /// public string? CompanyName { get; set; } /// /// 密码 /// public string Password { get; set; } = ""; /// /// 密码加密处理 /// public string PswEncryption { get; set; } = ""; /// /// 电话号码 /// public string? Mobile { get; set; } /// /// 角色ID /// public int? RoleId { get; set; } } public class PWD_Reset { public int Id { get; set; } public string PlaintextPwd { get; set; } } }