using Elight.Entity; using Elight.Logic; using Elight.Logic.SystemModel; using Elight.Utility; using Elight.Utility.Code; using Elight.Utility.Encrypt; using Elight.Utility.Extensions; using Elight.Utility.logs; using java.security; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.IdentityModel.Tokens; using Newtonsoft.Json; using SqlSugar; using System.IdentityModel.Tokens.Jwt; using System.Runtime.Serialization; using System.Security.Claims; using System.Text; namespace _24Hour.Controllers { /// /// 登录 /// [HiddenApi] [ApiController] [Route("api/APP")] public class LoginController : ControllerBase { private readonly IConfiguration _configuration; private readonly SqlSugarClient _db;//数据库 private readonly WriteSysLog _logs;//操作日志 private readonly ILogger _logger;//日志 Result ret = new Result(); public LoginController(ILogger logger, SqlSugarClient db, IConfiguration configuration) { _logger = logger; _db = db; _configuration = configuration; } /// /// 系统登录 /// /// /// [HttpPost] [Route("SystemLogin")] public async Task SystemLogin(UserLogin login) { try { var Passmd5 = Md5.Encrypt32(login.Password).ToLower(); var date = await _db.Queryable().Where(q => q.IsDeleted == 0&&q.usertype==0 && q.isdeactivate == 0 && q.phone == login.phone).FirstAsync(); if (date != null) { if (Passmd5 != date.Password) { ret.IsSucceed = false; ret.Message = "账号或者密码错误!"; return ret; } //else if (date.usertype == 1 && date.audit == null) //{ // ret.IsSucceed = false; // ret.Message = "账号审核中!"; // return ret; //} //else if (date.usertype == 1 && date.audit == 1) //{ // ret.IsSucceed = false; // ret.Message = $"账号审核未通过,原因:{date.describe}!"; // return ret; //} //else if (date.usertype == 0 && date.becurrent == 0) //{ // ret.IsSucceed = false; // ret.Message = $"账号无法登录,请联系管理员!"; // return ret; //} #region jwt生成token var tokenHandler = new JwtSecurityTokenHandler(); var claims = new Claim[] { new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)), }; var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JwtConfiguration:Jwtkey").Value)); var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //Token var jwttoken = new JwtSecurityToken( issuer: _configuration.GetSection("JwtConfiguration:Issuer").Value, audience: _configuration.GetSection("JwtConfiguration:Audience").Value, claims: claims, notBefore: DateTime.Now, expires: DateTime.Now.AddDays(1), signingCredentials: signingCredentials ); //var token = new JwtSecurityTokenHandler().CreateToken(jwttoken); var tokenString = new JwtSecurityTokenHandler().WriteToken(jwttoken); ret.result = new { Id = date.Id, name = date.name, sex = date.sex, phone = date.phone, photo = date.photo, duties = date.duties, identity = date.identity, unitCode = "", department = "", token = tokenString }; #endregion ret.IsSucceed = true; } else { ret.IsSucceed = false; ret.Message = "账号不存在!"; } } catch (Exception ex) { ret.IsSucceed = false; ret.Message = $"{ex.Message}"; LogService.WriteLog(ex, "登录"); } return ret; } /// /// app--登录 /// /// /// [HttpPost] [Route("Login")] public async Task Login(UserLogin login) { try { var Passmd5 = Md5.Encrypt32(login.Password).ToLower(); var date = await _db.Queryable().Where(q => q.IsDeleted == 0 && q.isdeactivate == 0 && q.phone == login.phone).FirstAsync(); if (date != null) { if (Passmd5 != date.Password) { ret.IsSucceed = false; ret.Message = "账号或者密码错误!"; return ret; } //else if (date.usertype == 1 && date.audit == null) //{ // ret.IsSucceed = false; // ret.Message = "账号审核中!"; // return ret; //} //else if (date.usertype == 1 && date.audit == 1) //{ // ret.IsSucceed = false; // ret.Message = $"账号审核未通过,原因:{date.describe}!"; // return ret; //} else if (date.usertype == 0 && date.becurrent == 1) { ret.IsSucceed = false; ret.Message = $"账号未授权无法登录,请联系管理员!"; return ret; } #region jwt生成token var tokenHandler = new JwtSecurityTokenHandler(); var claims = new Claim[] { new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)), }; var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JwtConfiguration:Jwtkey").Value)); var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //Token var jwttoken = new JwtSecurityToken( issuer: _configuration.GetSection("JwtConfiguration:Issuer").Value, audience: _configuration.GetSection("JwtConfiguration:Audience").Value, claims: claims, notBefore: DateTime.Now, expires: DateTime.Now.AddDays(1), signingCredentials: signingCredentials ); //var token = new JwtSecurityTokenHandler().CreateToken(jwttoken); var tokenString = new JwtSecurityTokenHandler().WriteToken(jwttoken); ret.result = new { Id = date.Id, name = date.name, sex = date.sex, phone = date.phone, photo = date.photo, duties = date.duties, identity=date.identity, unitCode = "", department = "", token = tokenString }; #endregion ret.IsSucceed = true; } else { ret.IsSucceed = false; ret.Message = "账号不存在!"; } } catch (Exception ex) { ret.IsSucceed = false; ret.Message = $"{ex.Message}"; LogService.WriteLog(ex, "登录"); } return ret; } /// /// 微信授权登录 /// /// /// [HttpGet] [Route("WeChatLogin")] public async Task WeChatLogin(string openId) { var date = await _db.Queryable().Where(q => q.IsDeleted == 0 && q.isdeactivate == 0 && q.wechatId == openId).FirstAsync(); if (date != null) { //if (date.usertype == 1 && date.audit == null) //{ // ret.IsSucceed = false; // ret.Message = "账号审核中!"; // return ret; //} //else if (date.usertype == 1 && date.audit == 1) //{ // ret.IsSucceed = false; // ret.Message = $"账号审核未通过,原因:{date.describe}!"; // return ret; //} //else if (date.usertype == 0 && date.becurrent == 1) { ret.IsSucceed = false; ret.Message = $"账号未授权无法登录,请联系管理员!"; return ret; } #region jwt生成token var tokenHandler = new JwtSecurityTokenHandler(); var claims = new Claim[] { new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)), }; var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JwtConfiguration:Jwtkey").Value)); var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //Token var jwttoken = new JwtSecurityToken( issuer: _configuration.GetSection("JwtConfiguration:Issuer").Value, audience: _configuration.GetSection("JwtConfiguration:Audience").Value, claims: claims, notBefore: DateTime.Now, expires: DateTime.Now.AddDays(1), signingCredentials: signingCredentials ); //var token = new JwtSecurityTokenHandler().CreateToken(jwttoken); var tokenString = new JwtSecurityTokenHandler().WriteToken(jwttoken); ret.result = new { Id = date.Id, name = date.name, sex = date.sex, phone = date.phone, photo = date.photo, duties = date.duties, identity = date.identity, token = tokenString }; #endregion ret.IsSucceed = true; } else { ret.IsSucceed = false; ret.Message = "微信未授权!"; } return ret; } /// /// APP添加用户 /// /// /// [HttpPost] [Route("AddUser1")] public async Task AddUser1(App_Sys_UserModel UserModel) { try { var data = await _db.Queryable().Where(q => q.phone == UserModel.phone).FirstAsync(); if (data != null) { ret.IsSucceed = false; ret.Message = "电话号码已存在!"; return ret; } _db.BeginTran(); UserModel.Id = Guid.NewGuid().ToString(); UserModel.usertype = 1; //默认密码 UserModel.Password = Elight.Utility.Encrypt.Md5.Encrypt32($"{UserModel.Password}").ToLower(); var num = await _db.Insertable(UserModel).ExecuteCommandAsync(); _db.CommitTran(); if (num > 0) { ret.IsSucceed = true; ret.result = "添加成功"; } } catch (System.Exception ex) { _db.RollbackTran(); ret.IsSucceed = false; ret.Message = ex.Message; } return ret; } /// /// 单位list集合 /// /// /// [HttpPost] [Route("QueryUnitlist")] public async Task QueryUnitlist(App_Sys_UnitInput Unitdata) { var list = await _db.Queryable() .WhereIF(!Unitdata.unitCode.IsNull(), q => q.unitCode.Contains(Unitdata.unitCode)) .WhereIF(!Unitdata.unitname.IsNull(), q => q.unitname.Contains(Unitdata.unitname)) .WhereIF(!Unitdata.unitjc.IsNull(), q => q.unitjc.Contains(Unitdata.unitjc)) .Where(q => q.IsDelete == 0).ToListAsync(); ret.IsSucceed = true; ret.result = list; return ret; } /// /// 获取设备视频流地址 /// /// /// [HttpGet] [Route("getrtsp")] public async Task getrtsp() { ret.IsSucceed = true; ret.result = $"{_configuration.GetSection("Videoaddress:rtsp").Value}"; return ret; } [HttpGet] [Route("cardIdLogin")] public async Task cardIdLogin(string cardId) { var date = await _db.Queryable().Where(q => q.IsDeleted == 0 && q.isdeactivate == 0 && q.cardId == cardId).FirstAsync(); if (date != null) { //if (date.usertype == 1 && date.audit == null) // { // ret.IsSucceed = false; // ret.Message = "用户审核中!"; // return ret; // } // else if (date.usertype == 1 && date.audit == 1) // { // ret.IsSucceed = false; // ret.Message = $"用户审核未通过,原因:{date.describe}!"; // return ret; // } // else if (date.usertype == 0 && date.becurrent == 1) { ret.IsSucceed = false; ret.Message = $"用户未授权无法登录,请联系管理员!"; return ret; } #region jwt生成token var tokenHandler = new JwtSecurityTokenHandler(); var claims = new Claim[] { new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)), }; var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JwtConfiguration:Jwtkey").Value)); var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //Token var jwttoken = new JwtSecurityToken( issuer: _configuration.GetSection("JwtConfiguration:Issuer").Value, audience: _configuration.GetSection("JwtConfiguration:Audience").Value, claims: claims, notBefore: DateTime.Now, expires: DateTime.Now.AddDays(1), signingCredentials: signingCredentials ); //var token = new JwtSecurityTokenHandler().CreateToken(jwttoken); var tokenString = new JwtSecurityTokenHandler().WriteToken(jwttoken); ret.result = new { Id = date.Id, name = date.name, sex = date.sex, phone = date.phone, photo = date.photo, duties = date.duties, identity = date.identity, token = tokenString }; #endregion ret.IsSucceed = true; } else { ret.IsSucceed = false; ret.Message = "用户未注册!"; } return ret; } } public class UserLogin { [DataMember] public string phone { get; set; } /// /// 登录密码 /// [DataMember] public string Password { get; set; } } }