RookeyFrame 代码层面 常用方法
测试代码均写在这个类里面的,因为是测试嘛,所以表名那些就将就看了。最后写完了再贴上全部代码
类的路径: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 代码层面 常用方法的更多相关文章
- 通过从代码层面分析Linux内核启动来探知操作系统的启动过程
通过从代码层面分析Linux内核启动来探知操作系统的启动过程 前言说明 本篇为网易云课堂Linux内核分析课程的第三周作业,我将围绕Linux 3.18的内核中的start_kernel到init进程 ...
- 请问具体到PHP的代码层面,改善高并发的措施有哪些
1.今天被问一个问题:请问具体到PHP的代码层面,改善高并发的措施有哪些? 面对高并发问题我首先想到的是集群.缓存(apt.redis.mem.内存...),但具体到PHP代码层面除了想到队列.减少网 ...
- java虚拟机jvm启动后java代码层面发生了什么?
java虚拟机jvm启动后java代码层面发生了什么? 0000 我想验证的事情 java代码在被编译后可以被jdk提供的java命令进行加载和运行, 在我们的程序被运行起来的时候,都发生了什么事情, ...
- UDP代码编写、操作系统发展史、多道技术、进程理论与代码层面创建、进程join方法与进程对象方法
昨日内容回顾 socket基本使用 # 内置的模块 import socket s = socket.socket() # 默认是TCP协议 也可以切换为UDP协议 s.bind((ip,port)) ...
- C6000代码层面优化(一)
2014年8月7日,看了一片很长见识的博文,关于DSP如何优化的,有一个问题没有搞通,“百度”一下关键字,居然搜查了一模一样的博文N片,现在也搞不懂这篇博文的原创作者是谁了.反正我感觉直接转摘过去,要 ...
- XSS代码触发条件,插入XSS代码的常用方法
1.脚本插入 (1)插入javascript和vbscript正常字符. 例1:<img src=”javascript:alert(/xss/)”> 例2:<table backg ...
- java动态代理实现与原理详细分析(代码层面解释了AOP的实现)
关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式 代理模式是常用的java设计模式, ...
- Java 7代码层面上的更新
Java 7已经完成的7大新功能: 1 对集合类的语言支持: 2 自动资源管理: 3 改进的通用实例创建类型推断: 4 数字字面量下划线支持: ...
- 前端性能优化-Vue代码层面
1.v-if 和 v-show 区分使用场景 v-if 是 真正 的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建:也是惰性的:如果在初始渲染时条件为假,则什么也不做 ...
随机推荐
- Java学习:单列集合Collection
集合 学习集合的目标: 会使用集合存储数据 会遍历集合,把数据取出来 掌握每种集合的特性 集合和数组的区别 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型 ...
- SQL系列(四)—— 唯一值(distinct)
有时需要查询某列上的不重复的数据,如: SELECT name FROM student; 结果: name lxy lxy lxy lxy 这样的结果显然不符合我们的需求.如何对列数据进行去重,查询 ...
- 卸载webpack,降低版本
卸载:npm uninstall webpack -g 重新安装:npm install webpack@3.7.1 -g
- .NET Core MD5加密 32位和16位
public class MD5Help { //此代码示例通过创建哈希字符串适用于任何 MD5 哈希函数 (在任何平台) 上创建 32 个字符的十六进制格式哈希字符串官网案例改编 /// <s ...
- 论文翻译:Data mining with big data
原文: Wu X, Zhu X, Wu G Q, et al. Data mining with big data[J]. IEEE transactions on knowledge and dat ...
- Mysql之视图和事务(五)
一:视图 1.问题 对于复杂的查询,往往是有多个数据表进行关联查询而得到,如果数据库因为需求等原因发生了改变,为了保证查询出来的数据与之前相同,则需要在多个地方进行修改,维护起来非常麻烦 解决办法:定 ...
- MAC OS系统替换brew.npm, pip 使用阿里云的镜像源
替换brew.git:cd "$(brew --repo)"git remote set-url origin https://mirrors.aliyun.com/homebre ...
- SQL语句及数据库优化
1,统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的. 所以封装成复用方法,用标准模板来控制. select*from dual select*Fro ...
- Request和Response。
复习点:1.重定向问题 2.输出字符串到浏览器.3.文件下载需求:1. 页面显示超链接2. 点击超链接后弹出下载提示框3. 完成图片文件下载 Request和Response Request: 1. ...
- Idea 热部署插件JRebel 安装与环境配置-上海尚学堂Java培训
在企业日常项目开发中,如果我们需要调试一个Java Web项目,就需要先将项目编译之后,放入Web容器或借助Maven web 插件来运行,如果对Java源代码进行修改,那么必须重新编译并重启Web容 ...