码迷,mamicode.com
首页 > 其他好文 > 详细

RookeyFrame 代码层面 常用方法

时间:2019-08-22 11:06:19      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:module   esc   each   new   handle   sql   sse   val   substring   

 

测试代码均写在这个类里面的,因为是测试嘛,所以表名那些就将就看了。最后写完了再贴上全部代码

类的路径:Rookey.Frame.Operate.Base -> Test -> Class1.cs

技术图片

 

 

1、获取用户信息

        //获取 用户信息
        public static string test1()
        {
            string tempUserName = "admin";
            string userpwd = "admin";
            string errMsg = "";
            UserInfo userInfo = UserOperate.GetUserInfo(tempUserName, userpwd, out errMsg);
            return JsonHelper.Serialize(userInfo);
        }

 

 

2、获取分页数据

 public static string test2()
        {
            //用户信息
            string tempUserName = "admin";
            string userpwd = "admin";
            string errMsg = "";
            var currUser = UserOperate.GetUserInfo(tempUserName, userpwd, out errMsg);

            //构建request对象
            var url = "http://localhost:8088/DataAsync/LoadGridData.html";
            var para = "moduleId=d8e80345-71b7-4a3f-8d37-2f0f32e17cc5&tgt=0&gvId=bb9e294c-fcff-4c3c-bcd4-6584a0e5140a&page=1&rows=15";
            var request = new HttpRequest("", url, para);
            HttpRequestWrapper wrapper = new HttpRequestWrapper(request);

            //获取 分页参数
            var para_grid = GetGridDataParams(wrapper);

            //获取 分页数据
            long total = 0;
            object list = CommonOperate.GetGridData(para_grid, out total, currUser);
            //var result = (list as IEnumerable).Paged(total);

            return JsonHelper.Serialize(list);
        }
