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

类的路径: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. Oracle 加解密教程

    参考Oracle官方文档 在Oracle使用dbms_crypto包进行加解密 首先,授权当前用户使用加解密包 在sql中运行:connect sqlplus as sysdbagrant execu ...

  2. 对 GAN 的 value function 的理解

    上式分为两个步骤: 第一步:调整discriminative model D的权重,使得V中两项取得最大值 第二步:调整generative model G的权重,使得V中第二项取得最小值 首先,分析 ...

  3. prometheus消耗内存问题

    参考: https://stackoverflow.com/questions/56115912/why-does-prometheus-consume-so-much-memory https:// ...

  4. Java操作JSON数据(4,end)--Jackson操作JSON数据

    Jackson是SpringBoot默认使用的JSON处理库,它可以轻松的将Java对象转换成JSON对象,同样也可以将JSON转换成Java对象.本文介绍下Jackson的基本使用方法,包括序列化和 ...

  5. Vue相关知识点记录

    1.安装 vue不支持ie8以下版本(无法模拟ECMAScript5特性),支持所有兼容ECMAScript5的浏览器. 浏览器安装Vue Devtools, 可以在更友好的界面中审查和调试Vue应用 ...

  6. linux 如何修改默认的FTP帐号或密码

    wdlinux_lamp,wdlinux_lnmp的系统安装好后,默会创建一个FTP用户用户名是:wdlinux密码是:wdlinux.cn 如想修改密码或用户名,先找个ssh工具,有关ssh客户端的 ...

  7. 关于SQL中的 where 1 = 1 的用法

    在项目中的常见的一个操作:在有关SQL的代码中加入where 1 = 1,关于它的用法,可以总结如下: 首先,where 1 = 1的用法往往是为了方便后续的给SQL增加where限制条件.如果实现加 ...

  8. Redis支持的数据类型

    String字符串: 格式: set key value string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redi ...

  9. 浅谈Python设计模式 - 外观模式

    声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 外观模式 外观模式的核心在于将复杂的内部实现包装起来,只向外界提供简单的调用接口 ...

  10. rest framework 之渲染器

    根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件. 用户请求头: Accept:text/html,application/xhtml+xml,application/xml;q=0 ...