kyy
2025-08-29 bdfcb2760a617d0fb95ee934696a3dde477d7e68
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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;
    }
}