using System.Data; using System.Text; using MES.Service.DB; using MES.Service.Modes; namespace MES.Service.service; public class LoginService { public static OracleSQLHelper SQLHelper = new(); public DataTable login(string name, string pwd) { using var db = SqlSugarHelper.GetInstance(); var user = db.Queryable() .Where(u => u.Fcode == name) .First(); if (user == null) throw new Exception("用户不存在"); var db_password = ProPass(user.Fpassword); if (!pwd.Equals(db_password)) throw new Exception("用户名或者密码错误"); // 转换为DataTable以保持兼容性 var userList = new List { user }; var dataTable = new DataTable(); // 添加需要的列 dataTable.Columns.Add("FID", typeof(string)); dataTable.Columns.Add("FCODE", typeof(string)); dataTable.Columns.Add("FNAME", typeof(string)); dataTable.Columns.Add("FPASSWORD", typeof(string)); dataTable.Columns.Add("DEPARTMENTID", typeof(string)); dataTable.Columns.Add("FACTORY", typeof(string)); dataTable.Columns.Add("FCOMPANY", typeof(string)); var row = dataTable.NewRow(); row["FID"] = user.Fid; row["FCODE"] = user.Fcode; row["FNAME"] = user.Fname; row["FPASSWORD"] = user.Fpassword; row["DEPARTMENTID"] = user.Departmentid; row["FACTORY"] = user.Factory; row["FCOMPANY"] = user.Fcompany; dataTable.Rows.Add(row); return dataTable; } public DataTable getUserMenu(string name) { using var db = SqlSugarHelper.GetInstance(); DataTable dataTable; if ("PL017".Equals(name)) { var sql = "select PAGE_VIEW,PATH,ICOIMG from MES_SYS_PAGEVIEW"; dataTable = db.Ado.GetDataTable(sql); } else { var sql = @"select PAGE_VIEW,PATH,ICOIMG from (select PAGE_VIEW,PATH,ICOIMG from MES_SYS_GUP_USER a join MES_SYS_PAGEVIEW b on a.PAGEID = b.ID join SYS_USER_ROLE c on to_char(c.ROLEID) = a.ROLEID where USERID = (select fid from SYS_USER where FCODE = @name) union all select PAGE_VIEW,PATH,ICOIMG from MES_SYS_GUP_USER a join MES_SYS_PAGEVIEW b on a.PAGEID = b.ID where a.ROLEID = (select FCODE from SYS_USER where FCODE = @name)) group by PATH, PAGE_VIEW, ICOIMG"; dataTable = db.Ado.GetDataTable(sql, new { name = name }); } return dataTable; } public int resetPassword(string newPwd, string name, string pwd) { login(name, pwd); var passwordHash = encryptPass(newPwd); using var db = SqlSugarHelper.GetInstance(); return db.Updateable() .SetColumns(u => u.Fpassword == passwordHash) .Where(u => u.Fcode == name) .ExecuteCommand(); } private string encryptPass(string str) { var b = Encoding.GetEncoding("iso-8859-1").GetBytes(str); var temp = (byte[])b.Clone(); for (var i = 0; i < b.Length; i++) temp[i] = (byte)(b[i] ^ (8 + 18)); var result = 8 + Encoding.GetEncoding("iso-8859-1").GetString(temp); return result; } private string ProPass(string src) { var result = ""; var first = int.Parse(src.Substring(0, 1)); var src_tem = src.Substring(1); var b = Encoding.GetEncoding("iso-8859-1") .GetBytes(src_tem); var temp = (byte[])b.Clone(); for (var i = 0; i < b.Length; i++) temp[i] = (byte)(temp[i] ^ (first + 18)); result = Encoding.GetEncoding("iso-8859-1") .GetString(temp); return result; } }