Mvc.Ext.Net项目架构(二)
2015-06-29 15:07
671 查看
不好意思我的语文是体育老师教的所以.....。
我每次需要和数据库交互的时候需要先写一个接口在IDAL里面,然后在DAL实现代码并做一些逻辑处理,web层直接调用BLL中的方法来实现数据的持久化操作。整个系统对于某些表的实体映射是有的但是在最主要的档案数据和文件数据中就没有映射,因为这个表的字段是可以通过项目人员来自行配置的也就是说我只需要设置下面这张表
我的关键数据都是和目录有关系,所以点击目录的时候会自行去查找项目人员自行配置的列表数据然后显示数据,或者选择数据时增删改数据,下图为一个实例
View Code
不好意思我的代码太乱,让各位大虾见笑了,如果有好的意见请多多指点。未完待续..求大虾能对我的框架不管是后台和前段都能给我提出宝贵的意见,再次先谢谢
我每次需要和数据库交互的时候需要先写一个接口在IDAL里面,然后在DAL实现代码并做一些逻辑处理,web层直接调用BLL中的方法来实现数据的持久化操作。整个系统对于某些表的实体映射是有的但是在最主要的档案数据和文件数据中就没有映射,因为这个表的字段是可以通过项目人员来自行配置的也就是说我只需要设置下面这张表
CREATE TABLE [dbo].[Arch_Fields]( [Id] [int] IDENTITY(1,1) NOT NULL, [FId] [int] NOT NULL, [FieldName] [nvarchar](50) NOT NULL, [FieldCName] [nvarchar](80) NOT NULL, [FieldType] [tinyint] NULL, [IsMust] [bit] NULL, [IsPhyFld] [bit] NULL, [IsSystem] [bit] NULL, [DisplayOrder] [int] NULL, [AutoFormula] [ntext] NULL, [Format] [varchar](50) NULL, [FieldTop] [int] NULL, [FieldLeft] [int] NULL, [FieldHeight] [int] NULL, [FieldWidth] [int] NULL, [FieldLength] [int] NULL, [ListVisible] [bit] NULL, [ListOrder] [smallint] NULL, [ListWidth] [smallint] NULL, [VouchVisible] [bit] NULL, [RefId] [int] NULL, [IsModify] [bit] NULL, [SearchVisible] [bit] NULL, [SearchOrder] [smallint] NULL, [SearchIsSection] [bit] NULL, [SearchIsFuzzy] [bit] NULL, [IsMultiLine] [bit] NULL, [ToolTip] [text] NULL, [FieldMode] [tinyint] NULL, [IsBatch] [bit] NULL, [AutoFormulaIndex] [int] NULL, [CaptionWidth] [int] NULL, [IsCarryon] [bit] NULL, [IsImpFormula] [bit] NULL, [IsAllField] [bit] NULL, [IsExport] [bit] NULL, [ExportFormat] [varchar](50) NULL, [FillColor] [smallint] NULL, [GroupId] [int] NULL, [IsImpExcelFormula] [bit] NULL, [LabelWidth] [int] NULL, CONSTRAINT [PK_Arch_FieldsDK] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO SET ANSI_PADDING OFF GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'字段编辑方式0常规1缺省值2固定值' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Arch_Fields', @level2type=N'COLUMN',@level2name=N'FieldMode' GO ALTER TABLE [dbo].[Arch_Fields] ADD CONSTRAINT [DF_Arch_Fields_LabelWidth] DEFAULT ((0)) FOR [LabelWidth] GO
我的关键数据都是和目录有关系,所以点击目录的时候会自行去查找项目人员自行配置的列表数据然后显示数据,或者选择数据时增删改数据,下图为一个实例
public ActionResult GetChildNode(string node, string menuName) { NodeCollection nodes = new NodeCollection(); try { int id = 0; //获取目录Id信息 if (node.StartsWith("Sys")) try { id = Int32.Parse(node.Substring(4)); } catch (Exception ex) { logs.Error("186行", ex); } else if (node.StartsWith("Fol")) try { id = int.Parse(node.Split('_')[1]); } catch (Exception ex) { logs.Error("196行", ex); } else id = Int32.Parse(node); switch (menuName) { // case "AcceptCenter": case "PrepareFinishArchiveCenter": case "ArchivesManageCenter": case "ArchiveUseCenter": case "ArchiveTidyCenter": Arch_FolderService _Arch_FolderService = new Arch_FolderService(Session["SubsName"].ToString()); IList<Sys_Menu> lstMenu = new List<Sys_Menu>(); IList<Arch_Folder> lstData = null; DataTable dtData = null; bool isAdmin = true; string folderAuth = ""; int uId = Convert.ToInt32(CookiesDataService.GetPropertyValueOfSys_User("UId")); //查询当前目录的自动分类串 Folder_QueryService _Folder_QueryService = new Folder_QueryService(Session["SubsName"].ToString()); IList<Folder_Query> fldQuery = null; BaseService baseservice = new BaseService(Session["SubsName"].ToString()); //查看当前用户是否有权限访问此目录 try { if (!Convert.ToBoolean(CookiesDataService.GetPropertyValueOfSys_User("IsAdmin"))) { isAdmin = false; folderAuth = UserAuth.GetOperateAuth("FolderAuth"); } } catch (Exception ex) { logs.Error("CookiesDataService.GetValue(\"Sys_User\", \"IsAdmin\"),大约210行,cookies超时:", ex); return RedirectToAction("Login", "Login"); } //根目录数据 if (id == -1) { lstData = _Arch_FolderService.GetFolderDataByFolderCode(menuName, folderAuth, isAdmin).OrderBy(f => f.DisplayOrder).ToList(); foreach (Arch_Folder item in lstData) { Sys_Menu _Sys_Menu = new Sys_Menu(); _Sys_Menu.MenuId = item.FId; _Sys_Menu.MenuText = item.FolderName; _Sys_Menu.MenuName = "Name" + item.FId.ToString(); //判断当前节点是否有子节点 _Sys_Menu.IsChild = !item.Ischild; //当前目录是否有子节点 if (_Arch_FolderService.GetFolderDataByParentID(item.FId).Where(f => f.FolderType == (int)FolderType.QueryData && f.UserId == uId).Count() > 0) _Sys_Menu.IsChild = false; //当前目录是否有自动分类 fldQuery = _Folder_QueryService.GetFolder_QueryData(item.FId, uId).Where(f => !string.IsNullOrEmpty(f.QueryStr)).ToList(); if (fldQuery != null && fldQuery.Count() > 0) _Sys_Menu.IsChild = false; lstMenu.Add(_Sys_Menu); } } else if (node.StartsWith("Sys"))//系统节点数据 { lstData = _Arch_FolderService.GetFolderDataByParentID(id); foreach (Arch_Folder item in lstData) { Sys_Menu _Sys_Menu = new Sys_Menu(); _Sys_Menu.MenuId = item.FId; _Sys_Menu.MenuText = item.FolderName; _Sys_Menu.MenuName = "Name" + item.FId.ToString(); lstMenu.Add(_Sys_Menu); } } else//子节点数据包括自动分类、节点目录、自动分类目录 { //自动分类数据 try { fldQuery = _Folder_QueryService.GetFolder_QueryData(id, Convert.ToInt32(CookiesDataService.GetPropertyValueOfSys_User("UId"))); } catch (Exception ex) { logs.Error("大约cookies超时:大约277行", ex); } Folder_Query _Folder_Query = null; string queryStr = "";//分组字段信息 //当前节点的父节点条件 string currNodeParentWhere = Session["SelectedNodeGroup"].ToString(); //当前节点的自动分类条件 string currNodeWhereStr = node.Split('_')[2]; try { _Folder_Query = fldQuery.Where(f => f.IsDefault).ToList()[0]; queryStr = _Folder_Query.QueryStr; } catch (Exception ex) { logs.Info("获取自定义分类设置数据问题:", ex); } if (queryStr != "") { string[] aryGroupField = queryStr.Split(','); DataTable dt = baseservice.Query("Select TableName,Filter,TypeCode From Arch_Folder Where FId=" + id); string currTableName = dt.Rows[0]["TableName"].ToString(); string filter = dt.Rows[0]["Filter"].ToString(); string typeCode = dt.Rows[0]["TypeCode"].ToString(); //分组数据源 string vSource = @"Select * From " + currTableName + " Where Status=0 And TypeCode Like '%" + typeCode + "%'"; if (filter != "") vSource += " And " + filter; //设置只能查看当前个人所属的部门数据 if (!isAdmin) { string operateAuth = UserAuth.GetOperateAuth("OperateAuth"); bool deptAuth = AuthSeting("data_OrganizationAuth", operateAuth); //如果权限中设置了数据受组织结构控制则用户只能查看本部门的数据 if (deptAuth) vSource += " And DeptCode='" + CookiesDataService.GetPropertyValueOfSys_User("DeptCode") + "'"; } //当前所选择的分类字段 string currentField = currNodeWhereStr.Split('=')[0]; //当前分组字段的下一个字段 string groupNextField = ""; if (currNodeWhereStr != "") { int indexField = Array.IndexOf(aryGroupField, currentField); if (aryGroupField.Length > indexField) groupNextField = aryGroupField[indexField + 1]; if (currNodeParentWhere.TrimStart().StartsWith("And")) vSource += currNodeParentWhere; else vSource += " And " + currNodeParentWhere; } else groupNextField = aryGroupField[0]; //获取下一个分组的数据信息 dtData = _Arch_FolderService.InvokingProcedure(vSource, groupNextField, groupNextField, groupNextField); if (dtData != null) { foreach (DataRow item in dtData.Rows) { Sys_Menu _Sys_Menu = new Sys_Menu(); _Sys_Menu.MenuId = id; _Sys_Menu.MenuText = item[groupNextField].ToString() == "" ? "空值" : item[groupNextField].ToString(); _Sys_Menu.MenuName = "Name" + item[groupNextField]; _Sys_Menu.CurrGroupChar = groupNextField + "='" + item[groupNextField] + "'"; _Sys_Menu.GroupChar = queryStr; if (queryStr.EndsWith(groupNextField)) _Sys_Menu.IsChild = true; lstMenu.Add(_Sys_Menu); } } } if (string.IsNullOrEmpty(currNodeWhereStr)) { //节点目录数据 if (isAdmin) lstData = _Arch_FolderService.GetFolderDataByParentID(id).OrderBy(o => o.DisplayOrder).ToList(); else lstData = _Arch_FolderService.GetFolderDataByParentID(id, folderAuth, uId).OrderBy(o => o.DisplayOrder).ToList(); //把当前数据加入节点菜单数据中 foreach (Arch_Folder folder in lstData) { Sys_Menu _Sys_Menu = new Sys_Menu(); _Sys_Menu.MenuId = folder.FId; _Sys_Menu.FolderType = folder.FolderType; _Sys_Menu.MenuText = folder.FolderName; // _Sys_Menu.IsChild = false; //if (_Arch_FolderService.GetFolderDataByParentID(folder.FId).Count() <= 0) _Sys_Menu.IsChild = !folder.Ischild; //查询目录没有子节点 if (_Arch_FolderService.GetFolderDataByParentID(folder.FId).Where(f => f.FolderType == (int)FolderType.QueryData && f.UserId == uId).Count() > 0) _Sys_Menu.IsChild = false; else _Sys_Menu.IsChild = true; //没有自动分类的数据没有子节点 fldQuery = _Folder_QueryService.GetFolder_QueryData(folder.FId, uId); if (fldQuery != null && fldQuery.Count() > 0) _Sys_Menu.IsChild = false; lstMenu.Add(_Sys_Menu); } } } if (lstMenu != null) { foreach (Sys_Menu item in lstMenu) { Node asyncNode = new Node(); if (item.FolderType == (int)FolderType.QueryData) { asyncNode.Icon = Icon.MagnifierZoomIn; asyncNode.Text = "<span style='font-size:12px;font-color:blue;'>" + item.MenuText + "</span>"; } else asyncNode.Text = "<span style='font-size:12px'>" + item.MenuText + "</span>"; string groupChar = item.CurrGroupChar == "" ? "0" : item.CurrGroupChar; asyncNode.NodeID = "Fol_" + item.MenuId.ToString() + "_" + groupChar + "_" + Guid.NewGuid().ToString(); asyncNode.Leaf = item.IsChild; nodes.Add(asyncNode); } } break; default: IList<Sys_Menu> lstSys_Menu = _Sys_MenuService.GetMenuByParentID(id, "").ToList(); foreach (Sys_Menu item in lstSys_Menu) { IList<Sys_Menu> parentNode = _Sys_MenuService.GetMenuByMenuID(item.ParentId); Node asyncNode = new Node(); asyncNode.Text = "<span style='font-size:12px'>" + item.MenuText + "</span>"; asyncNode.NodeID = "Sys_" + item.MenuId.ToString(); if (_Sys_MenuService.GetMenuByParentID(item.MenuId, "").ToList().Count() <= 0) asyncNode.Leaf = true; nodes.Add(asyncNode); } break; } } catch (Exception ex) { logs.Error("获取子节点数据错误:" + ex.Message + "," + ex); } return this.Store(nodes); }
View Code
不好意思我的代码太乱,让各位大虾见笑了,如果有好的意见请多多指点。未完待续..求大虾能对我的框架不管是后台和前段都能给我提出宝贵的意见,再次先谢谢
相关文章推荐
- Java 时间架构图
- 大网站记录
- windows系统中国国内镜像网站上用repo下载Android5.0源码
- java架构解密——双容器优化aop
- Mvc.Ext.Net项目架构(一)
- Windows7访问网站时浏览器的左上方会出现域名重定向
- 好网站
- PHP高并发高负载系统架构例子
- java实现爬虫爬网站图片
- 使用第三方软件设置在线客服系统——iBangKF网站免费在线客服系统
- Lesson 9 vSphere 5.0的高可用性
- 如何在网站中插入客服QQ唤起QQ程序
- 微信开放平台,微信登陆第三方网站 提示redirect_uri 参数错误
- 学习的地址网站
- 换网站Logo图片---轻开电子商务系统(企业入门级B2C网站)
- 游戏架构猜想(一)【认识篇】
- 视频课程网站
- 大型网站系统架构的演化【转自飘扬的红领巾】
- 大型网站架构演变和知识体系
- win2008r2的iis7.5手动建站方法,iis7.5中用独立用户建立网站的方法,提高网站安全性