选择可搜索字段时,增加数据时间字段和布尔型字段

This commit is contained in:
智能大石头 2024-12-30 01:09:55 +08:00
parent 5a41101cb5
commit 83e0f86ce8
19 changed files with 88 additions and 44 deletions

View File

@ -47,11 +47,20 @@ public class SearchBuilder(IDataTable table)
{
if (cs.Contains(dc)) continue;
// 数据时间字段可用于搜索
if (!dc.DataScale.IsNullOrEmpty())
cs.Add(dc);
// 整型枚举
if (dc.DataType.IsInt() && dc.DataType.IsEnum)
cs.Add(dc);
// 整型有映射
else if (dc.DataType.IsInt() && !dc.Map.IsNullOrEmpty())
cs.Add(dc);
// 布尔型
else if (dc.DataType == typeof(Boolean) && !dc.Name.EqualIgnoreCase("enable", "isDeleted"))
cs.Add(dc);
}
// enable和isDeleted字段放在最后
foreach (var dc in Table.Columns)
{
if (cs.Contains(dc)) continue;

View File

@ -9,11 +9,11 @@ using NewLife.Web;
using XCode.Membership;
using static XCode.Membership.Area;
namespace Membership.Web.Areas..Controllers;
namespace Membership.Web.Areas.Admin.Controllers;
/// <summary>地区。行政区划数据最高支持四级地址9位数字</summary>
[Menu(0, true, Icon = "fa-table")]
[Area]
[AdminArea]
public class Area : EntityController<Area>
{
static Area()

View File

@ -9,11 +9,11 @@ using NewLife.Web;
using XCode.Membership;
using static XCode.Membership.Department;
namespace Membership.Web.Areas..Controllers;
namespace Membership.Web.Areas.Admin.Controllers;
/// <summary>部门。组织机构,多级树状结构,支持多租户</summary>
[Menu(0, true, Icon = "fa-table")]
[Area]
[AdminArea]
public class Department : EntityController<Department>
{
static Department()
@ -58,12 +58,13 @@ public class Department : EntityController<Department>
var code = p["code"];
var name = p["name"];
var parentId = p["parentId"].ToInt(-1);
var visible = p["visible"]?.ToBoolean();
var managerId = p["managerId"].ToInt(-1);
var enable = p["enable"]?.ToBoolean();
var start = p["dtStart"].ToDateTime();
var end = p["dtEnd"].ToDateTime();
return Department.Search(tenantId, code, name, parentId, managerId, enable, start, end, p["Q"], p);
return Department.Search(tenantId, code, name, parentId, visible, managerId, enable, start, end, p["Q"], p);
}
}

View File

@ -9,11 +9,11 @@ using NewLife.Web;
using XCode.Membership;
using static XCode.Membership.Log;
namespace Membership.Web.Areas..Controllers;
namespace Membership.Web.Areas.Admin.Controllers;
/// <summary>日志。应用系统审计日志,记录用户的各种操作,禁止修改和删除</summary>
[Menu(0, true, Icon = "fa-table")]
[Area]
[AdminArea]
public class Log : ReadOnlyEntityController<Log>
{
static Log()
@ -58,10 +58,11 @@ public class Log : ReadOnlyEntityController<Log>
var action = p["action"];
var linkId = p["linkId"].ToLong(-1);
var createUserId = p["createUserId"].ToInt(-1);
var success = p["success"]?.ToBoolean();
var start = p["dtStart"].ToDateTime();
var end = p["dtEnd"].ToDateTime();
return Log.Search(category, action, linkId, createUserId, start, end, p["Q"], p);
return Log.Search(category, action, linkId, createUserId, success, start, end, p["Q"], p);
}
}

View File

@ -9,11 +9,11 @@ using NewLife.Web;
using XCode.Membership;
using static XCode.Membership.Menu;
namespace Membership.Web.Areas..Controllers;
namespace Membership.Web.Areas.Admin.Controllers;
/// <summary>菜单。功能权限,大多数时候也是可见页面</summary>
[Menu(0, true, Icon = "fa-table")]
[Area]
[AdminArea]
public class Menu : EntityController<Menu>
{
static Menu()
@ -56,10 +56,13 @@ public class Menu : EntityController<Menu>
{
var name = p["name"];
var parentId = p["parentId"].ToInt(-1);
var visible = p["visible"]?.ToBoolean();
var necessary = p["necessary"]?.ToBoolean();
var newWindow = p["newWindow"]?.ToBoolean();
var start = p["dtStart"].ToDateTime();
var end = p["dtEnd"].ToDateTime();
return Menu.Search(name, parentId, start, end, p["Q"], p);
return Menu.Search(name, parentId, visible, necessary, newWindow, start, end, p["Q"], p);
}
}

