StandardPda/MES.Service/service/LoginService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,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;
    }
}