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<SysUser>()
|
.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<SysUser> { 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<SysUser>()
|
.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;
|
}
|
}
|