View File

@ -9,11 +9,11 @@ using NewLife.Web;
using XCode.Membership;
using static XCode.Membership.Parameter;
namespace Membership.Web.Areas..Controllers;
namespace Membership.Web.Areas.Admin.Controllers;
/// <summary>字典参数。管理用户或系统全局的名值对数据,常用于参数配置场合</summary>
[Menu(0, true, Icon = "fa-table")]
[Area]
[AdminArea]
public class Parameter : EntityController<Parameter>
{
static Parameter()

View File

@ -9,11 +9,11 @@ using NewLife.Web;
using XCode.Membership;
using static XCode.Membership.Role;
namespace Membership.Web.Areas..Controllers;
namespace Membership.Web.Areas.Admin.Controllers;
/// <summary>角色。业务场景中的岗位,功能权限的集合。不管是用户还是租户,都以角色来管理权限</summary>
[Menu(0, true, Icon = "fa-table")]
[Area]
[AdminArea]
public class Role : EntityController<Role>
{
static Role()
@ -56,11 +56,12 @@ public class Role : EntityController<Role>
{
var name = p["name"];
var tenantId = p["tenantId"].ToInt(-1);
var isSystem = p["isSystem"]?.ToBoolean();
var enable = p["enable"]?.ToBoolean();
var start = p["dtStart"].ToDateTime();
var end = p["dtEnd"].ToDateTime();
return Role.Search(name, tenantId, enable, start, end, p["Q"], p);
return Role.Search(name, tenantId, isSystem, enable, start, end, p["Q"], p);
}
}

View File

@ -9,11 +9,11 @@ using NewLife.Web;
using XCode.Membership;
using static XCode.Membership.Tenant;
namespace Membership.Web.Areas..Controllers;
namespace Membership.Web.Areas.Admin.Controllers;
/// <summary>租户。多租户SAAS平台用于隔离业务数据</summary>
[Menu(0, true, Icon = "fa-table")]
[Area]
[AdminArea]
public class Tenant : EntityController<Tenant>
{
static Tenant()

View File

@ -9,11 +9,11 @@ using NewLife.Web;
using XCode.Membership;
using static XCode.Membership.TenantUser;
namespace Membership.Web.Areas..Controllers;
namespace Membership.Web.Areas.Admin.Controllers;
/// <summary>租户关系。用户选择租户进入系统后,以租户关系角色组替代自有角色组来进行鉴权</summary>
[Menu(0, true, Icon = "fa-table")]
[Area]
[AdminArea]
public class TenantUser : EntityController<TenantUser>
{
static TenantUser()

View File

@ -9,11 +9,11 @@ using NewLife.Web;
using XCode.Membership;
using static XCode.Membership.User;
namespace Membership.Web.Areas..Controllers;
namespace Membership.Web.Areas.Admin.Controllers;
/// <summary>用户。用户帐号信息,以身份验证为中心,拥有多种角色,可加入多个租户</summary>
[Menu(0, true, Icon = "fa-table")]
[Area]
[AdminArea]
public class User : EntityController<User>
{
static User()
@ -60,12 +60,15 @@ public class User : EntityController<User>
var code = p["code"];
var roleId = p["roleId"].ToInt(-1);
var departmentId = p["departmentId"].ToInt(-1);
var mailVerified = p["mailVerified"]?.ToBoolean();
var mobileVerified = p["mobileVerified"]?.ToBoolean();
var areaId = p["areaId"].ToInt(-1);
var online = p["online"]?.ToBoolean();
var enable = p["enable"]?.ToBoolean();
var start = p["dtStart"].ToDateTime();
var end = p["dtEnd"].ToDateTime();
return User.Search(name, mail, mobile, code, roleId, departmentId, areaId, enable, start, end, p["Q"], p);
return User.Search(name, mail, mobile, code, roleId, departmentId, mailVerified, mobileVerified, areaId, online, enable, start, end, p["Q"], p);
}
}

View File

@ -121,12 +121,13 @@ public partial class MemberLog : Entity<MemberLog>
/// <param name="action">操作</param>
/// <param name="linkId">链接</param>
/// <param name="createUserId">创建用户</param>
/// <param name="start">时间开始</param>
/// <param name="end">时间结束</param>
/// <param name="success">成功</param>
/// <param name="start">数据分区开始</param>
/// <param name="end">数据分区结束</param>
/// <param name="key">关键字</param>
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
/// <returns>实体列表</returns>
public static IList<MemberLog> Search(String? category, String? action, Int32 linkId, Int32 createUserId, DateTime start, DateTime end, String key, PageParameter page)
public static IList<MemberLog> Search(String? category, String? action, Int32 linkId, Int32 createUserId, Boolean? success, DateTime start, DateTime end, String key, PageParameter page)
{
var exp = new WhereExpression();
@ -134,7 +135,8 @@ public partial class MemberLog : Entity<MemberLog>
if (!action.IsNullOrEmpty()) exp &= _.Action == action;
if (linkId >= 0) exp &= _.LinkID == linkId;
if (createUserId >= 0) exp &= _.CreateUserID == createUserId;
exp &= _.CreateTime.Between(start, end);
if (success != null) exp &= _.Success == success;
exp &= _.Ds.Between(start, end);
if (!key.IsNullOrEmpty()) exp &= SearchWhereByKeys(key);
return FindAll(exp, page);

View File

@ -131,12 +131,13 @@ public partial class Log : Entity<Log>
/// <param name="action">操作</param>
/// <param name="linkId">链接</param>
/// <param name="createUserId">创建用户</param>
/// <param name="start">时间开始</param>
/// <param name="end">时间结束</param>
/// <param name="success">成功</param>
/// <param name="start">编号开始</param>
/// <param name="end">编号结束</param>
/// <param name="key">关键字</param>
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
/// <returns>实体列表</returns>
public static IList<Log> Search(String? category, String? action, Int32 linkId, Int32 createUserId, DateTime start, DateTime end, String key, PageParameter page)
public static IList<Log> Search(String? category, String? action, Int32 linkId, Int32 createUserId, Boolean? success, DateTime start, DateTime end, String key, PageParameter page)
{
var exp = new WhereExpression();
@ -144,7 +145,8 @@ public partial class Log : Entity<Log>
if (!action.IsNullOrEmpty()) exp &= _.Action == action;
if (linkId >= 0) exp &= _.LinkID == linkId;
if (createUserId >= 0) exp &= _.CreateUserID == createUserId;
exp &= _.CreateTime.Between(start, end);
if (success != null) exp &= _.Success == success;
exp &= _.ID.Between(start, end, Meta.Factory.Snow);
if (!key.IsNullOrEmpty()) exp &= SearchWhereByKeys(key);
return FindAll(exp, page);

View File

@ -162,13 +162,14 @@ public partial class User : Entity<User>
/// <param name="code">代码。身份证、员工编号等</param>
/// <param name="roleId">角色。主要角色</param>
/// <param name="areaId">地区。省市区</param>
/// <param name="online">在线</param>
/// <param name="enable">启用</param>
/// <param name="start">更新时间开始</param>
/// <param name="end">更新时间结束</param>
/// <param name="key">关键字</param>
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
/// <returns>实体列表</returns>
public static IList<User> Search(String name, String? mail, String? mobile, String? code, Int32 roleId, Int32 areaId, Boolean? enable, DateTime start, DateTime end, String key, PageParameter page)
public static IList<User> Search(String name, String? mail, String? mobile, String? code, Int32 roleId, Int32 areaId, Boolean? online, Boolean? enable, DateTime start, DateTime end, String key, PageParameter page)
{
var exp = new WhereExpression();
@ -178,6 +179,7 @@ public partial class User : Entity<User>
if (!code.IsNullOrEmpty()) exp &= _.Code == code;
if (roleId >= 0) exp &= _.RoleID == roleId;
if (areaId >= 0) exp &= _.AreaId == areaId;
if (online != null) exp &= _.Online == online;
if (enable != null) exp &= _.Enable == enable;
exp &= _.UpdateTime.Between(start, end);
if (!key.IsNullOrEmpty()) exp &= SearchWhereByKeys(key);

View File

@ -128,12 +128,13 @@ public partial class UserLog : Entity<UserLog>
/// <param name="action">操作</param>
/// <param name="linkId">链接</param>
/// <param name="createUserId">创建用户</param>
/// <param name="start">时间开始</param>
/// <param name="end">时间结束</param>
/// <param name="success">成功</param>
/// <param name="start">数据时间开始</param>
/// <param name="end">数据时间结束</param>
/// <param name="key">关键字</param>
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
/// <returns>实体列表</returns>
public static IList<UserLog> Search(String? category, String? action, Int32 linkId, Int32 createUserId, DateTime start, DateTime end, String key, PageParameter page)
public static IList<UserLog> Search(String? category, String? action, Int32 linkId, Int32 createUserId, Boolean? success, DateTime start, DateTime end, String key, PageParameter page)
{
var exp = new WhereExpression();
@ -141,7 +142,8 @@ public partial class UserLog : Entity<UserLog>
if (!action.IsNullOrEmpty()) exp &= _.Action == action;
if (linkId >= 0) exp &= _.LinkID == linkId;
if (createUserId >= 0) exp &= _.CreateUserID == createUserId;
exp &= _.CreateTime.Between(start, end);
if (success != null) exp &= _.Success == success;
exp &= _.DataTime.Between(start, end);
if (!key.IsNullOrEmpty()) exp &= SearchWhereByKeys(key);
return FindAll(exp, page);

View File

@ -136,17 +136,23 @@ public partial class Menu : Entity<Menu>
/// <summary>高级查询</summary>
/// <param name="name">名称</param>
/// <param name="parentId">父编号</param>
/// <param name="visible">可见</param>
/// <param name="necessary">必要。必要的菜单,必须至少有角色拥有这些权限,如果没有则自动授权给系统角色</param>
/// <param name="newWindow">新窗口。新窗口打开链接</param>
/// <param name="start">更新时间开始</param>
/// <param name="end">更新时间结束</param>
/// <param name="key">关键字</param>
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
/// <returns>实体列表</returns>
public static IList<Menu> Search(String name, Int32 parentId, DateTime start, DateTime end, String key, PageParameter page)
public static IList<Menu> Search(String name, Int32 parentId, Boolean? visible, Boolean? necessary, Boolean? newWindow, DateTime start, DateTime end, String key, PageParameter page)
{
var exp = new WhereExpression();
if (!name.IsNullOrEmpty()) exp &= _.Name == name;
if (parentId >= 0) exp &= _.ParentID == parentId;
if (visible != null) exp &= _.Visible == visible;
if (necessary != null) exp &= _.Necessary == necessary;
if (newWindow != null) exp &= _.NewWindow == newWindow;
exp &= _.UpdateTime.Between(start, end);
if (!key.IsNullOrEmpty()) exp &= SearchWhereByKeys(key);

View File

@ -135,17 +135,19 @@ public partial class Role : Entity<Role>
#region
/// <summary>高级查询</summary>
/// <param name="name">名称</param>
/// <param name="isSystem">系统。用于业务系统开发使用,不受数据权限约束,禁止修改名称或删除</param>
/// <param name="enable">启用</param>
/// <param name="start">更新时间开始</param>
/// <param name="end">更新时间结束</param>
/// <param name="key">关键字</param>
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
/// <returns>实体列表</returns>
public static IList<Role> Search(String name, Boolean? enable, DateTime start, DateTime end, String key, PageParameter page)
public static IList<Role> Search(String name, Boolean? isSystem, Boolean? enable, DateTime start, DateTime end, String key, PageParameter page)
{
var exp = new WhereExpression();
if (!name.IsNullOrEmpty()) exp &= _.Name == name;
if (isSystem != null) exp &= _.IsSystem == isSystem;
if (enable != null) exp &= _.Enable == enable;
exp &= _.UpdateTime.Between(start, end);
if (!key.IsNullOrEmpty()) exp &= SearchWhereByKeys(key);

View File

@ -135,6 +135,7 @@ public partial class Department : Entity<Department>
/// <param name="code">代码</param>
/// <param name="name">名称</param>
/// <param name="parentId">父级</param>
/// <param name="visible">可见</param>
/// <param name="managerId">管理者</param>
/// <param name="enable">启用</param>
/// <param name="start">更新时间开始</param>
@ -142,7 +143,7 @@ public partial class Department : Entity<Department>
/// <param name="key">关键字</param>
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
/// <returns>实体列表</returns>
public static IList<Department> Search(Int32 tenantId, String? code, String name, Int32 parentId, Int32 managerId, Boolean? enable, DateTime start, DateTime end, String key, PageParameter page)
public static IList<Department> Search(Int32 tenantId, String? code, String name, Int32 parentId, Boolean? visible, Int32 managerId, Boolean? enable, DateTime start, DateTime end, String key, PageParameter page)
{
var exp = new WhereExpression();
@ -150,6 +151,7 @@ public partial class Department : Entity<Department>
if (!code.IsNullOrEmpty()) exp &= _.Code == code;
if (!name.IsNullOrEmpty()) exp &= _.Name == name;
if (parentId >= 0) exp &= _.ParentID == parentId;
if (visible != null) exp &= _.Visible == visible;
if (managerId >= 0) exp &= _.ManagerId == managerId;
if (enable != null) exp &= _.Enable == enable;
exp &= _.UpdateTime.Between(start, end);

View File

@ -127,12 +127,13 @@ public partial class Log : Entity<Log>
/// <param name="action">操作</param>
/// <param name="linkId">链接</param>
/// <param name="createUserId">创建用户</param>
/// <param name="start">时间开始</param>
/// <param name="end">时间结束</param>
/// <param name="success">成功</param>
/// <param name="start">编号开始</param>
/// <param name="end">编号结束</param>
/// <param name="key">关键字</param>
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
/// <returns>实体列表</returns>
public static IList<Log> Search(String? category, String action, Int64 linkId, Int32 createUserId, DateTime start, DateTime end, String key, PageParameter page)
public static IList<Log> Search(String? category, String action, Int64 linkId, Int32 createUserId, Boolean? success, DateTime start, DateTime end, String key, PageParameter page)
{
var exp = new WhereExpression();
@ -140,7 +141,8 @@ public partial class Log : Entity<Log>
if (!action.IsNullOrEmpty()) exp &= _.Action == action;
if (linkId >= 0) exp &= _.LinkID == linkId;
if (createUserId >= 0) exp &= _.CreateUserID == createUserId;
exp &= _.CreateTime.Between(start, end);
if (success != null) exp &= _.Success == success;
exp &= _.ID.Between(start, end, Meta.Factory.Snow);
if (!key.IsNullOrEmpty()) exp &= SearchWhereByKeys(key);
return FindAll(exp, page);

View File

@ -157,14 +157,17 @@ public partial class User : Entity<User>
/// <param name="code">代码。身份证、员工编码等,支持登录</param>
/// <param name="roleId">角色。主要角色</param>
/// <param name="departmentId">部门。组织机构</param>
/// <param name="mailVerified">邮箱验证。邮箱是否已通过验证</param>
/// <param name="mobileVerified">手机验证。手机是否已通过验证</param>
/// <param name="areaId">地区。省市区</param>
/// <param name="online">在线</param>
/// <param name="enable">启用</param>
/// <param name="start">更新时间开始</param>
/// <param name="end">更新时间结束</param>
/// <param name="key">关键字</param>
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
/// <returns>实体列表</returns>
public static IList<User> Search(String name, String? mail, String? mobile, String? code, Int32 roleId, Int32 departmentId, Int32 areaId, Boolean? enable, DateTime start, DateTime end, String key, PageParameter page)
public static IList<User> Search(String name, String? mail, String? mobile, String? code, Int32 roleId, Int32 departmentId, Boolean? mailVerified, Boolean? mobileVerified, Int32 areaId, Boolean? online, Boolean? enable, DateTime start, DateTime end, String key, PageParameter page)
{
var exp = new WhereExpression();
@ -174,7 +177,10 @@ public partial class User : Entity<User>
if (!code.IsNullOrEmpty()) exp &= _.Code == code;
if (roleId >= 0) exp &= _.RoleID == roleId;
if (departmentId >= 0) exp &= _.DepartmentID == departmentId;
if (mailVerified != null) exp &= _.MailVerified == mailVerified;
if (mobileVerified != null) exp &= _.MobileVerified == mobileVerified;
if (areaId >= 0) exp &= _.AreaId == areaId;
if (online != null) exp &= _.Online == online;
if (enable != null) exp &= _.Enable == enable;
exp &= _.UpdateTime.Between(start, end);
if (!key.IsNullOrEmpty()) exp &= SearchWhereByKeys(key);