public string getUserRightsByUserID() { /// 查询出该用户的权限信息 string str_SQL = Common.SELECT + Common.DISTINCT + Common.ALL + Common.S_FROM + Table.VW_USERRIGHTTREE + Common.S_WHERE + Field.USERID + Common.EQUAL + General.addQuotes(this.getUserID()) + Common.S_ORDER + Field.AFFAIRTYPEID + Common.COMMA + Field.EVENTTYPEID; OleDbDataReader rst_UserRight = null; try { string strRet = CommonQuery.qryRst(str_SQL, ref rst_UserRight); if (strRet != "0") { throw new Exception("获得用户权限失败"); } string str_PreAffairTypeID = ""; string str_PreEventTypeID = ""; ReturnDoc doc_RightTree = new ReturnDoc(); XmlDocument doc_tmp = doc_RightTree.getDocument(); XmlElement ele_Root = null; XmlElement ele_Query = null; XmlElement ele_AffairType = null; /// 对结果集进行遍历,用来生成功能树 while (rst_UserRight.Read()) { /// 创建查询返回节点 if (!doc_RightTree.createQueryInfoNode()) { throw new Exception("UserCache.setUserRightsByUserID.创建查询返回节点时发生错误"); } /// if (!doc_RightTree.createQueryInfoNode()) ele_Root = ele_Root == null ? (XmlElement)doc_RightTree.getQueryInfoNode() : ele_Root; string str_AffairTypeID = rst_UserRight[Field.AFFAIRTYPEID].ToString(); string str_AffairTypeName = rst_UserRight[Field.AFFAIRTYPENAME].ToString(); string str_EventTypeID = rst_UserRight[Field.EVENTTYPEID].ToString(); string str_EventTypeName = rst_UserRight[Field.EVENTTYPENAME].ToString(); string str_OpURL = rst_UserRight[Field.OPURL].ToString(); int int_AffairTypeID = Convert.ToInt32(str_AffairTypeID); XmlElement ele_EventType = null; /// 查询事务 if (int_AffairTypeID == 4) { ele_AffairType = doc_tmp.CreateElement(Common.XDOC_OPERATION); ele_AffairType.SetAttribute(Common.XML_PROP_AFFAIRTYPEID, str_AffairTypeID); ele_AffairType.SetAttribute(Common.XML_PROP_NAME, str_AffairTypeName); ele_Query = ele_AffairType; ele_Root.AppendChild(ele_AffairType); } /// if (int_AffairTypeID==4) else { if (!str_PreAffairTypeID.EndsWith(str_AffairTypeID)) { ele_AffairType = doc_tmp.CreateElement(Table.AFFAIRTYPE); ele_AffairType.SetAttribute(Common.XML_PROP_AFFAIRTYPEID, str_AffairTypeID); ele_AffairType.SetAttribute(Common.XML_PROP_TEXT, str_AffairTypeName); str_PreAffairTypeID = str_AffairTypeID; ele_Root.AppendChild(ele_AffairType); } } /// 相同的事件类型,则不用重复创建 if (!str_PreEventTypeID.Equals(str_EventTypeID)) { ele_EventType = doc_tmp.CreateElement(Table.EVENTTYPE); ele_EventType.SetAttribute(Common.XML_PROP_EVENTTYPEID, str_EventTypeID); ele_EventType.SetAttribute(Common.XML_PROP_TEXT, str_EventTypeName); ele_EventType.SetAttribute(Common.XML_PROP_OPURL, str_OpURL); ele_AffairType.AppendChild(ele_EventType); str_PreEventTypeID = str_EventTypeID; } /// if (!str_PreEventTypeID.equals(str_EventTypeID)) } /// while (rst_UserRight.next()) /// 将查询事务节点,追加到权限功能树的最后 if (ele_Query != null) { XmlElement ele_TempQuery = (XmlElement)ele_Query.Clone(); XmlElement ele_QueryInfo = (XmlElement)doc_RightTree.getQueryInfoNode(); ele_QueryInfo.RemoveChild(ele_Query); ele_QueryInfo.AppendChild(ele_TempQuery); } /// if (ele_Query!=null) if (!doc_RightTree.addErrorResult(Common.RT_QUERY_SUCCESS)) { throw new Exception("添加函数返回结果失败"); } /// if (!doc_RightTree.addErrorResult(Common.RT_QUERY_SUCCESS)) return(doc_RightTree.getXml()); } catch (Exception e) { return(e.Message); } finally { rst_UserRight.Close(); } }
public static string getQueryXml(OleDbDataReader rst, string[] strDicFieldList, string[] strDicNameList, string[] strDateFieldList, int int_TotalRecords, int int_TotalPages, Boolean blnDicInSv, string strListName) { strListName = strListName == null ? Common.XDOC_ROW : strListName; ReturnDoc docReturn = new ReturnDoc(); try { if (docReturn.getQueryInfo(rst, strListName)) { XmlDocument doc = docReturn.getDocument(); XmlNodeList nodeList = doc.SelectNodes(Common.BAR2 + strListName); for (int k = 0; k < nodeList.Count; k++) { XmlNode node = (XmlElement)nodeList.Item(k); XmlElement node_Temp; /// 处理字典的翻译 DicCache obj_DicCache = DicCache.getInstance(); if (strDicFieldList != null) { for (int i = 0; i < strDicFieldList.Length; i++) { node_Temp = (XmlElement)node.SelectSingleNode(strDicFieldList[i]); string str_Text = node_Temp.InnerText; if (General.empty(str_Text)) { continue; } string str_SV = obj_DicCache.getText(strDicNameList[i], str_Text); if (!blnDicInSv) { if (str_SV != null) { node_Temp.InnerText = str_SV; } } else { if (str_SV != null) { node_Temp.SetAttribute(Common.XML_PROP_SV, str_SV); } } } } /// 处理日期类型的字段 if (strDateFieldList != null) { for (int i = 0; i < strDateFieldList.Length; i++) { node_Temp = (XmlElement)node.SelectSingleNode(strDateFieldList[i]); string str_Text = node_Temp.InnerText; if (General.empty(str_Text)) { continue; } string str_SV = General.cDateStr(str_Text); str_Text = General.strToDate(str_SV); node_Temp.InnerText = str_Text; if (blnDicInSv) { if (str_SV != null) { node_Temp.SetAttribute(Common.XML_PROP_SV, str_SV); } } } } } docReturn.addErrorResult(Common.RT_QUERY_SUCCESS); } else { docReturn.addErrorResult(Common.RT_QUERY_NOTHING); } docReturn.addPropToQueryInfo(Common.XML_PROP_TOTALPAGES, int_TotalPages.ToString()); docReturn.addPropToQueryInfo(Common.XML_PROP_RECORDS, int_TotalRecords.ToString()); } catch (Exception e) { } return(docReturn.getXml()); }