public Page<OrganGrid> GetPageList(int page = 1, int rows = 30, string typeId = null, string level = null, string organName = null, string parentIds = null, bool haveme = false) { var sqlstr = "SELECT o.*,b.dictname typename,d.dictname levelname,e.organname parentname from sys_organ o INNER JOIN sys_dict b on o.typeid=b.dictid INNER JOIN sys_dict d on o.level=d.dictid LEFT JOIN sys_organ e on o.parentid=e.organid"; Sql sql = new Sql(sqlstr); if (!string.IsNullOrEmpty(typeId)) { sql.Where("o.typeid=@0", typeId); } if (!string.IsNullOrEmpty(level)) { sql.Where("o.level=@0", level); } if (!string.IsNullOrEmpty(parentIds) && !haveme) { sql.Where("regexp_split_to_array('" + parentIds + "',',')@> array[o.parentid]::text[]"); } if (!string.IsNullOrEmpty(parentIds) && haveme) { var pids = parentIds.Split(','); string or = null; for (int i = 0; i < pids.Length; i++) { or += " or o.organid=@" + i; } sql.Where("(regexp_split_to_array('" + parentIds + "',',')@> array[o.parentid]::text[]" + or + ")", pids); } if (!string.IsNullOrEmpty(organName)) { sql.Where("o.organname LIKE @0", "%" + organName.Trim() + "%"); } sql.OrderBy("o.parentid", "o.organid"); return Context.Instance.Page<OrganGrid>(page, rows, sql); }
public Core.DBContext.Page<UserGrid> GetPageList(int page = 1, int rows = 30, string username = null, string sex = null, string states = null, string usertype = null, string regionid = null, string organid = null, string roleid = null, DateTime? starttime = null, DateTime? endtime = null) { var sqlstr = "SELECT a.*,b.\"name\" regionname,c.\"name\" rolename,array_to_string(ARRAY(select d.organname from sys_organ d WHERE regexp_split_to_array(a.organids,',')@> array[d.organid]::text[]),',') organname FROM sys_userinfo a LEFT JOIN sys_region b ON a.regionid=b.regionid LEFT JOIN sys_role c ON a.roleid=c.roleid"; Sql sql = new Sql(sqlstr); if (!String.IsNullOrEmpty(username)) { sql.Where("(a.username Like @0 or a.loginid Like @0 or a.nickname Like @0)", "%" + username.Trim() + "%"); } if (!String.IsNullOrEmpty(sex)) { sql.Where("a.sex=@0", sex); } if (!String.IsNullOrEmpty(states)) { sql.Where("a.states=@0", states); } if (!String.IsNullOrEmpty(usertype)) { sql.Where("a.usertype=@0", usertype); } if (!String.IsNullOrEmpty(regionid)) { sql.Where("a.regionid=@0", regionid); } if (!String.IsNullOrEmpty(organid)) { sql.Where("regexp_split_to_array(a.organids,',') @> array[" + organid + "]::text[]"); } if (!String.IsNullOrEmpty(roleid)) { sql.Where("a.roleid=@0", roleid); } if (starttime != null || endtime != null) { if (starttime == null) starttime = new DateTime(1970, 1, 1); if (endtime == null) endtime = DateTime.Now; sql.Where("a.lastlogintime between '" + starttime + "' and '" + endtime + "'"); } sql.OrderBy("a.loginid"); return Context.Instance.Page<UserGrid>(page, rows, sql); }