技术图片
        public static GridDataParmas GetGridDataParams(HttpRequestBase request)
        {
            //模块信息
            Sys_Module module = SystemOperate.GetModuleByRequest(request);
            if (module == null) return null;
            Type modelType = GetModelType(module.TableName);
            bool isEnableCache = ModelConfigHelper.IsModelEnableCache(modelType);
            string defaultSortField = isEnableCache || ModelConfigHelper.ModelIsViewMode(modelType) ? "CreateDate" : null;
            //分页信息
            PageInfo pageInfo = PageInfo.GetPageInfo(request, defaultSortField);
            List<string> sortNames = pageInfo.sortname.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
            if (sortNames != null && sortNames.Count > 0)
            {
                List<string> tempSortNames = new List<string>();
                foreach (string sortName in sortNames)
                {
                    if (SystemOperate.IsForeignNameField(module.Id, sortName))
                        tempSortNames.Add(sortName.Substring(0, sortName.Length - 4) + "Id");
                    else
                        tempSortNames.Add(sortName);
                }
                pageInfo.sortname = string.Join(",", tempSortNames);
            }
            //搜索条件
            string q = request["q"].ObjToStr().Trim();
            if (!string.IsNullOrEmpty(q) && (string.IsNullOrEmpty(pageInfo.sortname) || pageInfo.sortname == "CreateDate"))
            {
                var searchDic = JsonHelper.Deserialize<Dictionary<string, string>>(q);
                if (searchDic != null && searchDic.Count == 1)
                {
                    if (isEnableCache)
                    {
                        pageInfo.sortname = string.Format("CreateDate,len({0})", searchDic.Keys.FirstOrDefault());
                        pageInfo.sortorder = "desc,asc";
                    }
                    else
                    {
                        pageInfo.sortname = string.IsNullOrEmpty(pageInfo.sortname) ? string.Format("len({0}),AutoIncrmId", searchDic.Keys.FirstOrDefault()) : string.Format("len({0}),CreateDate", searchDic.Keys.FirstOrDefault());
                        pageInfo.sortorder = "asc,desc";
                    }
                }
            }
            //自定义条件
            string condition = HttpUtility.UrlDecode(request["condition"].ObjToStr());
            //复杂条件集合
            string cdItemStr = HttpUtility.UrlDecode(request["cdItems"]).ObjToStr();
            List<ConditionItem> cdItems = new List<ConditionItem>();
            if (!string.IsNullOrEmpty(cdItemStr))
            {
                try
                {
                    cdItems = JsonHelper.Deserialize<List<ConditionItem>>(cdItemStr);
                }
                catch { }
            }
            //where条件语句,用Base64加密后传输
            string whereCon = string.Empty;
            try
            {
                string tempWhere = HttpUtility.UrlDecode(request["where"].ObjToStr());
                if (!string.IsNullOrWhiteSpace(tempWhere))
                {
                    whereCon = HttpUtility.UrlDecode(MySecurity.DecodeBase64(tempWhere)).ReplaceSpecialCharOfSQL();
                }
            }
            catch
            { }
            //弹出框的原始模块
            string initModule = HttpUtility.UrlDecode(request["initModule"].ObjToStr());
            //弹出框的原始字段
            string initField = request["initField"].ObjToStr();
            //弹出框的依赖字段值
            string relyFieldsValue = HttpUtility.UrlDecode(request["p_relyValues"]);
            //自动完成字段名
            string fieldName = request["fieldName"].ObjToStr(); //字段名
            //组装参数对象
            GridDataParmas gridParams = null;
            pageInfo.request = request;
            if (!string.IsNullOrWhiteSpace(initModule) && !string.IsNullOrWhiteSpace(initField)) //弹出框网格数据参数
            {
                gridParams = new DialogGridDataParams(module.Id, initModule, initField, pageInfo, q, condition, relyFieldsValue, cdItems, whereCon);
            }
            else if (!string.IsNullOrWhiteSpace(fieldName)) //自动完成数据参数
            {
                gridParams = new AutoCompelteDataParams(module.Id, fieldName, pageInfo, q, condition, cdItems, whereCon);
            }
            else
            {
                gridParams = new GridDataParmas(module.Id, pageInfo, q, condition, cdItems, whereCon);
            }
            try
            {
                string gt = request["tgt"].ObjToStr();
                gridParams.GridType = (DataGridType)Enum.Parse(typeof(DataGridType), gt);
                gridParams.PagingInfo.gridTypeParam = gridParams.GridType;
                if (gridParams.IsEditGridPageing)
                {
                    if (gridParams.GridType == DataGridType.EditDetailGrid && gridParams.PagingInfo != null && gridParams.PagingInfo.pagesize > 100)
                        gridParams.PagingInfo.pagesize = 100; //编辑网格最多支持100条记录
                }
                else if (gridParams.GridType == DataGridType.EditDetailGrid)
                {
                    gridParams.PagingInfo.pagesize = 100;
                }
            }
            catch { }
            //其他参数
            if (request.Params.AllKeys.Where(x => x.StartsWith("p_")).Count() > 0)
            {
                gridParams.OtherParams = new Dictionary<string, string>();
                List<string> keys = request.Params.AllKeys.Where(x => x.StartsWith("p_")).ToList();
                foreach (string key in keys)
                {
                    gridParams.OtherParams.Add(key, request.Params[key]);
                }
            }
            if (request["node"].ObjToStr() != string.Empty)
            {
                if (gridParams.OtherParams == null)
                    gridParams.OtherParams = new Dictionary<string, string>();
                gridParams.OtherParams.Add("node", HttpUtility.UrlDecode(request["node"].ObjToStr()));
            }
            //行过滤规则解析
            string filterRules = request["filterRules"].ObjToStr();
            if (!string.IsNullOrEmpty(filterRules))
            {
                try
                {
                    List<GridFilterRule> gridFilters = JsonHelper.Deserialize<List<GridFilterRule>>(filterRules);
                    List<ConditionItem> ruleItems = new List<ConditionItem>();
                    foreach (GridFilterRule rule in gridFilters)
                    {
                        QueryMethod method = QueryMethod.Equal;
                        string field = rule.field;
                        if (rule.op == FilterOpEnum.isnull || rule.op == FilterOpEnum.isnotnull)
                        {
                            method = rule.op == FilterOpEnum.isnull ? QueryMethod.Equal : QueryMethod.NotEqual;
                        }
                        else
                        {
                            method = (QueryMethod)Enum.Parse(typeof(QueryMethod), ((int)rule.op).ToString());
                        }
                        object value = rule.value;
                        if (rule.op == FilterOpEnum.isnull || rule.op == FilterOpEnum.isnotnull)
                        {
                            value = null;
                        }
                        if (!CommonDefine.BaseEntityFields.Contains(field))
                        {
                            if (SystemOperate.IsForeignNameField(module.Id, field))
                                field = field.Substring(0, field.Length - 4) + "Id";
                        }
                        ruleItems.Add(new ConditionItem() { Field = field, Method = method, Value = value });
                    }
                    gridParams.FilterRules = ruleItems;
                }
                catch { }
            }
            gridParams.ViewId = request["viewId"].ObjToGuidNull(); //综合视图Id
            gridParams.GridViewId = request["gvId"].ObjToGuidNull(); //当前加载视图ID
            gridParams.IsComprehensiveDetailView = request["dv"].ObjToInt() == 1; //综合明细视图
            gridParams.IsDetailCopy = request["copy"].ObjToInt() == 1; //是否明细复制
            gridParams.IsTreeGrid = request["tg"].ObjToInt() == 1; //是否为树型网格
            gridParams.IsPermissionFilter = request["nfp"].ObjToInt() != 1; //是否过滤权限
            gridParams.IsRestartFlow = request["rsf"].ObjToInt() == 1; //是否为重新发起流程
            //调用自定义设置参数方法
            ExecuteCustomeOperateHandleMethod(module.Id, "GridLoadDataParamsSet", new object[] { module, gridParams, null });
            return gridParams;
        }
        public static Type GetModelType(string tableName)
        {
            return BridgeObject.GetModelType(tableName);
        }
        public static Type GetModelType(Guid moduleId)
        {
            string tableName = SystemOperate.GetModuleTableNameById(moduleId);
            return BridgeObject.GetModelType(tableName);
        }
        public static object ExecuteCustomeOperateHandleMethod(Guid moduleId, string methodName, object[] args)
        {
            try
            {
                Type tempType = typeof(OperateHandleFactory<>);
                Type modelType = GetModelType(moduleId);
                Type relectType = tempType.MakeGenericType(new Type[] { modelType });
                //实例化对象
                object obj = Activator.CreateInstance(relectType);
                MethodInfo method = relectType.GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
                if (method == null) return null;
                //反射执行方法
                FastInvoke.FastInvokeHandler fastInvoker = FastInvoke.GetMethodInvoker(method);
                object executedObj = fastInvoker(obj, args);
                return executedObj;
            }
            catch { }
            return null;
        }
View Code

 

 

3、创建 Model

        public static string test3()
        {
            //这个类有一些要求,比如:需要用特性 ModuleConfig 来描述这个类
            string errMsg = ToolOperate.RepairTables(new List<string> { "Class1" });
            return "测试:" + errMsg;
        }

 

RookeyFrame 代码层面 常用方法

标签:module   esc   each   new   handle   sql   sse   val   substring   

原文地址:https://www.cnblogs.com/guxingy/p/11392834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!