You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
312 lines
14 KiB
C#
312 lines
14 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Configuration;
|
|
using System.Data;
|
|
using System.Web;
|
|
using System.Web.Security;
|
|
using System.Web.UI;
|
|
using System.Web.UI.HtmlControls;
|
|
using System.Web.UI.WebControls;
|
|
using System.Web.UI.WebControls.WebParts;
|
|
using DSWeb.Models;
|
|
using DSWeb.EntityDA;
|
|
using System.Text;
|
|
using System.Data.SqlClient;
|
|
using System.Collections.Generic;
|
|
|
|
namespace DSWeb.Authority
|
|
{
|
|
public partial class UserAuthorityGridSource : System.Web.UI.Page
|
|
{
|
|
private string strHandle;//操作类型
|
|
public string strUserID;//操作人GID
|
|
private string strCheckUserID;//被操作人GID
|
|
private string strAuthorityID;//权限范围GID
|
|
private int iRangeType;//范围类型 1-可视范围 2-可操作范围
|
|
private int iRangeVal;//范围值
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
if (Session["USERID"] != null)
|
|
{
|
|
strUserID = Session["USERID"].ToString();
|
|
}
|
|
|
|
if (Request.QueryString["handle"] != null)
|
|
{
|
|
strHandle = Request.QueryString["handle"].ToString().Trim().ToLower();
|
|
}
|
|
|
|
if (Request.QueryString["checkuser"] != null)
|
|
{
|
|
strCheckUserID = Request.QueryString["checkuser"].ToString().Trim();
|
|
}
|
|
|
|
if (Request.QueryString["authgid"] != null)
|
|
{
|
|
strAuthorityID = Request.QueryString["authgid"].ToString();
|
|
}
|
|
|
|
if (Request.QueryString["rtype"] != null)
|
|
{
|
|
iRangeType = int.Parse(Request.QueryString["rtype"].ToString().Trim());
|
|
}
|
|
else
|
|
{
|
|
iRangeType = -1;
|
|
}
|
|
|
|
if (Request.QueryString["rval"] != null)
|
|
{
|
|
iRangeVal = int.Parse(Request.QueryString["rval"].ToString().Trim());
|
|
}
|
|
else
|
|
{
|
|
iRangeVal = -1;
|
|
}
|
|
|
|
if (strHandle != null && strUserID != null)
|
|
{
|
|
if (strHandle == "getranges" && strCheckUserID != null)
|
|
{
|
|
if (strCheckUserID != "")
|
|
{
|
|
Response.Write(GetCheckUserAuthorityRange(strCheckUserID));
|
|
}
|
|
}
|
|
|
|
if (strHandle == "saverange" && strCheckUserID != null && iRangeType > 0 && iRangeVal >= 0 && strAuthorityID != null)
|
|
{
|
|
Response.Write(SaveCheckUserAuthorityRange(strCheckUserID, iRangeType, iRangeVal, strAuthorityID));
|
|
}
|
|
}
|
|
}
|
|
|
|
#region 保存用户权限范围设置
|
|
/// <summary>
|
|
/// 保存用户权限范围设置
|
|
/// </summary>
|
|
/// <param name="tempCheckUserID">被操作用户GID</param>
|
|
/// <param name="tempRangeType">权限类型</param>
|
|
/// <param name="tempRangeVal">权限范围值</param>
|
|
/// <param name="tempAuthorityID">权限范围GID</param>
|
|
/// <returns>返回JSON数据</returns>
|
|
private string SaveCheckUserAuthorityRange(string tempCheckUserID,int tempRangeType,int tempRangeVal,string tempAuthorityID)
|
|
{
|
|
int iResult = 0;
|
|
StringBuilder sourceBuilder = new StringBuilder();
|
|
sourceBuilder.Append("{");
|
|
sourceBuilder.Append("authority:[");
|
|
|
|
DataTable sourceTable = new DataTable();
|
|
UserAuthorityDA userAuthorityDA = new UserAuthorityDA();
|
|
iResult = userAuthorityDA.UpdateUserAuthority(strUserID, tempRangeType, tempRangeVal, tempAuthorityID, tempCheckUserID);
|
|
|
|
if (iResult == 1)
|
|
{
|
|
string strSql = "";
|
|
strSql = String.Format(" SELECT A.GID,A.DESCRIPTION,CASE WHEN ISNULL(VISIBLERANGE,4)= 0 THEN 1 ELSE 0 END as VISALL,CASE WHEN ISNULL(VISIBLERANGE,4)= 1 THEN 1 ELSE 0 END as VISCOMP,"
|
|
+ " CASE WHEN ISNULL(VISIBLERANGE,4)= 2 THEN 1 ELSE 0 END as VISDEPT,CASE WHEN ISNULL(VISIBLERANGE,4)= 3 THEN 1 ELSE 0 END as VISSELF,"
|
|
+ " CASE WHEN ISNULL(VISIBLERANGE,4)= 4 THEN 1 ELSE 0 END as VISNULL,CASE WHEN ISNULL(OPERATERANGE,4)= 0 THEN 1 ELSE 0 END as OPALL,"
|
|
+ " CASE WHEN ISNULL(OPERATERANGE,4)= 1 THEN 1 ELSE 0 END as OPCOMP,CASE WHEN ISNULL(OPERATERANGE,4)= 2 THEN 1 ELSE 0 END as OPDEPT,"
|
|
+ " CASE WHEN ISNULL(OPERATERANGE,4)= 3 THEN 1 ELSE 0 END as OPSELF,CASE WHEN ISNULL(OPERATERANGE,4)= 4 THEN 1 ELSE 0 END as OPNULL "
|
|
+ " FROM user_authority_info as A LEFT JOIN user_authority_range as B ON A.GID = B.AUTHORITYID "
|
|
+ " WHERE B.USERID = '{0}' AND ISDELETE <> 1 AND A.GID = '{1}' ORDER BY A.DESCRIPTION ", tempCheckUserID, tempAuthorityID);
|
|
|
|
sourceTable = userAuthorityDA.GetExcuteSql(strSql).Tables[0];
|
|
|
|
for (int i = 0; i < sourceTable.Rows.Count; i++)
|
|
{
|
|
if (i == 0)
|
|
{
|
|
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i]["GID"].ToString() + "\",");
|
|
}
|
|
else
|
|
{
|
|
sourceBuilder.Append(",{id:\"" + sourceTable.Rows[i]["GID"].ToString() + "\",");
|
|
}
|
|
sourceBuilder.Append("\"vall\":" + sourceTable.Rows[i]["VISALL"].ToString() + ",");
|
|
sourceBuilder.Append("\"vcomp\":" + sourceTable.Rows[i]["VISCOMP"].ToString() + ",");
|
|
sourceBuilder.Append("\"vdept\":" + sourceTable.Rows[i]["VISDEPT"].ToString() + ",");
|
|
sourceBuilder.Append("\"vself\":" + sourceTable.Rows[i]["VISSELF"].ToString() + ",");
|
|
sourceBuilder.Append("\"vnull\":" + sourceTable.Rows[i]["VISNULL"].ToString() + ",");
|
|
sourceBuilder.Append("\"oall\":" + sourceTable.Rows[i]["OPALL"].ToString() + ",");
|
|
sourceBuilder.Append("\"ocomp\":" + sourceTable.Rows[i]["OPCOMP"].ToString() + ",");
|
|
sourceBuilder.Append("\"odept\":" + sourceTable.Rows[i]["OPDEPT"].ToString() + ",");
|
|
sourceBuilder.Append("\"oself\":" + sourceTable.Rows[i]["OPSELF"].ToString() + ",");
|
|
sourceBuilder.Append("\"onull\":" + sourceTable.Rows[i]["OPNULL"].ToString() + ",");
|
|
sourceBuilder.Append("\"state\":1}");
|
|
}
|
|
|
|
|
|
//return sourceBuilder.ToString();
|
|
}
|
|
else
|
|
{
|
|
|
|
sourceBuilder.Append("{id:\"\",");
|
|
sourceBuilder.Append("\"vall\":0,");
|
|
sourceBuilder.Append("\"vcomp\":0,");
|
|
sourceBuilder.Append("\"vdept\":0,");
|
|
sourceBuilder.Append("\"vself\":0,");
|
|
sourceBuilder.Append("\"vnull\":0,");
|
|
sourceBuilder.Append("\"oall\":0,");
|
|
sourceBuilder.Append("\"ocomp\":0,");
|
|
sourceBuilder.Append("\"odept\":0,");
|
|
sourceBuilder.Append("\"oself\":0,");
|
|
sourceBuilder.Append("\"onull\":0,");
|
|
sourceBuilder.Append("\"state\":0}");
|
|
}
|
|
sourceBuilder.Append("]");
|
|
sourceBuilder.Append("}");
|
|
return sourceBuilder.ToString();
|
|
}
|
|
#endregion
|
|
|
|
#region 根据用户GID获取相应的权限范围信息
|
|
/// <summary>
|
|
/// 根据用户GID获取相应的权限范围信息
|
|
/// </summary>
|
|
/// <param name="tempCheckUserID">用户GID</param>
|
|
/// <returns>返回用户的JSON权限范围信息</returns>
|
|
private string GetCheckUserAuthorityRange(string tempCheckUserID)
|
|
{
|
|
UserAuthorityDA userAuthorityDA = new UserAuthorityDA();
|
|
DataTable sourceTable;
|
|
|
|
//string strCondition = "";
|
|
//string strTopInclude = "";
|
|
//string strTopNotInclude = "";
|
|
//if (strSearch != null)
|
|
//{
|
|
// if (!strSearch.Trim().Equals(""))
|
|
// {
|
|
// string tempSearch = strSearch;
|
|
// tempSearch = tempSearch.Replace("{", "");
|
|
// tempSearch = tempSearch.Replace("}", "");
|
|
// tempSearch = tempSearch.Replace("[", "");
|
|
// tempSearch = tempSearch.Replace("]", "");
|
|
|
|
// string[] searchArg = tempSearch.Split(new char[] { ',' });
|
|
|
|
// for (int i = 0; i < searchArg.Length; i++)
|
|
// {
|
|
// string[] strArg = searchArg[i].Split(new char[] { ':' });
|
|
|
|
// if (!strArg[1].Replace("\"", "").Trim().Equals(""))
|
|
// {
|
|
// switch (strArg[0].Replace("\"", ""))
|
|
// {
|
|
// case "btime"://Customer
|
|
// strCondition += String.Format(" AND A.APPLYTIME >= '{0} 00:00:00' ", strArg[1].Replace("\"", ""));
|
|
// break;
|
|
// case "etime"://BillNO
|
|
// strCondition += String.Format(" AND A.APPLYTIME <= '{0} 23:59:59' ", strArg[1].Replace("\"", ""));
|
|
// break;
|
|
// case "cus"://ETD BeginDate
|
|
// strCondition += String.Format(" AND A.CUSTOMERNAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
|
|
// break;
|
|
// case "no"://ETD EndDate
|
|
// strCondition += String.Format(" AND A.BILLNO LIKE '%{0}%'", strArg[1].Replace("\"", ""));
|
|
// break;
|
|
// default:
|
|
// break;
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
string strSql = "";
|
|
strSql = String.Format(" SELECT A.GID,A.DESCRIPTION,CASE WHEN ISNULL(VISIBLERANGE,4)= 0 THEN 1 ELSE 0 END as VISALL,CASE WHEN ISNULL(VISIBLERANGE,4)= 1 THEN 1 ELSE 0 END as VISCOMP,"
|
|
+ " CASE WHEN ISNULL(VISIBLERANGE,4)= 2 THEN 1 ELSE 0 END as VISDEPT,CASE WHEN ISNULL(VISIBLERANGE,4)= 3 THEN 1 ELSE 0 END as VISSELF,"
|
|
+ " CASE WHEN ISNULL(VISIBLERANGE,4)= 4 THEN 1 ELSE 0 END as VISNULL,CASE WHEN ISNULL(OPERATERANGE,4)= 0 THEN 1 ELSE 0 END as OPALL,"
|
|
+ " CASE WHEN ISNULL(OPERATERANGE,4)= 1 THEN 1 ELSE 0 END as OPCOMP,CASE WHEN ISNULL(OPERATERANGE,4)= 2 THEN 1 ELSE 0 END as OPDEPT,"
|
|
+ " CASE WHEN ISNULL(OPERATERANGE,4)= 3 THEN 1 ELSE 0 END as OPSELF,CASE WHEN ISNULL(OPERATERANGE,4)= 4 THEN 1 ELSE 0 END as OPNULL "
|
|
+ " FROM user_authority_info as A LEFT JOIN user_authority_range as B ON A.GID = B.AUTHORITYID "
|
|
+ " WHERE B.USERID = '{0}' AND ISDELETE <> 1 ORDER BY A.DESCRIPTION ", tempCheckUserID);
|
|
|
|
sourceTable = userAuthorityDA.GetExcuteSql(strSql).Tables[0];
|
|
|
|
IList<UserAuthorityEntity> userAuthorityEntities = new List<UserAuthorityEntity>();
|
|
userAuthorityEntities = userAuthorityDA.GetAllUserAuthorityInfo();
|
|
|
|
if (sourceTable.Rows.Count == 0 && userAuthorityEntities.Count > 0)
|
|
{
|
|
strSql = String.Format(" SELECT GID,DESCRIPTION,0,0,0,0,0,0,0,0,0,0 FROM user_authority_info WHERE ISDELETE <> 1");
|
|
sourceTable = userAuthorityDA.GetExcuteSql(strSql).Tables[0];
|
|
}
|
|
else if (sourceTable.Rows.Count < userAuthorityEntities.Count)
|
|
{
|
|
for (int j = 0; j < userAuthorityEntities.Count; j++)
|
|
{
|
|
int iExistCount = 0;
|
|
for (int i = 0; i < sourceTable.Rows.Count; i++)
|
|
{
|
|
if (userAuthorityEntities[j].GID == sourceTable.Rows[i]["GID"].ToString())
|
|
{
|
|
iExistCount++;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (iExistCount == 0)
|
|
{
|
|
DataRow newRow = sourceTable.NewRow();
|
|
|
|
newRow["GID"] = userAuthorityEntities[j].GID;
|
|
newRow["DESCRIPTION"] = userAuthorityEntities[j].Description;
|
|
newRow["VISALL"] = "0";
|
|
newRow["VISCOMP"] = "0";
|
|
newRow["VISDEPT"] = "0";
|
|
newRow["VISSELF"] = "0";
|
|
newRow["VISNULL"] = "0";
|
|
newRow["OPALL"] = "0";
|
|
newRow["VISALL"] = "0";
|
|
newRow["OPCOMP"] = "0";
|
|
newRow["OPDEPT"] = "0";
|
|
newRow["OPSELF"] = "0";
|
|
newRow["OPNULL"] = "0";
|
|
|
|
sourceTable.Rows.Add(newRow);
|
|
}
|
|
}
|
|
}
|
|
|
|
StringBuilder sourceBuilder = new StringBuilder();
|
|
sourceBuilder.Append("{");
|
|
sourceBuilder.Append("rows:[");
|
|
for (int i = 0; i < sourceTable.Rows.Count; i++)
|
|
{
|
|
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
|
|
sourceBuilder.Append("data:[");
|
|
//sourceBuilder.Append("\"0\",");
|
|
for (int j = 1; j < sourceTable.Columns.Count; j++)
|
|
{
|
|
if (j == sourceTable.Columns.Count - 1)
|
|
{
|
|
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
|
|
}
|
|
else
|
|
{
|
|
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
|
|
}
|
|
}
|
|
if (i == sourceTable.Rows.Count - 1)
|
|
{
|
|
sourceBuilder.Append("]}");
|
|
}
|
|
else
|
|
{
|
|
sourceBuilder.Append("]},");
|
|
}
|
|
|
|
}
|
|
sourceBuilder.Append("]");
|
|
sourceBuilder.Append("}");
|
|
|
|
return sourceBuilder.ToString();
|
|
}
|
|
#endregion
|
|
}
|
|
}
|