private OneConnection CreateOneConnection(string connName) { foreach (ConnectionStringSettings connStr in ConfigurationManager.ConnectionStrings) { if (connStr.Name == connName) { return(OneConnectionFactories.GetConnection(connStr.ProviderName, connStr.ConnectionString)); } } throw new Exception(connName + " 不是已知的连接字符串名称!"); }
public object Get(int id, string context, JObject data) { var menuItems = new SysMenuServices().GetUserMenuList(User.Identity.Name, true); var menus = new List <XtMenuItem>(); var tables = new List <XtTable>(); var connStr = ConfigurationManager.ConnectionStrings[context]; using (var conn = OneConnectionFactories.GetConnection(connStr.ProviderName, connStr.ConnectionString)) { // 加载菜单 string sql = string.Format("select t.Code, f.ItemName, SourceTable = (select top 1 MasterTable from xt_djflowm where code = {0}), f.MasterTable, f.MenuCode from Xt_DjTransMain as t join xt_djflowm as f on f.Code = t.TargetTable where t.SourceTable = {0}", id); using (var reader = conn.QueryReader(sql)) { XtTable table; while (reader.Read()) { tables.Add(table = new XtTable { Code = reader.GetInt32(0), ItemName = reader.GetString(1), SourceTable = reader.GetString(2), MasterTable = reader.GetString(3) }); if (!reader.IsDBNull(4)) { table.MenuCode = reader.GetString(4); } } } // 加载字段关联 foreach (var table in tables) { table.FieldMaps = new Dictionary <string, string>(); sql = string.Format("select Sourcefield, Targetfield from Xt_djfield where mainCode = {0} and type='主表'", table.Code); using (var reader = conn.QueryReader(sql)) { while (reader.Read()) { table.FieldMaps.Add(reader.GetString(0), reader.GetString(1)); } } } //检查当前用户权限 & 启用菜单 var userServices = new SysUserService(); XtMenuItem menuItem = null; for (var i = 0; i < tables.Count; i++) { if (IsUrl(tables[i].MenuCode)) { menus.Add(menuItem = new XtMenuItem { Enabled = true, Title = tables[i].ItemName, Url = UrlFormat(tables[i].MenuCode, data), Blank = true }); } else { if (!string.IsNullOrEmpty(tables[i].MenuCode)) { var menuCodes = tables[i].MenuCode.Split(','); // 测试用户是否有访问权限 if (menuItems.Any(mi => mi.MenuCode == menuCodes[0])) { var sysMenuItem = menuItems.FirstOrDefault(mi => mi.MenuCode == tables[i].MenuCode); menus.Add(menuItem = new XtMenuItem { Enabled = true, Title = tables[i].ItemName }); if (sysMenuItem != null) { if (!string.IsNullOrEmpty(sysMenuItem.IconClass)) { menuItem.IconClass = sysMenuItem.IconClass; } var dataKey = menuCodes.Length > 1 ? menuCodes[1] : tables[i].FieldMaps.First().Key; menuItem.Url = sysMenuItem.URL + "/" + data[dataKey]; } // 测试数据是否存在 var ex = conn.ExecuteScalar(string.Format( "select 1 where EXISTS(select * from {0} where {1})", tables[i].MasterTable, string.Join(" AND ", tables[i].FieldMaps.Select(kv => string.Format("{0}='{1}'", kv.Value, data[kv.Key]))) )); if (ex == null) { menuItem.Enabled = false; } } } } } } return(menus); }