using System.Data; using System.Text; using MES.Service.DB; namespace MES.Service.service; public class LoginService { public static OracleSQLHelper SQLHelper = new(); public DataTable login(string name, string pwd) { var sql = string.Format(@"select A.*,B.ROLEIDS from SYS_USER A left join ( SELECT LISTAGG(ROLEID, ',') WITHIN GROUP (ORDER BY ROLEID) AS ROLEIDS,userid FROM SYS_USER_ROLE GROUP BY userid )B on b.USERID=a.FID where upper(FCODE)=upper('{0}')", name); var dataTable = SQLHelper.ExecuteQuery(sql); if (dataTable.Rows.Count <= 0) throw new Exception("用户不存在"); var row = dataTable.Rows[0]; var db_password = row["FPASSWORD"].ToString(); db_password = ProPass(db_password); if (!pwd.Equals(db_password)) throw new Exception("用户名或者密码错误"); return dataTable; } public DataTable getUserMenu(string name) { var sql = ""; if ("PL017".Equals(name)) sql = "select PAGE_VIEW,PATH,ICOIMG from MES_SYS_PAGEVIEW"; else sql = string.Format(@"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 = '{0}') 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 = '{0}')) group by PATH, PAGE_VIEW, ICOIMG", name); return SQLHelper.ExecuteQuery(sql); } public int resetPassword(string newPwd, string name, string pwd) { login(name, pwd); var passwordHash = encryptPass(newPwd); var sql = string.Format( @"update SYS_USER set FPASSWORD = '{0}' where FCODE = '{1}'", passwordHash, name); return SQLHelper.ExecuteNonQuery(sql); } 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; } }