zjh
7 天以前 f9ce79d464e7ba8dd09a7b37bc022ab442d3594f
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
124
125
126
127
128
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);
        //}
 
 
 
        if ("PL017".Equals(name))
        {
            // 超级管理员查询全部菜单,并按 SORT_NO 排序
            sql = @"
            select PAGE_VIEW, PATH, ICOIMG, SORT_NO 
            from MES_SYS_PAGEVIEW
            order by SORT_NO asc";
        }
        else
        {
            // 普通用户的权限查询
            sql = string.Format(@"
            select PAGE_VIEW, PATH, ICOIMG, SORT_NO
            from (
                    select PAGE_VIEW, PATH, ICOIMG, SORT_NO
                    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, SORT_NO
                    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 PAGE_VIEW, PATH, ICOIMG, SORT_NO
            order by SORT_NO asc", 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;
    }
}