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

类的路径: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 = ;
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 > )
{
List<string> tempSortNames = new List<string>();
foreach (string sortName in sortNames)
{
if (SystemOperate.IsForeignNameField(module.Id, sortName))
tempSortNames.Add(sortName.Substring(, sortName.Length - ) + "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 == )
{
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 > )
gridParams.PagingInfo.pagesize = ; //编辑网格最多支持100条记录
}
else if (gridParams.GridType == DataGridType.EditDetailGrid)
{
gridParams.PagingInfo.pagesize = ;
}
}
catch { }
//其他参数
if (request.Params.AllKeys.Where(x => x.StartsWith("p_")).Count() > )
{
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(, field.Length - ) + "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() == ; //综合明细视图
gridParams.IsDetailCopy = request["copy"].ObjToInt() == ; //是否明细复制
gridParams.IsTreeGrid = request["tg"].ObjToInt() == ; //是否为树型网格
gridParams.IsPermissionFilter = request["nfp"].ObjToInt() != ; //是否过滤权限
gridParams.IsRestartFlow = request["rsf"].ObjToInt() == ; //是否为重新发起流程
//调用自定义设置参数方法
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;
}

3、创建 Model

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

RookeyFrame 代码层面 常用方法的更多相关文章

  1. 通过从代码层面分析Linux内核启动来探知操作系统的启动过程

    通过从代码层面分析Linux内核启动来探知操作系统的启动过程 前言说明 本篇为网易云课堂Linux内核分析课程的第三周作业,我将围绕Linux 3.18的内核中的start_kernel到init进程 ...

  2. 请问具体到PHP的代码层面,改善高并发的措施有哪些

    1.今天被问一个问题:请问具体到PHP的代码层面,改善高并发的措施有哪些? 面对高并发问题我首先想到的是集群.缓存(apt.redis.mem.内存...),但具体到PHP代码层面除了想到队列.减少网 ...

  3. java虚拟机jvm启动后java代码层面发生了什么?

    java虚拟机jvm启动后java代码层面发生了什么? 0000 我想验证的事情 java代码在被编译后可以被jdk提供的java命令进行加载和运行, 在我们的程序被运行起来的时候,都发生了什么事情, ...

  4. UDP代码编写、操作系统发展史、多道技术、进程理论与代码层面创建、进程join方法与进程对象方法

    昨日内容回顾 socket基本使用 # 内置的模块 import socket s = socket.socket() # 默认是TCP协议 也可以切换为UDP协议 s.bind((ip,port)) ...

  5. C6000代码层面优化(一)

    2014年8月7日,看了一片很长见识的博文,关于DSP如何优化的,有一个问题没有搞通,“百度”一下关键字,居然搜查了一模一样的博文N片,现在也搞不懂这篇博文的原创作者是谁了.反正我感觉直接转摘过去,要 ...

  6. XSS代码触发条件,插入XSS代码的常用方法

    1.脚本插入 (1)插入javascript和vbscript正常字符. 例1:<img src=”javascript:alert(/xss/)”> 例2:<table backg ...

  7. java动态代理实现与原理详细分析(代码层面解释了AOP的实现)

    关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式    代理模式是常用的java设计模式, ...

  8. Java 7代码层面上的更新

    Java 7已经完成的7大新功能:       1 对集合类的语言支持:       2 自动资源管理:       3 改进的通用实例创建类型推断:       4 数字字面量下划线支持:      ...

  9. 前端性能优化-Vue代码层面

    1.v-if 和 v-show 区分使用场景 v-if 是 真正 的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建:也是惰性的:如果在初始渲染时条件为假,则什么也不做 ...

随机推荐

  1. 【数据库】Mysql配置参数

    vim /ect/my.cnf 使用命令打开mysql的配置文件. 加入以下参数 [mysql] default-character-set=utf8 [mysqld] lower_case_tabl ...

  2. 基准测试工具:Wrk初识

    最近和同事聊起常用的一些压测工具,谈到了Apache ab.阿里云的PTS.Jmeter.Locust以及wrk各自的一些优缺点和适用的场景类型. 这篇博客,简单介绍下HTTP基准测试工具wrk的基本 ...

  3. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)

    本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(B ...

  4. laravel 查询随机数据

    laravel 中 随机搜索数据 $tweet = Tweet::where('id',$id) ->orderBy(\DB::raw('RAND()')) ->take(1) -> ...

  5. Java之路---Day12(多态)

    2019-10-26-22:40:09 目录: 1.多态的概念 2.多态的分类 3.实现多态的三个必要条件 4.多态的格式 5.多态成员变量的使用特点 6.多态成员方法的使用特点 7.多态的好处 8. ...

  6. tomcat重启session不失效问题

    本地写代码每次重启都要重新登录浪费了很多时间,如何重启不用重新登录呢,只要让tomcat在关闭时将session写入文件中,在启动时从文件中读取session即可. 只需在conf/context.x ...

  7. React 的setState 理解

    我们都知道在React中,setState() 方法是用来改变组件状态的,在项目中也一直用,也没有出现什么问题(使用方法太简单了),但今天看了一篇文章,提到了setState 使用时的两个注意点,加深 ...

  8. 编写可维护的JavaScript-随笔(七)

    将配置数据从代码中分离出来 代码中有些数据有修改的可能,如果放在函数中的话后期修改的时候会带来一些不必要的风险 需要将配置数据从代码中抽取出来,如果配置数据多的话可以放入一个对象中,然后修改抽取出来的 ...

  9. JavaScript 之 取消 a 标签的默认行为

    方式一 语法格式: <a href="javascript:;">百度</a> javascript: 是一个伪协议,其他的伪协议还有 mail:  tel ...

  10. VMware网络连接三种模式bridged、host-only、NAT

    1. bridged(桥接模式) 在桥接模式下,虚拟机和主机处于同一网段,这样虚拟机才能和主机进行通信 使用桥接模式,就像连接在同一个Hub上的两台电脑 //简单配置ip # ifconfig eth ...